Accueil > Forum > > > > Sniffing - raw socket
Sniffing - raw socket
dimanche 27 juillet 2003 à 22:52:11 |
Sniffing - raw socket

krum
|
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() -- Voila,si quelqu'un sait d'ou vient le probleme (s'il manque qqchose dans le prog) merci de me le dire ! et ..merci d'avance,++
|
|
dimanche 27 juillet 2003 à 23:25:59 |
Re : Sniffing - raw socket

aardman
|
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 ?
------------------------------- Réponse au message : -------------------------------
> 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() > > > -- > Voila,si quelqu'un sait d'ou vient le probleme (s'il manque qqchose dans le prog) merci de me le dire ! > et ..merci d'avance,++
|
|
dimanche 27 juillet 2003 à 23:31:48 |
Re : Sniffing - raw socket

aardman
|
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.
------------------------------- Réponse au message : -------------------------------
> 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 ? > > > ------------------------------- > Réponse au message : > ------------------------------- > > > 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() > > > > > > -- > > Voila,si quelqu'un sait d'ou vient le probleme (s'il manque qqchose dans le prog) merci de me le dire ! > > et ..merci d'avance,++ >
|
|
jeudi 15 avril 2004 à 16:48:37 |
Re : Sniffing - raw socket

Voelker
|
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
|
|
vendredi 3 septembre 2004 à 09:47:54 |
Re : Sniffing - raw socket

fcsamplus
|
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
|
|
jeudi 23 septembre 2004 à 14:58:15 |
Re : Sniffing - raw socket

tayebs
|
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
|
|
Cette discussion est classée dans : ip, char, short, unsigned, packet
Répondre à ce message
Sujets en rapport avec ce message
envoi de paquet ip [ par sendouda ]
Bonjour;j'ai écrit un programme qui permet d'envoyer des paquets ip à une destination.mais quand j'ai voulu le sniffer j'ai pas pu le capter.J'ai beso
urgent:envoi paquet [ par sendouda ]
Bonjour;j'ai écrit un programme qui permet d'envoyer des paquets ip à une destination.mais quand j'ai voulu le sniffer j'ai pas pu le capter.J'ai beso
socket RAW ICMP - fonctionnement et implémentation... [ par smirnoff69ice ]
Salut, Je suis sur un projet et je dois simuler l'envoi de paquets ICMP sur le réseau. J'ai déjà fait un petit programme de test (repris en partie dep
pb avec conio je cher cherche l'erreur( j'ai merde sur le mess precedent) [ par kin ]
portpia.cpp#include"PortPiaPc.h"void main(){ PortPiaPc inst; inst(0x320,0x0f);}PortPiaPc.cpp#include "PortPiaPc.h"#include "conio.h"PortPiaPc::PortPia
Conversion unsigned short ---> char * [ par nemmezis ]
Salut tout le monde,Ben tout est dit dans le titre; j'ai en fait besoin de convertir un unsigned short en char* afin de pouvoir le concaténer dans un
Problème avec ntohs et htons sous VS 2010 [ par marroucha ]
Bonjour tout le monde, je suis entrain de développer une application qui récupère et affiche les trames réseau mais je confronte un pb de compilation
taille des types... [ par li ]
Bonjours a tous. Voila ma question, j'ai une structure : struct header { unsigned char useless1: 1; unsigned char type : 1; unsigned short dat
erreur : Invalid struct or union type [ par Nico_35136 ]
Bonjour, Voila , en ce moment je m'arrache les cheveux sur une allocation dynamique d'une structure en mémoire. Voici mes variable et structure que
test RAM [ par parain74 ]
Bonjour, j'ai trouvé un programme embarqué afin de tester une ram externe, précisémment une cypress de 128KO pouvez vous m'expliquer le programme silv
SDL et windows.h sous sygwin [ par agent933 ]
salut je travaille en ce moment sur un programme en langage.grosso modo jutilise le port serie pour recevoir donnees et ensuite utilise une interface
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
|