天天看點

text2pcap: 将hex轉儲文本轉換為Wireshark可打開的pcap檔案

簡介

  Text2pcap是一個讀取ASCII hex轉儲的程式,它将描述的資料寫入pcap或pcapng檔案。text2pcap可以讀取包含多個資料包的hexdumps,并建構多個資料包的捕獲檔案。text2pcap還能夠生成虛拟以太網,IP和UDP,TCP或SCTP标頭,以便僅從應用級資料的hexdump建構完全可處理的資料包轉儲。

用法

  該工具內建在Wireshark安裝包中,進入DoS切換到Wireshark安裝目錄(預設:C:\Program Files\Wireshark)。使用指令:  text2pcap [選項]  <輸入檔案名>  <輸出檔案名>

選項

  -o hex | oct | dec

  指定偏移的基數(十六進制,八進制或十進制)。預設為十六進制。詳細介紹見後文注意事項。

  -t <timefmt>

  将包之前的文本視為日期/時間碼; timefmt是strptime(3)支援的排序格式字元串。示例:時間“10:15:14.5476”的格式代碼為“%H:%M:%S”。如果不指定時間,則使用目前系統時間。

  -n

  以pcapng格式而不是pcap格式寫入檔案。預設為pcap格式

  -l

  指定此資料包的鍊路層标頭類型。預設為以太網(1)。有關可能的封裝的完整清單,請參見http://www.tcpdump.org/linktypes.html。請注意,如果轉儲是封裝資料包的完整十六進制轉儲,并且您希望指定确切的封裝類型,則應使用此選項。示例:-l 7用于封裝BSD樣式的ARCNet資料包。

  -m <max-packet>

  設定最大資料包長度,預設為262144.

  -h

  幫助選項

  

  當捕獲封包為非完整資料實(比如隻有應用層資料),可以使用以下選項對封包頭進行構造:

  -e <l3pid>

  在每個資料包之前包含一個虛拟以太網報頭。以十六進制指定以太網頭的L3PID。如果您的dump具有第3層标頭和有效負載(例如IP标頭),但沒有第2層封裝,請使用此選項。示例:-e 0x806指定ARP資料包。對于IP資料包,您也可以使用-l 101來訓示Wireshark的原始IP資料包,而不是生成虛假的以太網頭。請注意,-l 101不适用于任何非IP第3層資料包(例如ARP),而使用-e生成虛拟以太網頭适用于任何類型的L3資料包。

  -i <proto>

  在每個資料包之前包含虛拟IP頭。以十進制指定資料包的IP協定。如果轉儲是IP資料包的有效負載(即具有完整的L4資訊)但每個資料包沒有IP頭,請使用此選項。請注意,每個資料包也會自動包含适當的以太網标頭。示例:-i 46指定RSVP資料包(IP協定46)。有關配置設定的Internet協定号的完整清單,請參見http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml。

  -4 <srcip>,<destip>

  使用指定的IPv4 目的和源位址預先添加虛拟IP頭。此選項應附帶以下選項之一:-i,-s,-S,-T,-u使用此選項可應用“自定義”IP位址。示例:-4 10.0.0.1,10.0.0.2對所有IP資料包使用10.0.0.1和10.0.0.2。

  -6 <srcip>,<destip>

  使用指定的IPv6目标和源位址預先添加虛拟IP頭。此選項應附帶以下選項之一:-i,-s,-S,-T,-u使用此選項可應用“自定義”IP位址。示例:-6 fe80 :: 202:b3ff:fe1e:8329,2001:0db8:85a3 :: 8a2e:0370:7334使用fe80 :: 202:b3ff:fe1e:8329和2001:0db8:85a3 :: 8a2e:0370 :7334表示所有IP資料包。

  -T <srcport>,<destport>

  在每個資料包之前包含虛拟TCP标頭。以十進制指定資料包的源和目标TCP端口。如果轉儲是資料包的TCP有效負載但不包含任何TCP,IP或以太網标頭,請使用此選項。請注意,每個資料包都會自動包含适當的以太網和IP标頭。序号将從0開始。

  -u <srcport>,<destport>

  在每個資料包之前包含虛拟UDP标頭。以十進制指定資料包的源和目标UDP端口。如果轉儲是資料包的UDP有效負載但不包含任何UDP,IP或以太網标頭,請使用此選項。請注意,每個資料包都會自動包含适當的以太網和IP标頭。示例:-u1000,69使資料包看起來像TFTP / UDP資料包。

說明

  一個标準的hex dump封包應該如下:

text2pcap: 将hex轉儲文本轉換為Wireshark可打開的pcap檔案

  如上圖所示是wireshark官方文檔中的hex dump示例,标紅的地方即為偏移量(offset),預設為16進制,每一個新資料包以偏移量0開頭第一行一共16位元組,是以第二行的偏移量為16,對應到十六進制即為:0x00010。

  此外還有幾個地方需要注意:

    1、每行的寬度或位元組數沒有限制。此外,行末尾的文本轉儲也會被忽略。

    2、位元組/十六進制數可以是大寫或小寫。

    3、忽略偏移之前的任何文本,包括電子郵件轉發字元'>'。

    4、位元組串行之間的任何文本行都将被忽略。

    5、偏移量用于跟蹤位元組,是以偏移量必須正确。

    6、任何隻有位元組而沒有前導偏移的行都将被忽略。

    7、偏移被識别為長于兩個字元的十六進制數。

    8、忽略位元組後的任何文本(例如字元轉儲),此文本中的任何十六進制數也會被忽略。

    9、偏移量為零表示啟動新資料包,是以具有一系列hexdumps的單個文本檔案可以轉換為具有多個資料包的抓封包件。

示例

  接下來通過root-me上的一道題目示範如何将hex dunp文本轉換為pcap檔案。題目位址為:https://www.root-me.org/en/Challenges/Network/ETHERNET-frame ,其中所涉及到的封包為:

00 05 73 a0 00 00 e0 69 95 d8 5a 13 86 dd 60 00
   00 00 00 9b 06 40 26 07 53 00 00 60 2a bc 00 00
   00 00 ba de c0 de 20 01 41 d0 00 02 42 33 00 00
   00 00 00 00 00 04 96 74 00 50 bc ea 7d b8 00 c1
   d7 03 80 18 00 e1 cf a0 00 00 01 01 08 0a 09 3e
   69 b9 17 a1 7e d3 47 45 54 20 2f 20 48 54 54 50
   2f 31 2e 31 0d 0a 41 75 74 68 6f 72 69 7a 61 74
   69 6f 6e 3a 20 42 61 73 69 63 20 59 32 39 75 5a
   6d 6b 36 5a 47 56 75 64 47 6c 68 62 41 3d 3d 0d
   0a 55 73 65 72 2d 41 67 65 6e 74 3a 20 49 6e 73
   61 6e 65 42 72 6f 77 73 65 72 0d 0a 48 6f 73 74
   3a 20 77 77 77 2e 6d 79 69 70 76 36 2e 6f 72 67
   0d 0a 41 63 63 65 70 74 3a 20 2a 2f 2a 0d 0a 0d
   0a       

  根據提示可知該封包為以太網類型的封包,我們可以使用預設參數進行轉換而無需通過-l指定鍊路層類型。

  結合上一節中的說明可知,該封包沒有設定偏移字段,是以我們需要手工設定偏移字段,偏移字段需要大于2個字元,這裡我們設定成4個字元,封包的開始偏移量一定要設定為0,每行16個位元組,正好第二位加一:

0000 00 05 73 a0 00 00 e0 69 95 d8 5a 13 86 dd 60 00
0010 00 00 00 9b 06 40 26 07 53 00 00 60 2a bc 00 00
0020 00 00 ba de c0 de 20 01 41 d0 00 02 42 33 00 00
0030 00 00 00 00 00 04 96 74 00 50 bc ea 7d b8 00 c1
0040 d7 03 80 18 00 e1 cf a0 00 00 01 01 08 0a 09 3e
0050 69 b9 17 a1 7e d3 47 45 54 20 2f 20 48 54 54 50
0060 2f 31 2e 31 0d 0a 41 75 74 68 6f 72 69 7a 61 74
0070 69 6f 6e 3a 20 42 61 73 69 63 20 59 32 39 75 5a
0080 6d 6b 36 5a 47 56 75 64 47 6c 68 62 41 3d 3d 0d
0090 0a 55 73 65 72 2d 41 67 65 6e 74 3a 20 49 6e 73
00a0 61 6e 65 42 72 6f 77 73 65 72 0d 0a 48 6f 73 74
00b0 3a 20 77 77 77 2e 6d 79 69 70 76 36 2e 6f 72 67
00c0 0d 0a 41 63 63 65 70 74 3a 20 2a 2f 2a 0d 0a 0d
00d0 0a 
00d1
      

  将以上封包儲存到txt文本,使用預設參數進行轉換:

text2pcap: 将hex轉儲文本轉換為Wireshark可打開的pcap檔案

  此時我們使用wireshark打開剛剛生成的pcap檔案:

text2pcap: 将hex轉儲文本轉換為Wireshark可打開的pcap檔案

  可以看到封包被完整的解析出來,上圖中标紅的字段經過base64解碼後即為該題目的password。

  另外一種方法亦可将hex dump文本解析為pcap。打開wireshark——點選檔案——從hex轉儲檔案導入:

text2pcap: 将hex轉儲文本轉換為Wireshark可打開的pcap檔案

  如果手工設定了或者hex轉儲檔案自帶偏移量則可以選擇偏移量為16進制,如果hex dump檔案沒有偏移值則偏移量選擇無也可以正常導入檔案:

text2pcap: 将hex轉儲文本轉換為Wireshark可打開的pcap檔案

繼續閱讀