TCPDump使用方法

2023-11-02 08:28:42 浏览数 (2)

基本介绍

TCPDump是一个网络抓包工具,它可以在命令行下运行来捕获和分析网络传输过程中的数据包,TCPDump可以在多种操作系统上运行,包括Linux、Unix、Mac OS X和Windows等平台

主要功能

TCPDump的主要功能包括以下几个方面

  • 捕获数据包:TCPDump可以捕获网络传输过程中的数据包,包括TCP、UDP、ICMP和IP等协议
  • 过滤数据包:TCPDump可以根据用户定义的规则,过滤出符合条件的数据包,以便进行分析和统计
  • 分析数据包:TCPDump可以对捕获的数据包进行分析,包括解析数据包的各个字段,如源地址、目的地址、协议类型、端口号等
  • 存储数据包:TCPDump可以将捕获的数据包保存到文件中,以便后续分析和处理
  • 监控网络流量:TCPDump可以实时监控网络流量,包括统计网络流量的总量、速率和流量分布等信息

使用TCPDump需要一定的命令行操作技能和网络知识,但是它提供了非常强大的网络分析和监控功能,对于网络管理和安全分析非常有用

使用方法

Step 1:打开终端或命令行窗口,使用root权限运行"tcpdump -h"命令可以查看tcpdump的详细使用方法

代码语言:javascript复制
#参数说明
-i:指定网络接口,例如-i eth0表示监控eth0网卡的数据包。
-n:禁用DNS解析,直接显示IP地址。
-vvv:输出详细的调试信息。
-c:指定捕获数据包的数量,例如-c 100表示捕获100个数据包后停止。
-s:指定捕获数据包的长度,例如-s 100表示捕获100个字节的数据包。
-w:将捕获到的数据包保存到文件中,例如-w capture.pcap表示将数据包保存到capture.pcap文件中。
-r:读取保存的数据包文件,例如-r capture.pcap表示读取capture.pcap文件中的数据包。
-A:以ASCII码形式输出数据包的内容。
-X:以16进制和ASCII码混合形式输出数据包的内容。
-v:输出详细的调试信息。
-e:显示数据包的链路层信息。
-q:不显示解析后的协议信息。
host:指定捕获数据包的源或目的IP地址,例如host 192.168.1.1表示捕获源或目的IP地址为192.168.1.1的数据包。
port:指定捕获数据包的源或目的端口号,例如port 80表示捕获源或目的端口号为80的数据包。
protocol:指定捕获数据包的协议类型,例如protocol tcp表示捕获TCP协议的数据包。
expr:指定复杂的捕获过滤条件,例如expr "src host 192.168.1.1 and dst port 80"表示捕获源IP地址为192.168.1.1且目的端口号为80的数据包。

Step 2:查看网卡

代码语言:javascript复制
tcpdump -D

Step 3:按照上述参数说明,指定网络接口(例如:eth0)后开始抓包

代码语言:javascript复制
tcpdump -i eth0 host 192.168.204.128 and port 80 -w capture.pcap
过滤语法

下面是一些tcpdump常用过滤语法:

代码语言:javascript复制
#地址过滤
tcpdump host 192.168.1.100      //主机地址过滤,捕获192.168.1.100 主机的数据包
tcpdump src  192.168.1.100      //源地址过滤,捕获源地址为192.168.1.100的数据包
tcpdump dst 192.168.1.100      //目的地址过滤,捕获目的地址为 192.168.1.100 的数据包
    
#网段过滤
tcpdump net 192.168.1.0/24       //网络地址过滤,捕获网络地址为 192.168.1.0/24 的数据包
tcpdump src net 192.168.10.0/24    //网络地址过滤,源网段
tcpdump dst net 192.168.10.0/24    //网络地址过滤,目标网段
    
#端口过滤:
tcpdump tcp port 80         //捕获80端口
tcpdump src port 80        //源端口捕获
tcpdump dst port 80        //目的端口捕获
tcpdump port 80 or port 22       //同时捕获80和22端口(写法效果一样)
tcpdump portrange 8000-8080      //捕获端口的一个段   例如:(8000 8001 8002......8080端口,>2个没法用or)
tcpdump src portrange 8000-8080  //源端口段的捕获
tcpdump dst portrange 8000-8080  //目的端口段的捕获
tcpdump tcp port http         //过滤HTTP协议80端口    

#协议过滤
tcpdump tcp port 80        //捕获所有TCP协议且目的端口为80的数据包
tcpdump tcp src 192.168.1.100  //捕获所有TCP协议且源IP地址为192.168.1.100的数据包
tcpdump tcp src 192.168.1.100 dst port 80    //捕获所有TCP协议、源IP地址为192.168.1.100且目的端口为80的数据包

#其他应用
tcpdump -i eth1 -s 0 -l -w - dst port 3306 | strings                         //抓取mysql执行的sql语句
tcpdump -n -nn -tttt -i eth0 -s 65535 'port 3306' -w 20160505mysql.cap              //抓取mysql通讯的网络包(cap用wireshark打开)
tcpdump -i eth1 'tcp[tcpflags] & tcp-syn != 0 and tcp[tcpflags] & tcp-ack != 0'          //抓取SMTP 数据
tcpdump -i eth1 'tcp[(tcp[12]>>2):4] = 0x47455420'                        //抓取HTTP GET数据,"GET"的十六进制是47455420
tcpdump -s 0 -A 'tcp dst port 80 and (tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354)'       //抓取HTTP POST数据,"POST"的十六进制是504f5354
tcpdump -i eth1 'tcp[(tcp[12]>>2):4] = 0x5353482D'                        //抓取SSH返回,"SSH-"的十六进制是0x5353482D
tcpdump -i eth0 '((port 8080) and (tcp[(tcp[12]>>2):4]=0x47455420))' -nnAl -w /tmp/GET.log    //实时抓取端口号8080的GET包,然后写入GET.log
time tcpdump -nn -i eth0 'tcp[tcpflags] = tcp-syn' -c 10                      //抓取指定SYN个数,-c 参数指定抓多少个包
文末小结

本文介绍了TCPDump的基本使用方法和常用命令选项,希望能够对读者有所启发和帮助,同时需要注意的是TCPDump的使用需要一定的技术基础和实践经验,建议读者在实际操作中多加练习和尝试以充分发挥其功能和价值

0 人点赞