tcpdump抓取指定报文

关于tcpdump命令的详细用法,下面两图分别显示了IP和TCP报文的首部
在这里插入图片描述
在这里插入图片描述

1. 抓取 http GET/POST请求:

tcpdump -s 0 -A -vv 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'

解析:

1) 获取tcp报文头长度:tcp[12:1]&0xf0 >> 2

首先,因为tcp 报文的data-offset(数据偏移)字段长度为4位,我们取 data-offset所在字节,并AND 0xf0取数据偏移位,即 tcp[12:1]&0xf0

其次,因为data-offset字段位于字节高位,帮右移4位后才是真实的数据长度:tcp[12:1]&0xf0 >> 4

最后,因为data-offset字段单位为32位字(1字长为4字节),因此需要将结果乘以4(左移2位),因此得 tcp[12:1]&0xf0 >> 4 << 2,得到最后结果为:tcp[12:1] & 0xf0) >> 2

2) 获取tcp报文内容头4字节:

‘GET ’ = 0x47455420

‘POST’ = 0x504f5354

查ASCII表:

0x47:‘G’

0x45:‘E’

0x54:‘T’

0x20:’空格‘

详细解释请参考此处:
https://security.stackexchange.com/questions/121011/wireshark-tcp-filter-tcptcp121-0xf0-24
tcpdump详细用法:
https://hackertarget.com/tcpdump-examples/

2. 只抓取有数据的HTTP报文内容

不抓取 TCP session setup (SYN / FIN / ACK).

tcpdump 'tcp port 80 and(((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
  1. 从IP报文中获取I报文总长度: ip[2:2]

  2. 从IP报文中获取IP报文头长度: (ip[0]&0xf)<<2

  3. 从TCP报文中获取TCP报文头长度:(tcp[12]&0xf0)>>2

  4. 计算数据包长度:报文总长度-IP报文头长度-TCP报文头长度

  5. 获取HTTP数据包长度非空的报文:(((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)’

3. 抓取发包最多的IP地址

tcpdump -nnn -t-c 200| cut -f 1,2,3,4 -d '.' | sort | uniq -c | sort -nr | head -n 20

完整报文内容:

IP 52.231.189.25.20523 > 192.168.1.117.16414: Flags [P.], seq 2274221020:2274221373, ack 4123247268, win 1452, options [nop,nop,TS val 1627996351 ecr 949364960], length 353

1) 选项释意:

-t: 不打印时间

-c:抓200个数据包

2) 切割报文:

cut -f 1,2,3,4 -d ‘.’  :以’.'为分隔符切割报文,并取 1,2,3,4 段域

  1. 排序:sort

  2. 计算并打印相同数据出现的次数:uniq -c

  3. 以数字倒序排序: sort -nr

  4. 取前20条数据:head -n 20

4. 抓所有协议的明文密码:

tcpdump port http or port ftp or port smtp or port imap or port pop3 or port telnet -l -A | egrep -i -B5 'pass=|pwd=|log=|login=|user=|username=|pw=|passw=|passwd=|password=|pass:|user:|username:|password:|login:|pass |user '

tcpdump抓取http包
https://www.jianshu.com/p/c46f8fc1dd1d

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值