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 )) 
  • Wie kann ich auf eine Standardbibliothek in einer Logging-Konfigurationsdatei verweisen?
  • Python: Größe der Nachricht per Socket zu senden
  • Errno 9: Schlechte Datei-Deskriptor in Python-Steckdose
  • Python-Sockel akzeptiert Blöcke - verhindert, dass App beendet wird
  • Scatter / sammeln Socket schreiben in Python
  • Messung der Nähe mit bluetooth auf Himbeere Pi
  • App Engine Socket ungültiges Argument
  • Python - Einen schnellen Port Scanner machen
  • Python Socket Flush
  • Erstellen eines Multithread-Servers mit SocketServer-Framework in Python
  • Socket Programmierung im Python-Anhebungfehler socket.error: <[Errno 10060] Ein Verbindungsversuch ist fehlgeschlagen
  • Python ist die beste Programmiersprache der Welt.