ArcherWong博客
首页
博客
tcpdump使用
作者:ArcherWong
分类:web
时间:2019-01-04 10:38:34
阅读:26
# 1. tcpdump选项 它的命令格式为: ``` tcpdump [ -DenNqvX ] [ -c count ] [ -F file ] [ -i interface ] [ -r file ][ -s snaplen ] [ -w file ] [ expression ] ``` 抓包选项: ``` -c:指定要抓取的包数量。 -i interface:指定tcpdump需要监听的接口。可以使用'any'关键字表示所有网络接口。 -n:对地址以数字方式显式,否则显式为主机名,也就是说-n选项不做主机名解析。 -nn:除了-n的作用外,还把端口显示为数值,否则显示端口服务名。 -N:不打印出host的域名部分。例如tcpdump将会打印'nic'而不是'nic.ddn.mil'。 -P:指定要抓取的包是流入还是流出的包。可以给定的值为"in"、"out"和"inout",默认为"inout"。 -s len:设置tcpdump的数据包抓取长度为len,如果不设置默认将会是65535字节。对于要抓取的数据包较大时,长度设置不够可能会产生包截断,若出现包截断, :输出行中会出现"[|proto]"的标志(proto实际会显示为协议名)。但是抓取len越长,包的处理时间越长,并且会减少tcpdump可缓存的数据包的数量, :从而会导致数据包的丢失,所以在能抓取我们想要的包的前提下,抓取长度越小越好。 ``` 输出选项: ``` -e:输出的每行中都将包括数据链路层头部信息,例如源MAC和目标MAC。 -q:快速打印输出。即打印很少的协议相关信息,从而输出行都比较简短。 -X:输出包的头部数据,会以16进制和ASCII两种方式同时输出。 -XX:输出包的头部数据,会以16进制和ASCII两种方式同时输出,更详细。 -v:当分析和打印的时候,产生详细的输出。 -vv:产生比-v更详细的输出。 -vvv:产生比-vv更详细的输出。 ``` 其他功能性选项: ``` -D:列出可用于抓包的接口。将会列出接口的数值编号和接口名,它们都可以用于"-i"后。 -F:从文件中读取抓包的表达式。若使用该选项,则命令行中给定的其他表达式都将失效。 -w:将抓包数据输出到文件中而不是标准输出。可以同时配合"-G time"选项使得输出文件每time秒就自动切换到另一个文件。可通过"-r"选项载入这些文件以进行分析和打印。 -r:从给定的数据包文件中读取数据。使用"-"表示从标准输入中读取。 ``` # 2. 基本的使用方法 1、抓取所有经过指定网络接口上的数据包 ``` tcpdump -i eth0 ``` 如果不指定网络接口,则默认抓取第一个网络接口,一般是eth0 ``` tcpdump ``` 2、过滤主机 ``` tcpdump -i eth1 host 192.168.1.1 tcpdump -i eth1 src host 192.168.1.1 //接收192.168.1.1发送的数据包 tcpdump -i eth1 dst host 192.168.1.1 //发往192.168.1.1的数据包 ``` src 指定源地址,192.168.1.1 dst 指定目的地址,192.168.1.1 3、过滤端口 ``` tcpdump -i eth1 port 25 tcpdump -i eth1 src port 25 tcpdump -i eth1 dst port 25 ``` 4、网络过滤 ``` tcpdump -i eth1 net 192.168 tcpdump -i eth1 src net 192.168 tcpdump -i eth1 dst net 192.168 ``` 5、协议过滤 ``` tcpdump -i eth1 arp tcpdump -i eth1 ip tcpdump -i eth1 tcp tcpdump -i eth1 udp tcpdump -i eth1 icmp ``` 6、常用表达式 ``` 非 : ! or "not" (去掉双引号) 且 : && or "and" 或 : || or "or" ``` 抓取主机10.3.19.185和主机10.3.19.186或10.3.19.187的通信 ``` tcpdump 'host 10.3.19.185 and (10.3.19.186 or 10.3.19.187)' ``` 抓取主机10.3.19.185除了和主机10.3.19.186之外所有主机通信的**数据包** ``` tcpdump host 10.3.19.185 and ! 10.3.19.186 ``` 抓取主机10.3.19.185除了和主机10.3.19.186之外所有主机通信的**IP包** ``` tcpdump ip host 10.3.19.185 and ! 10.3.19.186 ``` 抓取主机10.3.19.185所有在TCP 80端口的数据包 ``` tcpdump tcp port 80 and host 10.3.19.185 ``` 抓取送到主机10.3.19.185的80端口的数据包: ``` tcpdump dst port 80 and host 10.3.19.185 ``` 抓取所有经过eth1,目的地址是192.168.1.254或192.168.1.200端口是80的TCP数 ``` tcpdump -i eth1 '((tcp) and (port 80) and ((dst host 192.168.1.254) or (dst host 192.168.1.200)))' ``` 抓取所有经过eth1,目的网络是192.168,但目的主机不是192.168.1.200的TCP数据 ``` tcpdump -i eth1 '((tcp) and ((dst net 192.168) and (not dst host 192.168.1.200)))' ``` 7、保存到文件a.cap ``` tcpdump -i eth1 port 25 -w a.cap ``` # 3.wireshark使用 ## 3.1 界面介绍 主界面  wireshark与对应的OSI七层模型  tcp抓包具体内容  ## 3.2 wireshark过滤器的使用 几个最常用的关键字,“eq” 和 “==”等同,可以使用 “and” 表示并且,“or”表示或者。“!" 和 "not” 都表示取反。 ip地址过滤 ``` # 对源地址为192.168.0.1的包的过滤 ip.src == 192.168.0.1 # 对目的地址为192.168.0.1的包的过滤 ip.dst == 192.168.0.1 # 对源或者目的地址为192.168.0.1的包的过滤 ip.addr == 192.168.0.1 ip.src == 192.168.0.1 or ip.dst == 192.168.0.1 # 要排除以上的数据包,我们只需要将其用括号囊括,然后使用 "!" 即可。 !(表达式) ``` 协议的过滤 ``` # 仅仅需要捕获某种协议的数据包,表达式很简单仅仅需要把协议的名字输入即可。 http # 需要捕获多种协议的数据包,也只需对协议进行逻辑组合即可。 http or telnet # 排除某种协议的数据包 not arp !tcp ``` 端口的过滤(视协议而定) ``` # 捕获某一端口的数据包 tcp.port == 80 # 捕获多端口的数据包,可以使用and来连接,下面是捕获高端口的表达式 udp.port >= 2048 ``` 针对长度和内容的过滤 ``` # 针对长度的过虑(这里的长度指定的是数据段的长度) udp.length < 30 http.content_length <=20 # 针对数据包内容的过滤 http.request.uri matches "vipscu" //(匹配http请求中含有vipscu字段的请求信息) ``` ## 3.3 分析过程 ``` ⚡ root@VM_35_1_centos ~ curl archerwong.cn ``` ``` # root @ VM_33_19_centos in ~ [10:17:47] C:1 $ tcpdump -n host 118.25.194.34 and port 80 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 10:52:19.047261 IP 118.25.194.34.56490 > 10.105.33.19.http: Flags [S], seq 188644742, win 29200, options [mss 1424,sackOK,TS val 608533047 ecr 0,nop,wscale 7], length 0 10:52:19.047290 IP 10.105.33.19.http > 118.25.194.34.56490: Flags [S.], seq 162038118, ack 188644743, win 28960, options [mss 1460,sackOK,TS val 1190782418 ecr 608533047,nop,wscale 7], length 0 10:52:19.051949 IP 118.25.194.34.56490 > 10.105.33.19.http: Flags [.], ack 1, win 229, options [nop,nop,TS val 608533051 ecr 1190782418], length 0 10:52:19.051979 IP 118.25.194.34.56490 > 10.105.33.19.http: Flags [P.], seq 1:78, ack 1, win 229, options [nop,nop,TS val 608533051 ecr 1190782418], length 77: HTTP: GET / HTTP/1.1 10:52:19.051986 IP 10.105.33.19.http > 118.25.194.34.56490: Flags [.], ack 78, win 227, options [nop,nop,TS val 1190782423 ecr 608533051], length 0 10:52:19.107820 IP 10.105.33.19.http > 118.25.194.34.56490: Flags [P.], seq 1:1398, ack 78, win 227, options [nop,nop,TS val 1190782479 ecr 608533051], length 1397: HTTP: HTTP/1.1 200 OK 10:52:19.112434 IP 118.25.194.34.56490 > 10.105.33.19.http: Flags [.], ack 1398, win 250, options [nop,nop,TS val 608533112 ecr 1190782479], length 0 10:52:19.112605 IP 118.25.194.34.56490 > 10.105.33.19.http: Flags [F.], seq 78, ack 1398, win 250, options [nop,nop,TS val 608533112 ecr 1190782479], length 0 10:52:19.112650 IP 10.105.33.19.http > 118.25.194.34.56490: Flags [F.], seq 1398, ack 79, win 227, options [nop,nop,TS val 1190782484 ecr 608533112], length 0 10:52:19.117308 IP 118.25.194.34.56490 > 10.105.33.19.http: Flags [.], ack 1399, win 250, options [nop,nop,TS val 608533117 ecr 1190782484], length 0 ``` 上面的抓取的一次实例,包括了三次握手,数据收发,四次挥手,具体可以结合wireshark分析 下面文章写得很详细,直接推荐下,不再copy过来了 https://blog.csdn.net/hry2015/article/details/79006671
标签:
上一篇:
会话管理方式
下一篇:
编码总结
文章分类
css
elasticsearch
git
golang
guacamole
javascript
letsencrypt
linux
nginx
other
php
python
vue
web
阅读排行
编码总结
会话管理方式
tcpdump使用
JWT
vue笔记12-状态管理vuex
友情链接
node文件
laravel-vue
ArcherWong的博客园