ngrep
核心参数
参数名称 | 参数介绍 |
-q | 禁止在屏幕上输出匹配行 |
-d | 定义网络接口,可以多次使用 |
-W | 设置缓冲区大小,单位为MB,默认为2MB |
-n | 不解析ASCII数据 |
-i | 设置网络接口,与-d参数相同 |
-P | 将解析的协议名称作为输出的一部分 |
-t | 显示时间戳 |
-O | 输出OUI列表,即MAC地址的前三个字节对应的厂商信息 |
-A | 解析ASCII数据,包括HTTP,SMTP等协议中的数据,注意会产生大量输出 |
-s bytes | 设置捕获的数据包大小,单位为字节,默认为68字节 |
-c count | 设置捕获数据包的数量 |
用法举例
# 监听本机所有网卡的80端口流量
ngrep -d any port 80
# 监听指定网卡上的所有流量
ngrep -d eth0
# 设置捕获数据包大小为100字节
ngrep -s 100
# 解析并显示HTTP数据包内容
ngrep -q -W byline -d eth0 -t '^(GET|POST) ' 'tcp port 80' | grep -i -E '^(GET|POST)'
# 解析并显示SMTP数据包内容
ngrep -q -W byline -d eth0 -t '^\S+ [^@]+@' 'tcp port 25' | grep -i -E '^(MAIL|RCPT|DATA)'
# 捕获指定网卡上的ICMP数据包
ngrep -d eth0 -t icmp
# 设置捕获数据包的数量为100
ngrep -c 100
注:ngrep可以用于网络流量的抓取和过滤,类似于grep命令对文件的过滤,ngrep对网络流量进行过滤和匹配。
Wireshark
核心参数
参数名称 | 介绍 |
-i | 指定抓包接口 |
-f | 设置过滤条件 |
-w | 将抓到的数据包保存到文件 |
-r | 从文件中读取数据包进行分析 |
-n | 禁用网络地址转换 |
-d | 指定协议解析器的显示格式 |
-t | 显示时间戳 |
-T | 设置输出格式 |
-e | 提取指定字段 |
-q | 设置静默模式 |
用法举例
# 抓取指定接口的所有数据包
wireshark -i eth0
# 使用过滤器抓取特定协议的数据包
wireshark -f "tcp port 80"
# 将抓到的数据包保存到文件中
wireshark -i eth0 -w capture.pcap
# 读取保存的数据包文件进行分析
wireshark -r capture.pcap
# 禁用网络地址转换功能
wireshark -n
# 使用指定的协议解析器的显示格式
wireshark -d udp.port==53,dns
# 显示时间戳
wireshark -t ad
# 设置输出格式
wireshark -T json
# 提取指定字段
wireshark -e tcp.flags -e ip.src -e ip.dst
# 设置静默模式
wireshark -q
以上是一些常用的Wireshark命令,具体使用场景可以根据实际需求进行调整。Wireshark拥有丰富的命令选项和过滤器选项,用户可以根据需要进行调整和组合,以满足自己的抓包分析需求。
tshark
核心参数
参数名称 | 参数说明 |
-r <文件名> | 从指定的文件中读取数据包进行分析 |
-i <接口名> | 监听指定的网络接口 |
-w <文件名> | 将捕获到的数据包写入指定文件 |
-f <过滤器表达式> | 使用指定的过滤器表达式对捕获的数据包进行过滤 |
-T <输出格式> | 指定输出的格式 |
-z <统计模式> | 指定统计模式 |
用法举例
# 监听网络接口并输出到终端
tshark -i eth0
# 监听网络接口并将结果写入指定文件
tshark -i eth0 -w capture.pcap
# 从文件中读取数据包并输出到终端
tshark -r capture.pcap
# 从文件中读取数据包并将结果写入指定文件
tshark -r capture.pcap -w newcapture.pcap
# 使用过滤器表达式对数据包进行过滤并输出到终端
tshark -i eth0 -f "tcp port 80"
# 使用过滤器表达式对数据包进行过滤并将结果写入指定文件
tshark -i eth0 -f "tcp port 80" -w http.pcap
# 输出指定格式的数据包信息
tshark -i eth0 -T fields -e http.request.method -e http.host
# 使用指定的统计模式输出统计信息
tshark -i eth0 -z io,phs
以上是tshark工具的基本使用方法,使用不同的参数和选项可以完成更加复杂的网络数据包分析和统计任务。
ssldump
核心参数
参数 | 说明 |
-d | 调试模式,输出详细信息。 |
-i | 监听的网络接口。 |
-r | 读取pcap文件。 |
-v | 显示更多的信息。 |
-x | 显示十六进制编码。 |
-c | 最多显示多少个记录。 |
-A | 显示ASCII编码。 |
-H | 显示热带鱼特有的信息。 |
-K | 显示键入输入的内容。 |
-S | 显示伺服器证书。 |
-X | 显示明文数据。 |
-O | 设置输出的格式。 |
-C | 在新文件中保存数据。 |
-F | 使用过滤器过滤数据包。 |
-p | 不要将网卡设置成混杂模式。 |
-P | 设置密钥密码。 |
-L | 设置日志文件路径。 |
-b | 设置日志文件大小。 |
-E | 设置日志文件滚动周期。 |
-T | 设置协议类型。 |
-n | 不解析DNS。 |
-D | 显示可以嗅探的接口列表。 |
-h | 显示帮助信息。 |
用法举例
# 监听本机的eth0网络接口
sudo ssldump -i eth0
# 读取pcap文件并输出ASCII码
ssldump -r capture.pcap -A
# 显示明文数据
ssldump -r capture.pcap -X
# 显示服务器证书
ssldump -r capture.pcap -S
# 显示热带鱼特有的信息
ssldump -r capture.pcap -H
# 显示十六进制编码
ssldump -r capture.pcap -x
# 显示更多的信息
ssldump -r capture.pcap -v
# 显示可以嗅探的接口列表
ssldump -D
# 设置日志文件大小为1M
ssldump -C 1 -L /tmp/ssldump.log
# 不解析DNS
ssldump -r capture.pcap -n
# 设置协议类型为SMTP
ssldump -r capture.pcap -T smtp
# 使用过滤器过滤数据包
ssldump -r capture.pcap -F 'tcp port 443'
netsniff-ng
核心参数
参数名称 | 参数介绍 |
-i | 指定抓包的网络接口 |
-s | 设置抓取数据包的最大长度 |
-t | 设置抓包的时间长度 |
-p | 禁止混淆数据包 |
-v | 输出详细信息 |
-A | 输出ASCII码形式的包内容 |
-B | 输出16进制码形式的包内容 |
-c | 指定抓取的数据包数量 |
-f | 设置过滤器规则 |
-F | 从文件中读取过滤器规则 |
-T | 设置输出的格式 |
用法举例
# 抓取指定接口的所有数据包
sudo netsniff-ng -i eth0
# 抓取指定接口的前100个数据包
sudo netsniff-ng -i eth0 -c 100
# 抓取指定接口的TCP数据包
sudo netsniff-ng -i eth0 -f "tcp"
# 抓取指定接口的IP数据包,并输出详细信息
sudo netsniff-ng -i eth0 -f "ip" -v
# 抓取指定接口的前10个TCP数据包,并输出16进制码形式的包内容
sudo netsniff-ng -i eth0 -f "tcp" -B -c 10
# 抓取指定接口的TCP数据包,输出ASCII码形式的包内容,并将结果保存到文件
sudo netsniff-ng -i eth0 -f "tcp" -A > output.txt
# 抓取指定接口的TCP数据包,输出指定格式的包内容
sudo netsniff-ng -i eth0 -f "tcp" -T '%(proto)src: %(saddr):%(sport) -> %(dstaddr):%(dstport)\n'
dsniff
核心参数
参数名称 | 说明 |
-d | 指定网络接口 |
-i | 指定数据包文件 |
-w | 输出数据包到文件 |
-n | 不执行DNS反向解析 |
-p | 指定嗅探协议 |
-m | 指定嗅探目标主机 |
-f | 指定过滤规则 |
-s | 指定抓取数据包的数量 |
-v | 输出详细信息 |
用法举例
# 嗅探指定接口的HTTP请求
sudo dsniff -d eth0 -p http
# 嗅探指定接口的所有流量
sudo dsniff -d eth0
# 嗅探指定目标主机的FTP流量
sudo dsniff -m target_host -p ftp
# 嗅探指定目标主机的所有流量
sudo dsniff -m target_host
# 嗅探指定数据包文件中的HTTP请求
sudo dsniff -i input.pcap -p http
# 嗅探指定数据包文件中的所有流量
sudo dsniff -i input.pcap
# 嗅探指定端口的流量
sudo dsniff -f "tcp port 80"
# 嗅探指定数量的流量并输出详细信息
sudo dsniff -s 100 -v
# 嗅探指定目标主机的SMTP流量并输出到文件
sudo dsniff -m target_host -p smtp -w output.pcap
# 嗅探指定目标主机的SSH流量并不执行DNS反向解析
sudo dsniff -m target_host -p ssh -n
注意:dsniff需要使用root权限运行。
所有工具总结对比:
工具名称 | 优势 | 劣势 | 排名 |
Wireshark | - 强大的过滤功能- 支持多种协议- 图形化界面- 大量的社区支持和文档 | - 需要图形界面,不太适合在命令行环境下使用- 对于大规模流量的抓包,需要更高的硬件要求 | 1 |
tshark | - 和Wireshark相同的抓包引擎,能够支持Wireshark的过滤语法- 可以在命令行环境下运行- 支持多种文件格式 | - 需要掌握Wireshark的过滤语法,不太友好- 对于复杂的协议需要手动解析 | 2 |
tcpdump | - 命令行工具,适合在服务器上使用- 低系统资源消耗- 支持多种过滤语法- 在Linux和Unix系统中自带 | - 需要手动解析数据包,不太友好- 不支持图形化界面- 对于某些高级协议的支持不够完善 | 3 |
ngrep | - 简单易用,不需要掌握复杂的过滤语法- 支持多种协议- 支持正则表达式过滤- 在Linux和Unix系统中自带 | - 不支持图形化界面- 不支持一些高级的过滤功能 | 4 |
ssldump | - 支持对SSL加密流量的解析- 支持输出SSL证书和密钥- 命令行工具,适合在服务器上使用 | - 只支持SSL协议- 不支持其他协议的解析- 对于非加密流量无法解析 | 5 |
netsniff-ng | - 支持多种协议- 高效的数据包捕获和过滤- 可以输出多种格式的文件- 支持命令行和图形化界面 | - 安装和配置比较复杂- 文档和社区支持相对较少- 对于复杂的协议需要手动解析 | 6 |
dsniff | - 支持多种协议- 可以实时监控流量- 支持密码嗅探- 在Linux和Unix系统中自带 | - 不支持图形化界面- 对于某些高级协议的支持不够完善- 有一定的法律风险 | 7 |