begin process at 2012 05 28 21:29:35
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Envoi , reception et "analyse" d'un packet TCP


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

Envoi , reception et "analyse" d'un packet TCP

vendredi 19 août 2005 à 18:10:53 | Envoi , reception et "analyse" d'un packet TCP

firemax

Bonjour

Avec un pote nous avons commencer un scanner de port pour en apprendre un peu plus sur la prog reseau en C . Mais une fois que nous avons eu fini de faire la premier beta nous nous sommes apercu que la methode connect() c'etais pas top :(

Nous souhaitons donc utiliser la methode syn ack mais le probleme c'est que les raw socket c'est nouveau pour moi  :oops:

Et je ne sais pas si ce que je fais la est corecte (c'est une fonction tres alleger pour les test et pour ne pas vous faire perdre trop de temps)

Pleasee help

#ifndef _LIBH
#define _LIBH

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <errno.h>
#include <malloc.h>

#if defined (WIN32)
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
#else
#include <unistd.h>
#include <sys/socket.h> /* pour avoir AF_INET */
#include <netinet/ip.h>
#include <netinet/tcp.h>
#include <netinet/in.h> /* pour inet_ntoa() */
#include <netdb.h> /* pour gethostbyname() & struct hostent */
#include <sys/types.h>
#include <arpa/inet.h>
#endif

#endif

int main(int argc , char *argv[])
{
    char packet[8192];
    int sock ;
    struct sockaddr_in sin;
    struct iphdr *ip = (struct iphdr *)packet;
    struct iphdr *iprecpt;
    struct tcphdr *tcp = (struct tcphdr *)packet + sizeof(struct iphdr);
    struct tcphdr *tcprecpt;
    char *ipt = argv[1];
    struct hostent *host = gethostbyname(ipt);

    if(!host)
    {
        printf("Error resolution host\n");
        return 1;
    }
    if ((sock = socket(AF_INET , SOCK_RAW , IPPROTO_TCP)) == -1)
    {
        printf("Socket error\n");
        return 1;
    }

    sin.sin_family = AF_INET;
    sin.sin_port = htons(80);
    sin.sin_addr = *((struct in_addr *)host->h_addr);
    memset(packet , 0 , 8192);

    // Fill in IP headers.
    ip->ihl = 5;
    ip->version = 4;
    ip->tot_len = sizeof(struct iphdr) + sizeof(struct tcphdr);
    ip->id = htons(getuid());
    ip->saddr = inet_addr("127.0.0.1");
    ip->daddr = inet_ntoa(sin.sin_addr);
    ip->ttl = 255;
    ip->protocol = 6;
    ip->check = 0;
    ip->tos = 0;
    ip->frag_off = 0;
   
    // Fill in TCP headers.
    tcp->source = htons(80);
    tcp->dest = htons(80);
    tcp->seq = htons(random());
    tcp->ack = 0;
    tcp->syn = 1;
    tcp->window = htons(65535);
    tcp->check = 0;
    tcp->doff = 5;
    tcp->rst = 0;
    tcp->psh = 0;
    tcp->fin = 0;
    tcp->urg = 0;
    tcp->ack_seq = htons(0);

    sendto(sock, packet, ip->tot_len, 0, (struct sockaddr *)&sin, sizeof(struct sockaddr));
    recv(sock,packet,8192,0);
    tcprecpt = (struct tcphdr *)packet;
    iprecpt = (struct iphdr *)packet;
    printf("%d %d\n\n",tcprecpt->syn,tcprecpt->ack);
    if((tcprecpt->syn == 1) && (tcprecpt->ack == 1))
    {printf("Connect reussi donc le port est ouvert\n");}
   
    return 0;
}



lundi 22 août 2005 à 17:54:31 | Re : Envoi , reception et "analyse" d'un packet TCP

mirlaine

salut jai deja fait quelque program en raw mais je suis pa un spécialiste...
je pense quil te faut sniffer la reponse de ton syn/ack:
d' abors list les cartes reseaux puis metre en ecoute ton port source sur la bonne carte avec un timeout si ta une réponse le port est ouvert.

voila si je peu vous aider constacter moi
a+


Cette discussion est classée dans : ip, include, tcp, struct, packet


Répondre à ce message

Sujets en rapport avec ce message

Raw socket TCP/IP sous Windwos XP [ par MaximeH ] Bonjour à tous, J'aimerais savoir pourquoi ce code ne marche pas (il n'es pas de moi, c'est sensé être un exemple ...) : ###code // SheepTCP->SYN Ha Winsock Tcp/ip Vitesse [ par Envision2 ] Bonjour, avec mon programme en tcp/ip je veux controler le débit d'envoie d'un fichier avec ceci: while(OctetLu == 1024 && ret != 0 && ret != SOCKET_E modbus TCP/IP [ par Tytoo25 ] Salut à tous, Je cherche à dialoguer avec un automate Twido TWDLCAE40DRF, qui possède la communication Modbus TCP/IP. On m'a fait savoir qu'il était Client/Server TCp_IP en temps reel [ par virlix ] Bonjour tout le monde.Je suis actuellement en train de programmer sous un OS Realtime.J'aimerai y developper une server TCP_IP avec un client qui vien Raw Socket -> TCP/IP [ par krum ] Voila plus d'une semaine que je fouille/cherche sur les moteurs de recherches,les forums ..des sources,des tutos,des papers sur les raw sockets (sous Créer un lien entre deux ordis (TCP/IP + C++) [ par Zyvon ] Nous devons realiser un quake-like comme projet de semestre:Nous somme a jour pour les graphiques.Mais nous avons un problème pour le reseau car nous pd de threading [ par abdoulax ] Bon j'ai un pitit problème avec mon thread. En fait je suis en train faire un programme qui a besoin de traîter plusieur connection en même tps. Pour chat TCP/IP sous linux avec C [ par hassanamigos ] bonsoir tous le monde, alé aidez moi je vous en prie!HELP MEs'il vous pailt jé besion d'aide jé 12 projet sur le chat CLIENT/SERVEUR (TCP/IP) et plusi Problème pour compiler du c [ par flox39 ] Salut à tous Je suis en galère avec du code qu'on m'a passé je n'arrive pas a le compilerl'erreur c error C2447: missing function header (old-style fo Probleme changement d'adresse Ip dans ma socket [ par kingdom_slayer_666 ] Bonjour, Voila j'aimerais envoyer un packet UDP a diiferentes adresses Réseau (IP). En utilisant Builder 5 j ai créer ma socket dans une classe liée


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

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,858 sec (4)

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