Socket tcp

sendouda Messages postés 41 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 13 décembre 2008 - 16 mai 2006 à 17:46
turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 - 17 mai 2006 à 08:40
salut tout le monde;
j'essaie d'envoyer des paquets TCP avec sock raw il n' ya pas d'erreurs mais je ne les capte pas avec le sniffer Ethereal.
Ce même programme marchait avec UDP et ICMP.Je veux remplir les champs des entêtes IP et TCP moi même c'est pour ça que j'utilise sock raw!!
Est ce que c'est un problème au niveau des sockets?
Voici une partie du programme en MFC.

int optval;



SOCKET sock=WSASocket(AF_INET, SOCK_RAW, IPPROTO_TCP, NULL, 0,0);



setsockopt(sock, IPPROTO_IP, 2, (char *)&optval, sizeof(optval));



SOCKADDR_IN sin;


char packet[8192];
iphdr *ip=(iphdr*)packet;
tcphdr *tcp=(tcphdr*)(packet+sizeof(struct iphdr));
ip->verlen=79;//différent de 79 car il n'y a pas le champ option
ip->tos=0;
ip->id=1;
ip->offset=0;
ip->ttl=(unsigned char)255;
ip->protocol=0x06;
UpdateData(TRUE);
ip->saddr=inet_addr(m_ipsource); //remplacez par votre ip...
ip->daddr=inet_addr(m_ip); //remplacez par le pc à pinger


//champ option
ip->code=7;
ip->lenopt=39;//au max on peut insérer 9 adresses ip


ip->pointeur=40;
tcp->dport=80;
tcp->seqnum=0;
tcp->acknum=1;
tcp->flags=0x0002;
tcp->window=16906;


tcp->urgPointer=0;
ip->tot_len=htons(sizeof(struct iphdr)+sizeof(struct tcphdr));


sin.sin_family=AF_INET;
sendto(sock,packet,sizeof(struct iphdr)+sizeof(struct tcphdr),0,(SOCKADDR*)&sin,sizeof(sin));

1 réponse

turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 1
17 mai 2006 à 08:40
si je ne m'abuse sendto(sock,packet,sizeof(struct iphdr)+sizeof(struct tcphdr),0,(SOCKADDR*)&sin,sizeof(sin)); c'est pour le protocole udp.
Ca m'etonne meme que ca compile.
Essaye avec send(sock,&packet[0],1,0); mais peut-etre est-ce différent pour les sock RAW TCP que je ne connais pas, mais ca m'etonnerai.

TuRn3r
0
Rejoignez-nous