国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

在Linux中tsharkwireshark抓包工具使用方法詳解

2024-08-27 23:55:27
字體:
來源:轉載
供稿:網友
  tshark(wireshark)抓包工具是一個非常不錯的linux中常用的工具,相比GUI工具可以實現一些自動化,譬如把某些關注的數據抓起下來存放到文本中,下面我們一起來看看tshark(wireshark)工具使用例子。
 
  在Linux下,當我們需要抓取網絡數據包分析時,通常是使用tcpdump抓取網絡raw數據包存到一個文件,然后下載到本地使用wireshark界面網絡分析工具進行網絡包分析。
 
  最近才發現,原來wireshark也提供有Linux命令行工具-tshark。tshark不僅有抓包的功能,還帶了解析各種協議的能力。下面我們以兩個實例來介紹tshark工具。
 
  1、安裝方法,代碼如下:
 
  CentOS: yum install -y wireshark
  Ubuntu: apt-get install -y tshark
  2、實時打印當前http請求的url(包括域名),代碼如下:
 
  tshark -s 512 -i eth0 -n -f 'tcp dst port 80' -R 'http.host and http.request.uri' -T fields -e http.host -e http.request.uri -l | tr -d '\t'
  下面介紹參數含義:
 
  -s 512 :只抓取前512個字節數據
 
  -i eth0 :捕獲eth0網卡
 
  -n :禁止網絡對象名稱解析
 
  -f 'tcp dst port 80' :只捕捉協議為tcp,目的端口為80的數據包
 
  -R 'http.host and http.request.uri' :過濾出http.host和http.request.uri
 
  -T fields -e http.host -e http.request.uri :打印http.host和http.request.uri
 
  -l :輸出到標準輸出
 
  3、實時打印當前mysql查詢語句
 
  tshark -s 512 -i eth0 -n -f 'tcp dst port 3306' -R 'mysql.query' -T fields -e mysql.query
 
  下面介紹參數含義:
 
  -s 512 :只抓取前512個字節數據
 
  -i eth0 :捕獲eth0網卡
 
  -n :禁止網絡對象名稱解析
 
  -f 'tcp dst port 3306' :只捕捉協議為tcp,目的端口為3306的數據包
 
  -R 'mysql.query' :過濾出mysql.query
 
  -T fields -e mysql.query :打印mysql查詢語句
 
  tshark使用-f來指定捕捉包過濾規則,規則與tcpdump一樣,可以通過命令man pcap-filter來查得。
 
  tshark使用-R來過濾已捕捉到的包,與界面板wireshark的左上角Filter一致。
 
  例子代碼如下:
 
  std::string decodeHex(const std::string& strHex)
  {
      int nLen = strHex.length() / 2;
      std::string strRet(nLen, 0);
      for (int i = 0; i != nLen; ++i)
      {
          strRet[i] = ((strHex[2*i]>='a') ? (strHex[2*i]-'a'+10) : (strHex[2*i]-'0')) * 16;
          strRet[i] += (strHex[2*i+1]>='a') ? (strHex[2*i+1]-'a'+10) : (strHex[2*i+1]-'0');
      }
      return strRet;
  }
  
  void cswuyg_test_tshark()
  {
      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\"";
      FILE* stream = NULL;
      errno_t err = _wfreopen_s(&stream, L"c:\\temp\\cswuyt_test.xml", L"w", stdout);
      if (err != 0)
      {
          std::cout << "error" << std::endl;
      }
  
      HANDLE hStd = ::GetStdHandle(STD_OUTPUT_HANDLE);
      //BOOL bSet = ::SetHandleInformation(hStd, HANDLE_FLAG_INHERIT, HANDLE_FLAG_INHERIT);
      STARTUPINFO stStartInfo;
      ZeroMemory(&stStartInfo, sizeof(STARTUPINFO));
      stStartInfo.cb = sizeof(STARTUPINFO);  
      stStartInfo.hStdError = hStd;
      stStartInfo.hStdOutput = hStd;
      PROCESS_INFORMATION stProcInfo;  
      ZeroMemory(&stProcInfo, sizeof(PROCESS_INFORMATION));
      BOOL bSuccess = ::CreateProcess(NULL, const_cast<wchar_t*>(strParam.c_str()), NULL, NULL, TRUE, 0, NULL, NULL, &stStartInfo, &stProcInfo);  
      ::CloseHandle(stProcInfo.hProcess);
      ::CloseHandle(stProcInfo.hThread);
      ::fclose(stream);  --phpfensi.com
  }
  上邊的demo為抓取跟ip地址為172.17.195.56,端口為80(http默認端口)的機器的通信,tshark會提供包解析之后的xml數據,程序將其存儲到文件。注意部分數據是需要由hex字符串轉換為真實字符串的,另外還可能會有需要gzip解壓。
 
 

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 定陶县| 北京市| 闽侯县| 双鸭山市| 呼和浩特市| 通海县| 象山县| 偏关县| 始兴县| 双流县| 天柱县| 邻水| 临沂市| 茌平县| 鄂托克前旗| 开封县| 宽城| 岳阳县| 绥中县| 岳池县| 邢台市| 甘洛县| 高青县| 嘉禾县| 琼海市| 措美县| 海伦市| 敦煌市| 伊金霍洛旗| 涞源县| 新营市| 汽车| 辛集市| 吉木萨尔县| 高台县| 崇仁县| 湘阴县| 贡嘎县| 临高县| 九寨沟县| 小金县|