【入门篇】用 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

相关推荐
老大白菜13 分钟前
Windows 11 安装 Dify 完整指南 非docker环境
windows·docker·容器
bryant_meng1 小时前
【python】OpenCV—Image Moments
开发语言·python·opencv·moments·图片矩
车载诊断技术1 小时前
电子电气架构 --- 什么是EPS?
网络·人工智能·安全·架构·汽车·需求分析
KevinRay_1 小时前
Python超能力:高级技巧让你的代码飞起来
网络·人工智能·python·lambda表达式·列表推导式·python高级技巧
Captain823Jack2 小时前
nlp新词发现——浅析 TF·IDF
人工智能·python·深度学习·神经网络·算法·自然语言处理
资源补给站2 小时前
大恒相机开发(2)—Python软触发调用采集图像
开发语言·python·数码相机
2301_819287122 小时前
ce第六次作业
linux·运维·服务器·网络
CIb0la2 小时前
GitLab 停止为中国区用户提供 GitLab.com 账号服务
运维·网络·程序人生
Captain823Jack2 小时前
w04_nlp大模型训练·中文分词
人工智能·python·深度学习·神经网络·算法·自然语言处理·中文分词
Black_mario3 小时前
链原生 Web3 AI 网络 Chainbase 推出 AVS 主网, 拓展 EigenLayer AVS 应用场景
网络·人工智能·web3