title: How to send an IP packet with given hex payload in Python?
body: <p>I have sniffed an IGMP packet and now I would like to send it with the help of python. Is there any way to just send packet like </p>
  
  <pre><code>0x0000   01 00 5E 00 43 67 00 02-B3 C8 7F 44 81 00 00 DE   ..^.Cg..іИD?..Ю
  0x0010   08 00 46 00 00 20 00 01-00 00 01 02 36 4C C0 A8   ..F.. ......6LАЁ
  0x0020   00 7B EA 00 43 67 94 04-00 00 16 00 BC 97 EA 00   .{к.Cg”.....ј—к.
  0x0030   43 67                                             Cg
  </code></pre>
  
  <p>without any packet generators like impacket?</p>
  
  <p>UPD Ok, I tried to use raw sockets, like that:</p>
  
  <pre><code>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))
  </code></pre>
  
  <p>Everything is fine except one little thing...
  If I sniff that packet, it looks like that:</p>
  
  <pre><code>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
  </code></pre>
  
  <p>As you can see, for some reason python ignores my headers and creates its own. How can I fix it?</p>