簡介
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報文應該如下:
如上圖所示是wireshark官方文檔中的hex dump示例,標紅的地方即為偏移量(offset),缺省為16進制,每一個新數據包以偏移量0開頭第一行一共16字節,因此第二行的偏移量為16,對應到十六進制即為:0x00010。
此外還有幾個地方需要注意:
1、每行的寬度或字節數沒有限制。此外,行末尾的文本轉儲也會被忽略。
2、字節/十六進制數可以是大寫或小寫。
3、忽略偏移之前的任何文本,包括電子郵件轉發字符'>'。
4、字節串行之間的任何文本行都將被忽略。
5、偏移量用於跟蹤字節,因此偏移量必須正確。
6、任何只有字節而沒有前導偏移的行都將被忽略。
7、偏移被識別為長於兩個字符的十六進制數。
8、忽略字節后的任何文本(例如字符轉儲),此文本中的任何十六進制數也會被忽略。
9、偏移量為零表示啟動新數據包,因此具有一系列hexdumps的單個文本文件可以轉換為具有多個數據包的抓包文件。
示例
接下來通過root-me上的一道題目演示如何將hex dump文本轉換為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文本,使用缺省參數進行轉換:
此時我們使用wireshark打開剛剛生成的pcap文件:
可以看到報文被完整的解析出來,上圖中標紅的字段經過base64解碼后即為該題目的password。
另外一種方法亦可將hex dump文本解析為pcap。打開wireshark——點擊文件——從hex轉儲文件導入:
如果手工設置了或者hex轉儲文件自帶偏移量則可以選擇偏移量為16進制,如果hex dump文件沒有偏移值則偏移量選擇無也可以正常導入文件:
參考資料:https://www.wireshark.org/docs/man-pages/text2pcap.html