【入门篇】用 python 抓取windows系统的网络数据

文章目录

  • [一、npcap 了解和安装](#一、npcap 了解和安装)
    • [1.1 npcap 是什么软件](#1.1 npcap 是什么软件)
    • [1.2 安装 npcap](#1.2 安装 npcap)
      • [1)下载 Npcap:](#1)下载 Npcap:)
      • [2)安装 Npcap](#2)安装 Npcap)
    • [1.3 验证 Npcap](#1.3 验证 Npcap)
    • [1.4 使用 Npcap](#1.4 使用 Npcap)
  • [二、python 抓取网络数据](#二、python 抓取网络数据)
    • [2.1 使用 Scapy](#2.1 使用 Scapy)
    • [2.2 使用 Layer 3 socket](#2.2 使用 Layer 3 socket)
  • 总结
  • 参考文档

Windows 上使用 Scapy 模块进行数据包捕获时,缺少必要的网络捕获库(如 WinPcap 或 Npcap)。

一、npcap 了解和安装

1.1 npcap 是什么软件

Npcap 是一款在 Windows 平台上使用的网络数据包捕获库和驱动程序。它采用‌Microsoft Light-Weight Filter (NDIS 6 LWF)技术和Windows Filtering Platform (NDIS 6 WFP)技术,提供了原始数据包捕获、过滤和发送等功能。Npcap与WinPcap可以共存,但Npcap提供了更现代的API和更好的性能,是网络监控和数据分析领域的必备工具。‌
功能和特点

  • 原始数据包捕获‌:Npcap可以捕获原始数据包,包括发往运行机器的原始数据包和与其他主机交换的原始数据包。
  • 数据包过滤‌:根据用户指定的规则对数据包进行过滤。
  • 数据包发送‌:将原始数据包发送到网络。
  • 统计信息收集‌:收集网络上的流量统计信息。
  • 高兼容性‌:Npcap与WinPcap可以共存,但Npcap提供了更现代的API和更好的性能。
  • 安全性‌:Npcap提供了更高的安全性,适用于网络监控和数据分析领域。

1.2 安装 npcap

Npcap 是 Scapy 推荐的在 Windows 上使用的库,可以代替 WinPcap。请通过以下步骤进行安装:

1)下载 Npcap:

访问 Npcap 地址 并下载最新的 Npcap 安装程序。

2)安装 Npcap

  • 运行下载的安装程序,并在安装过程中确保选择了 "Install Npcap in WinPcap API-compatible Mode" 选项。此选项将确保 Npcap 可以与使用 WinPcap 的程序兼容。
  • 如果电脑带有无线网卡,记得勾选"support raw 802.11 traffic(and monitor mode) for wireless adapters"。
  • 如果电脑已经安装过 winpcap 软件,在安装 Npcap 时会弹窗提示卸载 Winpcap,此时需要关闭 wireshark 或是其它相关的软件

1.3 验证 Npcap

通过以下命令(以管理员身份运行)中检查 Npcap 服务的状态:

bash 复制代码
sc query npcap

如果服务未启动,用以下命令启动:

bash 复制代码
sc start npcap

1.4 使用 Npcap

Npcap 提供了多种使用方式,包括命令行工具和编程接口。

1)命令行工具:可以帮助您捕获和分析网络流量。以下是一些常用的命令行工具:

  • -npcap.exe:用于启动Npcap的命令行界面,可以执行各 种操作,如捕获流量、导出流量等。
  • -windump.exe:类似于Unix系统上的tcpdump工具,用于 捕获和显示网络流量。
  • -pcap2xml.exe:将pcap文件转换为XML格式,方便进一 步分析和处理。

2)编程接口:可以与其他应用程序集成使用。以下是一些常用的编程接口:

  • -Npcap API:使用C语言编写的原生API,可以在自己的应 用程序中直接调用。
  • -WinPcap兼容模式:Npcap兼容WinPcap API,因此可以使 用现有的WinPcap应用程序和库。

二、python 抓取网络数据

2.1 使用 Scapy

安装完 Npcap 后,可以运行 Scapy 代码。确保在使用 sniff 函数时,没有使用任何会向 Layer 2 嵌套调用的选项。

bash 复制代码
from scapy.all import sniff

packets_received = 0

# 捕获数据包的回调函数
def packet_callback(packet):
    global packets_received
    packets_received += 1
      
# 主监控循环
def main():
	# 捕获数据包,无需存储 并调用 packet_callback 回调函数处理每个捕获的数据包
    sniff(prn=packet_callback, store=0)  
    print(f"已接收数据包: {packets_received}")

if __name__ == "__main__":
    main()

2.2 使用 Layer 3 socket

如果出于某种原因您不想使用 Npcap,您可以使用 Scapy 的 Layer 3 socket 功能,通过使用 TCP/IP 层来捕获数据包,而不是直接从 Layer 2 捕获:

bash 复制代码
from scapy.all import conf

# 设置使用 Layer 3 socket
conf.L3socket = L3SocketRaw

# 现在可以继续使用 sniff 函数
sniff(prn=packet_callback, store=0)

总结

最推荐的方法是安装 Npcap,它是 Scapy 兼容薄弱最强的 WinPcap 的替代方案。

参考文档

https://blog.csdn.net/m0_63997099/article/details/135972056

https://blog.csdn.net/jacke121/article/details/139371912

https://wenku.baidu.com/view/a845cd99a000a6c30c22590102020740be1ecde2.html?*wkts*=1729665166346\&bdQuery=Npcap安装完后去哪了\&needWelcomeRecommand=1

相关推荐
伊玛目的门徒27 分钟前
告别 OpenAI SDK:如何使用 Python requests 库调用大模型 API(例如百度的ernie-4.5-turbo)
python·openai·requests·大模型调用·ernie-4.5-turbo
sinat_602035361 小时前
模块与包的导入
运维·服务器·开发语言·python
计算机学姐1 小时前
基于Python的旅游数据分析可视化系统【2026最新】
vue.js·后端·python·数据分析·django·flask·旅游
恋雨QAQ1 小时前
python函数和面向对象
开发语言·python
鲸屿1952 小时前
Ansible之playbook
服务器·网络·ansible
天雪浪子2 小时前
Python入门教程之逻辑运算符
开发语言·python
该用户已不存在2 小时前
你没有听说过的7个Windows开发必备工具
前端·windows·后端
枫叶落雨2222 小时前
注解参数校验
windows
张子夜 iiii2 小时前
实战项目-----在图片 hua.png 中,用红色画出花的外部轮廓,用绿色画出其简化轮廓(ε=周长×0.005),并在同一窗口显示
人工智能·pytorch·python·opencv·计算机视觉