tcpdump使用教程

一、常用的tcpdump选项

  • -s number 表示需要截取报文字节数(tcpdump默认只会截取前96个字节),如果是0的话,表示截取报文全部内容

  • -n 表示不要解析域名,直接显示ip

  • -i 表示需要监听的网卡

  • -A 表示只使用ascii码打印报文的全部数据

二、过滤器

机器上的网络报文数量异常的多,很多时候我们只关系和具体问题有关的数据报(比如访问某个网站的数据,或者 icmp 超时的报文等等),而这些数据只占到很小的一部分。把所有的数据截取下来,从里面找到想要的信息无疑是一件很费时费力的工作。而 tcpdump 提供了灵活的语法可以精确地截取关心的数据报,简化分析的工作量。这些选择数据包的语句就是过滤器(filter)!

过滤器也可以简单地分为三类:typedir 和 proto

Type 让你区分报文的类型,主要由 host(主机), net(网络) 和 port(端口) 组成。src 和 dst 也可以用来过滤报文的源地址和目的地址。

1. host: 过滤某个主机的数据报文

tcpdump host 1.2.3.4

2. src, dst: 过滤源地址和目的地址

tcpdump src 2.3.4.5
tcpdump dst 3.4.5.6

3. net: 过滤某个网段的数据,CIDR 模式

tcpdump net 1.2.3.0/24

4. proto: 过滤某个协议的数据,支持 tcp, udp 和 icmp。使用的时候可以省略 proto 关键字。

tcpdump icmp

5. port: 过滤通过某个端口的数据报

tcpdump port 3389

6. src/dst, port, protocol: 结合三者

tcpdump src port 1025 and tcp
tcpdump udp and src port 53

此外还有指定端口和数据报文范围的过滤器:

7. port 范围

tcpdump portrange 21-23

8. 数据报大小,单位是字节

tcpdump less 32
tcpdump greater 128
tcpdump > 32
tcpdump <= 128

过于过滤器的更多详细信息,请访问 tcpdump 官方 map page 的 PCAP-FILTER 部分

三、输出到文件

tcpdump提供报文数据保存到文件的功能,如果是需要长时间抓包,那么这个功能可以把数据保存下来,再进行分析。

-w 选项用来把数据报文输出到文件,比如下面的命令就是把所有 80 端口的数据导入到文件。

# sudo tcpdump -w capture_file.pcap port 80

四、抓取HTTP GET/POST请求

tcpdump -i enp0s8 -s 0 -A 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'p -i enp0s8 -s 0 -A 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'

tcp[((tcp[12:1] & 0xf0) >> 2):4] 定义了我们所要截取的字符串的位置(http header的后面)的4 bytes。

0x47455420GET的ASCII码。

tcpdump -i enp0s8 -s 0 -A 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504F5354

0x504F5354代表的是 POST的ASCII码。

reference

posted @ 2024-12-19 11:53  cockpunctual  阅读(151)  评论(0)    收藏  举报