C++ Raw Socket - C++ - Programmation
Marsh Posté le 26-08-2004 à 01:46:19
Ouais j'ai déclaré tout ça ! Mais ya aucun prob nivo compilage / linkage, si je les avait pas déclaré, il mettrait une erreur je pense ...
Marsh Posté le 26-08-2004 à 12:23:59
Oui bon je l'ai appelé, ok :
[cpp]
WSADATA wsa;
WSAStartup(MAKEWORD(2,0),&wsa);
[cpp]
Marsh Posté le 26-08-2004 à 12:48:49
C'est marrant parce que 204 en hexa ça fait 0xCC = valeur des variables de pile non initialisées.
En tous cas ça a l'air brouillon :
Code :
|
Marsh Posté le 26-08-2004 à 13:28:02
Je vois pas en quoi c'est brouillon, c'est la structure de la fonction inet_ntoa, c'est tout !
Si les variables de la pile ne sont pas initialisées, comment je dois les initaliser alors :s ?
Marsh Posté le 26-08-2004 à 14:06:10
Ne les initialise pas (je parle du tableau qui recoit le paquet), tout ce que tu risques, c'est de rendre ton probleme plus difficile a détecter. Es-tu sur que le recv a marché?
Marsh Posté le 26-08-2004 à 14:33:17
Deimos_ a écrit : Je vois pas en quoi c'est brouillon, c'est la structure de la fonction inet_ntoa, c'est tout ! |
et comme ça :
Citation : inet_ntoa(*(struct in_addr *)&IP_HDR->saddr); |
Et ca c'est une erreur de recopie ou c'est dans le code :
Code :
|
Marsh Posté le 26-08-2004 à 15:34:00
C'est une erreur de recopiage ^^
Non, ça marche touours pas ...
Marsh Posté le 26-08-2004 à 15:35:26
mnt j'ai changé mon recv en recvfrom en rajoutant comme les deux bons arguments, mais toujours rien ...
Marsh Posté le 26-08-2004 à 16:02:48
Déja le probleme vient manifestement pas des inet_ntoa car tu nous dis que ca le fait aussi pour ttl et tos. Essaie de faire
Code :
|
Et dis nous ce que tu vois dans les champs de l'entete IP
Marsh Posté le 26-08-2004 à 16:10:31
Touours la même chose :S
Un gars avait la même chose que moi (pour l'adresse ip), le cas est un peu différent car lui il utilise le protocole TCP, mais si vous voulez jeter un oeil : http://www.developpez.net/forums/viewtopic.php?p=1288411
Marsh Posté le 26-08-2004 à 16:46:18
Et t'as bien créer une socket SOCK_RAW, et ça a marché ?
Marsh Posté le 26-08-2004 à 16:51:16
ouais :
Code :
|
Marsh Posté le 26-08-2004 à 18:39:33
tu tests pas sock2 ni bind...
Faut des droits spéciaux pour les RAW SOCKET...
Marsh Posté le 26-08-2004 à 20:55:11
Des droits spéciaux pour les raw socket :s ???
Tous les tutos que j'ai vu sur les raw sockets et toutes les sources que j'ai lu, j'ai jamais vu de truc spécial pour les raw socket !
Tu pourrais me dire ce que c que ces droits spéciaux ?
Code :
|
Tu parles de ça ?
Marsh Posté le 26-08-2004 à 21:50:30
Le problême vient en effet du recv() !
Car si je met (pour le test ) :
Code :
|
Il devrait m'afficher "lala" lorsque je reçois un packet, or il m'affiche lala tout le temps, comme si le if() existait pas, mm que j'émet et reçois absolument aucun packet pendant 2 minutes, ça s'affiche touours ....
Comment ça se fait qu'il me saute ce if() alors ??? Prob au rec() c sûr, mais je vois pas pk !
Marsh Posté le 26-08-2004 à 22:46:24
Deimos_ a écrit : Des droits spéciaux pour les raw socket :s ???
|
Non, rien a voir
Marsh Posté le 26-08-2004 à 22:56:34
ça marche mnt ......
Foutu Ip ! en fait je sniffais sur 192.68.0.1 alors qu'il fallait sniffer sur 127.0.0.1 ... :S
Marsh Posté le 26-08-2004 à 23:07:40
Accessoirement, c'est plutot 192.168.0.1 l'addresse valide
Marsh Posté le 27-08-2004 à 18:56:48
Pour l'histoire des droits, c'est pas de la prog, mais de la configuration système. Un compte Utilisateur limité ne peut pas créer de Raw Socket par exemple. C'est pareil sous UNIX, faut être root.
Marsh Posté le 27-08-2004 à 19:11:55
Ah okok ^^
Ace17 : ouais c'est vrai j'avais oublié le "1" mais même en sniffant sur 192.168.0.1 ça marchait pas ^^
Marsh Posté le 28-08-2004 à 00:32:44
Je viens aussi de lire que le SP2 de XP ajoute des conraintes sur les traffic Raw Socket sortant. Notamment, l'adresse IP source doit être valide, donc pas de IP spoofing...
Marsh Posté le 26-08-2004 à 00:37:26
Bonsoir à toutes et à tous,
Voilà je programme un sniffer en C++ avec les Raw Socket. Seulement il doit y avoir un problême quelque part, car TOUS les champs du packet (entête ip, icmp) ont comme valeur "204" ...
ip source : 204.204.204.204, ip destination = 204.204.204.204, ttl = 204, tos = 204 Etc !
VOici le bout du code nécessaire pour m'aider :
Merci de m'aider, je galère vaiment trop avec cette erreur :s !
Bonne soirée