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

相关推荐
狼刀流4 分钟前
(8) cuda分析工具
python·cuda
很透彻4 分钟前
【网络】传输层协议UDP
网络·网络协议·udp
Gnevergiveup5 分钟前
2024网鼎杯青龙组Web+Misc部分WP
开发语言·前端·python
机器学习之心1 小时前
GCN+BiLSTM多特征输入时间序列预测(Pytorch)
人工智能·pytorch·python·gcn+bilstm
子墨7771 小时前
MySQL学习笔记
python
黑龙江亿林等级保护测评1 小时前
等保行业如何选择核实的安全防御技术
网络·人工智能·python·安全·web安全·智能路由器·ddos
ai产品老杨1 小时前
深度学习模型量化原理
开发语言·人工智能·python·深度学习·安全·音视频
晓翔仔1 小时前
SSL/TLS 密码套件漏洞分析以及修复方法
服务器·网络·nginx·安全·tomcat·ssl·密码套件
shimly1234561 小时前
(done) 什么 RPC 协议? remote procedure call 远程调用协议
网络·网络协议·rpc
赵闪闪1681 小时前
PDF无法转换成其他格式的常见原因与解决方法解析
python