2016-06-16 5 views
0

В настоящее время я работаю над использованием scapy для отправки пакетов данных, и у меня возникла странная проблема. Когда я создаю пакет как например:Преобразование скопированного пакета в строку создает E?

pack = IP(dst="127.0.0.1", id=local_ID)/UDP()/chunk 

, а затем преобразовать этот пакет в строку (так что я могу отправить его через сокет)

sendPack = str(pack) 

результат sendPack неправильно.

Например, в моем тестовом файле, у меня есть номера 1-8000 заказанных такого

1 
2 
3 
... 

тогда, когда я print("SEND_PACK: "+sendPack) производит следующее:

E 
2 
3 
... 

Все остальное отлично, за исключением E

Я не могу понять, откуда это происходит E, или что это значит.

Стоит также отметить, что я проверил, что pack содержит правильные данные, и что независимо от того, что первая строка тестового файла, то первая строка вывода всегда является E

Спасибо!

ответ

0

Во-первых, вы печатаете пакет, а не содержимое вашей дейтаграммы UDP. Первые два поля пакета IPv4 - это версия и IHL, которые по умолчанию в Scapy имеют значения 4 (для IP версии 4) и 5 ​​(5 слов по 32 бита). Это дает 45, если вы поместите его на один байт в шестнадцатеричном виде, который является буквой «E» в ascii. Вот почему вы всегда видите E как первый байт вашей строки.

Если вы хотите проверить, что находится в вашем пакете, вы должны использовать функцию Scapy show(): sendPack.show().

Во-вторых, вы можете использовать Scapy-х send(), функция, чтобы отправить пакет, не заботясь о гнездах себе: send(sendPack)

+0

Итак, есть ли способ, чтобы получить только содержание дейтаграммы? Я занимаюсь только загрузкой и идентификатором для каждого пакета. – Swoldier

0

Для тех, кто заинтересован, я исправил проблему, выполнив следующие действия:

Как было отмечено выше, E был результатом того, что я печатал пакет, а не его содержимое. Для получения доступа к содержимому, которые я хотел, я должен был сделать следующее:

sendPack = pack[UDP].load  #Get the packet's load at the UDP layer 
id = pack[IP].ID    #Get the ID at the IP layer 

Документация Scapy разрежен, так что я не понимаю, что я мог бы получить доступ к отдельным полям каждого пакета таким образом.

Вот where I found this fix

 Смежные вопросы

  • Нет связанных вопросов^_^