蒙珣的博客

活好当下,做好今天该做的事情。

0%

Linux tcpdump命令

简介

tcpdump是一个强大的网络抓包Sniffer类工具,通常用在Linux系统中,Windows操作系统中也会使用,可以看作是WireShark的命令行版本。

tcdpump命令最初设计用于观察TCP/IP性能问题,它是一个用于截取网络分组,并输出分组内容的工具。tcpdump可以将网络中传送的数据包的报文头完全截获下来提供分析,它支持针对网络层、协议、主机、网络或端口的过滤,并提供and,or,not等逻辑语句来帮助用户去掉无用的信息。

语法

1
tcpdump [-adeflnNOpqStvx][-c<数据包数目>][-dd][-ddd][-F<表达文件>][-i<网络界面>][-r<数据包文件>][-s<数据包大小>][-tt][-T<数据包类型>][-vv][-w<数据包文件>][输出数据栏位]

操作命令

tcpdump -i wlan0 -s 0 -w a.cap //监听wlan0网卡上的全部流量,-s代表抓取包的大小,默认为抓取64,设置为0, 表示包有多大,抓多大。-w,表示抓取下来保存为,a.cap

tcpdump -r a.cpa

tcpdump -A -r a.cap //以Ascall显示包文件

tcpdump -x -r a.cap //以十六进制显示包文件

tcpdump -i eth0 tcp port 22 //监听tcp协议的,22端口

tcpdump—筛选

tcpdump -n -r http.cap | awk '{print $3}' |sort -u // -n 表示只以ip地址的形式显示出来,不显示域名。awk 参数表示只显示第三列信息; sort表示去掉重复的

tcpdump -n src host 145.254.160.237 -r http.cap //source

tcpdump -n dst host 145.254.160.237 -r http.cap //destination

tcpdump -n udp port 53 -r http.cap //使用udp 53端口就可以把所有的域名查询包显示出来

tcpdump -nX port 80 -r http.cap //十六进制

tcpdump -A -n 'tcp[13] = 24' -r http.cap //筛选tcp包里面的ack和psh包

Linux tcpdump命令用于倾倒网络传输数据。

执行tcpdump指令可列出经过指定网络界面的数据包文件头,在Linux操作系统中,你必须是系统管理员。

参数说明

  • -a 尝试将网络和广播地址转换成名称。
  • -c<数据包数目> 收到指定的数据包数目后,就停止进行倾倒操作。
  • -d 把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出。
  • -dd 把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出。
  • -ddd 把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出。
  • -e 在每列倾倒资料上显示连接层级的文件头。
  • -f 用数字显示网际网络地址。
  • -F<表达文件> 指定内含表达方式的文件。
  • -i<网络界面> 使用指定的网络截面送出数据包。
  • -l 使用标准输出列的缓冲区。
  • -n 不把主机的网络地址转换成名字。
  • -N 不列出域名。
  • -O 不将数据包编码最佳化。
  • -p 不让网络界面进入混杂模式。
  • -q 快速输出,仅列出少数的传输协议信息。
  • -r<数据包文件> 从指定的文件读取数据包数据。
  • -s<数据包大小> 设置每个数据包的大小。
  • -S 用绝对而非相对数值列出TCP关联数。
  • -t 在每列倾倒资料上不显示时间戳记。
  • -tt 在每列倾倒资料上显示未经格式化的时间戳记。
  • -T<数据包类型> 强制将表达方式所指定的数据包转译成设置的数据包类型。
  • -v 详细显示指令执行过程。
  • -vv 更详细显示指令执行过程。
  • -x 用十六进制字码列出数据包资料。
  • -w<数据包文件> 把数据包数据写入指定的文件。

常用命令

  • 抓取所有的包

    tcpdump -i any -n -w xxx.cap