Bonjour,
Je viens vers vous car je suis en train de programmer qui permet de sniffer les trames IP en localhost via les winsock (SOCK_RAW).
Lorsque je l'exécute sur mon PC sous windows7, tout marche mais la ou est le problème c'est que le programme doit tourner sous un windows XP.
voici le code me permettant d'initialiser l'écoute
Le problème sur XP est la mise en place du mode promiscuité en localhost (fonctionne pour une ip externe) via la fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 WSADATA WSAData; WSAStartup(MAKEWORD(2,0), &WSAData); SOCKET s = socket(PF_INET, SOCK_RAW, IPPROTO_IP); if(s == INVALID_SOCKET) cout << "Error socket" << endl; else { ULONG u_addr; u_addr = inet_addr("127.0.0.1"); SOCKADDR_IN i; ZeroMemory(&i, sizeof(i)); i.sin_family = AF_INET; i.sin_addr.s_addr = u_addr; if (bind(s, (SOCKADDR *)&i, sizeof(i)) == SOCKET_ERROR) cout << "Error bind" << endl; else { fd_set readfs; // pour le select SOCKADDR_IN from; int from_len = sizeof(from);; char buffer[512]; DWORD dwInBuffer = 1, dwBytesReturned; if(WSAIoctl(s, SIO_RCVALL, &dwInBuffer, sizeof(dwInBuffer), NULL, 0, &dwBytesReturned, NULL, NULL) == SOCKET_ERROR) cout << "error ioctl " << WSAGetLastError() << endl;
Y aurait-il une option me permettant de mettre mon socket en mode promiscuité pour le localhost sous XP?
Code : Sélectionner tout - Visualiser dans une fenêtre à part WSAIoctl(s, SIO_RCVALL, &dwInBuffer, sizeof(dwInBuffer), NULL, 0, &dwBytesReturned, NULL, NULL)
Merci d'avance
Partager