Linux网络编程-wireshark和tcpdump抓包(数据过滤和分析)

目录

一.抓包的意义

二.如何抓包

2.1、windows下wireshark抓包     

2.2、linux下tcpdump抓包

三、过滤数据       

3.1、过滤IP

3.2、过滤端口

3.3、过滤协议和标志

3.4、连接符

3.5、十六进制数据查找(快捷键 ctrl+F: )

四、Wireshark软件常用功能

4.1、导出特定分组数据   

4.2、查看tcp数据流,并保存 

4.3、数据发送时序图 

五、分析数据 

六、tcpdump的使用


一.抓包的意义

     从人类第三次工业革命(计算机及信息技术革命)开始,人类进入了Internet时代。在Internet时代人类的生活对网络的依赖性越来越高。然后再这张无形的巨网下,如何庖丁解牛式解析出每一个0 和 1 代表的实际意义呢?这时候我们的类似于wireshark tcpdump类的工具就孕育而生,它们是洞察Internet世界的钥匙。

二.如何抓包

2.1、windows下wireshark抓包     

2.2、linux下tcpdump抓包

            

注意:使用tcpdump需要有root权限

三、过滤数据       

3.1、过滤IP

ip.addr == 10.73.113.196

ip.dst == 10.73.113.196

ip.src == 10.73.113.196

3.2、过滤端口

udp.port == 6009

tcp.port == 6009

tcp.dstport == 6009

tcp.srcport == 6009

3.3、过滤协议和标志

tcp

udp

http

tcp.flags.syn == 0x2

tcp.flags.ack == 0x10

tcp.flags.fin == 0x1

tcp.flags.push == 0x8

3.4、连接符

and,or

扩展:

http.request.method=="POST"

3.5、十六进制数据查找(快捷键 ctrl+F: )

四、Wireshark软件常用功能

4.1、导出特定分组数据   

4.2、查看tcp数据流,并保存 

4.3、数据发送时序图 

       

 

五、分析数据 

灰色:三次握手,四次挥手,实际上是三次

黑色:窗口满了

绿色是TCP报文,深蓝色是DNS,浅蓝是UDP

TCP标志:SYN、FIN、ACK、PSH;

六、tcpdump的使用

1.抓取包含10.10.10.122的数据包

tcpdump -i ens33 -vnn host 10.10.10.122

2.抓取包含10.10.10.0/24网段的数据包

tcpdump -i ens33 -vnn net 10.10.10.0/24

tcpdump -i ens33 -vnn net 10.10.10.0 mask 255.255.255.0

3.抓取包含端口22的数据包

tcpdump -i ens33 -vnn port 22

4.抓取udp协议的数据包

tcpdump -i ens33 -vnn udp

5.抓取icmp协议的数据包

tcpdump -i ens33 -vnn icmp

6.抓取arp协议的数据包

tcpdump -i ens33 -vnn arp

7.抓取ip协议的数据包

tcpdump -i ens33 -vnn ip proto ip

tcpdump -i ens33 -vnn ip

8.抓取源ip是10.10.10.122的数据包

tcpdump -i ens33 -vnn src host 10.10.10.122

9.抓取目标ip是10.10.10.122的数据包

tcpdump -i ens33 -vnn dst host 10.10.10.122

10.抓取源端口是22的数据包

tcpdump -i ens33 -vnn src port 22

11.抓取源ip是10.10.10.253且目的端口是22的数据包

tcpdump -i ens33 -vnn src host 10.10.10.122 and dst port 22

12.抓取源ip是10.10.10.122或者端口是22的数据包

tcpdump -i ens33 -vnn src host 10.10.10.122 or port 22

13.抓取源ip是10.10.10.122且端口不是22的数据包

tcpdump -i ens33 -vnn src host 10.10.10.122 and not port 22

14.抓取源ip是10.10.10.2且端口是22,或源ip是10.10.10.65且目的端口是80的数据包。

tcpdump -i ens33 -vnn \(src host 10.10.10.2 and port 22 \) or \(src ip host 10.10.10.65 and prot 80\)

15.抓取源ip是10.10.10.59且目的端口是22,或者源ip是10.10.10.68且目的端口是80的数据包

tcpdump -i ens33 -vnn '\(src host 10.10.10.59 and dst port 22\) 'or '\(src host 10.10.10.68 and dst prot 80\)'

16.把抓取的数据包记录存到/tmp/fill文件中,当抓取100个数据包后就退出程序

tcpdump -i ens33 -c 100 -w /tmp/fill

17.从/tmp/fill记录中读取tcp协议的数据包

tcpdump -i ens33 -r /tmp/fill tcp

18.从/tmp/fill记录中读取包含10.10.10.58的数据包

tcpdump -i ens33 -r /tmp/fill host 10.10.10.58

19.过滤数据包类型是多播并且端口不是22、不是icmp协议的数据包

tcpdump -i ens33 ether multicast and not port 22 and 'not icmp'

20.过滤协议类型是ip并且目标端口是22的数据包

tcpdump -i ens33 -n ip and dst prot 22

tcpdump可识别的关键字包括ip、igmp、tcp、udp、icmp、arp等

21.过滤抓取mac地址是某个具体的mac地址、协议类型是arp的数据包

tcpdump -i ens33 ether src host 00:0c:29:2f:a7:50 and arp

22.过滤抓取协议类型是ospf的数据包

tcpdump -i ens33 ip proto ospf

直接在tcpdump中使用的协议关键字只有ip、igmp、tcp、udp、icmp、arp等,其他的传输层协议没有可直接识别的关键字

可以使用关键字proto或者ip proto加上在/etc/protocols中能够找到的协议或者相应的协议编号进行过滤。

更加高层的协议,例如http协议需要用端口号来过滤

23.过滤长度大于200字节的报文

tcpdump -i ens33 greater 200

24.过滤协议类型为tcp的数据包

tcpdump tcp

还可以查看TCP报文里面更详细的部分,tcpdump proto[字节偏移:字节长度],tcpdump -i ens33 -c 1 -vnn ip[9]=6,这里指定的是ip包头第十个字节(协议值)为6(TCP协议)。

25.过滤出广播包和多播包

tcpdump -i ens33 -c 1 ip multicast and ip broadcast

tcpdump -i ens33 -c 1 -vnn 'ether[0] & 1 != 0'

保证目标地址最后一位不为0,只有目标地址最后一位为0,与运算之后才会为0,否则目标地址是低位为0高位不为0的情况,也就是广播包或者多播包。

26.查找端口号大于23的所有tcp数据流

tcpdump -i ens33 -c 1 -vnn 'tcp[0:2] & 0xffff > 0x0017 '

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ProYuan28

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值