Est-il possible d'utiliser les sockets raw sous Windows 98? Mon projet
consiste a programmer un sniffer reseau. L'initialisation du socket se passe
correctement, mais lorsque je veux passer le socket en mode promiscious, la
fonction WSAIoctl échoue...
Cette opération est-elle réalisable sous 98 ? J'utilise pourtant ws2_32.lib.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Cyrille \cns\ Szymanski
> Est-il possible d'utiliser les sockets raw sous Windows 98?
Oui. Avec Winsock2 pas de problème. Consulter le site FAQ winsock (wsk machin) pour plus d'infos.
Mon projet consiste a programmer un sniffer reseau. L'initialisation du socket se passe correctement, mais lorsque je veux passer le socket en mode promiscious, la fonction WSAIoctl échoue...
Au niveau de winsock tu devrais pouvoir faire ça. Sans nous montrer ton code ni nous donner le message/code d'erreur c'est difficile de répondre.
Tu peux aussi écrire un driver NDIS qui offre plus de souplesse et de performance.
La bibliothèque winpcap fait tout ça pour toi, inutile de réinventer la roue.
> Est-il possible d'utiliser les sockets raw sous Windows 98?
Oui. Avec Winsock2 pas de problème. Consulter le site FAQ winsock (wsk
machin) pour plus d'infos.
Mon projet
consiste a programmer un sniffer reseau. L'initialisation du socket se
passe correctement, mais lorsque je veux passer le socket en mode
promiscious, la fonction WSAIoctl échoue...
Au niveau de winsock tu devrais pouvoir faire ça. Sans nous montrer ton
code ni nous donner le message/code d'erreur c'est difficile de répondre.
Tu peux aussi écrire un driver NDIS qui offre plus de souplesse et de
performance.
La bibliothèque winpcap fait tout ça pour toi, inutile de réinventer la
roue.
> Est-il possible d'utiliser les sockets raw sous Windows 98?
Oui. Avec Winsock2 pas de problème. Consulter le site FAQ winsock (wsk machin) pour plus d'infos.
Mon projet consiste a programmer un sniffer reseau. L'initialisation du socket se passe correctement, mais lorsque je veux passer le socket en mode promiscious, la fonction WSAIoctl échoue...
Au niveau de winsock tu devrais pouvoir faire ça. Sans nous montrer ton code ni nous donner le message/code d'erreur c'est difficile de répondre.
Tu peux aussi écrire un driver NDIS qui offre plus de souplesse et de performance.
La bibliothèque winpcap fait tout ça pour toi, inutile de réinventer la roue.
Est-il possible d'utiliser les sockets raw sous Windows 98?
Oui. Avec Winsock2 pas de problème. Consulter le site FAQ winsock (wsk machin) pour plus d'infos.
En sortie, oui. En reception il me semble que les trames seront filtrées par les differentes couches gerant les differents protocole et qu'il faut alors passer par un driver NDIS (c'est ce que font tous les sniffers que j'ai vu, dont Ethereal).
-- "MOI JE VEUX JOUER DE L'HELICON (PON PON PON PON)"
Bonjour,
Cyrille "cns" Szymanski a écrit :
Est-il possible d'utiliser les sockets raw sous Windows 98?
Oui. Avec Winsock2 pas de problème. Consulter le site FAQ winsock (wsk
machin) pour plus d'infos.
En sortie, oui. En reception il me semble que les trames seront filtrées
par les differentes couches gerant les differents protocole et qu'il faut
alors passer par un driver NDIS (c'est ce que font tous les sniffers que
j'ai vu, dont Ethereal).
--
"MOI JE VEUX JOUER DE L'HELICON (PON PON PON PON)"
Est-il possible d'utiliser les sockets raw sous Windows 98?
Oui. Avec Winsock2 pas de problème. Consulter le site FAQ winsock (wsk machin) pour plus d'infos.
En sortie, oui. En reception il me semble que les trames seront filtrées par les differentes couches gerant les differents protocole et qu'il faut alors passer par un driver NDIS (c'est ce que font tous les sniffers que j'ai vu, dont Ethereal).
-- "MOI JE VEUX JOUER DE L'HELICON (PON PON PON PON)"
Cyrille \cns\ Szymanski
> En sortie, oui. En reception il me semble que les trames seront filtrées par les differentes couches gerant les differents protocole et qu'il faut alors passer par un driver NDIS (c'est ce que font tous les sniffers que j'ai vu, dont Ethereal).
Pour forger des packets il n'y a effectivement aucun problème.
Mais maintenant que tu le dis, tu me mets le doute. Il me semble que les sniffers utilisent un driver NDIS parce qu'il est plus performant : plus rapide, plus souple, et surtout permet de capturer les packets au niveau Ethernet et non IP comme Winsock est condamné à le faire.
Je ne suis pas certain qu'on ne puisse pas programmer de sniffer en winsock2.
Je vais rechercher ça et je vous tiens au courant.
> En sortie, oui. En reception il me semble que les trames seront
filtrées par les differentes couches gerant les differents protocole
et qu'il faut alors passer par un driver NDIS (c'est ce que font tous
les sniffers que j'ai vu, dont Ethereal).
Pour forger des packets il n'y a effectivement aucun problème.
Mais maintenant que tu le dis, tu me mets le doute. Il me semble que les
sniffers utilisent un driver NDIS parce qu'il est plus performant : plus
rapide, plus souple, et surtout permet de capturer les packets au niveau
Ethernet et non IP comme Winsock est condamné à le faire.
Je ne suis pas certain qu'on ne puisse pas programmer de sniffer en
winsock2.
Je vais rechercher ça et je vous tiens au courant.
> En sortie, oui. En reception il me semble que les trames seront filtrées par les differentes couches gerant les differents protocole et qu'il faut alors passer par un driver NDIS (c'est ce que font tous les sniffers que j'ai vu, dont Ethereal).
Pour forger des packets il n'y a effectivement aucun problème.
Mais maintenant que tu le dis, tu me mets le doute. Il me semble que les sniffers utilisent un driver NDIS parce qu'il est plus performant : plus rapide, plus souple, et surtout permet de capturer les packets au niveau Ethernet et non IP comme Winsock est condamné à le faire.
Je ne suis pas certain qu'on ne puisse pas programmer de sniffer en winsock2.
Je vais rechercher ça et je vous tiens au courant.
> En sortie, oui. En reception il me semble que les trames seront filtrées par les differentes couches gerant les differents protocole et qu'il faut alors passer par un driver NDIS (c'est ce que font tous les sniffers que j'ai vu, dont Ethereal).
Non, il est effectivement possible d'utiliser des raw sockets winsock2 pour créer un sniffer. Le code suivant que je vous ai concocté affiche les paires ip expéditeur/destinataire des packets vus par l'interface.
L'inconvénient de cette méthode est effectivement comme je l'ai déjà dit, que la capture winsock se situe au niveau IP.
typedef struct iphdr { unsigned char verlen; /* version du protocol IP + la longeur de l'en tète */ unsigned char tos; /* type de service */ unsigned short tot_len; /* longueur totale du datagramme */ unsigned short id; /* identification */ unsigned short offset; /* décalage */ unsigned char ttl; /* durée de vie du paquet */ unsigned char protocol; /* protocole */ unsigned short checksum; /* somme de contrôle */ unsigned int saddr; /* adresse IP source */ unsigned int daddr; /* adresse IP destinataire */ } IP_HDR;
typedef struct tcphdr { unsigned short sport; /* port source */ unsigned short dport; /* port de destination */ unsigned int seqnum; /* numéro de séquence */ unsigned int acknum; /* accusé de réception */ unsigned char dataoffset; /* décalage des données (data offset) */ unsigned char flags; /* flags */ unsigned short windows; /* fenêtre */ unsigned short checksum; /* checksum */ unsigned short urgpointer; /* pointeur de données urgentes */ } TCP_HDR;
typedef struct icmphdr { unsigned char type; /* type ICMP */ unsigned char code; /* code ICMP */ unsigned short checksum; /* checksum */ unsigned short id; /* id, utilisé lors de la reconnaissance entre programmes des paquets ICMP */ unsigned short sequence; /* séquence */ unsigned long timestamp; /* timestamp */ } ICMP_HDR;
> En sortie, oui. En reception il me semble que les trames seront
filtrées par les differentes couches gerant les differents protocole
et qu'il faut alors passer par un driver NDIS (c'est ce que font tous
les sniffers que j'ai vu, dont Ethereal).
Non, il est effectivement possible d'utiliser des raw sockets winsock2
pour créer un sniffer. Le code suivant que je vous ai concocté affiche
les paires ip expéditeur/destinataire des packets vus par l'interface.
L'inconvénient de cette méthode est effectivement comme je l'ai déjà dit,
que la capture winsock se situe au niveau IP.
typedef struct iphdr {
unsigned char verlen; /* version du protocol IP + la longeur de
l'en tète */
unsigned char tos; /* type de service */
unsigned short tot_len; /* longueur totale du datagramme */
unsigned short id; /* identification */
unsigned short offset; /* décalage */
unsigned char ttl; /* durée de vie du paquet */
unsigned char protocol; /* protocole */
unsigned short checksum; /* somme de contrôle */
unsigned int saddr; /* adresse IP source */
unsigned int daddr; /* adresse IP destinataire */
} IP_HDR;
typedef struct tcphdr
{
unsigned short sport; /* port source */
unsigned short dport; /* port de destination */
unsigned int seqnum; /* numéro de séquence */
unsigned int acknum; /* accusé de réception */
unsigned char dataoffset; /* décalage des données (data offset) */
unsigned char flags; /* flags */
unsigned short windows; /* fenêtre */
unsigned short checksum; /* checksum */
unsigned short urgpointer; /* pointeur de données urgentes */
} TCP_HDR;
typedef struct icmphdr
{
unsigned char type; /* type ICMP */
unsigned char code; /* code ICMP */
unsigned short checksum; /* checksum */
unsigned short id; /* id, utilisé lors de la reconnaissance
entre programmes des paquets ICMP */
unsigned short sequence; /* séquence */
unsigned long timestamp; /* timestamp */
} ICMP_HDR;
> En sortie, oui. En reception il me semble que les trames seront filtrées par les differentes couches gerant les differents protocole et qu'il faut alors passer par un driver NDIS (c'est ce que font tous les sniffers que j'ai vu, dont Ethereal).
Non, il est effectivement possible d'utiliser des raw sockets winsock2 pour créer un sniffer. Le code suivant que je vous ai concocté affiche les paires ip expéditeur/destinataire des packets vus par l'interface.
L'inconvénient de cette méthode est effectivement comme je l'ai déjà dit, que la capture winsock se situe au niveau IP.
typedef struct iphdr { unsigned char verlen; /* version du protocol IP + la longeur de l'en tète */ unsigned char tos; /* type de service */ unsigned short tot_len; /* longueur totale du datagramme */ unsigned short id; /* identification */ unsigned short offset; /* décalage */ unsigned char ttl; /* durée de vie du paquet */ unsigned char protocol; /* protocole */ unsigned short checksum; /* somme de contrôle */ unsigned int saddr; /* adresse IP source */ unsigned int daddr; /* adresse IP destinataire */ } IP_HDR;
typedef struct tcphdr { unsigned short sport; /* port source */ unsigned short dport; /* port de destination */ unsigned int seqnum; /* numéro de séquence */ unsigned int acknum; /* accusé de réception */ unsigned char dataoffset; /* décalage des données (data offset) */ unsigned char flags; /* flags */ unsigned short windows; /* fenêtre */ unsigned short checksum; /* checksum */ unsigned short urgpointer; /* pointeur de données urgentes */ } TCP_HDR;
typedef struct icmphdr { unsigned char type; /* type ICMP */ unsigned char code; /* code ICMP */ unsigned short checksum; /* checksum */ unsigned short id; /* id, utilisé lors de la reconnaissance entre programmes des paquets ICMP */ unsigned short sequence; /* séquence */ unsigned long timestamp; /* timestamp */ } ICMP_HDR;
Sympa (note a benets : faut être admin pour SOCK_RAW).
-- "MOI JE VEUX JOUER DE L'HELICON (PON PON PON PON)"
Cyrille \cns\ Szymanski
> Bonjour,
Cyrille "cns" Szymanski a écrit :
Enjoy !
Sympa (note a benets : faut être admin pour SOCK_RAW).
Et avoir windows2000 ou plus. Encore une raison qui justifie l'utilisation de drivers NDIS.
MSDN : Setting this ioctl requires Administrator privilege on the local computer. SIO_RCVALL is available in Windows 2000 and later versions of Windows.
Sympa (note a benets : faut être admin pour SOCK_RAW).
Et avoir windows2000 ou plus. Encore une raison qui justifie l'utilisation
de drivers NDIS.
MSDN :
Setting this ioctl requires Administrator privilege on the local computer.
SIO_RCVALL is available in Windows 2000 and later versions of Windows.
Sympa (note a benets : faut être admin pour SOCK_RAW).
Et avoir windows2000 ou plus. Encore une raison qui justifie l'utilisation de drivers NDIS.
MSDN : Setting this ioctl requires Administrator privilege on the local computer. SIO_RCVALL is available in Windows 2000 and later versions of Windows.