C/C++教程

tcpdump的抓包

本文主要是介绍tcpdump的抓包,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

tcpdump命令是Linux提供的一个非常强大的抓包工具,熟练使用它,对我们排查网络问题非常有用。如果在机器上还没有安装该工具,则可以使用如下命令安装:

yum install tcpdump
sudo apt install tcpdump #装不了请bing或google搜索一下

tcpdump运行时得有sudo权限
tcpdump的常用选项如下

  • -i 指定要捕获的目标网卡名,网卡名可以使用ifconfig命令获得 如果要抓取所有网卡上的包,则可以使用any关键字
tcpdump -i ens33
tcpdump -i any
  • -X 以ASCII和十六进制形式输出捕获的数据包内容,减去链路层的包头信息;-XX以ASCII和十六进制形式输出捕获的数据包内容,包括链路层的包头信息。
  • -n 不要将IP地址显示成别名 ;-nn指不要将ip地址和端口显示成别名
  • -S 以绝对值显示包的SN号 默认以上一包的偏移量显示
  • -vv显示详细的捕获的数据包 -vvv更详细的显示数据包内容
  • -w将抓包的原始信息写入到文件中,后跟文件名
tcpdump -i any -w filename.cap
  • -r 从使用-w选项保存的文件中读取包信息
    除了使用可选参数 另外可以使用包过滤的表达式
##仅仅显示tcp/udp端口8888 的数据包 
tcpdump -i any 'port 8888'
## 仅显示经过tcp:8888端口的数据包
tcpdump -i any 'tcp port 8888'
##仅显示源端口是tcp:8888的数据包
tcpdump -i any 'tcp src port 8888'
##仅显示源端口是tcp:8888或目标端口是udp9999的包
tcpdump -i any 'tcp src port 8888 or udp dst port 9999'
##仅显示原地址为127.0.0.1 且源端口是tcp 9999的包 以ASCII和十六进制显示详细的输出 不显示ip地址和端口号的别名
tcpdump -i any 'src host 127.0.0.1 and tcp src port 9999' -XX -nn -vv
这篇关于tcpdump的抓包的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!