wireshark txt转pcap

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wireshark txt转pcap相关的知识,希望对你有一定的参考价值。

参考技术A 场景1:有时候在处理问题时,某些情况下只能获取到报文的txt文件。

场景2:需要修改报文的其中某个字段然后再回放,只需修改txt后再导入wireshark即可

要实现以上两种场景可以使用科来软件也可以使用wireshark

00 10 f3 81 82 e0 28 6e d4 9b 0e 2e 08 00 45 08
00 45 d4 31 00 00 ec 11 49 06 31 33 0d 28 da c6
98 46 de f6 00 a1 00 31 00 00 30 27 02 01 00 04
06 70 75 62 6c 69 63 a0 1a 02 02 6f 0c 02 01 00
02 01 00 30 0e 30 0c 06 00 00 00 00 00 00 00 00
00 00 00

格式按照以下:

(1)添加行号,行号格式0000,0010,0020,0030....

(2)每行4字节

(3)行号与数据三个空格

0000 00 10 f3 81 82 e0 28 6e d4 9b 0e 2e 08 00 45 08

0010 00 45 d4 31 00 00 ec 11 49 06 31 33 0d 28 da c6

0020 98 46 de f6 00 a1 00 31 00 00 30 27 02 01 00 04

0030 06 70 75 62 6c 69 63 a0 1a 02 02 6f 0c 02 01 00

0040 02 01 00 30 0e 30 0c 06 00 00 00 00 00 00 00 00

0050 00 00 00

使用tcpdump和wireshark分析tcp流

使用tcpdump和wireshark分析tcp流

使用tcpdump和wireshark分析tcp流

Tcpdump抓包

tcpdump -w packets.pcap -n -i eth0 tcp port 60 and dst host 10.22.47.66
  • -i: 指定网络接口
  • -n: 不做域名解析,使用ip
  • -w: 抓包存储为可供wireshark解析的pcap格式
  • tcp port 60 and dst host 10.22.47.66: 条件表达式

Tcpdump条件式

条件表达式语法可以参考: man pcap-filter,下面是一些常见的例子:

只抓udp的包:

tcpdump -i eth0 'udp'

只想查看源机器和目的机器的包:

tcpdump -i eth0 'dst 8.8.8.8'

只想查看目标机器端口是53或80的包:

tcpdump -i eth0 'dst port 53 or dst port 80'

抓到那些通过eth0网卡的,且来源是roclinux.cn服务器或者目标是roclinux.cn服务器的网络包:

tcpdump -i eth0 'host roclinux.cn'

抓通过eth0网卡的,且roclinux.cn和baidu.com之间通讯的网络包,或者,roclinux.cn和qiyi.com之间通讯的网络包:

tcpdump -i eth0 'host roclinux.cn and (baidu.com or qiyi.com)'

获取使用ftp端口和ftp数据端口的网络包:

tcpdump 'port ftp or ftp-data'

获取roclinux.cn和baidu.com之间建立TCP三次握手中第一个网络包,即带有SYN标记位的网络包,另外,目的主机不能是 qiyi.com:

tcpdump 'tcp[tcpflags] & tcp-syn != 0 and not dst host qiyi.com'

打印IP包长超过576字节的网络包:

tcpdump 'ip[2:2] > 576'

proto [ expr : size],只要掌握了这个语法格式,就能看懂上面的三个稀奇古怪的表达式了。

proto就是protocol的缩写,表示这里要指定的是某种协议的名称,比如ip、tcp、ether。其实proto这个位置,总共可以指定的协议类型有15个之多,包括:

  • ether – 链路层协议
  • fddi – 链路层协议
  • tr – 链路层协议
  • wlan – 链路层协议
  • ppp – 链路层协议
  • slip – 链路层协议
  • link – 链路层协议
  • ip
  • arp
  • rarp
  • tcp
  • udp
  • icmp
  • ip6
  • radio

expr用来指定数据报偏移量,表示从某个协议的数据报的第多少位开始提取内容,默认的起始位置是0;而size表示从偏移量的位置开始提取多少个字节,可以设置为1、2、4。 如果只设置了expr,而没有设置size,则默认提取1个字节。比如ip[2:2],就表示提取出第3、4个字节;而ip[0]则表示提取ip协议头的第一个字节。

在我们提取了特定内容之后,我们就需要设置我们的过滤条件了,我们可用的“比较操作符”包括:>,<,>=,<=,=,!=,总共有6个。

ip[0] & 0xf != 5

IP协议的第0-4位,表示IP版本号,可以是IPv4(值为0100)或者IPv6(0110);第5-8位表示首部长度,单位是“4字节”,如果首部长度为默认的20字节的话,此值应为5。

安装Mac版Wireshark

Wireshark支持多种OS,包括Windows, Mac和Linux,我在这里是使用的Mac版本。

$ brew search wireshark
==> Formulae
wireshark

==> Casks
wireshark  wireshark-chmodbpf

$ brew cask install wireshark

Wireshark分析指定的tcp流

在过滤条件中填写tcp.flags.syn==1,或者tcp.flags.fin==1, 找到tcp连接的首包或者尾包,这样的tcp流会相对比较完整;

使用tcpdump和wireshark分析tcp流

 

在找到的包上点右键,选择Follow=>TCP Stream, 找到这条完整的tcp流:

使用tcpdump和wireshark分析tcp流

 

以上是关于wireshark txt转pcap的主要内容,如果未能解决你的问题,请参考以下文章

wireshark中搜索16进制算法

Lua语言在Wireshark中使用(转)

网络抓包wireshark(转)

网络抓包wireshark(转)

Wireshark过滤(转)

转: wireshark过滤语法总结