Sniffing - raw socket

cs_krum Messages postés 2 Date d'inscription vendredi 4 juillet 2003 Statut Membre Dernière intervention 27 juillet 2003 - 27 juil. 2003 à 22:52
cs_tayebs Messages postés 2 Date d'inscription vendredi 17 septembre 2004 Statut Membre Dernière intervention 27 septembre 2004 - 23 sept. 2004 à 14:58
J'ai essayé de coder un programme capable de me donner la description de l'en tete IP et TCP des packets que je reçois d'une certaine IP,mais lorsque je fais appel a la fonction printf() pour afficher ce descriptif ..je vois a l'ecran une suite de ... 204 !
Le ttl du packet devient 204,l'ip source devient 204.204.204.204,pareil pour l'ip de destination !
Le code est pourtant simple ...le voici,si vous savez ou est l'erreur,merci de me repondre ça serait sympa :)

#include<winsock2.h>
#include <stdio.h>
#pragma comment(lib,"ws2_32.lib")
#define SIO_RCVALL _WSAIOW(IOC_VENDOR,1)

void main() {

char packet[5000]; // ou est stocke le packet recus
WSADATA wsa;
WSAStartup(MAKEWORD(2,0),&wsa);
SOCKET sock;
SOCKADDR_IN sin;
sin.sin_family=AF_INET;
sin.sin_addr.S_un.S_addr=inet_addr("127.0.0.1"); // la je met l'ip dont je veux les packets
sock=socket(AF_INET,SOCK_RAW,IPPROTO_IP);
bind(sock,(SOCKADDR*)&sin,sizeof(sin));
unsigned int optval;
DWORD dwBytesRet;
WSAIoctl(sock,SIO_RCVALL,&optval,sizeof(optval),NULL,0,&dwBytesRet,NULL,NULL);

typedef struct iphdr // ici l'en tete IP
{
unsigned char verlen;
unsigned char tos;
unsigned short tot_len;
unsigned short id;
unsigned short offset;
unsigned char ttl;
unsigned char protocol;
unsigned short checksum;
unsigned int saddr;
unsigned int daddr;
} IP_HDR;

typedef struct tcphdr // ici la TCP
{
unsigned short sport;
unsigned short dport;
unsigned int seqnum;
unsigned int acknum;
unsigned char unused:4, tcp_hl:4;
unsigned char flags;
unsigned short window;
unsigned short checksum;
unsigned short urgPointer;
} TCP_HDR;

iphdr *PartIP=(iphdr*)packet; // voila
tcphdr *PartTCP=(tcphdr*)(sizeof(iphdr)+packet);

recv(sock, packet, sizeof(packet), 0);
// on attend d'avoir reçus un packet

printf("- Champs TOS : %i\n",PartIP->tos);
printf("- Champs TTL : %i\n",PartIP->ttl);
sprintf(ip,"%s",inet_ntoa(*(struct in_addr *)&PartIP->saddr));
printf("IP Source : %s\n",ip);
sprintf(ip,"%s",inet_ntoa(*(struct in_addr *)&PartIP->daddr));
printf("IP Destination : %s\n",ip);

} // et je ferme mon main()

5 réponses

cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
27 juil. 2003 à 23:25
Salut,
Ca marche tres bien chez moi, mais il faut mettre une vrai ip, pas 127.0.0.1.

C'est tiré d'un turorial ca non ?
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
27 juil. 2003 à 23:31
Salut,
J'ai oublié de dire: j'ai pas reussi a compiler du premier coup, il manquais la definition de 'ip'. J'ai rajouté char ip[256] vers le haut de main() et ca marche.

Sinon essaye de sniffer ta propre ip, tu verra que tu aura pas que des 204.
0
Voelker Messages postés 3 Date d'inscription lundi 12 avril 2004 Statut Membre Dernière intervention 16 avril 2004
15 avril 2004 à 16:48
J'ai utilisé le même script que toi, pour un petit prog, mais j'ai un autre probléme, le compilateur me renvoit une erreur pour la varaible IOC_VENDOR qui n'est pas definie.
Si quelqu'nu peut m'aider.

Voelker
0
cs_fcsamplus Messages postés 4 Date d'inscription vendredi 28 mars 2003 Statut Membre Dernière intervention 3 septembre 2004
3 sept. 2004 à 09:47
Bonjour,
j'ai un problème avec WSAioctl qui n'est pas dans WSOCK32.DLL
c'est normal sous W XP Familiale ?

De plus le Bind me revoit toujour -1.

Si quelqu'un a une idée merci

Fcsamplus
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_tayebs Messages postés 2 Date d'inscription vendredi 17 septembre 2004 Statut Membre Dernière intervention 27 septembre 2004
23 sept. 2004 à 14:58
bonjour a tous,
la je cherche un programme qui capture aussi les packets sortants de ma machine.
est ce que quelqu'un a une idee, svp c'est tres urgent
merci
tayeb sbihi
0
Rejoignez-nous