TCP協議分析工具TcpEngine V1.2.0使用教程


概述

  目前主流的網絡數據分析工具主要有兩類,一類是http協議分析工具,如fiddler,這類工具擅長對字符串類型協議分析;另一類是原始網絡數據包的監聽分析,如Wireshark,這類工具擅長分析網絡底層行為。這兩類工具一類擅長字符串協議分析,另一類擅長網絡底層行為分析,但是上述兩類工具分析二進制流類型協議時,就顯得力不心了,TcpEngine (官網:http://www.tcpengine.cn/補充上述兩類工具的空白,提供了二進制流協議分析的方法。

  TcpEngine擅長分析Tcp長連接協議,在數據流協議出現數據錯誤時使用,比如使用了tcp|websocket協議的網絡游戲出現數據錯誤時,使用本工具對游戲網絡數據分析,查找數據錯誤原因。這款工具不但可以在發開環境中使用,也可以在非開發環境中使用,比如網絡數據錯誤發生在測試環境或用戶環境,可以使用本工具在發生錯誤環境中監聽拷貝網絡數據,保存到文件再交給技術開發人員慢慢分析。

  目前只支持在win32平台運行,工具分兩部分,應用軟件部分和系統內核WFP模塊,WFP(Windows Filtering Platform) 是windows推出的用於TCP/IP協議棧五層各層里面對數據包進行交互操作的基礎框架,這里用於監聽拷貝指定的網絡數據。使用前需要安裝WFP,由於WFP內核模塊還沒有數據簽名,使用前需要按下面鏈接指導步驟重啟和設置系統http://www.xitongcheng.com/jiaocheng/win10_article_10547.html

 界面

  啟動界面如下圖所示。

  運行界面如下圖所示,奇數行是原始的數字流,偶數行是對應的解析后的可讀數據。

使用方法

  TcpEngine使用WFP截取應用層網絡數據,WFP是內核模塊,進行數字簽名,殺毒軟件會直接報名,並且使用需要按http://www.xitongcheng.com/jiaocheng/win10_article_10547.html進行一些設置,WFP模塊TcpEngine官網已公開源代碼,你了可以下載重新編譯。以管理員身份運算TcpEngine,點擊主界面新建文檔,如下圖所示。

   點擊開始,輸入需要監聽的網絡地址(支持域名和真實IP地直)和端口,如下圖所示。

   點擊“接收並解析”或“接收不解析”,把要監聽的網絡信息寫入WFP內核,當監聽的網絡有數據流通時,就拷貝一分到TcpEngine中,如下圖所示。

   本示例使用的是flamingo應用演示,收到的是加密后數據,我們需要對它解密,按TcpEngine規則實現了flamingo算法,在TcpEngine官網有示例代碼,使用方法,1、先暫停;2、加入解密庫,如下圖所示。

  再點擊刷新,得到解密后的數據,如下圖所示。

這時可以編寫解析規則對原始數據進行解析,再“刷新並解析”,可以得到正常數據,如下圖所示。

 解析規則

  每個不同的應用定義了不同的Tcp協議,面對千變萬化的協議,TcpEngine提供的方案是半編程的解析規則,需要你根據自己的協議,編寫解析規則來解析你的數據。解析規則借鑒了編程的變量,分支(if)和循環(for)。

  比如我們的數字流協議定義如下圖所示。

  那我們對應的解析規則如下所示。

  int32  id;
  int32  msgLen;
  if (0 < msgLen)
  {
      byte [msgLen]  body;
  }

 

 如果我們的id=1000消息的消息體如下圖所示。

  if(1000 == id) {
      int32 loginId = split(body);
      text[msgLen-4] = split(body);
  }

完整的解析規則如下圖所示。

   如果我們的消息體是結構體數組,那么我們可以用for表達式循環解析,示例如下圖所示。

   如果我們的消息體是結構體數組,那么我們可以用for表達式循環解析,示例如下圖所示。

 網絡數據說明

   當我們的網絡數據出錯時,需要按我們自定義的協議規則解析網絡數據成為我們可閱讀的格式,一般情況下,我們的網絡數字流是按固定的格式連續組成二進制數據流。我們向您提供了半編程式的方法對這類網絡數據解析,把不可閱讀的數字流解析成可閱讀的數據格式。

  工具通過wfp內核模塊從系統內核拷貝指定網絡數據,當我們的網絡程序向網絡發送或接收一段完整的數據時,會拷貝一份應用層的數據到工具,每一條數據會生成兩行數據,奇數行是原始數據,緊接偶數行是對應的解析數據。由原始數據行顏色標識數據類型,如下圖所示。

 解析參數

  在解析網絡數據前,我們需要分別對發送和接收的數據設置好數據類型,發送和接收兩種類型都要設置,發送類型的設置只對發送數據有效,接收類型的設置只對接收數據有效。

  設置參數有四種,分別是字節序;字符編碼;網絡協議;指定解碼庫(后續再說明),需要注意,參數設置必須全部小寫。

  set endian = big; 設置字節序,對基本數字類型有影響,如 四個字節的int型等,目前主流的網絡序都使用大端字節序,也叫網絡字節序。支持的值有 big 大端字節和little小端字節序兩種。

  set encoding = utf-8; 設置字符串編碼,對字符串數據類型有影響,當前只支持 utf-8和local(本地類型)兩種編碼格式。

 數據類型

  解析規則的功能是把連續無規則無法閱讀的數據流解析成規則的,可閱讀的數據格式,方法是把連續的字節按變量的形式划分到一個整體並顯示代表的值,如把連續的四個字節划分成整型,或如把多個字節划分成一個字符串變量,工具支持的變量類型如下列表。

數據類型列表

  char 字符型,一個字節,顯示ASCII 字符。
  byte 字節型,一個字節,以十六進制顯示。
  int8 有符號整型,一個字節,以十進制顯示。
  uint8 無符號整型,一個字節,以十進制顯示。
  int16 有符號整型,兩個字節,以十進制顯示。
  uint16 無符號整型,兩個字節,以十進制顯示。
  int32 有符號整型,四個字節,以十進制顯示。
  uint32 無符號整型,四個字節,以十進制顯示。
  int64 有符號整型,八個字節,以十進制顯示。
  uint64 無符號整型,八個字節,以十進制顯示。
  float32 有符號浮點型,四個字節,以十進制顯示。
  float64 有符號浮點型,八個字節,以十進制顯示。
  string 字符串型,可變長度,如果指定了長度,則按指定長度划分字節數,如果不指定長度,一直划分到遇到零為止,如果剛好本行結束,則本數據類型不參與解析。
  text 字符串型,可變長度,如果指定了長度,則按指定長度划分字節數,如果不指定長度,一直划分到遇到零為止,如果剛好本行結束,則使用下一行參與繼續解析。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM