使用 python 发送以太网原始帧

发包工具会用到 pypcap下面是pypcap库的介绍
pypcap是一个对libpcapC库进行封装和简化的面向对象的抓包工具库,可以非常方便的用于抓包和过滤,结合dpkt解析库可以完成许多网络数据包的抓取和分析。本文讲述的就是如何使用pypcapdpkt库实现简单抓包工具,也称为嗅探器

我这里是用的 pypcap 库中的 sendpacket用法 因为没有找到相关教程 一直不知道 sendpacket 中的ct.c_char_p里面的buf是什么类型的数研究了很久 int 元组 str 数组 都试过了都不行 最后发现是bytes

思路如下:
1.使用pcap 中的findalldevs 查找设备
2.将查找出来的设备与注册表中的设备做对比并返回可读的设备名称
3.读实例化pcap库配置好参数
4.配置好要发送的报文
5.使用sendpacket 发送报文

import pcap
import platform
import winreg as wr
def FindalldevsName(devs):
    IF_REG = r'SYSTEM\CurrentControlSet\Control\Network\{4d36e972-e325-11ce-bfc1-08002be10318}'
    reg = wr.ConnectRegistry(None, wr.HKEY_LOCAL_MACHINE)
    reg_key = wr.OpenKey(reg, IF_REG)
    try:
        reg_subkey = wr.OpenKey(reg_key, devs + r'\Connection')
        return wr.QueryValueEx(reg_subkey, 'Name')[0]
    except FileNotFoundError as e:
        ...
    return None
name = pcap.findalldevs()
Counter = 0
for i in name:
    Counter = Counter + 1
    print(FindalldevsName(i.split('_')[1]),Counter)

pkt = pcap.pcap(name[0], promisc = True, immediate = True, timeout_ms = 50)
bytes = b'\xff'
pkt.sendpacket(bytes)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容