• STATISTIQUES
  • Il y a eu un total de 0 membres et 28668 visiteurs sur le site dans les dernières 24h pour un total de 28 668 personnes!
    Membres: 2 605
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [FR] µContest
    µContest est un site de challenges de programmation, c'est à dire qu'il propose des épreu...
    Hacking
    [EN] Big-Daddy
    Big-Daddy est site internet communautaire avec un effectif diversifié, y compris des artistes, des programmeur...
    Hacking
    [FR] Asp-php
    Tutoriaux sur ASP, PHP, ASP.net, XML, SQL, Javascript, HTML, VML - Scripts et ressources pour webmasters - Forums d&#...
    Programmation
    [EN] Astalavista
    JavaScript: 1, Exploit: 2, Crypto: 34, CrackIt: 15, Stegano: 8, Programming: 12, Logic: 36, Special: 6, Science: 4, Info...
    Challenges
    [EN] Exploit-db
    Une base de données d'exploits triés par genre (GHDB, Remote, Local, Web, DOS, ShellCode) à ...
    Vulnérabilités
    [FR] Le top web
    Nous offrons une sélection la plus large possible de resources webmaster gratuites, hébergement gratuit...
    Webmaster
    [FR] Zenk-Security
    La communauté zenk-security a pour objet principal la sécurité informatique, nous sommes des tou...
    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] bot irc
24-09-2012, 22h54
Message : #3
b0fh Hors ligne
Membre actif
*



Messages : 210
Sujets : 17
Points: 309
Inscription : Jul 2012
RE: [c bot] probleme bot en c
Hello,

Le problème est probablement que recv(2) travaille sur des données arbitraires et ne rajoute donc pas le terminateur nul à la fin d'une ligne. Quand un message plus court que le précédent est reçu, il est réécrit par dessus, et strstr ne voit pas la limite entre les deux.
Code :
read_bytes = recv(sockfd, buf, 255, 0);
//check for error
buf[read_bytes] = '\0';

Note le 255 pour éviter une erreur off-by-one.

Ce code n'est pas fiable parce qu'il n'y a aucune garantie qu'une ligne entière soit disponible après un appel à recv(2), meme si ça sera le cas quasiment tout le temps. Pour faire proprement tu devrais avoir une première boucle qui accumule les résultats des appels à recv dans un buffer intermédiaire, cherche les terminateurs \n et déclenche une action le cas échéant, et copie le reste du buffer éventuel au début.

Ton implémentation de PING/PONG est incomplète, le PONG est sensé retourner l'argument envoyé avec PING. Le serveur serait en droit de te déconnecter pour ça.

Dernièrement, pour tes chaines de caractère constantes,
Code :
char blah[100] = "foobarbaz";
A l'intérieur d'une fonction, cause l'allocation du buffer sur la stack et une initialisation des données en dur dans le code de la fonction, alors que
Code :
char blah[] = "foobarbaz";
a au moins l'avantage d'utiliser un buffer exactement de la bonne taille, et que
Code :
char *blah = "foobarbaz";
place la chaine dans la section de données, et ne génère pas de code d'initialiastion.
+1 (0) -1 (0) Répondre


Messages dans ce sujet
[C] bot irc - par Creepy_p0ney - 24-09-2012, 19h41
RE: [c bot] probleme bot en c - par Ark - 24-09-2012, 22h09
RE: [c bot] probleme bot en c - par b0fh - 24-09-2012, 22h54

Atteindre :


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