Nicht in der Lage, irgendwelche Rohdaten über Sockel in Python nach Bindung an Netzwerk-Schnittstelle zu senden

Ich versuche, ein rohes hexadezimales Paket über die "eth1" -Schnittstelle des Systems zu senden. Ich habe das unten geschrieben und wenn ich es ausführen, sehe ich keinen Fehler.

#! /usr/bin/python import socket class packet: hexstr="" def getpacket(self,hexs): packet.hexstr=hexs return packet.hexstr # create a socket object s = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.IPPROTO_IP) # get local machine name port = 9999 # bind to the port s.bind(('eth1', port)) #s.setsockopt(IPPROTO_IP, IP_HDRINCL, 1) pckt = packet() data = pckt.getpacket("\x68\x65\x6c\x6c\x6f") msg_send = s.send(data) #msg_recv = s.recv(4096) print msg_send #print msg_recv 

Allerdings, wenn ich eine "tcpdump" auf Port 9999 und die Schnittstelle, und ich laufe die oben, ich sehe kein Paket gefangen genommen.

 Output: # ./net_serv.py 5 Dump: # tcpdump -s0 -i eth1 port 9999 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes 

Was mache ich falsch ?

One Solution collect form web for “Nicht in der Lage, irgendwelche Rohdaten über Sockel in Python nach Bindung an Netzwerk-Schnittstelle zu senden”

Schließlich hat es funktioniert Hier sind einige wichtige Code-Snippets aus meinem aktuellen Code:

 #! /usr/bin/python # some imports import socket, sys from struct import * #create a raw socket try: s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_RAW) except socket.error , msg: print 'Socket could not be created. Error Code : ' + str(msg[0]) + ' Message ' + msg[1] sys.exit() # tell kernel not to put in headers, since we are providing it, when using IPPROTO_RAW this is not necessary s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1) packet = ''; source_ip = '192.168.1.101'# Your IP dest_ip = '10.10.29.34' #Your IP or socket.gethostbyname('www.google.com') #Create your own IP, TCP headers and User Data ## Some hints for those who are really trying it and are new to socket programming like me, make use of the struct, pack() and unpack() in python. packet = ip_header + tcp_header + user_data s.sendto(packet, (dest_ip , 0 )) 
  • Python SocketServer arbeitet auf localhost aber nicht auf Server
  • Wann kommt socket.recv (recv_size) zurück?
  • TypeError: 'module' Objekt ist nicht abrufbar
  • Erhalten Sie einfach einen letzten Wert aus der Steckdose
  • Socket Lose Verbindung
  • Python check, um zu sehen, ob der Host mit dem Netzwerk verbunden ist
  • Python-Socket-Test recv () Daten
  • Python multithreaded server
  • Problem mit Multi-Thread-Python App und Socket-Verbindungen
  • So erstellen Sie ein Bild aus einer Zeichenfolge in Python
  • Wie kann ich eine Stoppuhr in meinem Sockel Python Programm implementieren
  • Python ist die beste Programmiersprache der Welt.