sdfsdf
我知道你一定听过wireshark,wireshark真的很好用,可是有个更轻量的Linux命令:tcpdump。它能很容易的抓到包的,最关键的是命令可以直接结合linux的管道,威力无穷。 比如,最简单的 sudo tcpdump hosthttp://jianshu.com 它会抓取于http://jianshu.com这个host相通信的所有包,当然,你可再细一点指定过滤条件:
指定协议
sudo tcpdump ip hosthttp://jianshu.com sudo tcpdump tcp port 80
注意:sudo tcpdump tcp port 80 hosthttp://jianshu.com 这样写,会报 tcpdump: 'tcp' modifier applied to host的错 这时有两种方法: 1.使用and 关键字 sudo tcpdump tcp port 80 and hosthttp://jianshu.com 2.使用管道来查看 pinghttp://jianshu.com 得到http://jianshu.com的ip 120.132.92.21 sudo tcpdump tcp port 80 | grep 120.132.92.21
指定源和目标
这很简单,用src代表源;用dist代表目标 sudo tcpdump src host 120.132.92.21
使用与或非过滤
非是 ‘not ‘ ‘! ‘,与运算是’and’,’&&’;或运算 是’or’,’││’; 我还是推荐用not and or 这样的词,当然符号也行,但这样更好理解。 比如我们上面用到了and 还可以用not或者or来筛选主机 sudo tcpdump host \(210.27.48.2 or 210.27.48.3 \) 这里用到了括号,用以简化形式,一定注意,使用命令行时,括号要带上这两个斜杠,并且不能和括号直接有空格!
查看抓到的数据
如果你不带-X参数,那么抓到的只是这样的概述: 16:08:18.731680 IP 120.132.92.21.http > 192.168.16.163.45134: Flags [.], ack 43441, win 461, options [nop,nop,TS val 766985341 ecr 5849335], length 0 大体是系统时间 来源主机.端口 > 目标主机.端口 数据包参数
如果要查看详细的使用 -w 参数指定输出文件,或者带上-X参数。
我的建议是把数据输出到文件。输出的文件是16进制的,你可以用一些处理十六进制的命令读出来,例如使用xxd输出抓到的包的文件 zhuabao.txt cat zhuabao.txt | xxd
Last updated