python实现抓取网口数据,并对数据进行筛选

实现指定网口、指定ip、指定数据字节的数据抓取
#抓取网络接口数据
# 指定监控的网络接口和过滤条件
from scapy.all import *
import psutil

# 定义处理接收到的数据包的回调函数
def packet_handler(packet):
    # 获取原始数据
    raw_data = packet.getlayer(Raw).load
    # 指定字节偏移范围(示例为从第 8 字节开始的后 5 个字节)
    x1 = offset_start = 8
    x2 = offset_end = 12
    x3 = offset_start = 54
    x4 = offset_start = 56
    x5 = offset_start = 94
    x6 = offset_start = 134

    # 获取指定字节偏移的数据
    filtered_data1 = raw_data[x1:x2]
    filtered_data2 = raw_data[x3:x4]
    filtered_data3 = raw_data[x5:x6]
    #输出十六进制数据
    #print(raw_data.hex())

    # 判断指定字节偏移的数据是否等于特定数值
    if filtered_data1 == b'\x00\x00\x4e\x88':
        # 打印指定字节偏移的数据
        print(f'Received packet1: {filtered_data1.hex()}')
        print(f'生命信号: {filtered_data2.hex()}')
        print(f'车门状态: {filtered_data3.hex()}')




interface = 'wlan1'  #替换为想要筛选的网口名称
destination_ip = '239.255.0.230'  # 替换为你要筛选的目的 IP 地址
filter_condition = f'dst {destination_ip}'

# 检查网络连接状态
network_status = psutil.net_if_stats().get(interface)
if network_status is None or not network_status.isup:
    print("未找到指定的网络接口或未插入网线")
    sys.exit()

# 开始监听并捕获数据包
sniff(iface=interface, filter=filter_condition, prn=packet_handler)
在调试抓取数据的过程中可以使用prints输出中间数据,查看是否为自己想要抓取的数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值