gpt4 book ai didi

python - 从 DHCP 选项列表中提取数据

转载 作者:太空宇宙 更新时间:2023-11-03 15:05:59 25 4
gpt4 key购买 nike

我正在编写一个从 DHCP 数据包中提取数据的 Python 脚本。目前,我的输出的一部分只是 DHCP 选项的列表:

[('消息类型', 3), ('param_req_list', b'\x01y\x01\x01\x011\aaa_,.'), ('max_dhcp_size', 1500), ('client_id', b '\x01(\aaa\aa1A\aa1O'), ('requested_addr', '192.168.1.4'), ('server_id', '192.168.1.1'), ('主机名', b'HOSTNAME')]

我只想打印消息类型、主机名和请求的地址。我从哪里开始将其转换为元组,以便我可以过滤掉元素?

编辑:我的输出如上。我的代码是:

from scapy.all import *
from scapy.layers import dhcp
import logging
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
runtime = logging.getLogger('scapy.runtime')
runtime.setLevel(logging.ERROR)
loading = logging.getLogger('scapy.loading')
loading.setLevel(logging.ERROR)
from scapy.layers.l2 import Ether
from scapy.layers.all import BOOTP
from scapy.layers.all import DHCP, DHCPTypes, DHCPOptions, DHCPRevOptions
from scapy import route

s=socket.socket(socket.PF_PACKET, socket.SOCK_RAW, socket.ntohs(0x0800))

print("Input network interface")
interface = input()


def pkt_data(pkt):
src_mac = pkt.getlayer(Ether).fields['src']
dhcp_options = filter(lambda o: type(o) is tuple,
pkt.getlayer(DHCP).fields['options'])


print(src_mac)
print(list(dhcp_options))

sniff(iface=interface, prn=pkt_data, filter='udp port (67 or 68)', store=0)

最佳答案

假设要解析的字符串看起来(并且将会看起来)像严格的有效 python 数据,您可以使用 python 的内部工具解析它

from ast import literal_eval
lst = literal_eval(msg)
data = dict(lst)
...

literal_eval将字符串解析为Python数据结构(比eval更安全)。 dict 从中构建方便的字典。

关于python - 从 DHCP 选项列表中提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44659939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com