Auteur Sujet: Crisis Wordlist Generator  (Lu 44388 fois)

0 Membres et 2 Invités sur ce sujet

Hors ligne trude

  • Contributeur de Kali-linux.fr
  • Membre régulier
  • *****
  • Messages: 148
  • Notoriété : +13/-11
Re : Re : Crisis Wordlist Generator
« Réponse #30 le: 17 août 2015 à 15:52:39 »
Bha on est sur un forum qui est dédié à kali pas a la programmation, bien qu'il y'ait 2-3 sections pour parler projets et dev :)
Distribution Linux orientée test de sécurité, pour moi cela implique de maitriser le développement.
Je ne connaissait que de nom metasploit, de voir que Armitage est écrit en Java ça m'incite à aller voir !

Et puis généralement, les membres préfèrent le python, qui est plus rapide et facile a apprendre.
Ah, le critère de la facilité !
Les langages sans typage statique, j'ai du mal, formé au langage C depuis trop longtemps  ;)

Hors ligne WarLocG

  • Contributeur de Kali-linux.fr
  • Membre sérieux
  • *****
  • Messages: 425
  • Notoriété : +53/-0
  • Spé Code Python Java Bash
Re : Crisis Wordlist Generator
« Réponse #31 le: 18 août 2015 à 09:19:19 »
Salut Teeknofil,

Juste pour être sur de prendre le bon algorithme, c'est bien les combinaison (Cpn) que tu utilises et pas l'arrangement (Apn)?
double numberCombinationNoRepeat = factorial(charset.Count - 1) / factorial(NumberOfChar - 1) * factorial((charset.Count - 1) - (NumberOfChar - 1));Oui c'est bien ca.

Dans l'algo, je retrouve donc: p étant le nombre de caractères dans le charset (ex: alphal = 26) et n c'est la taille passée par le paramètre -l (longueur de la chaine) ?

http://www.probas.fr/Combinatoire.html
Je vais toujours mettre les trois fonctions factoriel, combinaison et arragement dans une classe MathProba car ca peut servir autre part.

Ah oui, tu peux m'expliquer ce morceau ?
    if (resultCombinationNoRepeats.Count == 25100000)
                    {
                        return resultCombinationNoRepeats;                         
                    }
Il sort de où ce 25 100 000 ?
Sinon pour moi, tu aurais pu le mettre directement la dedans:
while (i < numberCombinationNoRepeat)pourrait devenir
for (i=0; (i < numberCombinationNoRepeat) && (i < 25100000); i++)et hop, tu te débarasses de ton if comme ca (ainsi que le i++ en fin du while). Puis tape ca dans une constante si c'est pas un nombre calculé, c'est plus clair à la lecture.
const int LIMIT = 25100000;
...
for (i=0; (i < numberCombinationNoRepeat) && (i < LIMIT); i++)

Tant qu'on est dans les optimisations:

                    while (h < array.Length)
                    {
                        if (j > 0 && j < array.Length)
                        {
                            array[j] = array[j - 1] + 1;
                        }

                        s = s + charset[array[h]];
                        h++;
                        j++;                       

                    }
devient
                   for(h=0; h < array.Length;h++)
                    { // j modifié au prochain passage dans le while
                        if (j > 0 && j < array.Length)
                        {
                            array[j] = array[j - 1] + 1;
                        }

                        s += charset[array[h]];
                        j++;
                    }

                    resultCombinationNoRepeats.Add(s);
                    h = 0;
                    j = 0;


                    while (j < array.Length && array[j] != j + k)
                    {
                        j++;
                    }
pourrait se changer en
                    resultCombinationNoRepeats.Add(s);

                    for (h=0, j=0;(j < array.Length) && (array[j] != (j + k)); j++){}

            if (charset.Count < NumberOfChar)
            {
                return charset;
            }
            else if (NumberOfChar == 1)
            {
                return charset;
            }
Le meme return, fusionne les :)
            if ((charset.Count < NumberOfChar) || (NumberOfChar == 1))
            {
                return charset;
            }

Finalement, j'ai du mal a comprendre ta variable array et son utilité
int[] array = new int[NumberOfChar - 1];de plus les array.Length peuvent a première vue être remplacé par NumberOfChar -1. Des commentaires dans le code aiderait à comprendre ce que tu veux faire.

Edit: ah oui, c'est quoi k ?
public List<String> CombinationCharset(List<String> charset, int NumberOfChar, int k)while (j < array.Length && array[j] != j + k)J'ai compris d'ou vient ce k => dans Generate :
var generate = CombinationCharset(CharsetSelecting, NumberOfChar, CharsetSelecting.Count - NumberOfChar);Ok mais ca sert un peu a rien de faire ca comme ca, tu as déjà passé CharsetSelecting et NumberOfChar, du coup k aurait pu se calculer de l'autre coté, directement dans Combination

Pendant que je passe par la classe Generate, regarde:
...
            if (SaveFile == '1')
            {
                var generate = CombinationCharset(CharsetSelecting, NumberOfChar, CharsetSelecting.Count - NumberOfChar);
                setting_UpFile();
...
et
...
            else
            {
                var generate = CombinationCharset(CharsetSelecting, NumberOfChar, CharsetSelecting.Count - NumberOfChar);

                if (TypesOfGeneration == '1')
...
dans les deux cas, tu passe a generate CombinationCharset(CharsetSelecting, NumberOfChar, CharsetSelecting.Count - NumberOfChar);
tu pouvais le faire une seule fois juste avant
           if (SaveFile == '1')

Bien à toi.
« Modifié: 18 août 2015 à 12:10:01 par WarLocG »
A lire avant de poser vos questions : http://www.linux-france.org/article/these/smart-questions/smart-questions-fr.html
Pour les questions de base sous debian : https://debian-facile.org/index-df.php
Veuillez utiliser la fonction Rechercher avant de poster.

Hors ligne trude

  • Contributeur de Kali-linux.fr
  • Membre régulier
  • *****
  • Messages: 148
  • Notoriété : +13/-11
Re : Crisis Wordlist Generator
« Réponse #32 le: 18 août 2015 à 09:47:48 »
Dans son fichier Combanation.cs c'est des combinaisons sans ordre et sans répétitions : n! / p!(n-p)!

Mais son expression est mal parenthésée, il calcule (n!/p!)(n-p)!
Et il prend n-1 et p-1

En prenant l'alphabet minuscule (choix 5) et un charset de 5 cela donne

Pour n=25 et p=4 il lance une boucle (while i < 3.3E+43) au lieu de 12650 (avec un return codé plus bas en dur au bout de 25100000 itérations)

PS: je te rappelle encore que générer des millions de charsets pour crunch n'a aucun sens
« Modifié: 18 août 2015 à 11:48:23 par trude »

Hors ligne WarLocG

  • Contributeur de Kali-linux.fr
  • Membre sérieux
  • *****
  • Messages: 425
  • Notoriété : +53/-0
  • Spé Code Python Java Bash
Re : Crisis Wordlist Generator
« Réponse #33 le: 18 août 2015 à 09:58:34 »
Mais son expression est mal parenthésée, il calcule (n!/p!)(n-p)! oui manque des parenthèses en effet:
double numberCombinationNoRepeat = factorial(charset.Count - 1) /  ( factorial(NumberOfChar - 1) * factorial((charset.Count - 1) - (NumberOfChar - 1)) ) ;
« Modifié: 18 août 2015 à 14:10:01 par WarLocG »
A lire avant de poser vos questions : http://www.linux-france.org/article/these/smart-questions/smart-questions-fr.html
Pour les questions de base sous debian : https://debian-facile.org/index-df.php
Veuillez utiliser la fonction Rechercher avant de poster.

Hors ligne trude

  • Contributeur de Kali-linux.fr
  • Membre régulier
  • *****
  • Messages: 148
  • Notoriété : +13/-11
Re : Crisis Wordlist Generator
« Réponse #34 le: 18 août 2015 à 10:15:57 »
On se croise en modifiant/complétant en même temps nos posts sur les mêmes points.

Je pense que le problème de parenthèses est à l'origine du hack de return codé en dur dans la boucle, c'est long une boucle de 3E+43  ;)

@admin
je pense que mettre un article sur la page d'accueil de www.kali-linux.fr dont le texte est

"Crisis Wordlist Generator est un nouveau générateur de dictionnaire, développé par un membre de la communauté kali-linux.fr, permettant de palier aux manquements de l’outil Crunch, en effet, ce dernier à la fâcheuse tendance de générer de nombreux mots ayant fort peu de chance d’être utilisés."

sans vérification c'est pas génial !
« Modifié: 18 août 2015 à 10:19:38 par trude »

Hors ligne Teeknofil

  • Contributeur de Kali-linux.fr
  • Membre sérieux
  • *****
  • Messages: 368
  • Notoriété : +28/-6
    • https://www.youtube.com/watch?v=R-zrnglcNuA&list=PLeu60bO1b61HE25L8Sz-cC7xjFupaSuWc
Re : Crisis Wordlist Generator
« Réponse #35 le: 20 août 2015 à 10:22:14 »
Juste un peitit message pour dire que j'ai mis à jour le code source.
Je vous renvoie au commit => https://github.com/teeknofil/Crisis-Wordlist-Generator/commit/af0a7a13d511ee4617a0ab27ec21115c3766f17a

J'ai pas le temps de réponde au précédant message et je repasserai plus tard.
Hacking Debutant - Black Hat Ackademy : https://www.udemy.com/draft/2365526/?couponCode=PROMOTION

Hors ligne Teeknofil

  • Contributeur de Kali-linux.fr
  • Membre sérieux
  • *****
  • Messages: 368
  • Notoriété : +28/-6
    • https://www.youtube.com/watch?v=R-zrnglcNuA&list=PLeu60bO1b61HE25L8Sz-cC7xjFupaSuWc
Re : Crisis Wordlist Generator
« Réponse #36 le: 29 août 2015 à 21:23:40 »
Bonjour,
C'est bon après des galère avec kali plusieur semaine de fou je prend le temps de répondre, dsl pour le retard.

Citer
Mon code vient pour t aider en cherchant une approche différente au niveau de la conception, je jeterai encore un oeil a ton code pour voir si certaines parties peuvent être optimisées davantage

Je obtimiser le code en tranformant la classe charset.cs en class static comme charset.cs contient maintenant que des information qui doive être unique inutile de devoir l'instancier avec un nouvelle objet. Ton shéma ulm est bien mais un peu rude a mettre en place.

TRUDE

Citer
On se calme, j'ai peut être été un peu "force brute" dans ma façon de juger tes explications de présentation de Crisis, mais je suis sincère lorsque je te dis ne pas te comprendre.

Je vais t'expliqué l'utilité des charset avec un exemple simple.
Tape la commande
 crunch 3 3 0123456789 -d 1%Cela va te générer mille ligne avec dix caractère.

Maintenant tape la commande ci-dessous et imagine que la suite de caractère 012 soit générer par crisis
crunch 3 3 012 -d 1%Cela va te générer que 27 lignes. Comme tu peu le voir cela générer des répétition mais tu as qu'un fichier de seulement de 27 lignes, donc moins gros que si tu utiliser les dix caractère. Le problème c'est que comme tu utilise  pas tous les caractère et il te manque des combinaison possible pour crunch. Mais grâce à crisis tu peux tous les calculés.

Si tu génère un charset avec crisis avec 3 chiffre tu aura 36 lignes. 27 lignes unique générer par crunch multiplier par 36 charset de crisis cela fait 972 combinaison possible (37*27 = 972).  Donc finalement tu à générer moins de combinaison inutile. Imaginer maintenant que les chiffre soit une suite de 20 lettre, c'est plutot cool de supprimer les combinaison à la con.

 
Citer
Ah oui, tu peux m'expliquer ce morceau ?
Code: [Sélectionner]
    if (resultCombinationNoRepeats.Count == 25100000)
                    {
                        return resultCombinationNoRepeats;                         
                    }
C'était pour fixé le bug de la factoriel, dans l'urgence j'ai trouver que ça pour pas exploser la mémoire.

Citer
Tant qu'on est dans les optimisations:

Code: [Sélectionner]
                    while (h < array.Length)
                    {
                        if (j > 0 && j < array.Length)
                        {
                            array[j] = array[j - 1] + 1;
                        }

                        s = s + charset[array[h]];
                        h++;
                        j++;                       

                    }
devient
Tant qu'on est dans les optimisations:

Code: [Sélectionner]
                    while (h < array.Length)
                    {
                        if (j > 0 && j < array.Length)
                        {
                            array[j] = array[j - 1] + 1;
                        }

                        s = s + charset[array[h]];
                        h++;
                        j++;                       

                    }
devient
Code: [Sélectionner]
                   for(h=0; h < array.Length;h++)
                    { // j modifié au prochain passage dans le while
                        if (j > 0 && j < array.Length)
                        {
                            array[j] = array[j - 1] + 1;
                        }

                        s += charset[array[h]];
                        j++;
                    }


Je l'ai modifié, ça fais que j'y penser mais a chaque fois j'oublier, en réalité cette algorithme est pas de moi, je l'ai trouver sur un forum par hasard et ce qui ma donner l'idée du logiciel. Le truc pourrie avec l’algorithme que j'ai trouver c'est qu'il était coder qu'avec des lettre donc difficilement compréhensible.

       
Citer
   if (charset.Count < NumberOfChar)
            {
                return charset;
            }
            else if (NumberOfChar == 1)
            {
                return charset;
            }
ça aussi c'est fait et ect.

Citer
J'ai compris d'ou vient ce k => dans Generate :
Code: [Sélectionner]
var generate = CombinationCharset(CharsetSelecting, NumberOfChar, CharsetSelecting.Count - NumberOfChar);
Ok mais ca sert un peu a rien de faire ca comme ca, tu as déjà passé CharsetSelecting et NumberOfChar, du coup k aurait pu se calculer de l'autre coté, directement dans Combination

C'est le gros point faible de l'algorithme, il calcul toute les combinaison avant de les imprimer ce qui est plus lent. J'aimerai les imprimer au fur et à mesure pour vidé la mémoire et aller plus vite mais j'ai pas trouver comment faire. Peut t'être une méthode void.


Citer
Pendant que je passe par la classe Generate, regarde:
Code: [Sélectionner]
...
            if (SaveFile == '1')
            {
                var generate = CombinationCharset(CharsetSelecting, NumberOfChar, CharsetSelecting.Count - NumberOfChar);
                setting_UpFile();
...
et
Code: [Sélectionner]
...
            else
            {
                var generate = CombinationCharset(CharsetSelecting, NumberOfChar, CharsetSelecting.Count - NumberOfChar);

                if (TypesOfGeneration == '1')
...
dans les deux cas, tu passe a generate CombinationCharset(CharsetSelecting, NumberOfChar, CharsetSelecting.Count - NumberOfChar);
tu pouvais le faire une seule fois juste avant
Code: [Sélectionner]
           if (SaveFile == '1')

Je pense que j'e l'ai fixé mais j'ai fais ça car rien s'afficher à l'écran à cause de l'algorithme qui mettait trop de temps à faire le calcul.

Citer
Mais son expression est mal parenthésée, il calcule (n!/p!)(n-p)!
Et il prend n-1 et p-1

Merci je cherchais ce bug comme un fous :'( :D
Hacking Debutant - Black Hat Ackademy : https://www.udemy.com/draft/2365526/?couponCode=PROMOTION

Hors ligne trude

  • Contributeur de Kali-linux.fr
  • Membre régulier
  • *****
  • Messages: 148
  • Notoriété : +13/-11
Re : Crisis Wordlist Generator
« Réponse #37 le: 29 août 2015 à 22:15:55 »
Crunch va te générer mille lignes
Si tu génère un charset avec crisis avec 3 chiffre tu aura 36 lignes. 27 lignes unique générer par crunch multiplier par 36 charset de crisis cela fait 972 combinaison possible (36*27 = 972).  Donc finalement tu à générer moins de combinaison inutile. Imaginer maintenant que les chiffre soit une suite de 20 lettre, c'est plutot cool de supprimer les combinaison à la con.


crunch 3 3 0123456789 -d 1% ne va générer que 810 lignes

Et le -d 1 supprime les répétitions de caractères qui se suivent mais laisse des combinaisons genre 010.

Le nombre d'arrangements de 3 sur 10 (sans aucunes répétitions) est de 720 lignes
« Modifié: 29 août 2015 à 22:36:12 par trude »

Hors ligne Teeknofil

  • Contributeur de Kali-linux.fr
  • Membre sérieux
  • *****
  • Messages: 368
  • Notoriété : +28/-6
    • https://www.youtube.com/watch?v=R-zrnglcNuA&list=PLeu60bO1b61HE25L8Sz-cC7xjFupaSuWc
Re : Crisis Wordlist Generator
« Réponse #38 le: 29 août 2015 à 22:41:47 »
Bas écoute j'ai fait le calcul avec mon terminal donc moi maintenant je suis chanbouller, ta compris mon idée ?
crunch 3 3 0123456789 -d 1%
Crunch will now generate the following amount of data: 4000 bytes
0 MB
0 GB
0 TB
0 PB
Crunch will now generate the following [b]number of lines: 1000 [/b]
^CCrunch ending at
Hacking Debutant - Black Hat Ackademy : https://www.udemy.com/draft/2365526/?couponCode=PROMOTION

Hors ligne Teeknofil

  • Contributeur de Kali-linux.fr
  • Membre sérieux
  • *****
  • Messages: 368
  • Notoriété : +28/-6
    • https://www.youtube.com/watch?v=R-zrnglcNuA&list=PLeu60bO1b61HE25L8Sz-cC7xjFupaSuWc
Re : Crisis Wordlist Generator
« Réponse #39 le: 29 août 2015 à 22:49:16 »
crunch 3 3 012 -d 1%
Crunch will now generate the following amount of data: 108 bytes
0 MB
0 GB
0 TB
0 PB
Crunch will now generate the following number of lines: 27
010
012
020
021
101
102
120
121
201
202
210
212
Hacking Debutant - Black Hat Ackademy : https://www.udemy.com/draft/2365526/?couponCode=PROMOTION

Hors ligne trude

  • Contributeur de Kali-linux.fr
  • Membre régulier
  • *****
  • Messages: 148
  • Notoriété : +13/-11
Re : Crisis Wordlist Generator
« Réponse #40 le: 29 août 2015 à 22:51:03 »
crunch 3 3 0123456789 -d 1% | wc -l
810

PS EDIT
crunch 3 3 012 -d 1% | wc -l
12

En fait si tu mets l'option -d 1 (sans le %) il calcul bien son estimation de 810 ou 12, si tu mets -d 1% il n'en tient pas compte dans son estimation.

De toute facon les arrangements sans répétitions :
de 3 sur 10 = 720
de 3 sur 3 = 6
« Modifié: 29 août 2015 à 22:53:44 par trude »

Hors ligne Teeknofil

  • Contributeur de Kali-linux.fr
  • Membre sérieux
  • *****
  • Messages: 368
  • Notoriété : +28/-6
    • https://www.youtube.com/watch?v=R-zrnglcNuA&list=PLeu60bO1b61HE25L8Sz-cC7xjFupaSuWc
Re : Crisis Wordlist Generator
« Réponse #41 le: 29 août 2015 à 22:54:49 »
Cette commande génére que 12 ligne en effet.

crunch 3 3 012 -d 1%
Crunch will now generate the following amount of data: 108 bytes
0 MB
0 GB
0 TB
0 PB
Crunch will now generate the following number of lines: 27
010
012
020
021
101
102
120
121
201
202
210
212

12 * 36 = 432

Quand je te disais que les chiffre dans crunch était buguer, tu vois bien que j'invente rien
Hacking Debutant - Black Hat Ackademy : https://www.udemy.com/draft/2365526/?couponCode=PROMOTION

Hors ligne trude

  • Contributeur de Kali-linux.fr
  • Membre régulier
  • *****
  • Messages: 148
  • Notoriété : +13/-11
Re : Crisis Wordlist Generator
« Réponse #42 le: 29 août 2015 à 23:01:38 »
crunch 3 3 0123456789 -d 1
Crunch will now generate the following amount of data: 3240 bytes
Crunch will now generate the following number of lines: 810

crunch 3 3 012 -d 1
Crunch will now generate the following amount of data: 48 bytes
Crunch will now generate the following number of lines: 12


Si tu mets un filtre de type de caractères (%) sur le critère de répétition il n'en tient pas compte dans son estimation

12 * 36 = 432
Pour moi ce 432 n'a aucune signification ! Donne nous la liste de ces 432 lignes, il en manque par rapport aux 720 arrangements possibles !
« Modifié: 29 août 2015 à 23:07:35 par trude »

Hors ligne cedrique30

  • Nouvel inscrit
  • Messages: 1
  • Notoriété : +0/-0
Re : Crisis Wordlist Generator
« Réponse #43 le: 06 mai 2018 à 16:32:23 »
Bonjour.
Comment faire pour que la liste générée ne comprenne que les codes sans être précédés des numéros de chaque lignes?
Car je ne sais pas comment faire pour supprimer ces numéros sur des milliers de lignes :-/
Merci.