2010-06-11 18 views
2

Je veux savoir si mon ordinateur est en train de provoquer un UDP flood qui provient de mon réseau. Donc, c'est mon problème sous-jacent, et ce qui suit est simplement ma tentative de personne-réseau-personne pour faire une hypothèse en utilisant python. J'extrapole à partir de la recette 13.1 ("Passing Messages with Socket Datagrams") du livre de recettes python (également here). Est-il possible/sensé/pas fou d'essayer d'écrire en quelque sorte un proxy UDP sortant en python, afin que les paquets sortants puissent être journalisés avant d'être envoyés sur leur joyeux chemin? Si oui, comment s'y prend-on? Sur la base de mes recherches rapides, peut-être que je pourrais commencer un processus de serveur à l'écoute sur les ports UDP suspects et enregistrons tout ce qui est envoyé, puis les réexpédier, tels que:Renifleur UDP sortant en python?

import socket 
s =socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
s.bind(("", MYPORT)) 
while True: 
    packet = dict(zip('data', 'addr'), s.recvfrom(1,024)) 
    log.info("Recieved {data} from {addr}.".format(**packet)) 

Mais qu'en faisant cela, pour un grand nombre de ports simultanément? Pas pratique? Y a-t-il des inconvénients ou d'autres raisons de ne pas s'en préoccuper? Existe-t-il un meilleur moyen de résoudre ce problème (s'il vous plaît soyez gentil).

+3

Votre but est-il d'étudier? Si non, avez-vous essayé un analyseur de paquets comme tcpdump? En utilisant une règle de pare-feu? Utiliser libpcap? – jweyrich

+0

Je pense que vous devriez utiliser une socket raw. J'ai lu quelque chose à propos de ce sujet en langage C. – Aif

+0

@ jweyrich - Mon but est en fait la sécurité de la vie réelle. Je n'avais pas entendu parler de pcap/tcpdump, certains de bons wrappers python en ligne. – twneale

Répondre

5

Il est peut-être plus facile d'installer simplement Wireshark au lieu de lancer le vôtre en Python.

+0

Est-ce que wireshark peut dire d'où proviennent les paquets spoofés? – twneale

+2

pourrait^Wwould définitivement –

+0

@twneale - '^ W' est ancien - parler pour" supprimer le mot précédent ", donc oui, il signifie wireshark. :) – tzaman