发布网友 发布时间:2022-09-01 05:29
共1个回答
热心网友 时间:2024-11-16 03:43
大部分 Linux 发行版都内置了 Tcpmp 工具。如果没有,也可以直接使用对应的包管理器进行安装(如: $ sudo apt-get install tcpmp 和 $ sudo yum install tcpmp )
通过表达式可以对各种不同类型的网络流量进行过滤,以获取到需要的信息。这也是 tcpmp 强大功能的一个体现。
主要有 3 种类型的表达式:
指定网络接口:
# tcpmp -i <dev>
原始信息输出模式:
# tcpmp -ttttnnvvS
更详细的输出,不解析主机名和端口名,使用绝对序列号,方便阅读的时间戳
通过IP地址过滤:
# tcpmp host 10.2.64.1
HEX 输出
# tcpmp -nnvXSs 0 -c1 icmp
通过源地址和目标地址进行过滤
# tcpmp src 10.2.67.203
# tcpmp dst 10.2.67.203
通过子网进行过滤
# tcpmp net 10.2.64.0/24
监听指定端口号
# tcpmp port 515
指定协议
# tcpdmp icmp
端口范围
# tcpmp portrange 21-23
通过包大小过滤
# tcpmp less 32
# tcpmp greater 64
# tcpmp <= 128
写入 PCAP 文件
# tcpmp port 80 -w capture_file
读取 PCAP 文件
# tcpmp -r capture_file
可以通过命令选项的不同组合(使用逻辑运算符)完成更复杂的任务。运算符包括以下3种:
# tcpmp src 10.2.64.29 and dst port 80
即捕捉从指定主机(10.2.64.92)发出,且目标端口为 80 的所有网络数据
# tcpmp src net 192.168.0.0/16 and dst net 10.0.0.0/8 or 172.16.0.0/16
即捕捉从指定子网(192.168.0.0/16)发送到目标子网(10.0.0.0/8 和 172.16.0.0/16)的所有网络数据
# tcpmp src 192.168.56.1 and not dst port 22
即捕捉从指定主机(192.168.56.1)发出,且目标端口不为 22 的所有网络数据
# tcpmp 'tcp[13] & 32!=0' 所有 URGENT (URG) 包
# tcpmp 'tcp[13] & 16!=0' 所有 ACKNOWLEDGE (ACK) 包
# tcpmp 'tcp[13] & 8!=0' 所有 PUSH (PSH) 包
# tcpmp 'tcp[13] & 4!=0' 所有 RESET (RST) 包
# tcpmp 'tcp[13] & 2!=0' 所有 SYNCHRONIZE (SYN) 包
# tcpmp 'tcp[13] & 1!=0' 所有 FINISH (FIN) 包
# tcpmp 'tcp[13]=18' 所有 SYNCHRONIZE/ACKNOWLEDGE (SYNACK) 包
其他指定标志位的方式如:
# tcpmp 'tcp[tcpflags] == tcp-syn'
# tcpmp 'tcp[tcpflags] == tcp-fin'
一些特殊的用法
# tcpmp 'tcp[13] = 6' RST 和 SYN 同时启用的数据包(不正常)
# tcpmp 'tcp[32:4] = 0x47455420' 获取 http GET 请求的文本
# tcpmp 'tcp[(tcp[12]>>2):4] = 0x5353482D' 获取任何端口的 ssh 连接(通过 banner 信息)
# tcpmp 'ip[8] < 10' ttl 小于 10 的数据包(出现问题或 traceroute 命令)
# tcpmp 'ip[6] & 128 != 0' 非常有可能是黑客入侵的情况
A tcpmp Tutorial and Primer with Examples