Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > отправка сформированного вручную IP пакета


Автор: pegorov 1.12.2010, 21:46
Привет всем.
Вопрос заключается в следующем: имеется некий отснифанный пакет в хексовом представлении. Каким образом средствами питона его можно отправить? Вариант с анализом пакета и последующей его сборкой с помощью различных генераторов пакетов вроде impacket по некоторым причинам не подходит.

Я попробовал разобраться, как это сделать через sockets, но столкнулся со следующей проблемой: пусть имеется пакет вида 
Цитата

0x0000   01 00 5E 00 43 67 00 02 B3 C8 7F 44 81 00 00 DE
0x0010   08 00 46 00 00 20 00 01 00 00 01 02 36 4C C0 A8
0x0020   00 7B EA 00 43 67 94 04 00 00 16 00 BC 97 EA 00 
0x0030   43 67 

Набрасываем нечто вроде
Код

dst = '234.0.67.103'

s = socket.socket(socket.AF_INET, socket.SOCK_RAW,2)

res=''

temp='01 00 5E 00 43 67 00 02 B3 C8 7F 44 81 00 00 DE 08 00 46 00 00 20 00 01 00 00 01 02 36 4C C0 A8 00 7B EA 00 43 67 94 04 00 00 16 00 BC 97 EA 00 43 67'
for i in temp.split(' '):
    res+=chr(int(i, 16))
s.sendto(res, (dst, 0))

Запускаем и снифаем. На выходе получается 
Цитата

0x0000   01 00 5E 00 43 67 00 02-B3 C8 7F 44 08 00 45 00
0x0010   00 46 07 06 00 00 01 02-C4 25 C0 A8 00 7B EA 00
0x0020   43 67 01 00 5E 00 43 67-00 02 B3 C8 7F 44 81 00
0x0030   00 DE 08 00 46 00 00 20-00 01 00 00 01 02 36 4C
0x0040   C0 A8 00 7B EA 00 43 67-94 04 00 00 16 00 BC 97
0x0050   EA 00 43 67

Как видно, питон вчистую херит всю структуру пакета, начиная от замены EtherType, заканчивая прописыванием каких-то своих хедеров. Есть какой-нибудь способ заставить его отправлять именно то, что просят, не дописывая ничего своего?

Автор: fray 23.12.2010, 16:35
попробуй impacket 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)