CLASS RAW SOCKET (SNIFFER)

LAleks Messages postés 7 Date d'inscription samedi 26 avril 2003 Statut Membre Dernière intervention 14 mars 2005 - 19 nov. 2003 à 23:34
ohc Messages postés 3 Date d'inscription mardi 26 juin 2007 Statut Membre Dernière intervention 17 juillet 2008 - 17 juil. 2008 à 19:29
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/17930-class-raw-socket-sniffer

ohc Messages postés 3 Date d'inscription mardi 26 juin 2007 Statut Membre Dernière intervention 17 juillet 2008
17 juil. 2008 à 19:29
Bonjour,

J'aurais voulu savoir si c'est possible de lire le contenu des packets passant sur le réseaux (meme entrant seulement)

Je voudrais m'en servir afin de construire un journal de stats sur les acces web d'un serveur.

Merci.
ohc Messages postés 3 Date d'inscription mardi 26 juin 2007 Statut Membre Dernière intervention 17 juillet 2008
15 juil. 2008 à 19:10
Je ne veux pas bloquer les packets mais lire le contenu des packets.
Crew209 Messages postés 21 Date d'inscription vendredi 11 octobre 2002 Statut Membre Dernière intervention 15 juillet 2008
15 juil. 2008 à 08:54
Pour bloquer les packets sortant, il faut ce déclarer comme driver avec priorité sur l'envoie et la réception (cas du firewall). Pas évident mais faisable sous XP, sous vista je n'en sais rien.

Pour le sniffing je vous tien au courant.
ohc Messages postés 3 Date d'inscription mardi 26 juin 2007 Statut Membre Dernière intervention 17 juillet 2008
14 juil. 2008 à 20:59
char[] tmpData = new char[8192];
for(int i=0;i<Head.Data.Length;i++)
{
tmpData[i] = (char)Head.Data[i];
}
string data = Convert.ToString(tmpData);

Moi aussi je cherches pourquoi je ne peux pas recuperer le contenue du packet...
Pour le reste, ca marche très bien.

Si quelqu'un as la solus...
gone01 Messages postés 1 Date d'inscription mercredi 5 mars 2008 Statut Membre Dernière intervention 6 avril 2008
6 avril 2008 à 16:50
bonjour, je veu savoir si ya qlq'1 qui peu répondre a ce message :
ta classe marche tres bien chez moi, mais je voulais savoir si quelqu'un savait comment sniffer les pacquets sortants, si on pouvait lire leur contenu (je voudrais recuperer les adresses URL) et si il etait possible de les bloquer (en fonction de l'adresse URL justement)?
merci
cs_Diabolus Messages postés 61 Date d'inscription samedi 20 décembre 2003 Statut Membre Dernière intervention 28 septembre 2007 1
20 avril 2006 à 11:05
Bonjour
ta classe marche tres bien chez moi, mais je voulais savoir si quelqu'un savait comment sniffer les pacquets sortants, si on pouvait lire leur contenu (je voudrais recuperer les adresses URL) et si il etait possible de les bloquer (en fonction de l'adresse URL justement)?
Merci
cs_Diabolus Messages postés 61 Date d'inscription samedi 20 décembre 2003 Statut Membre Dernière intervention 28 septembre 2007 1
20 avril 2006 à 11:05
Bonjour
ta classe marche tres bien chez moi, mais je voulais savoir si quelqu'un savait comment sniffer les pacquets sortants, si on pouvait lire leur contenu (je voudrais recuperer les adresses URL) et si il etait possible de les bloquer (en fonction de l'adresse URL justement)?
Merci
FlasherBoy Messages postés 8 Date d'inscription jeudi 14 août 2003 Statut Membre Dernière intervention 7 mai 2008
26 avril 2005 à 14:18
Heuuuuu, dite le moi si je me trompe, mais un sniffer basique ne capte que les packets entrant :/

J'utilise la class et elle marche a merveille .....
oliv5 Messages postés 1 Date d'inscription mercredi 27 octobre 2004 Statut Membre Dernière intervention 27 octobre 2004
27 oct. 2004 à 02:34
J'ai utilisé ton programme et j'ai constaté qu'il fait comme le mien :) Il a un problème.

Je t'explique :

Il marche parfaitement sur un réseau local, sur le PC d'un ami connecte au net avec une freebox, mais pas chez moi, qui suis connecte au net par un modem Bewan ethernet (qui utilise entre autre le protocole PPOE).

Je capte des paquets entrants uniquement et aucun paquets sortants...
Je n'ai aucune explication, mais un de mes programmes fonctionne a peu prés comme le tien (rawsocket c#, avec les bonnes options pour sniffer) et donne le meme résultat.

Si tu as une idée ... (a part utiliser une librairie comme winpcap).
hxhbluestar Messages postés 1 Date d'inscription lundi 30 août 2004 Statut Membre Dernière intervention 7 octobre 2004
7 oct. 2004 à 14:32
char[] tmpData = new char[8192];
for(int i=0;i<Head.Data.Length;i++)
{
tmpData[i] = (char)Head.Data[i];
}
string data = Convert.ToString(tmpData);

wrong.............
can't use it
LAleks Messages postés 7 Date d'inscription samedi 26 avril 2003 Statut Membre Dernière intervention 14 mars 2005
20 nov. 2003 à 18:22
Sur codes-souces c ca ? ... je dois attendre qu'il soit validé alors.
Ma proposition ne t interesse pas ? ^^
Crew209 Messages postés 21 Date d'inscription vendredi 11 octobre 2002 Statut Membre Dernière intervention 15 juillet 2008
20 nov. 2003 à 18:20
Voila j'ai ajouter le prog qui éxploite la class.
Crew209 Messages postés 21 Date d'inscription vendredi 11 octobre 2002 Statut Membre Dernière intervention 15 juillet 2008
20 nov. 2003 à 18:07
Je pense que je vais metre un programe qui éxploite la source pour que tu comprenne mieux.
LAleks Messages postés 7 Date d'inscription samedi 26 avril 2003 Statut Membre Dernière intervention 14 mars 2005
20 nov. 2003 à 17:27
Merci pour ta réponse.
Je viens de faire les modifications mais ce qu'il faut bien voir c'est que je n'arrive jamais jusqu'a la méthode DataSniffed() parce que OnDataReceive() n'est jamais appelé; Ca bloque à "cout_receive_bytes = socket.EndReceive(ar);"
Crew209 Messages postés 21 Date d'inscription vendredi 11 octobre 2002 Statut Membre Dernière intervention 15 juillet 2008
20 nov. 2003 à 12:19
Tu ne doit pas utilisé GetData comme tu le fait. Utilise sa :

Raw.RawSockets.ConvertIpHeader Head = new Raw.RawSockets.ConvertIpHeader();
Head = sock.GetData();

puis Head.from_ip etc...

Enfaite GetData retourne un élément d'une Queue et donc le suprime par la suite.
LAleks Messages postés 7 Date d'inscription samedi 26 avril 2003 Statut Membre Dernière intervention 14 mars 2005
19 nov. 2003 à 23:34
Salut,
pour ma part impossible de faire fonctionner la classe. Ca arrive bien à la ligne "cout_receive_bytes = socket.EndReceive(ar);" mais ca bloque ici et apres plus rien.

Voila mon initialisation :
_rawSocket = new Raw.RawReceive.RawSocket();
_rawSocket.CreateAndBindSocket("127.0.0.1");
_rawSocket.OnDataReceive += new Raw.RawReceive.RawSocket.DataReceive(DataSniffed);

La gestion de l'évènement:
private void DataSniffed()
{
string messagePacket = "";
messagePacket += "Source : "+_rawSocket.GetData().from_ip+":"+ _rawSocket.GetData().source_port + "
";
messagePacket += "Destinataire : "+_rawSocket.GetData().to_ip+":"+ _rawSocket.GetData().dest_port +"
";

txtPacketsReceived.Text += messagePacket + "
";
}

et le début du "sniffage":
switch(e.Button.Tag.ToString())
{
case "start":
_rawSocket.RunReceive();
break;
case "stop":
_rawSocket.StopReceiv();
_rawSocket.Shutdown();
break;
default:
break;
}
Rejoignez-nous