抓包前提:确认服务器网卡有IP地址
linux系统:ifconfig,查看网卡ip
1、如果网卡没有ip则不能使用含有此网卡相关的命令,如图中的eth0和eth1
如果使用命令:tcpdump -i eth0 host 10.213.72.186 -w /tmp/snmp_0414.cap
则会告警提示此网卡没有ip address:tcpdump: WARNING: eth0: no IPv4 address assigned
2、必须使用有ip 的 比如图中的 xenbr0 或xenbr1,使用命令:tcpdump -i xenbr0 host 10.213.72.186 -w /tmp/snmp_0414.cap
3、在使用抓包命令同时,服务器操作界面新打开一个窗口向输入触发设备发送报文请求并收到报文回应。
4、服务器操作界面:“ctrl+c”停止抓包
5、将抓到的包导出到本地使用wireshark软件解析报文
6、如果报文是加密了,如SNMPv3报文,要根据相关参数解密报文
服务器抓包-tcpdump抓包命令
tcpdump 的抓包保存到文件的命令参数是-w xxx.cap
抓eth1的包
tcpdump -i eth1 -w /tmp/xxx.cap
抓 192.168.1.123的包
tcpdump -i eth1 host 192.168.1.123 -w /tmp/xxx.cap
抓192.168.1.123的80端口的包
tcpdump -i eth1 host 192.168.1.123 and port 80 -w /tmp/xxx.cap
抓192.168.1.123的icmp的包
tcpdump -i eth1 host 192.168.1.123 and icmp -w /tmp/xxx.cap
抓192.168.1.123的80端口和110和25以外的其他端口的包
tcpdump -i eth1 host 192.168.1.123 and ! port 80 and ! port 25 and ! port 110 -w /tmp/xxx.cap
抓vlan 1的包
tcpdump -i eth1 port 80 and vlan 1 -w /tmp/xxx.cap
抓pppoe的密码
tcpdump-i eth1 pppoes -w /tmp/xxx.cap
以100m大小分割保存文件, 超过100m另开一个文件
-C 100m
抓10000个包后退出
-c 10000
后台抓包, 控制台退出也不会影响
nohup tcpdump -i eth1 port 110 -w /tmp/xxx.cap &
抓取从指定ip和网口发出的网络请求,数据包写入执行文件
tcpdump -i eth0 src 10.19.221.227 -w /home/snmp_0414.cap
或者
tcpdump src 10.19.221.227 -i eth0 -w /home/snmp_0414.cap
抓取指定端口的包
tcpdump -i any port 9168 -s0 -w /home/916899.cap
或者
tcpdump -i any port 6300 -w /home/6300.cap
截取源IP是210.2.2.4主机发送给目的端口6800的所有报文,并把它保存到a.cap文件中:
tcpdump 'src host 210.2.2.4 and dst port 6800' -s 1500 -w a.cap
(1) 想要截获1.1.1.1主机所有收到的和发出的的报文,并把信息打印到控制台:
tcpdump 命令
tcpdump [-option] [expression]
或者
tcpdump [expression] [-option]
tcpdump普通用法
tcpdump的参数由两部分组成:option和expression,option表示命令的参数,expression用于表示哪些报文被dump出来,没有提供expression表示dump所有的报文
tcpdump参数
-n :不解析地址,直接以 IP 及 port number 显示,而非主机名与服务名称
-i :后面接要『监听』的网络接口,例如 eth0, lo, ppp0 等等
-c :抓包数量,如果没有这个参数, tcpdump 会持续不断的监听,直到使用者输入 [ctrl]-c 为止
-e :输出dump的报文的链路层(OSI 第二层)信息(包括源目MAC和以太类型)
-q :quick mode,仅列出较为简短的封包信息,每一行的内容比较精简
-s :抓包的长度,默认是96字节。如果要把报文保存下来分析,需配置此参数
-A :抓包内容以 ASCII 显示,做WWW 的网页抓包分析很有用
-X :可以列出十六进制 (hex) 以及 ASCII 的抓包内容,对于观察内容很有用
-r :从后面接的文件中读取数据,这个『文件』是由 -w 所生成的
-w :把抓取数据保存到文件,后面接文件名
-v :verbose output,打印详细的输出
-vv :more verbose output,打印更加详细的输出
expression选择那些报文被dump出来,使用的是BPF语法。它可以由多个primitive(原语,可以理解成子表达式)组成,每个primitive都会输出一个结果:true或者false,primitive之间可以用逻辑符组合,最终expression的结果为true的报文会被dump出来。
常用的expression:
host :匹配v4/v6地址,可以匹配源和目的。
src host :匹配源v4/v6地址
dst host :匹配目的v4/v6地址
ether src :匹配源MAC
ether dst :匹配目的MAC
net :匹配网络地址范围
src net :匹配源网络地址范围
dst net :匹配目的网络地址范围
port :匹配端口号
src port :匹配源端口号
dst port :匹配目的端口号
ip proto :匹配IP协议号,可以跟数字或者知名的协议名
ether proto :匹配以太类型
vlan :匹配VLAN号
缩写 :ip ip6 arp stp tcp udp icmp(ether proto和ip proto的缩写)
逻辑符:not and or,not的优先级最高,and和or的优先级相同,从左往右依次生效
tcpdump用法
tcpdump常见用法
主要有两种用法:一是把抓取到的报文直接打印到控制台(stdout),二是把抓取到的内容保存到文件,借助其他工具(比如wireshark)分析抓取的报文,想要保存下来就带-w选项即可。常用示例如下
(1) 想要截获1.1.1.1主机所有收到的和发出的的报文,并把信息打印到stdout:
tcpdump host 1.1.1.1
(2) 想要截获主机1.1.1.1 和主机1.1.1.2或192.168.111.3的通信,并且不做解析:
tcpdump host 1.1.1.1 and 1.1.1.2 or 192.168.111.3 -n
(3) 想要获取主机1.1.1.1除了和主机1.1.1.2之外所有主机通信的ip包:
tcpdump host 1.1.1.1 and ! 1.1.1.2 -n
(4) 截取源IP是210.2.2.4主机发送给目的端口6800的所有报文,并把它保存到a.cap文件中:
tcpdump src host 210.2.2.4 and dst port 6800 -s 1500 -w a.cap
tcpDump
参考二
https://baike.baidu.com/item/TCPDUMP/1383003
分析 Wireshark
wireshark的显示过滤器不是BPF语法,需要注意。
连接符:
==(eq) 等于
!=(ne) 不等于
<(lt) 小于
>(gt) 大于
>=(ge) 大于等于
<=(le) 小于等于
&&(and) 与
||(or) 或
!(not) 非
过滤IP地址:
过滤10.251.251.251的数据包
ip.addr==10.251.251.251
过滤源地址为1.1.1.8的数据包
ip.src==10.251.251.251
过滤源地址1.1.1.8或者目的地址1.1.1.10的数据包
ip.src1.1.1.8 or ip.dst1.1.1.10
过滤端口:
过滤tcp80端口的数据包
tcp.port eq 80,或者tcp.port == 80
过滤目的端口tcp80的数据包
tcp.dstport == 80
过滤tcp端口1000到2000之间的数据包
tcp.port>=1000 and tcp.port<=2000
过滤MAC地址:
过滤目的MAC11:22:33:44:55:66
eth.addr == 11:22:33:44:55:66
过滤http协议中带host字段的数据包
http.host
http.host==1.1.1.8
过滤http中post字段的数据包
http request method == POST
注意区分大小写。
WireShark 过滤语法
IP 过滤
过滤IP,如来源IP或者目标IP等于某个IP
ip.src eq 192.168.1.107 or ip.dst eq 192.168.1.107
或者
ip.addr eq 192.168.1.107 // 都能显示来源IP和目标IP
端口 过滤
tcp.port eq 80 // 不管端口是来源的还是目标的都显示
tcp.port == 80
tcp.port eq 2722
tcp.port eq 80 or udp.port eq 80
tcp.dstport == 80 // 只显tcp协议的目标端口80
tcp.srcport == 80 // 只显tcp协议的来源端口80
udp.port eq 15000
tcp.port ==80, 显示源主机或者目的主机端口为80的数据包列表。
tcp.srcport == 80, 只显示TCP协议的源主机端口为80的数据包列表。
tcp.dstport == 80,只显示TCP协议的目的主机端口为80的数据包列表。
过滤端口范围
tcp.port >= 1 and tcp.port <= 80
过滤协议
tcp
ssl
http
https
ftp
排除包
!ssl 或者 not ssl
根据包长度过滤
udp.length ==26
http.request.method==“GET”, 只显示HTTP GET方法的。
http 关键词过滤
只访问某指定域名:http.host==“域名”
访问包含了指定字符串的 : http.[host] contains “内容”
只显示Referer头部内容为 http://www.packtpub.com的请求 : http.referer == “http://www.packtpub.com”
————————————————
版权声明:本文为CSDN博主「brasy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/github_40044758/article/details/111290919
3.
获取含有指定url的 包
http contains "vehicleCheckResult"
wireshark 查看
查看http流