IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

BruteForce : javascript(substring) => C(?)


Sujet :

C

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    150
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Novembre 2006
    Messages : 150
    Points : 48
    Points
    48
    Par défaut BruteForce : javascript(substring) => C(?)
    Bonjour à tous,

    Je suis en ce moment sur un site de "challenges" et dans la rubrique javascript j'ai commencé un challenge en bruteforce. Le script initial est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    <script type="text/javascript" language="JavaScript">
    	var total_erreur=0;
    	function Check() {
    	var tabc=Check.arguments; var ok=0;
    	var tab="                   azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN0123456789_$&#@";
    	for (var no=0;no<tabc.length;no++) {
    		checksum=tabc[no];
    		var login=document.forms["flog"].elements["login"].value;
    		var password="souris";
    		var nblog=login.length;
    		var nbpass=password.length;
    		var sum=1;
    		var n=Math.max(nblog,nbpass)
    		for (var i=0;i<n;i++) {
    			var index1=tab.indexOf(login.substring(i,i+1))+10;
    			var index2=tab.indexOf(password.substring(i,i+1))+10;
    			sum=sum+(index1*n*(i+1))*(index2*(i+1)*(i+1));
    		}
            if (sum==checksum) {
    			window.location="/epreuves/javascript/"+login+".php"; ok=1; no=100;
    		}
     
    	}
    	if (ok==0) {
    		total_erreur++;
    		alert("Mauvais login ou mot de passe");
    		if (total_erreur>2) {
    			alert("Vous avez atteint les 3 essais !\nAu revoir");
    			window.location="index.php";
    		}
    	}
    	}
    	function Verifie() {
    	Check(3696619)
    	}
    	</script>
    J'aimerais retranscrire ce code en C, et cela me donne pour l'instant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    #include <cstdlib>
    #include <iostream>
    #include <stdio.h>
    #include <stdlib.h>
    #include <strings.h>
     
     
     
    using namespace std;
     
     
     
    char tab[] = "                   azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN0123456789_$&#@";
     
     
    int indexof (char c){
    int nb=0;
      while(c!=tab[nb]){
         if(c==tab[nb]){
           break;
           }
           nb++;
      }
     
    return nb;
    }
     
     
    int main()
    {
     
    char a,b,c,d,e,f;
    int i , n0 , tabclength=1 , sum=1, indexof1=0,indexof2=0, n;
    int index1=0, index2=0;
    char login[7]="      ";
    char pwd[7]="souris";
     
    // generation du login pour le test
     
        for (int a='A';a<'z';a++){
            for (int b='A';b<'z';b++){
                for (int c='A';c<'z';c++){
                    for (int d='A';d<'z';d++){
                        for (int e='A';e<'z';e++){
                            for (int f='A';f<'z';f++){
     
          login[0] = a ;
          login[1] = b ;
          login[2] = c ;
          login[3] = d ;
          login[4] = e ;
          login[5] = f ;
     
     
    // Opération sur le login (6 fois)
     
      for(i=0;i<6;i++){   // longueur du login = 6
     
       index1 = login[i];
       index2 = pwd[i];
       indexof1=indexof(index1)+10;  
       indexof2=indexof(index2)+10;  
       index2 = pwd[i]+10;
       sum=sum+(index1*n*(i+1))*(index2*(i+1)*(i+1));
     
     
       if (sum==3696619) printf("%s |",login); // condition pour afficher le login
     
     
     
                     } // boucle for TEST
     
                       }
                         }
                           }
                             } 
                               }
                                 }  // derniere boucle FOR generation du login
     
        printf("FIN");
     
        return 0;
    }
    J'ai essayé de l'indenter au maximum pour une meilleure compréhension ce celui-ci + quelques commentaires ...
    En gros, la génération du login (6 caractères) se fait bien (AAAAAA,AAAAAB,....), et le programme suit bien toutes les boucles. Je pense que mon problème vient du substring (en javascript), que je ne sais pas trop comment écrire en C ...

    Voila dites moi ce que vous en pensez, je me tiens à votre disposition pour des plus amples informations

    Cordialement,

    olivier1209.

    PS : site source = http://www.newbiecontest.org

  2. #2
    Membre actif Avatar de monwarez
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 144
    Points : 293
    Points
    293
    Par défaut
    Simple question, tu fait du c ou du c++?
    puisque:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #include <iostream> // sa c' est du c++
    #include <cstdlib> // sa c' est du c++
     
    using namespace std; // sa c' est du c++
    Si tu peut faire du c++, utilise plutôt la class template basic_string.

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    150
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Novembre 2006
    Messages : 150
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par monwarez Voir le message
    Simple question, tu fait du c ou du c++?
    c'est du C. Certains include doivent servire à rien ^^

  4. #4
    Membre actif Avatar de monwarez
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 144
    Points : 293
    Points
    293
    Par défaut
    tu a des erreur dans ton code à la compilation
    Tu déclare les variables: a,b,c,d,e,f en type char, puis dans le for tu les déclare de type int.
    petite modif pour ton code, mais il plante à cause d' une erreur de segmentation.

    modif
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for ( a='A';a<'z';a++){
            for ( b='A';b<'z';b++){
                for ( c='A';c<'z';c++){
                    for ( d='A';d<'z';d++){
                        for ( e='A';e<'z';e++){
                            for ( f='A';f<'z';f++)
    et il plante sur ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    while(c!=tab[nb]){
    avec la valeur c = 91.
    Program received signal SIGSEGV, Segmentation fault.
    0x004012ab in indexof (c=91 '[')
    at C:/Documents and Settings/shell/Mes documents/exp/best/code-block/aide-te
    st-c/main.c:15
    15 while(c!=tab[nb]){
    il plante quand nb = 24577

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Points : 1 750
    Points
    1 750
    Par défaut
    using namespace std;
    Si avec ça, ça compile, c'est que c'est du C++.
    Il faut utiliser un compilo C pour compiler du C. En C, une telle ligne de code ne peut pas passer.

  6. #6
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    150
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Novembre 2006
    Messages : 150
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par jeroman Voir le message
    Si avec ça, ça compile, c'est que c'est du C++.
    Il faut utiliser un compilo C pour compiler du C. En C, une telle ligne de code ne peut pas passer.
    En effet j'ai regardé, mon fichier source est en .cpp
    Mais bon du code C doit pouvoir être compilé par un compilateur C++
    J'ai modifié mon code (désolé pour le coup des 'int' dans les boucles For, c'était honteux mdr )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    #include <cstdlib>
    #include <iostream>
    #include <stdio.h>
    #include <stdlib.h>
    #include <strings.h>
     
     
     
    using namespace std;
     
     
     
    char tab[] = "                   azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN0123456789_$&#@";
     
     
    int indexof (char c){
    int nb=0;
      while(c!=tab[nb]){
         if(c==tab[nb]){
           break;
           }
           nb++;
      }
     
    return nb;
    }
     
     
    int main()
    {
     
    char a,b,c,d,e,f;
    int i , n0 , tabclength=1 , sum=1, indexof1=0,indexof2=0, n;
    int index1=0, index2=0;
    char login[7]="      ";
    char pwd[7]="souris";
     
    // generation du login pour le test
     
        for (char a='A';a<'z';a++){
            for (char b='A';b<'z';b++){
                for (char c='A';c<'z';c++){
                    for (char d='A';d<'z';d++){
                        for (char e='A';e<'z';e++){
                            for (char f='A';f<'z';f++){
     
          login[0] = a ;
          login[1] = b ;
          login[2] = c ;
          login[3] = d ;
          login[4] = e ;
          login[5] = f ;
     
     
    // Opération sur le login (6 fois)
     
      for(i=0;i<6;i++){   // longueur du login = 6
     
       index1 = login[i];
       index2 = pwd[i];
       indexof1=indexof(index1)+10;  
       indexof2=indexof(index2)+10;  
       index2 = pwd[i]+10;
       sum=sum+(index1*n*(i+1))*(index2*(i+1)*(i+1));
     
     
       if (sum==3696619) printf("%s |",login); // condition pour afficher le login
     
     
     
                     } // boucle for TEST
     
                       }
                         }
                           }
                             } 
                               }
                                 }  // derniere boucle FOR generation du login
     
        printf("FIN");
     
        return 0;
    }
    Vous avez une idée de l'algo à suivre ? je me plante totalement ? est-ce équivalent au code javascript (cf. 1er post) ?

    Merci d'avance

  7. #7
    Membre actif Avatar de monwarez
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 144
    Points : 293
    Points
    293
    Par défaut
    Ton algorithme est bon, mais ton tableau tab[] ne contient pas tous les caractères ascii=>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    char tab[] = "                   azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN0123456789_$&#@";
    /* dans ton tableau, la valeur 91 n' existe pas : 91 = '[' 
     
    */
    Correspondance valeur caractère
    122 z | 121 y | 120 x | 119 w | 118 v | 117 u | 116 t | 115 s | 114 r |113 q | 112 p | 111 o | 110 n | 109 m | 108 l | 107 k | 106 j | 105 i| 104 h | 103 g | 102 f | 101 e | 100 d | 99 c | 98 b | 97 a | 96 ` |95 _| 94 ^ | 93 ] | 92 \ | 91 [ | 90 Z | 89 Y | 88 X | 87 W | 86 V |85 U | 84 T | 83 S | 82 R | 81 Q | 80 P | 79 O | 78 N | 77 M | 76 L |75 K | 74 J | 73 I | 72 H | 71 G | 70 F | 69 E | 68 D | 67 C | 66 B |65 A |

  8. #8
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    150
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Novembre 2006
    Messages : 150
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par monwarez Voir le message
    Ton algorithme est bon, mais ton tableau tab[] ne contient pas tous les caractères ascii=>
    Oui voilà c'était ça mon problème lol
    Bah jvais essayer de trouver le login comme ça (sans tous les caractères ) ... Merci en tout cas pour l'intéret que vous avez porté à mon problème, monwarez et les autres

Discussions similaires

  1. Equivalent de substring en javascript ?
    Par Battosaiii dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 19/06/2009, 19h39
  2. JavaScript<---->ActionScript
    Par crazypiou dans le forum Flash
    Réponses: 21
    Dernier message: 17/04/2009, 17h14
  3. [Smarty] modifier truncate différent d'un substring javascript
    Par speedev dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 22/08/2008, 16h08
  4. méthode substring javascript
    Par babalastar dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 15/02/2008, 11h53
  5. Réponses: 2
    Dernier message: 10/07/2002, 11h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo