Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > How to send an IP packet in Python?

Reply
Thread Tools

How to send an IP packet in Python?

 
 
yegorov-p
Guest
Posts: n/a
 
      12-02-2010
Hello.

I have sniffed some packet and now I would like to send it with the
help of python. It's some simple IGMP packet with VLAN tag.
(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)

At first I wrote that:

dst = '234.0.67.103'
# Open a raw socket.
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))
print res
s.sendto(res, (dst, 0))

But for some reason python send that:
0x0000 01 00 5E 00 43 67 00 02-B3 C8 7F 44 08 00 45
00 ..^.Cg..іИD..E.
0x0010 00 46 07 06 00 00 01 02-C4 25 C0 A8 00 7B EA 00 .F......Д
%АЁ.{к.
0x0020 43 67 01 00 5E 00 43 67-00 02 B3 C8 7F 44 81 00
Cg..^.Cg..іИDЃ.
0x0030 00 DE 08 00 46 00 00 20-00 01 00 00 01 02 36
4C .Ю..F.. ......6L
0x0040 C0 A8 00 7B EA 00 43 67-94 04 00 00 16 00 BC 97 АЁ.
{к.Cg”.....ј—
0x0050 EA 00 43
67 к.Cg

As you can see, python ignores my headers and creates its own.

I discussed that problem on stackoverflow.com and one user told me to
try that:

import socket

s = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, 0x8100)
s.bind(('eth0', 0x8100))

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.send(res)

But under Windows, AF_PACKET is said to be undefined. =( I tried to
replace it with AF_INET, but now python tells me that that protocol
(0x8100) is not supported. 0x8100 is IEEE 802.1Q and I just don't
understand, why it isn't supported. I can generate packet with VLAN
tag inside and send it with the help of pierf, for example. In fact, I
can generate and send the packet from my example with pierf and it
runs just fine. =) I've found a topic with the same problem (http://
http://www.computing.net/answers/pro...ets/11884.html)

So, is there any way to somehow send a packet with ready headers and
data under Windows with the help of python?
 
Reply With Quote
 
 
 
 
Nobody
Guest
Posts: n/a
 
      12-02-2010
On Thu, 02 Dec 2010 03:12:42 -0800, yegorov-p wrote:

> I have sniffed some packet and now I would like to send it with the
> help of python.


> But for some reason python send that:


> As you can see, python ignores my headers and creates its own.


It isn't Python doing that, but the OS. At least on Unix, you need
setsockopt(IP_HDRINCL) to tell the OS that the packet includes a header.
It appears that Windows supports the same option:

http://msdn.microsoft.com/en-us/libr...=VS.85%29.aspx


 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Re: How include a large array? Edward A. Falk C Programming 1 04-04-2013 08:07 PM
import packet.module without importing packet.__init__ ? Gelonida N Python 4 09-11-2011 02:17 PM
convert the ip packet to and from RS-232 packet Li Han Python 2 02-09-2009 02:43 PM
Security: rec'd packet not an ipsec packet ! mediumkuriboh Cisco 0 02-09-2009 12:14 AM
%PIX-4-402106: Rec'd packet not an IPSEC packet. lfnetworking Cisco 3 08-27-2006 05:30 AM



Advertisments