저는 완전히 scapy입니다. LAN을 사용하여 DHCP 모니터를 구축하려고합니다. prn=
매개 변수를 통해 콜백으로 전송 된 패킷을 캡처하려면 sniff
을 사용하고 있습니다. 콜백 내에서 패킷에 DHCP
레이어가 있는지 확인한 다음 요청 유형을 확인합니다. 가지 어색한Scapy : 캡처 된 DHCP 패킷의 메시지 유형을 확인하십시오.
def manage(pkt):
if pkt.haslayer(DHCP):
req_type = [x[1] for x in pkt[DHCP].options if x[0] == 'message-type'][0]
# Message type: request
if req_type == 3:
print ("Request from {}".format(pkt[Ether].src))
sniff(prn=manage, count=0, store=0)
나는 DHCP 층에 options
에 접근하고있어 방법입니다,하지만 난 그 작품과 함께 올 한 유일한 사람 :
나는 현재 이런 식으로하고 있어요 . 그러나 나는 dict
또는 뭔가를 통해 더 나은, pythonic 방법이 있어야한다고 생각합니다.
이러한 옵션에 액세스하는 적절한 방법은 무엇입니까?
도움이 될만한 질문이 있으면 궁금합니다. 나는 이제 당신이하고있는 것보다 더 "조직화 된"것을 아무것도 못한다고 말할 수 없습니다. 문제는 DHCP가 bootp 페이로드에 옵션 목록을 던집니다. 특정 옵션이 필요하지 않으며 특별한 주문이 필요하지 않습니다. 동일한 유형 (라우터, DNS 서버 등)의 여러 옵션을 가질 수 있으므로 작동하는 명백한 dict 유형 프레임 워크가 없습니다. 하나 이상의 메시지 유형을 갖는 것이 실제로 의미가 없으며 * 자주 * 먼저 나올 것이지만 아무것도해야한다고 말하지는 않습니다. –