51Testing软件测试论坛

标题: 抓包工具tshark使用备忘 [打印本页]

作者: 老白的释然    时间: 2018-6-20 10:55
标题: 抓包工具tshark使用备忘
抓包命令行工具tshark可以用于自定制,相比GUI工具可以实现一些自动化,譬如把某些关注的数据抓
起下来存放到文本中,然后再分析输出。
     demo:
复制代码
  1. <p>std::string decodeHex(const std::string& strHex)</p><p>{</p><p>    int nLen = strHex.length() / 2;</p><p>    std::string strRet(nLen, 0);</p><p>    for (int i = 0; i != nLen; ++i)</p><p>    {</p><p>        strRet[i] = ((strHex[2*i]>='a') ? (strHex[2*i]-'a'+10) : (strHex[2*i]-'0')) * 16;</p><p>        strRet[i] += (strHex[2*i+1]>='a') ? (strHex[2*i+1]-'a'+10) : (strHex[2*i+1]-'0');</p><p>    }</p><p>    return strRet;</p><p>}</p><p>
  2. </p><p>void cswuyg_test_tshark()</p><p>{</p><p>    std::wstring strParam =  L"\"C:\\Program Files\\Wireshark\\tshark.exe\" -i 1 -p -l -T pdml -f \"dst port 80\" -R \"ip.addr==172.17.195.56\"";</p><p>    FILE* stream = NULL;</p><p>    errno_t err = _wfreopen_s(&stream, L"c:\\temp\\cswuyt_test.xml", L"w", stdout);</p><p>    if (err != 0)</p><p>    {</p><p>        std::cout << "error" << std::endl;</p><p>    }</p><p>
  3. </p><p>    HANDLE hStd = ::GetStdHandle(STD_OUTPUT_HANDLE);</p><p>    //BOOL bSet = ::SetHandleInformation(hStd, HANDLE_FLAG_INHERIT, HANDLE_FLAG_INHERIT);</p><p>    STARTUPINFO stStartInfo;</p><p>    ZeroMemory(&stStartInfo, sizeof(STARTUPINFO));</p><p>    stStartInfo.cb = sizeof(STARTUPINFO); </p><p>    stStartInfo.hStdError = hStd;</p><p>    stStartInfo.hStdOutput = hStd;</p><p>    PROCESS_INFORMATION stProcInfo; </p><p>    ZeroMemory(&stProcInfo, sizeof(PROCESS_INFORMATION));</p><p>    BOOL bSuccess = ::CreateProcess(NULL, const_cast<wchar_t*>(strParam.c_str()), NULL, NULL, TRUE, 0, NULL, NULL, &stStartInfo, &stProcInfo); </p><p>    ::CloseHandle(stProcInfo.hProcess);</p><p>    ::CloseHandle(stProcInfo.hThread);</p><p>    ::fclose(stream);</p><p>}</p>
复制代码

复制代码
  上边的demo为抓取跟ip地址为172.17.195.56,端口为80(http默认端口)的机器的通信,tshark
会提供包解析之后的xml数据,程序将其存储到文件。注意部分数据是需要由hex字符串转换为真实字
符串的,另外还可能会有需要gzip解压。








欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2