我是靠谱客的博主 优秀哈密瓜,最近开发中收集的这篇文章主要介绍Linux 抓包工具 tcpdump 使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

tcpdump -D

获取网络适配器列表,以下是在windows上获取到的结果:

DevicePssdkLoopback (PSSDK Loopback Ethernet Emulation Adapter)
Device{CF587901-C85F-4FD6-896F-D977DEFE76EC} (Intel(R) PRO/100 VE Network Co
nnection)
tcpdump -i <需要监控的网络适配器编号>

例如我想监控lo(127.0.0.1),即上面列表中的 DevicePssdkLoopback: (windows上特有的,linux不适用)

tcpdump -i 1

如果不使用-i来定义监控适配器的话,默认使用列表中的第一个;

tcpdump host 192.9.200.59 and tcp port 8000

监控主机为192.9.200.59上8000端口的tcp协议:

tcpdump -X host 192.9.200.59 and tcp port 8000

如果想要显示数据包的内容,需要使用-X参数,如,我想要显示捕获的http数据包http header的内容

显示结果如下:

22:13:19.717472 IP testhost59.12535 > liujuan59.8000: . 1:330(329) ack 1 win 3278
        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 

可以看到该结果只显示了http头的一部分,没有显示全,是因为tcpdump默认将显示的数据长度截断了,可以使用-s后面加数据长度,来设置数据显示长度:

tcpdump -X -s 0 host 192.9.200.59 and tcp port 8000

以上的例子中,-s 0 表示自动设置长度使其能够显示所有数据。

tcpdump -X -s 0 -w aaa host 192.9.200.59 and tcp port 8000

捕获的数据太多,不断刷屏,可能需要将数据内容记录到文件里,需要使用-w参数,
将之前显示在屏幕中的内容,写入tcpdump可执行文件同级目录下的aaa文件中。
文件查看方式如下,需要使用-r参数:

tcpdump -X -s 0 -r aaa host 192.9.200.59 and tcp port 8000

如果这样写:

tcpdump -r aaa

则只能看到最简单的数据传输交互过程,看不到数据包内容,查看时也需要使用相应的参数。

总结一下,tcpdump的参数分两个部分,选项(Options)和表达式(expression):

tcpdump[-adeflnNOpqRStuvxX] [-ccount]
               [-Cfile_size] [-Ffile]
               [-iinterface] [-mmodule] [-rfile]
               [-ssnaplen] [-Ttype] [-wfile]
               [-Ealgo:secret] [expression]

最后

以上就是优秀哈密瓜为你收集整理的Linux 抓包工具 tcpdump 使用的全部内容,希望文章能够帮你解决Linux 抓包工具 tcpdump 使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部