OVH Cloud OVH Cloud

sniffer en Perl

4 réponses
Avatar
mathieu brossais
Bonjour,

Même si je n'ai pas l'utilité, je voudrais - juste par petit défi,
dévelloper un petit Sniffer en Perl, qui loggerait les paquets arrivant sur
mon PC.

Mais voilà je bloque un peu dans ma réflexion.

Une idée simple serait de créer une socket qui se metterait en écoute du
port que je souhaite écouter. Mais voilà ce port est déjà ouvert par
l'application elle-même. Ca risque pas de créer un conflit? En effet, dans
ce cas, 2 mêmes ports seraient ouverts en écoute en même temps...

Quelqu'un pourrait-il m'aider dans ma réflexion? Ou à défaut me conseiller
un newsgroup peut-être plus adapté à ma question?

Merci d'avance.

Mathieu.

4 réponses

Avatar
mathieu brossais
Je travaille sous Windows.
Désolé pour cet oubli important.

Mathieu

mathieu brossais wrote in
news::

Bonjour,

Même si je n'ai pas l'utilité, je voudrais - juste par petit défi,
dévelloper un petit Sniffer en Perl, qui loggerait les paquets
arrivant sur mon PC.

Mais voilà je bloque un peu dans ma réflexion.

Une idée simple serait de créer une socket qui se metterait en écoute
du port que je souhaite écouter. Mais voilà ce port est déjà ouvert
par l'application elle-même. Ca risque pas de créer un conflit? En
effet, dans ce cas, 2 mêmes ports seraient ouverts en écoute en même
temps...

Quelqu'un pourrait-il m'aider dans ma réflexion? Ou à défaut me
conseiller un newsgroup peut-être plus adapté à ma question?

Merci d'avance.

Mathieu.



Avatar
Paul GABORIT
À (at) 14 Jan 2004 17:06:33 GMT,
mathieu brossais écrivait (wrote):
Même si je n'ai pas l'utilité, je voudrais - juste par petit défi,
dévelloper un petit Sniffer en Perl, qui loggerait les paquets arrivant sur
mon PC.


Les fonctions standards offertes par Perl (et les bibliothèques réseaux
classiques) ne donnent pas accès à un niveau suffisament bas pour faire
cela. Donc, oubliez tout ce qui est 'socket' et autres : c'est de trop haut
niveau.

Pour pouvoir faire ce que vous voulez, il faut s'intercaler entre l'interface
réseaux et la pile TCP/IP du système. Il faut donc une bibliothèque
spécialisée... mais je n'en connais pas sur Windows. Si elle existe, alors il
est sûrement possible de l'interfacer vers Perl.

--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>

Avatar
root
On Wed, 14 Jan 2004 17:06:33 +0000, mathieu brossais wrote:

Bonjour,

Même si je n'ai pas l'utilité, je voudrais - juste par petit défi,
dévelloper un petit Sniffer en Perl, qui loggerait les paquets arrivant sur
mon PC.

Mais voilà je bloque un peu dans ma réflexion.

Une idée simple serait de créer une socket qui se metterait en écoute du
port que je souhaite écouter. Mais voilà ce port est déjà ouvert par
l'application elle-même. Ca risque pas de créer un conflit? En effet, dans
ce cas, 2 mêmes ports seraient ouverts en écoute en même temps...

Quelqu'un pourrait-il m'aider dans ma réflexion? Ou à défaut me conseiller
un newsgroup peut-être plus adapté à ma question?



Pour ça tu as le module `Net::Pcap' qui se base sur `libpcap'.

Si tu utilises le Perl d'ActiveState, regarde s'il y a une version
précompilé dans leurs packages PPM...

Avatar
jl_morel
Dans l'article ,
a dit...

Même si je n'ai pas l'utilité, je voudrais - juste par petit défi,
dévelloper un petit Sniffer en Perl, qui loggerait les paquets arrivant sur
mon PC.

Mais voilà je bloque un peu dans ma réflexion.

Une idée simple serait de créer une socket qui se metterait en écoute du
port que je souhaite écouter. Mais voilà ce port est déjà ouvert par
l'application elle-même. Ca risque pas de créer un conflit? En effet, dans
ce cas, 2 mêmes ports seraient ouverts en écoute en même temps...

Quelqu'un pourrait-il m'aider dans ma réflexion? Ou à défaut me conseiller
un newsgroup peut-être plus adapté à ma question?



J'ai porté Net::Pcap sur Windows. Voir ma page :
http://www.bribes.org/perl/wnetpcap.html
pour les détails.
Il faut une carte Ethernet; c'est une limitation de WinPcap
http://winpcap.polito.it/misc/faq.htm#Q-16
Je n'ai pas fini cette page; il manque des scripts exemples.

Un tutoriel en anglais sur Net::Pcap :
http://www.perlmonks.org/index.pl?node_id0648

Le seul livre qui parle de sniffing avec Perl est celui
de Paul Barry :
http://glasnost.itcarlow.ie/~pnb/

J'ai un autre module Win32::NetPacket, de plus bas niveau que
Net::Pcap, qui attaque directement la dll packet.dll de WinPcap.
(J'ai développé ça pour expérimenter l'envoi et la réception de
trames Ethernet, l'idée étant de faire une pile TCP/IP en Perl :-))
Voir la page :
http://www.bribes.org/perl/wNetPacket.html
le pod :
http://www.bribes.org/perl/netpacket.html

Bon courage.

--
J-L.M.