博客
关于我
python利用pyshark监听网卡来抓包其中pyshark中摸索的一些可用参数
阅读量:799 次
发布时间:2023-03-07

本文共 1779 字,大约阅读时间需要 5 分钟。

以下内容都是可用的,但是具体在哪能用暂时还不太清楚


使用Pyshark库进行网络抓包

在网络安全分析和网络故障排除中,抓包是一项非常重要的技能。Pyshark库为我们提供了一种简单易用的方法来捕获和分析网络流量。本文将介绍如何使用Pyshark库进行网络抓包,并展示如何从抓取的数据中提取有用信息。

1. 安装Pyshark库

首先,需要安装Pyshark库。你可以通过以下命令安装:

pip install pyshark

2. 初始化抓包

在开始抓包之前,我们需要选择需要监控的网络接口。以下是一个示例代码:

from pyshark import LiveCapture
# 初始化抓包
capture = LiveCapture(interface='enxaca0002e176f', display_filter='tcp.port == 80')

这里的display_filter参数用于指定显示过滤条件。你可以将Wireshark中的过滤条件直接复制到这里。

3. 开始抓包并分析数据

在初始化完成后,我们可以开始抓包,并实时分析流量:

for packet in capture.sniff_continuously():
print("packet.frame_raw", packet.frame_info)
print("packet.number", packet.number)
print("packet.interface_captured", packet.interface_captured)
print("packet.captured_length", packet.captured_length)
print("packet.length", packet.length)
print("packet.sniff_timestamp", packet.sniff_timestamp)
for layer in packet.layers:
print(layer.layer_name)
print(layer.get_field("ip.proto"))
if layer.layer_name == "tcp":
print(layer.get_field("tcp.port"))
if layer.layer_name == "http":
print(layer.get_field("data"))
print(f"layer.get_field('ip.src')=====> {layer.get_field('ip.src')}")
print(f"layer.get_field('ip.dst')=====> {layer.get_field('ip.dst')}")
print(f"layer.get_field('ip.proto')=====> {layer.get_field('ip.proto')}")
print(f"layer.get_field('ip.len')=====> {layer.get_field('ip.len')}")

4. 使用过滤条件

display_filter参数可以直接使用Wireshark中的过滤条件。例如:

  • tcp.port == 80:只捕获HTTP流量
  • tcp.port == 443:只捕获HTTPS流量
  • ip.src == 192.168.1.1:只捕获来自192.168.1.1的流量

5. 实时监控

sniff_continuously()方法会持续捕获数据包,可以用于实时监控网络流量。


注意事项

  • 确保网络接口interface正确配置
  • 根据需要调整过滤条件
  • 如果需要长时间运行,确保程序有足够的权限
  • 数据包捕获会占用资源,建议在生产环境中谨慎使用
  • 通过以上方法,你可以轻松开始使用Pyshark库进行网络流量分析。如果你有任何问题或需要进一步的帮助,欢迎在评论区留言。

    转载地址:http://zeofk.baihongyu.com/

    你可能感兴趣的文章