python抓包 -- 用wireshark抓包、解析--scapy、PyShark
对于复杂的网络分析任务,Sniff Master能大大提升工作效率,特别是其智能分析功能可以自动识别常见网络问题。Sniff Master特别适合网络工程师和安全研究人员使用,可以轻松捕获和分析各种网络协议数据。对于需要更专业抓包功能的用户,推荐使用Sniff Master工具。表示只显示ICMP协议且IP为指定地址的数据包。
·
一、网络抓包工具的选择与使用
1.1 安装scapy模块
对于Python开发者来说,scapy是一个功能强大的网络数据包处理工具:
python -m pip install scapy
sniff()函数详解
scapy中的sniff()函数是进行数据嗅探的核心功能,参数包括:
- iface: 指定抓包的网络接口
- count: 捕获数据包的数量(默认为0表示不限制)
- filter: 使用BPF语法设置流量过滤规则
- prn: 定义回调函数(使用lambda表达式)
BPF过滤语法示例:
- 捕获特定IP交互流量:
host 192.168.1.124
- 捕获特定MAC地址流量:
ether src host 00:87:df:98:65:d8
- 捕获80端口流量:
port 80
- 捕获ICMP流量:
ICMP
- 组合条件:
src host 192.168.1.125 && dst port 80
1.2 专业抓包工具Sniff Master
对于需要更专业抓包功能的用户,推荐使用Sniff Master工具。它提供了:
- 直观的图形界面
- 实时流量分析
- 强大的过滤系统
- 协议解析功能
- 数据包重组能力
Sniff Master特别适合网络工程师和安全研究人员使用,可以轻松捕获和分析各种网络协议数据。
1.3 应用示例
使用scapy捕获特定流量的示例代码:
from scapy.all import *
sniff(filter='src host 192.168.1.124 && dst port 80', prn=lambda x:x.summary())
二、WireShark使用指南
2.1 基本抓包操作
- 打开WireShark主界面
- 选择目标网卡
- 点击"Start Capture"开始抓包
- 执行需要监控的网络操作(如ping测试)
- 使用过滤表达式分析特定流量
示例过滤表达式:ip.addr == 180.101.49.11 and icmp
表示只显示ICMP协议且IP为指定地址的数据包
2.2 抓包过滤器语法
协议过滤
tcp
:只显示TCP协议http
:只显示HTTP协议icmp
:只显示ICMP协议
IP过滤
host 192.168.1.104
src host 192.168.1.104
dst host 192.168.1.104
端口过滤
port 80
src port 80
dst port 80
逻辑运算
src host 192.168.1.104 && dst port 80
host 192.168.1.104 || host 192.168.1.102
!broadcast
2.3 显示过滤器语法
比较操作符
==
!=
>
<
>=
<=
协议过滤
直接输入小写协议名
IP过滤
ip.src ==112.53.42.42
ip.dst==112.53.42.42
ip.addr == 112.53.42.42
端口过滤
tcp.port ==80
tcp.srcport == 80
tcp.dstport == 80
HTTP过滤
http.request.method=="GET"
http.request.uri contains ".php"
http contains "username"
三、pcap数据分析
3.1 使用scapy解析pcap
scapy可以方便地读取和分析pcap格式的抓包数据:
from scapy.all import *
packets = rdpcap("capture.pcap") # 读取pcap文件
for pkt in packets:
if TCP in pkt:
print(pkt[TCP].sport) # 打印源端口
3.2 使用Sniff Master分析
Sniff Master提供了更强大的pcap分析功能:
- 可视化流量统计
- 会话重组
- 协议分层分析
- 异常检测
- 导出报告
对于复杂的网络分析任务,Sniff Master能大大提升工作效率,特别是其智能分析功能可以自动识别常见网络问题。
更多推荐
所有评论(0)