python抓包(sniff)-----实现wireshark抓包功能

159 阅读2分钟

Python嗅探(sniff)与Sniff Master抓包分析

只用作学习,切莫做其他用途,技术无罪知己知彼百战不殆。

安装scapy模块

打开DOS命令行

python -m pip install scapy

sniff()函数与Sniff Master工具对比

功能对比

  • scapy的sniff()函数:基础数据包嗅探功能
  • Sniff Master:专业级抓包分析工具,提供可视化界面和深度分析功能

参数对比

iface: 指定在哪个网络接口上抓包(两者都支持)

count: 表示要捕获数据包的数量。默认为0(不限制数量)(Sniff Master提供更智能的自动停止机制)

filter: 流量的过滤规则。使用的是BPF的语法(Sniff Master提供图形化过滤条件设置)

prn: 定义回调函数(Sniff Master内置多种回调模板)

BPF过滤语法举例

Sniff Master在保持标准BPF语法的基础上,增加了智能提示功能:

只捕获某个IP主机进行交互的流量:host 192.168.1.124

只捕获某个MAC地址主机的交互流量:ether src host 00:87:df:98:65:d8

只捕获来源于某一IP的主机流量:src host 192.168.1.125

只捕获去往某一IP的主机流量:dst host 192.168.1.154

只捕获80端口的流量:port 80

简单应用

对于初学者来说,使用Sniff Master可以更直观地查看网络流量:

  1. 实时流量统计图表
  2. 协议分布饼图
  3. 流量趋势分析
  4. 异常流量告警

而对于开发人员,可以使用scapy进行更灵活的编程式抓包:

from scapy.all import *

# 只捕获源地址为192.168.1.124且目的端口为80的流量
sniff(filter="src host 192.168.1.124 && dst port 80", prn=lambda x:x.summary())

数据包分析

我们可以将数据包保存为pcap格式,用Wireshark或Sniff Master查看分析。Sniff Master相比Wireshark提供了:

  1. 更友好的中文界面
  2. 一键式分析报告生成
  3. 常见攻击模式识别
  4. 网络性能评估

工具源码进阶

对于需要二次开发的用户,可以结合scapy和Sniff Master的SDK:

from scapy.all import *
import sniffmaster

def packet_callback(packet):
    # 使用Sniff Master的分析引擎
    analysis = sniffmaster.analyze(packet)
    if analysis['is_malicious']:
        print(f"警告!恶意流量:{packet.summary()}")

sniff(prn=packet_callback)

最佳实践建议

  1. 学习和原型开发阶段:使用scapy的sniff()函数
  2. 日常网络监控:使用Sniff Master的图形界面
  3. 深度分析需求:结合两者优势,使用scapy抓包后用Sniff Master分析

记住:无论使用哪种工具,都要遵守法律法规,仅用于授权测试和网络分析。