我正在寫一個從DHCP數據包中提取數據的Python腳本。目前,我的輸出的一部分只是來自DHCP選項的列表:從DHCP選項列表中提取數據
[('message-type',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'),('hostname',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的REPL必須是一個簡單的解決方案) –
這是終端的輸出。我只需要輸出只是我想要的價值,而不是全部。然後我可以將其存儲到數據庫中。 – dcode1
我已經向您展示瞭如何將該字符串轉換爲元組列表。將現在的輸出捕獲爲字符串,然後使用exec將其轉換爲您可以解析的元組列表。 –