• STATISTIQUES
  • Il y a eu un total de 1 membres et 26392 visiteurs sur le site dans les dernières 24h pour un total de 26 393 personnes!


    Membres: 2 604
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [FR] PHP France
    Pour tout savoir sur le PHP, en français. Vous trouverez des tutoriels, des exemples, des astuces, toute la do...
    Hacking
    [EN] This is legal
    Basic: 10, Realistic: 5, Programming: 1, Bonus: 11, SQL: 2, Encryption: 6, Application: 4, User Contributed: 3
    Challenges
    [EN] Dare your mind
    JavaScript: 6, Crypto: 44, Stegano: 36, Logic: 13, Special: 27, Science: 11, Realistic: 7, Programming: 10, Crack It: 6,...
    Challenges
    [EN] Big-Daddy
    Big-Daddy est site internet communautaire avec un effectif diversifié, y compris des artistes, des programmeur...
    Hacking
    [EN] Gekko
    Site de challenge présenter sous la forme d'une quête. Vous êtes un agent secret qui répond sous le nom...
    Challenges
    [FR] Hackfest
    Le Hackfest est un évènement de sécurité et de piratage informatique au Québec reg...
    Hacking
    [EN] wechall
    Pour les gens n'étant pas familiers avec les sites de challenges, un site de challenges est un site propos...
    Hacking

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[C] Un mini-serveur HTTP
19-04-2013, 00h25
Message : #1
-Moloch-
Non-enregistré



 
[C] Un mini-serveur HTTP
Le code parle de lui même.

EDIT, je tiens a m'excuser auprès des membres, comme l'a fait remarquer Sh4dows, des erreurs étaient présentes. Ce code est bel et bien de moi, je l'avais sur mon pc depuis un petit moment, je pensais que cela pourrait être pas mal de le partager aux membres du forum. Je tiens à notifier aussi que cela est mon tout premier message :')

Bref, j'ai rapidement apporter les modifications au code.
Code C :


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <time.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>


char *weekdays[8] = {
        "",
        "Mon",
        "Tue",
        "Wed",
        "Thu",
        "Fri",
        "Sat",
        "Sun",
};

char *months[12] = {
        "Jan",
        "Feb",
        "Mar",
        "Apr",
        "May",
        "Jun",
        "Jul",
        "Aug",
        "Sep",
        "Oct",
        "Nov",
        "Dec",
};

char    *http_date(void)
{
  time_t now;
  struct tm *tm_p;
  static char buf[128];
 
  now = time(NULL);
  tm_p = gmtime(&now);
 
  sprintf(buf, "%s %02d %s %d %02d:%02d:%02d GMT",
          weekdays[tm_p->tm_wday],
          tm_p->tm_mday,
          months[tm_p->tm_mon],
          1900 + tm_p->tm_year,
          tm_p->tm_hour,
          tm_p->tm_min,
          tm_p->tm_sec
          );
  return buf;
}

void check_for_error(int retval, char *perr_str)
{
  if (retval == -1) {
    perror(perr_str);
    exit(EXIT_FAILURE);
  }
}

void sanitize_filename(const char *filename, char *newname)
{
  int i, j;
 
  for (i = j = 0; filename[i] && !isspace(filename[i]); i++) {
    if (isalnum(filename[i])) {
      newname[j++] = filename[i];
    }
  }
  newname[j] = '\0';
}

void send_all(int s, const char *buf, ssize_t len)
{
  ssize_t bytes_sent = 0;
  int retval;

        while (bytes_sent < len) {
          retval = send(s, buf+bytes_sent, len-bytes_sent, 0);
          check_for_error(retval, "send()");
          bytes_sent += retval;
          /* printf("debug: sent %d bytes\n", retval); */
        }
}

void send_file(int sd, const char *filename)
{
  int fd;
  ssize_t n;
  char buf[8192];
 
  fd = open(filename, O_RDONLY);
  check_for_error(fd, "open()");
 
  while ((n = read(fd, buf, sizeof buf)) != 0) {
    check_for_error(n, "read()");
    send_all(sd, buf, n);
  }
 
  close(fd);
}

void proc_get_request(int sd)
{
  char req_buf[8192];
  char resp_buf[8192];
  char *p, *orig;
  ssize_t n;
  int filename_len = 0;
  char *clean_filename;
  struct stat sb;
 
  n = recv(sd, req_buf, sizeof req_buf, 0);
  p = strstr(req_buf, "GET");
  if (p) {
    p += 3;
    while (isspace(*p))
      ++p;
    orig = p;
    while (!isspace(*p)) {
      ++filename_len;
      ++p;
    }
    clean_filename = malloc(filename_len+1);
    if (clean_filename == NULL) {
      fprintf(stderr, "malloc() failed, aborting...\n");
      exit(EXIT_FAILURE);
    }
    sanitize_filename(orig, clean_filename);
   
    if (stat(clean_filename, &sb) != -1 &&
        !S_ISDIR(sb.st_mode))
      {
        sprintf(resp_buf,
                "HTTP/1.1 200 OK\r\n"
                "DATE: %s\r\n"
                "Server: Apache/2.2.8 (Unix)\r\n"
                "Content-Length: %d\r\n"
                "Content-Type: text/plain\r\n"
                "Cache-Control: no-cache\r\n"
                "Connection: close\r\n\r\n\x00",
                http_date(),
                sb.st_size
                );
        send_all(sd, resp_buf, strlen(resp_buf));
        send_file(sd, clean_filename);
        printf("[+] Sent file: %s (%d bytes)...\n",
               clean_filename,
               sb.st_size
               );
        free(clean_filename);
      } else {
      sprintf(resp_buf,
              "HTTP/1.1 404 Not Found\r\n"
              "Date: %s\r\n"
              "Server: Apache/2.2.8 (Unix)\r\n"
              "Content-Length: 0\r\n"
              "Connection: close\r\n\r\n\x00",
              http_date()
              );
      send_all(sd, resp_buf, strlen(resp_buf));
    }
  } else {
    sprintf(resp_buf,
            "HTTP/1.1 400 Bad Request\r\n"
            "Date: %s\r\n"
            "Server: Apache/2.2.8 (Unix)\r\n"
            "Content-Length: 0\r\n"
            "Connection: close\r\n\r\n\x00",
            http_date()
            );
    send_all(sd, resp_buf, strlen(resp_buf));
  }
}
int     main(int argc, char **argv)
{
  struct sockaddr_in l, a;
  int l_sd, a_sd;
  socklen_t t;
  int retval;
  int got_port = 0;
  int yes = 1;
 
  if(argc < 2) {
    fprintf(stderr, "Usage ./midget [bind adress] <listen port>\n"
            " (bind address is optional and defaults to 0.0.0.0 "
                        "(all interfaces)\n");
    exit(EXIT_FAILURE);
  }
 
  l.sin_family = AF_INET;
  l.sin_addr.s_addr = htonl(INADDR_ANY);
  while (--argc) {
    if (strchr(*++argv, '.')) {
      inet_aton(*argv, &(l.sin_addr));
    } else {
      l.sin_port = htons(atoi(*argv));
      got_port = 1;
      /* printf("got port: %d\n, ntohs(l.sin_port)); */
    }
  }
 
  if (!got_port) {
    fprintf(stderr, "Error: no port specified.\n");
    exit(EXIT_FAILURE);
  }
 
  l_sd = socket(PF_INET, SOCK_STREAM, 0);
  check_for_error(l_sd, "socket()");
 
  retval = setsockopt(l_sd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof yes);
  check_for_error(retval, "setsockopt()");
 
  retval = bind(l_sd, (struct sockaddr *) &l, sizeof l);
  check_for_error(retval, "bind()");
  printf("[+] Bound to interface %s, port %d...\n",
         inet_ntoa(l.sin_addr),
         ntohs(l.sin_port)
         );
 
  retval = listen(l_sd, 0);
  check_for_error(retval, "listen()");
  printf("[+] Listening...\n");
 
  /* value-result argument */
  t = sizeof a;
 
  while (1) {
    a_sd = accept(l_sd, (struct sockaddr *) &a, &t);
    check_for_error(a_sd, "accept()");
   
    printf("[+] Got connection from %s, port %d...\n",
           inet_ntoa(a.sin_addr),
           ntohs(a.sin_port)
           );
   
    if (fork() == 0) {
      proc_get_request(a_sd);
      close(a_sd);
      return 0;
    }
  }
 
  return 0;
}

 


Angel

EDIT khaled : Avec la couleur, c'est mieux Wink
EDIT -Moloch- Effectivement :p
positive (1) negative (0) Répondre
19-04-2013, 07h57 (Modification du message : 19-04-2013, 12h31 par Sh4dows.)
Message : #2
Sh4dows Hors ligne
Tweetos
*



Messages : 293
Sujets : 5
Points: 49
Inscription : Dec 2012
RE: [C] Un mini-serveur HTTP
Il manque juste un peu tous les headers ...

Sinon il est de toi le code ? Si cela n'est pas le cas, cite tes sources Smile
Après on voit plein de warnings/errors à la compilation, essaye de poster des choses propres !!

Ensuite tu la déclares quand la variable clean_filename ? :
Code C :

// Ligne 128
 clean_filename = malloc(filename_len+1);
    if (clean_filename == NULL) {
 


Concernant les erreurs, en ajoutant ça il y en a un peu moins :
Code C :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <time.h>
#include <sys/stat.h>
#include <fcntl.h>
 


Edit : Même avec les headers faut bien sur corriger les erreurs restantes :'(
Edit2 :
Code :
serv_http.c: In function ‘proc_get_request’:
serv_http.c:150:3: warning: format ‘%d’ expects argument of type ‘int’, but argument 4 has type ‘__off_t’ [-Wformat]
serv_http.c:156:9: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘__off_t’ [-Wformat]
serv_http.c: In function ‘main’:
serv_http.c:183:22: error: storage size of ‘l’ isn’t known
serv_http.c:183:25: error: storage size of ‘a’ isn’t known
serv_http.c:198:3: error: ‘l_sin_addr’ undeclared (first use in this function)
serv_http.c:198:3: note: each undeclared identifier is reported only once for each function it appears in
serv_http.c:198:29: error: ‘INADDR_ANY’ undeclared (first use in this function)
Faites ce que je dis et non ce que je fais !
+1 (0) -1 (0) Répondre
19-04-2013, 10h22
Message : #3
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: [C] Un mini-serveur HTTP
dans tous les cas c'est un excellent exercice pour ceux qui veulent s'entrainer à coder les sockets et qui ne savent pas quoi faire
à noter qu'ici il utilise des sockets bloquantes (par défaut) et du fork(), ce qui est bien mais pas top, parfait pour les débutants en C
+1 (0) -1 (0) Répondre
19-04-2013, 12h26 (Modification du message : 19-04-2013, 12h28 par notfound.)
Message : #4
notfound Hors ligne
#!/usr/bin/env bash
*



Messages : 687
Sujets : 47
Points: 271
Inscription : Sep 2012
RE: [C] Un mini-serveur HTTP
Comme l'a dit Sh4d0ws, c'est mieux de poster un code fonctionnel, et pourquoi pas mettre à la fin un exemple de fonctionnement. Car dans ce cas, si on veut essayer ton code, il faut tout d'abord trouver les headers (merci Shadows) puis corriger les nombreuses erreurs (23).

Tu l'as testé ton code ?
+1 (0) -1 (0) Répondre
19-04-2013, 12h38
Message : #5
Machin Hors ligne
Membre actif
*



Messages : 60
Sujets : 1
Points: 16
Inscription : Apr 2013
RE: [C] Un mini-serveur HTTP
Si je voulais troller je dirais qu'en Python, en 2 lignes :

Code :
import SimpleHTTPServer
SimpleHTTPServer.test()

On a un serveur http sur le port 8000 par defaut, partageant tous les fichiers du repertoires courant. Si un index.html est présent, c'est lui qui fait office de page par défaut, sinon il va lister les fichiers.

De là à conclure que Python est meilleur que le C ... :-°

Plus serieusement, je me sert regulièrement de ça sous cette forme :
Code :
python -c 'import SimpleHTTPServer;SimpleHTTPServer.test()'
ça permet, en une ligne de code, de partager temporairement un dossier et des fichiers. C'est assez pratique quand on doit partager un fichier present sur son PC avec quelqu'un, en local ou pas d'ailleurs, sans s'embeter a creer des dossier partagés.
+1 (1) -1 (0) Répondre
19-04-2013, 12h39
Message : #6
InstinctHack Hors ligne
Posting Freak
*



Messages : 1,366
Sujets : 184
Points: 299
Inscription : Dec 2011
RE: [C] Un mini-serveur HTTP
ça pue comme truc, c'est comme si on résumer linux à "load kernel", en général les gens ici veulent savoir ce qu'il as sous le capot :p
Citation :un jour en cours de java j'ai attrapé les seins d'une fille mais elle m'a frappé en disant "c'est privé !!"
j'ai pas compris pourquoi, je croyais qu'on était dans la même classe
+1 (0) -1 (0) Répondre
19-04-2013, 12h40
Message : #7
ark Hors ligne
Psyckomodo!
*****



Messages : 1,033
Sujets : 48
Points: 317
Inscription : Sep 2011
RE: [C] Un mini-serveur HTTP
Au moins si ca compile pas du premier coup ca vous éviteras de lancer le programme sans avoir vérifié ce qu'il fais...
+1 (2) -1 (0) Répondre
19-04-2013, 12h41
Message : #8
Sh4dows Hors ligne
Tweetos
*



Messages : 293
Sujets : 5
Points: 49
Inscription : Dec 2012
RE: [C] Un mini-serveur HTTP
(19-04-2013, 12h26)notfound a écrit : Comme l'a dit Sh4d0ws, c'est mieux de poster un code fonctionnel, et pourquoi pas mettre à la fin un exemple de fonctionnement. Car dans ce cas, si on veut essayer ton code, il faut tout d'abord trouver les headers (merci Shadows) puis corriger les nombreuses erreurs (23).

Tu l'as testé ton code ?

Il faut rajouter une autre include bien évidemment je l'avais oublié :
Code C :

#include <netinet/in.h>
 


Du coup ça compile mais il reste des warnings, un ou deux cast par ci par là devrait ne plus les afficher, par contre l'affichage sera pourrit !!!
Code :
sh4dows@LAP1-Ubuntu:~/Desktop$ gcc serv_http.c
serv_http.c: In function ‘proc_get_request’:
serv_http.c:151:3: warning: format ‘%d’ expects argument of type ‘int’, but argument 4 has type ‘__off_t’ [-Wformat]
serv_http.c:157:9: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘__off_t’ [-Wformat]
serv_http.c: In function ‘main’:
serv_http.c:226:3: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘int’ [-Wformat]
serv_http.c:242:5: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘int’ [-Wformat]
sh4dows@LAP1-Ubuntu:~/Desktop$

Et le code QUI COMPILE !!
Code C :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <time.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>


char *weekdays[8] = {
        "",
        "Mon",
        "Tue",
        "Wed",
        "Thu",
        "Fri",
        "Sat",
        "Sun",
};

char *months[12] = {
        "Jan",
        "Feb",
        "Mar",
        "Apr",
        "May",
        "Jun",
        "Jul",
        "Aug",
        "Sep",
        "Oct",
        "Nov",
        "Dec",
};

char    *http_date(void)
{
  time_t now;
  struct tm *tm_p;
  static char buf[128];
 
  now = time(NULL);
  tm_p = gmtime(&now);
 
  sprintf(buf, "%s %02d %s %d %02d:%02d:%02d GMT",
      weekdays[tm_p->tm_wday],
      tm_p->tm_mday,
      months[tm_p->tm_mon],
      1900 + tm_p->tm_year,
      tm_p->tm_hour,
      tm_p->tm_min,
      tm_p->tm_sec
      );
  return buf;
}

void check_for_error(int retval, char *perr_str)
{
  if (retval == -1) {
    perror(perr_str);
    exit(EXIT_FAILURE);
  }
}

void sanitize_filename(const char *filename, char *newname)
{
  int i, j;
 
  for (i = j = 0; filename[i] && !isspace(filename[i]); i++) {
    if (isalnum(filename[i])) {
      newname[j++] = filename[i];
    }
  }
  newname[j] = '\0';
}

void send_all(int s, const char *buf, ssize_t len)
{
  ssize_t bytes_sent = 0;
  int retval;

        while (bytes_sent < len) {
      retval = send(s, buf+bytes_sent, len-bytes_sent, 0);
      check_for_error(retval, "send()");
      bytes_sent += retval;
      /* printf("debug: sent %d bytes\n", retval); */
        }
}

void send_file(int sd, const char *filename)
{
  int fd;
  ssize_t n;
  char buf[8192];
 
  fd = open(filename, O_RDONLY);
  check_for_error(fd, "open()");
 
  while ((n = read(fd, buf, sizeof buf)) != 0) {
    check_for_error(n, "read()");
    send_all(sd, buf, n);
  }
 
  close(fd);
}

void proc_get_request(int sd)
{
  char req_buf[8192];
  char resp_buf[8192];
  char *p, *orig;
  ssize_t n;
  int filename_len = 0;
  char *clean_filename;
  struct stat sb;
 
  n = recv(sd, req_buf, sizeof req_buf, 0);
  p = strstr(req_buf, "GET");
  if (p) {
    p += 3;
    while (isspace(*p))
      ++p;
    orig = p;
    while (!isspace(*p)) {
      ++filename_len;
      ++p;
    }
    clean_filename = malloc(filename_len+1);
    if (clean_filename == NULL) {
      fprintf(stderr, "malloc() failed, aborting...\n");
      exit(EXIT_FAILURE);
    }
    sanitize_filename(orig, clean_filename);
   
    if (stat(clean_filename, &sb) != -1 &&
    !S_ISDIR(sb.st_mode))
      {
    sprintf(resp_buf,
        "HTTP/1.1 200 OK\r\n"
        "DATE: %s\r\n"
        "Server: Apache/2.2.8 (Unix)\r\n"
        "Content-Length: %d\r\n"
        "Content-Type: text/plain\r\n"
        "Cache-Control: no-cache\r\n"
        "Connection: close\r\n\r\n\x00",
        http_date(),
        sb.st_size
        );
    send_all(sd, resp_buf, strlen(resp_buf));
    send_file(sd, clean_filename);
    printf("[+] Sent file: %s (%d bytes)...\n",
           clean_filename,
           sb.st_size
           );
    free(clean_filename);
      } else {
      sprintf(resp_buf,
          "HTTP/1.1 404 Not Found\r\n"
          "Date: %s\r\n"
          "Server: Apache/2.2.8 (Unix)\r\n"
          "Content-Length: 0\r\n"
          "Connection: close\r\n\r\n\x00",
          http_date()
          );
      send_all(sd, resp_buf, strlen(resp_buf));
    }
  } else {
    sprintf(resp_buf,
        "HTTP/1.1 400 Bad Request\r\n"
        "Date: %s\r\n"
        "Server: Apache/2.2.8 (Unix)\r\n"
        "Content-Length: 0\r\n"
        "Connection: close\r\n\r\n\x00",
        http_date()
        );
    send_all(sd, resp_buf, strlen(resp_buf));
  }
}
int main(int argc, char **argv)
{
  struct sockaddr_in l, a;
  int l_sd, a_sd;
  socklen_t t;
  int retval;
  int got_port = 0;
  int yes = 1;
 
  if(argc < 2) {
    fprintf(stderr, "Usage ./midget [bind adress] <listen port>\n"
        " (bind address is optional and defaults to 0.0.0.0 "
                        "(all interfaces)\n");
    exit(EXIT_FAILURE);
  }
 
  l.sin_family = AF_INET;
  l.sin_addr.s_addr = htonl(INADDR_ANY);
  while (--argc) {
    if (strchr(*++argv, '.')) {
      inet_aton(*argv, &(l.sin_addr));
    } else {
      l.sin_port = htons(atoi(*argv));
      got_port = 1;
      /* printf("got port: %d\n, ntohs(l.sin_port)); */
    }
  }
 
  if (!got_port) {
    fprintf(stderr, "Error: no port specified.\n");
    exit(EXIT_FAILURE);
  }
 
  l_sd = socket(PF_INET, SOCK_STREAM, 0);
  check_for_error(l_sd, "socket()");
 
  retval = setsockopt(l_sd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof yes);
  check_for_error(retval, "setsockopt()");
 
  retval = bind(l_sd, (struct sockaddr *) &l, sizeof l);
  check_for_error(retval, "bind()");
  printf("[+] Bound to interface %s, port %d...\n",
     inet_ntoa(l.sin_addr),
     ntohs(l.sin_port)
     );
 
  retval = listen(l_sd, 0);
  check_for_error(retval, "listen()");
  printf("[+] Listening...\n");
 
  /* value-result argument */
  t = sizeof a;
 
  while (1) {
    a_sd = accept(l_sd, (struct sockaddr *) &a, &t);
    check_for_error(a_sd, "accept()");
   
    printf("[+] Got connection from %s, port %d...\n",
       inet_ntoa(a.sin_addr),
       ntohs(a.sin_port)
       );
   
    if (fork() == 0) {
      proc_get_request(a_sd);
      close(a_sd);
      return 0;
    }
  }
 
  return 0;
}
 
Faites ce que je dis et non ce que je fais !
+1 (1) -1 (0) Répondre
19-04-2013, 12h42
Message : #9
Machin Hors ligne
Membre actif
*



Messages : 60
Sujets : 1
Points: 16
Inscription : Apr 2013
RE: [C] Un mini-serveur HTTP
(19-04-2013, 12h39)InstinctHack a écrit : ça pue comme truc, c'est comme si on résumer linux à "load kernel", en général les gens ici veulent savoir ce qu'il as sous le capot :p


Non mais je sais, c'etait pour troller le C à la base. Mais je pense que la fin peut être utile. ça permet de facilement partager des fichiers sans vraiment s'embêter en une ligne.

Apres si tu veux voir ce qu'il y a sous le capot, tu as accès aux sources Wink
+1 (0) -1 (0) Répondre
19-04-2013, 13h56
Message : #10
notfound Hors ligne
#!/usr/bin/env bash
*



Messages : 687
Sujets : 47
Points: 271
Inscription : Sep 2012
RE: [C] Un mini-serveur HTTP
(19-04-2013, 12h40)Ark a écrit : Au moins si ca compile pas du premier coup ca vous éviteras de lancer le programme sans avoir vérifié ce qu'il fais...

Je test :
Le résultat est-il intéressant ?

- Oui, alors je regarde le code source en détail avec amour

- Non, rm lefichier
+1 (0) -1 (0) Répondre
19-04-2013, 14h16
Message : #11
ark Hors ligne
Psyckomodo!
*****



Messages : 1,033
Sujets : 48
Points: 317
Inscription : Sep 2011
RE: [C] Un mini-serveur HTTP
(19-04-2013, 13h56)notfound a écrit :
(19-04-2013, 12h40)Ark a écrit : Au moins si ca compile pas du premier coup ca vous éviteras de lancer le programme sans avoir vérifié ce qu'il fais...

Je test :
Le résultat est-il intéressant ?

- Oui, alors je regarde le code source en détail avec amour

- Non, rm lefichier

Attends, je te la refais:

Je test :
Boarf, ca marche pas ce truc... <-- Ouais, mais tu viens de te faire backdoorer.

Juste pour dire: faites attention a ce que vous lancez sur vos systèmes les gens. Meme si vous pensez que ca viens d'une source fiable.
+1 (1) -1 (0) Répondre
19-04-2013, 14h22 (Modification du message : 19-04-2013, 14h31 par notfound.)
Message : #12
notfound Hors ligne
#!/usr/bin/env bash
*



Messages : 687
Sujets : 47
Points: 271
Inscription : Sep 2012
RE: [C] Un mini-serveur HTTP
Backdoorer -> Mon IDS -> Alert connexion inconnue -> Action

Mais, je suis d'accord avec toi, faut pas faire confiance à n'importe qui.
+1 (0) -1 (0) Répondre


Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  [C] serveur irc (non terminé) fr0g 0 67 21-05-2014, 22h27
Dernier message: fr0g
  [C] Socket Client-Serveur -> Write() + Read() sakiir 7 205 18-03-2013, 07h19
Dernier message: sakiir
  [C++] Requéte http oxame 3 129 02-11-2012, 20h28
Dernier message: oxame
  [C] Programme Serveur/Client Creepy_p0ney 1 210 13-10-2012, 14h13
Dernier message: Creepy_p0ney
  [C] Serveur multi-clients Creepy_p0ney 12 247 09-10-2012, 19h28
Dernier message: Creepy_p0ney
  [C++] LibSimpleWeb, des requetes HTTP simples Dobry 0 105 29-03-2012, 14h56
Dernier message: Dobry

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut