Няма DNS слой, използващ scapy от python 2.6

Използвам python 2.6 с scapy. Моята малка програма се опитва да отпечата подробности за отговора на слоевете DNS, DNSQR и DNSRR след изпълнение на командата sr1. Проблемът е, че пакетът, който се връща от командата sr1, не включва тези слоеве, а вместо това включва Raw слой над слоя UDP.

От друга страна пакетът DNS, който създадох (в кода - dns_packet) включва всички тези слоеве!!!

Въпросът е - защо не получавам тези слоеве (и само Raw слой) от командата sr1? И какво трябва да направя, за да получа тези слоеве от командата sr1 (за да отпечатам DNSRR.rdata например)?

Оценявам отговора ви, благодаря ви и най-добри поздрави, Елдад.

Ето моят код:

from scapy.all import *

host_name = raw_input("please enter host name:")

while host_name != "exit":

    print host_name

    dns_packet = IP(dst='8.8.8.8')/UDP(sport=24601,dport=53)/DNS(qdcount=1,qd=DNSQR(qname=host_name))

    print dns_packet.show()

    response_packet = sr1(dns_packet)

    print response_packet.show()

    host_name = raw_input("please enter host name:")

person Eldad Kapitolnik    schedule 17.10.2014    source източник
comment
Когато изпълня вашия код, получавам отговор, който включва слоя DNS. Можете ли да актуализирате въпроса си, за да покажете какво точно получавате в response_packet?   -  person Yoel    schedule 18.10.2014
comment
Вместо DNS слой, получавам Raw слой   -  person Eldad Kapitolnik    schedule 15.11.2014
comment
Вместо DNS слой получавам необработен слой с данни, който вероятно включва информацията за слоя на DNS като данни. Предполагам, че това означава, че scapy не може да разпознае моя DNS слой. Когато стартирам същите команди директно от scapy, той показва DNS слоя без проблем. Наскоро намерих и някои студенти, които имат този проблем.   -  person Eldad Kapitolnik    schedule 15.11.2014


Отговори (1)


Аз също се опитах да разреша този проблем - след много часове разбрах, че това е известен бъг (бъг на python-scapy)

поправката:

1) отидете в папката python и след това в Lib\site-packages\scapy\

2) отворете файла pton_ntop.py и стигнете до ред 66 (да, повярвайте ми ... не е джок)

3) добавете гнездо. след връщането, така че редът ще бъде така: return socket.inet_ntoa(addr)

4) запишете и затворете

5) изтрийте файла pton_ntop.pyc

при мен проработи .. Чао чао

person yzahavi    schedule 22.12.2014