2010-05-26 5 views
4

Quel serait un moyen approprié d'injecter un paquet TCP brut avec Python? Par exemple, j'ai la charge utile composée de nombres hexadécimaux et je veux envoyer cette séquence de nombres hexadécimaux à un démon réseau: si je choisis d'envoyer 'abcdef', je vois aussi 'abcdef' sur le réseau. Mais pas « 6162636566 » comme dans le cas de:Injecter des paquets TCP bruts avec Python

new = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
new.connect(('127.0.0.1', 9999)) 
new.send('abcdef') 

Puis-je utiliser SOCK_RAW Python à cette fin? Si oui, pouvez-vous me donner un exemple d'envoi de paquets TCP bruts avec SOCK_RAW (puisque je ne l'ai pas fait fonctionner moi-même)

Merci!

Evgeniy

Répondre

1

On dirait que vous pourriez être confus au sujet des chaînes de caractères python. Par exemple, essayez:

new.send('\x0a\x0b\x0c\x0d\x0e\x0f') 
1

Pourquoi ne pas simplement convertir votre chaîne en hexadécimal avant de l'envoyer?

new = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
new.connect(('127.0.0.1', 9999)) 
mydata = 'abcdef' 
new.send(mydata.encode('hex')) 
+0

Pourquoi est-ce que nous envoyons toujours des chaînes hexagonales? –

+0

Mecause parfois confondre les données avec leurs représentations ... – glglgl

10

Essayez scapy, un programme de manipulation de paquets interactif puissant.

Exemple:

%> sudo scapy 

>>> packet1 = IP(dst='127.0.0.1')/TCP(dport=9999) 
>>> packet1.payload = 'abcdef' 
>>> send(packet1) 
. 
Sent 1 packets. 
>>> packet1.show() 
###[ IP ]### 
    version= 4 
    ihl= None 
    tos= 0x0 
    len= None 
    id= 1 
    flags= 
    frag= 0 
    ttl= 64 
    proto= ip 
    chksum= None 
    src= 127.0.0.1 
    dst= 127.0.0.1 
    \options\ 
###[ Raw ]### 
    load= 'abcdef' 
>>> 
+0

bel outil, merci. –

1

Pour raw sockets, SOCK_RAW est le chemin à parcourir. N'oubliez pas que lorsque vous utilisez SOCK_RAW, vous ne pouvez pas envoyer la charge utile. Vous devrez également faire la formation d'en-tête. Après avoir obtenu ce droit, vous pourriez rencontrer des problèmes avec le système d'exploitation. Tout en faisant Raw Sockets sur Windows XP, nous avons rencontré des problèmes en raison de problèmes de sécurité.

Questions connexes