Accueil > Forum > > > > Raw Socket, debug ok, release pas ok
Raw Socket, debug ok, release pas ok
mardi 20 décembre 2005 à 02:42:15 |
Raw Socket, debug ok, release pas ok

Galmiza
|
Salutations,
J'ai créé un socket comme suit pour sniffer les paquets destinés à mon ip (les if SOCKET_ERROR ont été otés ici):
m_Sock = socket( AF_INET, SOCK_RAW, IPPROTO_IP );
bind( m_Sock, (SOCKADDR*) &m_Sin, sizeof(m_Sin) );
WSAIoctl( m_Sock, SIO_RCVALL, &m_Optval, sizeof(m_Optval), NULL, 0, &m_dwBytesRet, NULL, NULL ) ;
Pas de problème en debug, le sniffer recoit des paquets.
Par contre, en release, la creation du socket reussit mais aucun paquet n'est intercepté.
Comment résoudre ce problème ?
Merci
|
|
mardi 20 décembre 2005 à 12:51:14 |
Re : Raw Socket, debug ok, release pas ok

Galmiza
|
Il n'y a pas de bug donc pas d'overflow dans les mémoires que j'ai
allouées, juste des paquets non reçus :(. Je n'ai pas envie de devoir
compiler en debug et encore moins de découper le programme.en 2 pour
faire une partie en debug et l'autre en release.
|
|
mardi 20 décembre 2005 à 18:19:51 |
Re : Raw Socket, debug ok, release pas ok

aardman
|
Salut,
Met tout le code utile parceque la avec ces 3 lignes on peut pas dire grand chose..
Comment remplis tu m_Sin ?
|
|
mercredi 21 décembre 2005 à 01:46:38 |
Re : Raw Socket, debug ok, release pas ok

Galmiza
|
/*-------------*/
// Constructor //
/*-------------*/
CSniffer::CSniffer(HWND h)
{
m_hList = h;
m_ppRawData = NULL;
m_dwNumPackets = 0;
WSAStartup( MAKEWORD(2,0), &m_Wsa );
// Get local IP
hostent * host;
char szHostName[256];
in_addr myaddr_in;
gethostname(szHostName, sizeof(szHostName));
host = gethostbyname(szHostName);
memcpy(&myaddr_in, host->h_addr, host->h_length);
// Config du socket
m_Sin.sin_family = AF_INET;
m_Sin.sin_addr.s_addr = inet_addr(inet_ntoa(myaddr_in)) ;
// Création
m_Sock = socket( AF_INET, SOCK_RAW, IPPROTO_IP );
bind( m_Sock, (SOCKADDR*) &m_Sin, sizeof(m_Sin) );
// Receive every data
WSAIoctl( m_Sock, SIO_RCVALL, &m_Optval, sizeof(m_Optval), NULL, 0, &m_dwBytesRet, NULL, NULL ) ;
}
Et ensuite pour chopper les données:
while (1)
{
memset( m_packet, 0, sizeof( m_packet ) ) ;
recv( m_Sock, m_packet, sizeof(m_packet), 0 );
.....
}
En debug pas de problème, la fonction recv fonctionne, par contre en release, le programme reste bloqué dessus.
En ajoutant
unsigned long ul = 1;
ioctlsocket(m_Sock, FIONBIO, (unsigned long *) &ul);
pour eviter que la fonction recv soit bloquante le debug recoit une
multitude de paquets 'vides' dont les autres paquets attendus, alors
qu'en release, TOUS les paquets sont 'vides'.
Je programme sous VC++ 6.0 Windows XP Home Edition.
|
|
mercredi 21 décembre 2005 à 01:59:23 |
Re : Raw Socket, debug ok, release pas ok

Galmiza
|
Hop !
Ce sniffer est sujet du même problème chez moi: ok en debug plus ok en release.
http://www.cppfrance.com/code.aspx?id=21797
Pitiéééé ;-)
|
|
mercredi 21 décembre 2005 à 10:20:01 |
Re : Raw Socket, debug ok, release pas ok

cosmobob
|
salut un bug pas reproductible par ceux a qui tu demandes est pas corrigeable par ceux a qui tu demandes. Copie colle tout ton code, ou bien mets le .rar quelque part ou on puisse y acceder. Dis toi que si ca marche en debug, mais pas en release ca vient forcément de ton code qui est buggé, et pas d'un mystere de l'univers. deja ca: while (1) { memset( m_packet, 0, sizeof( m_packet ) ) ; recv( m_Sock, m_packet, sizeof(m_packet), 0 ); ..... } c'est moyen (tu testes pas la valeur de retour de recv) allez a + 
|
|
mercredi 21 décembre 2005 à 18:52:43 |
Re : Raw Socket, debug ok, release pas ok

Galmiza
|
Ailowe,
Hou que si, c'est reproductible, facilement même, inévitablement malheureusement  .
C'est la deuxième fois que j'ai besoin d'inclure un sniffer dans un de
mes projets et c'est aussi la deuxième fois que j'ai le problème, je ne
souviens plus de quelles sources j'ai fait des copier coller mais elles
étaient différentes.
Je n'ai d'ailleurs pas trouvé de sniffer qui fonctionne en release.
C'est évident que ce sont les programmes qui bugge car les fontions
réseaux sont déjà compilées donc ne peuvent être source de cette
différence debug-release.
Mon code (le plus simple) liste dans un report list windows  les paquets IP reçus. C'est quasiement le même que celui dont j'ai donné la source, en plus compliqué.
La faute est peut-être due à mon compilateur.
Je vous serais reconnaissant de tester le programme "
http://www.cppfrance.com/code.aspx?id=21797" en release avec vos
compilateurs.
Je peux si vraiment vous le voulez uploader mon code sur mon site mais je ne vois pas trop l'utilité.
! Joyeux Noël !
|
|
mercredi 21 décembre 2005 à 19:23:28 |
Re : Raw Socket, debug ok, release pas ok

aardman
|
Salut,
Ce sniffer est sujet au meme probleme que toi car le code est quasiment identique.
Effectivement chez moi cela ne fonctionne pas en release, mais il ne
faut pas accuser le compilateur ou meme les apis, cela vient forcement
du code.
L'exemple de sniffer que l'ont peut trouver dans l'ebook que je
distribue très (trop ?) souvent fonctionne très bien en debug et en
release:
http://betouchi.free.fr/doc_et_ebook/prog_reseau/exemples-network2.zip
dans le chapitre 7.
|
|
mercredi 21 décembre 2005 à 19:56:09 |
Re : Raw Socket, debug ok, release pas ok

Galmiza
|
Merci beaucoup !
Ca fonctionne mais je ne comprends pas pourquoi ... j'ai seulement changer
m_Sock = socket( AF_INET, SOCK_RAW, IPPROTO_IP );
en
m_Sock = WSASocket(AF_INET, SOCK_RAW, IPPROTO_IP, NULL, 0, WSA_FLAG_OVERLAPPED);
Désolé je n'avais pas trouvé cet exemple en cherchant les sniffers sur cppfrance.
Rassure-toi je n'ai pas accusé les API, juste emis l'hyothèse que mon
compilateur pouvait me jouer des tours (il est instable sur mon PC,
j'avais du le réinstallé car il bloquait pendant le linking 2 fois sur
3). Si, j'ai fini de raconter ma vie.
Merci encore @+ et le fameux Joyeux Noël !
|
|
Cette discussion est classée dans : ok, socket, debug, sock, raw
Répondre à ce message
Sujets en rapport avec ce message
socket raw [ par moi zork ]
Bonjour,Je suis entrain de m'entrainer sur les socket raw et je bute sur :#include #include using namespace std;int main (void){ int sock; sock =
winsock 2 listen [ par lektrosonic ]
Bonjour, ceci est mon bou de code, je veu mette le socket en mode listen, mais de ke je le fait, ca plante...ce bout de code est sous win32 et la fene
Bind echouant.. [ par lektrosonic ]
Bonsoir, deux applications, bon pour etre original: serveur et client.Chacune de leur cote effectue ce code:Serveur:---------------------- if(WSASta
Bug mysql.sock [ par yugimaniaque ]
Bonjour, quand je lance mon application j'ai un problème, sa m'affiche cette erreur: Can't connect to local Mysql server through socket '/tmp/mysql.so
RECV() TELNET [ par kiki67100 ]
Bonjour j'ai fait un serveur en c++ Mais le probleme c'est que mon code lit le recv() de telnet caractere par caractere et moi je voudrais phrase par
Socket en c avec winsock2.h [ par juju11288 ]
Bonjour a tous je voudrai pour le moment arriver a faire un client serveur en c qui parle entre eux avec le protocole TCP/IP. Je fait les deux progra
probleme de send en C avec socket [ par thorn74 ]
bonjour je suis actuellement en IUT info et G un projet a faire mais je bloque je doit fair eun petit programme ou lorsqu'un ordinateur se connecte a
[GRAVE]!! TOUTES MES APPLI winsock marche pu [ par sebastienmz ]
Salut tout le mondeje suis devant un cas assé dure :ce matin je démare mon pc.. le lance mon google search (la source que j'ai posté) et la imppossibl
Connexion SOCKET_ERROR [ par fredsor ]
Salut a tous,Je réalise un ptit programme au sein duquel je me connecte a un serveur distant, afin de récupérer via une methode GET des informations n
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|