抓包工具比较好用的有两个,一个是
snort
,一个是
tcpdump
,这次不说
snort
了,觉得这个工具虽然很强
大,但是比较复杂,还是
tcpdump
比较简单。
tcpdump windows
、
linux
版本均有。
linux
版本可以在以下
网站下载:
www.tcpdump.org.
安装好
tcpdump
之后,运行
tcpdump
:
1. tcpdump -D
获取网络适配器列表
,以下是在
windows
上获取到的结果:
1.\Device\PssdkLoopback (PSSDK Loopback Ethernet Emulation Adapter)
2.\Device\{CF587901-C85F-4FD6-896F-D977DEFE76EC} (Intel(R) PRO/100 VE
Network Co
nnection)
2. tcpdump -i <
需要监控的网络适配器编号
>
,例如我想监控
lo(127.0.0.1)
,即上面列表中的
1.\Device\PssdkLoopback:
(
windows
上特有的,
linux
不适用)
tcpdump -i 1
如果不使用
-i
来定义监控适配器的话,默认使用列表中的第一个;
3.
监控主机为
192.9.200.59
上
8000
端口的
tcp
协议
:
tcpdump host 192.9.200.59 and tcp port 8000
4.
如果想要显示数据包的内容,
需要使用
-X
参数
,
如,
我想要显示捕获的
http
数据包
http header
的内容:
tcpdump -X host 192.9.200.59 and tcp port 8000
显示结果如下:
22:13:19.717472 IP testhost59.12535 > liujuan59.8000: . 1:330(329) ack 1 win 327
8
0x0000:
4500 0171 e616 0000 8006 cb2b 0000 0000
E..q.......+....
0x0010:
c009 c83b 30f7 1f40 0000 0002 0000 0002 ...;0..@........
0x0020:
5010 8000 b066 0000 504f 5354 202f 2048
P....f..POST./.H
0x0030:
5454 502f 312e 310d 0a43 6f6e 7465 6e74
TTP/1.1..Content
0x0040:
2d54 7970 653a 2074 6578 742f 786d 6c3b
-Type:.text/xml;
0x0050:
2063 .c
可以看到该结果只显示了
http
头的一部分,没有显示全,是因为
tcpdump
默认将显示的数据长度截断了,
可以使用
-s
后面加数据长度,来设置数据显示长度:
tcpdump -X -s 0 host 192.9.200.59 and tcp port 8000
以上的例子中,
-s 0
表示自动设置长度使其能够显示所有数据。
5.
捕获的数据太多,不断刷屏,可能需要将数据内容记录到文件里,需要使用
-w
参数
:
tcpdump -X -s 0 -w aaa host 192.9.200.59 and tcp port 8000
则将之前显示在屏幕中的内容,写入
tcpdump
可执行文件同级目录下的
aaa
文件中。
文件查看方式如下,需要使用
-r
参数:
tcpdump -X -s 0 -r aaa host 192.9.200.59 and tcp port 8000
如果这样写:
tcpdump -r aaa
则只能看到最简单的数据传输交互过程,看不到数据包内容,查看时也需要使用相应的参数。