begin process at 2012 05 30 09:58:34
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Réseau / Internet

 > 

Sniffing - raw socket


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

Membre Club
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

Membre Club
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


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,546 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales