Нет слоя DNS с использованием scapy из python 2.6

Я использую Python 2.6 с scapy. Моя маленькая программа пытается распечатать ответные данные слоев DNS , DNSQR и DNSRR после выполнения команды sr1. Проблема в том, что пакет, возвращаемый командой sr1, не включает эти уровни, а вместо этого включает необработанный слой над уровнем 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 я получаю необработанный слой   -  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