• STATISTIQUES
  • Il y a eu un total de 2 membres et 8958 visiteurs sur le site dans les dernières 24h pour un total de 8 960 personnes!


    Membres: 2 605
    Discussions: 3 580
    Messages: 32 820
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [FR] apprendre-a-manipuler
    Site d'apprentissage de la manipulation d'autrui.
    Hacking
    [EN] Big-Daddy
    Big-Daddy est site internet communautaire avec un effectif diversifié, y compris des artistes, des programmeur...
    Hacking
    [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] Astalavista
    JavaScript: 1, Exploit: 2, Crypto: 34, CrackIt: 15, Stegano: 8, Programming: 12, Logic: 36, Special: 6, Science: 4, Info...
    Challenges
    [FR] Root-Me
    Notre équipe se base sur un constat : à l'heure actuelle ou l'information tend à devenir...
    Hacking
    [FR] Asp-php
    Tutoriaux sur ASP, PHP, ASP.net, XML, SQL, Javascript, HTML, VML - Scripts et ressources pour webmasters - Forums d&#...
    Programmation
    [FR] InfoMirmo
    Apprentissage de l'informatique par l'intermédiaire de challenges de sécurité. Venez app...
    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] Socket + envoie de commande
24-04-2013, 17h00 (Modification du message : 24-04-2013, 17h00 par notfound.)
Message : #16
notfound Hors ligne
#!/usr/bin/env bash
*



Messages : 687
Sujets : 47
Points: 271
Inscription : Sep 2012
RE: [C] Socket + envoie de commande
En fait, y'a un truc CAPITAL dans bordel ! C'est de mettre à la fin, le caractère 0x0d (CR, carrier return) sinon ça push pas le merdier et rien ne se passe ...
+1 (0) -1 (0) Répondre
24-04-2013, 21h37 (Modification du message : 24-04-2013, 21h43 par Kiwazaru.)
Message : #17
Kiwazaru Hors ligne
Padawan d'un super escargot
*



Messages : 284
Sujets : 26
Points: 139
Inscription : Mar 2012
RE: [C] Socket + envoie de commande
Exact, si on regarde le stream en "C Array" on vois bien :
Code C :

/* Le seul qui ne contient pas de CR */
char peer0_0[] = {
0x45, 0x53, 0x43, 0x2f, 0x56, 0x50, 0x2e, 0x6e,
0x65, 0x74, 0x10, 0x03, 0x00, 0x00, 0x00, 0x00 };

/* Tout les autres en contiennent */
char peer0_1[] = {
0x56, 0x45, 0x52, 0x3f, 0x0d };

char peer0_2[] = {
0x4c, 0x41, 0x4d, 0x50, 0x3f, 0x0d };

char peer0_3[] = {
0x50, 0x57, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53,
0x3f, 0x0d };

char peer0_4[] = {
0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x3f, 0x0d };

char peer0_5[] = {
0x56, 0x45, 0x52, 0x3f, 0x0d };

char peer0_6[] = {
0x53, 0x4e, 0x4f, 0x3f, 0x0d };

char peer0_7[] = {
0x4d, 0x42, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53,
0x3f, 0x0d };

char peer0_8[] = {
0x49, 0x4d, 0x50, 0x57, 0x52, 0x20, 0x4f, 0x46,
0x46, 0x0d };
 


Donc si tu veux que ça marche du coup, soit tu fait avec la technique j'envoie tout les paquets , soit tu fait la technique à gruik qui fait: Bonjour -> Shutdown

Code C :

/* Bonjour -> VP */
send(sock, "ESC/VP.net\x10\x03\x00\x00\x00\x00", len, 0);
recv(sock, reponse, MAX, 0);

/* Si on reçois une réponse "Bonjour" VP -> PC on essaye de l'éteindre */
if(strcmp(reponse, "ESC/VP.net\x10\x03\x00\x00\x20\x00") == 0){
      send(sock, "IMPWR OFF\x0d", len, 0);
      recv(sock, reponse, MAX, 0);
}

/* Si on reçois la requête disant que le VP a été éteint on affiche que VP est éteint */
if(strcmp(reponse, ":IMEVENT=0001 04 00000002 00000000 T1 F1\x0d\x3a:IMEVENT=0001 04 00000002 00000000 T1 F1\x0d\x3a") == 0){
      printf("[+] Vidéo-Projecteur Éteint !");
}
else{
      printf("[+] Erreur pendant la tentative !");
}
 


Je sais pas si le code est bon ou pas, j'ai enlevé les sprintf(); , ça servait pas à grand chose à part encombrer et ralentir l’exécution du programme Smile

PS : Pas eu le temps d'édit, juste remplace STRCMP(); par MEMCMP(); Smile
Toucher au Kernel, c'est un peut comme se shooter au LSD, on pense pouvoir tout faire mais ça finit souvent mal.
+1 (1) -1 (0) Répondre
25-04-2013, 12h59 (Modification du message : 25-04-2013, 12h59 par notfound.)
Message : #18
notfound Hors ligne
#!/usr/bin/env bash
*



Messages : 687
Sujets : 47
Points: 271
Inscription : Sep 2012
RE: [C] Socket + envoie de commande
Je paste mon code demain quand je retourne au boulot, il est fonctionnel Wink

Edit : Code fonctionnel copié dans le 1er post !
+1 (0) -1 (0) Répondre
25-04-2013, 13h32 (Modification du message : 25-04-2013, 13h33 par Kiwazaru.)
Message : #19
Kiwazaru Hors ligne
Padawan d'un super escargot
*



Messages : 284
Sujets : 26
Points: 139
Inscription : Mar 2012
RE: [C] Socket + envoie de commande
Code C :

    printf("\nChoix : ");scanf("%d", &choix);
 


C'est un peu... :p

Code C :

   printf("\nChoix : ");
   fgets(choix, 10, stdin);
   fseek(stdin, 0, SEEK_END);
 
Toucher au Kernel, c'est un peut comme se shooter au LSD, on pense pouvoir tout faire mais ça finit souvent mal.
+1 (0) -1 (0) Répondre
25-04-2013, 13h43 (Modification du message : 25-04-2013, 13h43 par notfound.)
Message : #20
notfound Hors ligne
#!/usr/bin/env bash
*



Messages : 687
Sujets : 47
Points: 271
Inscription : Sep 2012
RE: [C] Socket + envoie de commande
Un peu what ? Smile
+1 (0) -1 (0) Répondre
25-04-2013, 13h45 (Modification du message : 25-04-2013, 13h46 par Kiwazaru.)
Message : #21
Kiwazaru Hors ligne
Padawan d'un super escargot
*



Messages : 284
Sujets : 26
Points: 139
Inscription : Mar 2012
RE: [C] Socket + envoie de commande
Bah scanf(); vérifie pas la taille de la chaîne envoyé donc si ton char choix[vaut 10] et que j'entre 012345678910AAAAAAAAAAAAAAAAAAAAAAAAAAA ça va planter :p. Certes c'est un code personnel mais c'est toujours bien de s'habituer :p

Là avec fgets(); tu peux limiter la chaîne , et faut vider après stdin qui sert de "buffer" , avec fseek(); donc :p
Toucher au Kernel, c'est un peut comme se shooter au LSD, on pense pouvoir tout faire mais ça finit souvent mal.
+1 (2) -1 (0) Répondre
25-04-2013, 15h56
Message : #22
notfound Hors ligne
#!/usr/bin/env bash
*



Messages : 687
Sujets : 47
Points: 271
Inscription : Sep 2012
RE: [C] Socket + envoie de commande
Ok ok je le saurai ! Thx Smile
+1 (0) -1 (0) Répondre
26-04-2013, 08h14 (Modification du message : 26-04-2013, 08h38 par gruik.)
Message : #23
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: [C] Socket + envoie de commande
(25-04-2013, 13h45)ReVeRse a écrit : Bah scanf(); vérifie pas la taille de la chaîne envoyé donc si ton char choix[vaut 10] et que j'entre 012345678910AAAAAAAAAAAAAAAAAAAAAAAAAAA ça va planter :p.

ca vaut que pour un scanf %s, là le spécificateur %d fait qu'on le fera pas déborder
dans tous les cas on peut préciser plus finement avec scanf %10s par exemple

Code C :
int main (void) {
        int nombre = 0;
        printf ("entrer un nombre (4 chiffres max): ");
        scanf ("%4d", &nombre);
        printf ("nombre = %d\n", nombre);
        return 0;
}

Code BASH :
$ ./pouet
entrer un nombre (4 chiffres max): 1234567890
nombre = 1234


Citation :Certes c'est un code personnel mais c'est toujours bien de s'habituer :p

+1
+1 (0) -1 (0) Répondre
26-04-2013, 10h03 (Modification du message : 26-04-2013, 10h04 par Kiwazaru.)
Message : #24
Kiwazaru Hors ligne
Padawan d'un super escargot
*



Messages : 284
Sujets : 26
Points: 139
Inscription : Mar 2012
RE: [C] Socket + envoie de commande
Ah , je savais pas ça ! Sûrement trop d'idées reçues de dire que scanf(); == fonction horrible à oublier Smile
Mais pourquoi ça existe pour les decimal et pas pour les chaînes de caractères? :o
Toucher au Kernel, c'est un peut comme se shooter au LSD, on pense pouvoir tout faire mais ça finit souvent mal.
+1 (0) -1 (0) Répondre
26-04-2013, 10h33
Message : #25
supersnail Hors ligne
Éleveur d'ornithorynques
*******



Messages : 1,610
Sujets : 72
Points: 466
Inscription : Jan 2012
RE: [C] Socket + envoie de commande
Ben si y'a le %10s qui limite la taille de l'entrée à 10 caractères.

Par contre comme partout, faut penser à vider le buffer avant de refaire un autre appel à scanf ,sous peine de bugs "bizarres".
Mon blog

Code :
push esp ; dec eax ; inc ebp ; and [edi+0x41],al ; dec ebp ; inc ebp

"VIM est merveilleux" © supersnail
+1 (1) -1 (0) Répondre
26-04-2013, 10h40
Message : #26
Kiwazaru Hors ligne
Padawan d'un super escargot
*



Messages : 284
Sujets : 26
Points: 139
Inscription : Mar 2012
RE: [C] Socket + envoie de commande
Ah bah voilà, alors pourquoi tu me disais que scanf(); était à oublier? :p
Toucher au Kernel, c'est un peut comme se shooter au LSD, on pense pouvoir tout faire mais ça finit souvent mal.
+1 (0) -1 (0) Répondre
26-04-2013, 20h24
Message : #27
supersnail Hors ligne
Éleveur d'ornithorynques
*******



Messages : 1,610
Sujets : 72
Points: 466
Inscription : Jan 2012
RE: [C] Socket + envoie de commande
A cause des bugs bizarres que ça provoque (ie si tu rentres autre chose qu'un nombre quand t'as scanf("%d"), ta variable n'est pas modifiée, et le nombre reste non traité dans le buffer, et va donc "polluer" les appels suivants Wink)

Démonstration avec le petit programme suivant:

Code C :
#include <stdio.h>

int main() {
        int age;
        char nom[11];
        printf ("Entrez votre âge: ");
        scanf ("%d", &age);
        printf ("Entrez votre nom: ");
        scanf ("%10s", nom);
        printf ("Vous vous appelez %s et vous avez %d ans\n", nom, age);
        return 0;
}
 


Qui, si dans le champ "âge", on rentre "tapz", retourne chez moi
Code :
$ ./wtf
Entrez votre âge: tapz
Entrez votre nom: Vous vous appelez tapz et vous avez -1217413120 ans
, ce qui est évidemment très loin du résultat attendu :'')
Mon blog

Code :
push esp ; dec eax ; inc ebp ; and [edi+0x41],al ; dec ebp ; inc ebp

"VIM est merveilleux" © supersnail
+1 (0) -1 (0) Répondre
26-04-2013, 20h41
Message : #28
Kiwazaru Hors ligne
Padawan d'un super escargot
*



Messages : 284
Sujets : 26
Points: 139
Inscription : Mar 2012
RE: [C] Socket + envoie de commande
Yep effectivement :p
Oui donc en fait, c'est utilisable mais ça peut provoquer des erreurs de gestion donc fgets(); reste la meilleur solution pour avoir un programme fonctionnel et non "bugué" Smile
Toucher au Kernel, c'est un peut comme se shooter au LSD, on pense pouvoir tout faire mais ça finit souvent mal.
+1 (0) -1 (0) Répondre


Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  [shellcode] Reverse shell over reused socket ark 4 286 11-03-2014, 11h51
Dernier message: Ark
  [C] Socket Client-Serveur -> Write() + Read() sakiir 7 314 18-03-2013, 07h19
Dernier message: sakiir
  NEED HELP / SOCKET;FILTRES XDR; RPC notfound 4 263 21-01-2013, 02h18
Dernier message: notfound

Atteindre :


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