Auteur Sujet: Crisis Wordlist Generator  (Lu 39544 fois)

0 Membres et 1 Invité sur ce sujet

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
Crisis Wordlist Generator
« le: 08 août 2015 à 04:37:35 »
Bonjour,

Aujourd'hui je poste pour vous présenter mon petit logiciel Crisis Wordlist Generator.

Présentation du tool.

Crisis Wordlist Generator que j'appelle par son petit nom crisis est un logiciel écrit en C# avec mono pour Linux ( j'ai aussi une version Windows que je publierai).

Crisis fait ce que crunch ne fait pas. Le point fort de ce petit logiciel c'est qu'il génère des charset pour crunch. Crunch fait des listes de mots par incrémentation pour faire tous les possiblement par composition répéter.

L’inconvénient de cette méthode c'est que cela génère beaucoup de combinaison invraisemblable comme :

aaaa
aaab
aaac

Mon logiciel au contraire permet de générer de mot sans répétition comme par exemple

abcd
abce
abcf


A quoi ça sert ?

Avec cette méthode on peut calculer toutes les combinaisons possibles sans répétitions pour faire d'autre combinaison avec crunch. Et pour les répétions pas d'inquiétude crunch sans chargera comme d'habitude.

Téléchargement.

Vous pouvais télécharger le logiciel a cette adresse : https://github.com/teeknofil/Crisis-Wordlist-Generator

C'est une version beta pas encore finie alors soyer pas trop dur avec je travaillerai dessus au prochaine vacances. Il est Open source donc vous pouvais aussi personnalisé le tool.

Installation

Après avoir téléchargé le zip décompressez le.

unzip Crisis.zip
Archive:  Crisis.zip
inflating: Crisis/Crisis.exe       
inflating: Crisis/crisis

Crisis est un autonome en exe mais pas d’inquiétude il a été coder pour Linux. Pour le faire fonctionner il faut installer mono que Linux reconnaisse le C#.
apt-get install mono-runtime
Après pour le démarrer dans la console c'est comme tous les scripts.

cd Crisis
chmod +x Crisis.exe
./Crisis.exe

Démonstration.

Quand le logiciel démarre vous pouvez naviguer à l'aide du pavé numérique en utilisant des chiffres.

./Crisis.exe
 Crisis Wordlist Generator BETA by Teeknofil, ver: 1.0.0
 Trouble: http://www.kali-linux.fr/forum/index.php

 N° DESCRIPTION

 1) HEXA
 2) NUMBER
 3) SPECIAL CHARACTER
 4) LATIN   CHARACTER UPPERCASE
 5) LATIN   CHARACTER LOWERCASE
 6) LATIN   CHARACTER UPPERCASE & LOWERCASE
 7) SWEDISH   CHARACTER UPPERCASE
 8) SWEDISH   CHARACTER LOWERCASE
 9) SWEDISH   CHARACTER UPPERCASE & LOWERCASE


 With what category you want to work : 5

Disons comme exemple que nous voulons générer un charset d'une taille de 21 caractères alphabétiques pour calculer toutes les combinaisons avec crunch. Je choisis donc le 5.


1) abcdefghijklmnopqrstuvwxyz

2) abcdefghijklmnopqrstuvwxyz [space]

3) abcdefghijklmnopqrstuvwxyz0123456789

4) abcdefghijklmnopqrstuvwxyz0123456789
[space]

5) abcdefghijklmnopqrstuvwxyz0123456789
!@#$%^&*()-_+=

6) abcdefghijklmnopqrstuvwxyz0123456789
!@#$%^&*()-_+= [space]

7) abcdefghijklmnopqrstuvwxyz0123456789
!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/

8) abcdefghijklmnopqrstuvwxyz0123456789
!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/ [space]


 Enter the number corresponding to your choice : 1

Maintenant il nous faut juste choisir la suite de caractères dont nous avons besoin, je chois donc le 1 (tous ne fonctionnent pas encore).

1) Charset Generator for Crunch without repetition
2) Combination without repetition
3) Random with repetition

 
 Type the number corresponding to the menu : 1

Ici il faut choisir quels types de génération de mots qu'on veut. Je choisis 1 pour faire une liste de chartes. L'option 2 faits exactement la même chose que l'option 1 à la différence qu'elle met pas en forme le fichier pour crunch.
L'option 3 est l'exacte opposée car elle génère des mots aléatoires. Je vous laisse le soin de la découvrir.

What is the size of your charset : 21
On choisit la taille des mots, par exemple 21.

1) Yes
2) No

 Do you want to save the output to a file : 1

Je répons oui pour sauvegarder un fichier.

Please wait [\]
240 combination will be generated with 240 line in a file

Your file has been saved => /root/Desktop/output-dico/charset/charset_2.lst

Crunch commande example :
crunch 21 21 -f charset_2.lst charset1 -s zabcdefghijklmnopqrst

On attend un peu et c'est fait. Vous peu voir le résultat avec cat.

cat /root/Desktop/output-dico/charset/charset_2.lst
Regardons le résultat  avec crunch.

crunch 21 21 -f /root/Desktop/output-dico/charset/charset_2.lst charset1 -s zabcdefghijklmnopqrst -i
Crunch will now generate the following amount of data: 15982540453002298386 bytes
15242138340952 MB
14884900723 GB
14536035 TB
14195 PB
Crunch will now generate the following number of lines: 13303804616302071483
zabcdefghijklmnopqrst
aabcdefghijklmnopqrst
babcdefghijklmnopqrst
cabcdefghijklmnopqrst
dabcdefghijklmnopqrst
eabcdefghijklmnopqrst
fabcdefghijklmnopqrst
gabcdefghijklmnopqrst
habcdefghijklmnopqrst
iabcdefghijklmnopqrst
jabcdefghijklmnopqrst
kabcdefghijklmnopqrst
labcdefghijklmnopqrst
mabcdefghijklmnopqrst
« Modifié: 09 janvier 2016 à 08:20:12 par Teeknofil »
Crisis Wordlist Generator : http://bit.ly/1RQrV1Y

Formation Apprendre à utiliser Metasploit.
CLIQUEZ pour avoir votre accès : https://urlz.fr/8uIm

Formation Trojan Fud.
CLIQUEZ pour avoir votre accès : https://lc.cx/mJtY

Hors ligne coyotus

  • Contributeur de Kali-linux.fr
  • Membre VIP
  • *****
  • Messages: 3708
  • Notoriété : +249/-30
  • IN GNU WE TRUST
    • Groupe d'Utilisateurs de GNU/Linux...
Re : Crisis Wordlist Generator
« Réponse #1 le: 08 août 2015 à 07:52:10 »
Super, dommage que je n'y connais rien en C# pour regarder le code.

Hors ligne DLX113

  • Membre Junior
  • *
  • Messages: 34
  • Notoriété : +4/-1
Re : Crisis Wordlist Generator
« Réponse #2 le: 08 août 2015 à 11:41:47 »
Salut,

Super, un générateur qui ne sort pas de combinaisons wtf   :D
Pour le feedback je viens de tester vite fait mais il me sort ça et je ne sais pas d'où ça vient (je n'y connais rien en C# non plus)
Mauvaise manip' ? Pb de mémoire ? Autre ?
En espérant que ça sera utile  :)

Pour la postérité les paramètres que j'ai entré sont :
CHARACTER UPPERCASE & LOWERCASE
Lettres et chiffres uniquement
Charset Generator for Crunch without repetition
Size : 5
Do you want to save the output to a file : 1
Knowledge is power

Hors ligne WarLocG

  • Contributeur de Kali-linux.fr
  • Membre sérieux
  • *****
  • Messages: 312
  • Notoriété : +42/-0
  • Spé Code Python Java Bash
Re : Crisis Wordlist Generator
« Réponse #3 le: 08 août 2015 à 13:13:58 »
Ton projet est sympa et pour l'améliorer un peu, tu pourrais, par exemples dans ta classe Charset, avec tous ces charsetSelecting.Add("!"); charsetSelecting.Add("@"); ... sur une ligne sont un peu redondants. En C# ne peut-on pas faire un truc genre ? :
private List<string> alpha_lower = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
private List<string> alpha_upper = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
... etc et de Add(), voir Merge() ces listes a tes listes en fonction.. voir mieux, je me demande si C# n'a pas une lib a importer qui les contient deja sous forme de constantes ou enum..
Après je connais pas trop le C# mais sa synthaxe est fort cousine au java que je pratique.

Et effectivement, dans ta classe Generate, il pourrait y avoir un try catch dans public void Charset() comme garde-fou aussi. C'est toi qui voit mieux où la positionner.

Bien à toi.
« Modifié: 08 août 2015 à 13:34:14 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 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 #4 le: 08 août 2015 à 15:12:36 »
Citer
Ton projet est sympa et pour l'améliorer un peu, tu pourrais, par exemples dans ta classe Charset, avec tous ces charsetSelecting.Add("!"); charsetSelecting.Add("@"); ... sur une ligne sont un peu redondants. En C# ne peut-on pas faire un truc genre ?

Malheureusement c'est pas possible, si je met tous les caractère en une seul fois dans la liste la méthode qui fait le combinaison non répéter voit qu'un élément au lieu de voir 26 lettre par exemple.
( Si List<string> alpha_lower = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"} alors
charsetSelecting.Count == 1 //wtf)

Citer
Super, un générateur qui ne sort pas de combinaisons wtf   :D
Pour le feedback je viens de tester vite fait mais il me sort ça et je ne sais pas d'où ça vient (je n'y connais rien en C# non plus)
Mauvaise manip' ? Pb de mémoire ? Autre ?
En espérant que ça sera utile  :)

C'est à cause de ça que c'est une béta, c'est un bug qui ce produit quand il y a plus de 27 caractère. Dans la méthode CombinationCharset dans la class combination la variable numberCombinationNoRepeat est égal à 0 quand il y a plus de 26 caractère. J'ai passer deux jours à chercher pourquoi sans succès. Si tu prend le code source et que tu met un nombre à la place numberCombinationNoRepeat dans la boucle while cela va fonctionner puisque numberCombinationNoRepeat sera plus grand que i. Tu peux installer monodevellop constaté le bug par toi même.

C'est pour cette raison que je l'ai publiai avec ce bug en espérant que la communauté open source m'aide à résoudre ce problème. Si vous connaissez une personne intéresser par le programme et qui connais le C# (mois ça fait que quelque mois que je code dans ce langage) il peut télécharge le code source sur GitHub.
Crisis Wordlist Generator : http://bit.ly/1RQrV1Y

Formation Apprendre à utiliser Metasploit.
CLIQUEZ pour avoir votre accès : https://urlz.fr/8uIm

Formation Trojan Fud.
CLIQUEZ pour avoir votre accès : https://lc.cx/mJtY

Hors ligne WarLocG

  • Contributeur de Kali-linux.fr
  • Membre sérieux
  • *****
  • Messages: 312
  • Notoriété : +42/-0
  • Spé Code Python Java Bash
Re : Crisis Wordlist Generator
« Réponse #5 le: 08 août 2015 à 17:03:46 »
Regarde ici si ca peut t'aider => http://abundantcode.com/how-to-merge-two-lists-using-linqs-union-in-c/

En utilisant .Union() de System.Linq

En gros, en reprenant mes exemple (et en corrigeant mon "simili-code") ca donnerait un truc genre:
private List<string> alpha_lower = new List<string>(){"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
private List<string> alpha_upper = new List <string>(){"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
...
List<string> alpha_lower_upper = alpha_lower.Union(alpha_upper).toList();
...

J'ai vu d'autres exemples sur stackoverflow avec Concat() aussi => http://stackoverflow.com/questions/4488054/merge-two-or-more-lists-into-one-in-c-sharp-net

ca diminuerait deja de beaucoup le nombre de lignes de code dans ta classe Charset et ca rendrait ton code plus joli a lire aussi :)
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 WarLocG

  • Contributeur de Kali-linux.fr
  • Membre sérieux
  • *****
  • Messages: 312
  • Notoriété : +42/-0
  • Spé Code Python Java Bash
Re : Crisis Wordlist Generator
« Réponse #6 le: 09 août 2015 à 00:37:09 »
J'ai effectué vite fait un petit test sous monodevelop pour vérifier que tu peux effectivement fusionner des listes, voici un bout de code et le résultat:
Code:
using System;
using System.Collections.Generic;
using System.Linq;

namespace Test {

public class Program {

public static string ArrayToString (List<string> _list_){
string _str_ = "";
foreach(var items in _list_){
_str_ += items;
}
return _str_;
}

public static void Main(string[] args){
    List<string> _liste1_ = new List<string>(){"a","b","c","d"};
    List<string> _liste2_ = new List<string>(){"e","f","b","a"};

    Console.WriteLine("liste1 : nombres d'elements: "+ _liste1_.Count());
    Console.WriteLine("liste2 : nombres d'elements: "+ _liste2_.Count());
   
Console.WriteLine("test de Union()");
    List<string> _union_ = _liste1_.Union(_liste2_).ToList();
    Console.WriteLine("fusion par Union : "+ ArrayToString(_union_)+" nombre: "+ _union_.Count());
   
Console.WriteLine("test de Concat()");
    List<string> _concat_ = _liste1_.Concat(_liste2_).ToList();
    Console.WriteLine("fusion par Concat : "+ ArrayToString(_concat_)+" nombre: "+ _concat_.Count());
}

} // end class
} // end namespace

Le résultat donné:
liste1 : nombres d'elements: 4
liste2 : nombres d'elements: 4
test de Union()
fusion par Union : abcdef nombre: 6
test de Concat()
fusion par Concat : abcdefba nombre: 8
Tu remarques que Count donne bien le nombre d'éléments de chacunes des listes.

Bien à toi.
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 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 #7 le: 09 août 2015 à 22:17:27 »
Merci je me pencherai dessus prochainement, le problème comme j'utilise qu'une seul liste je vois pas comment avec ta solution je peux retourner le résultat. A chaque fois j'utilise que la liste charsetSelecting ou j'ajoute les bons caractère en fonction de la réponse de l'utilisateur. A voir, je verrais plupart là mes vacances sont fini.
Crisis Wordlist Generator : http://bit.ly/1RQrV1Y

Formation Apprendre à utiliser Metasploit.
CLIQUEZ pour avoir votre accès : https://urlz.fr/8uIm

Formation Trojan Fud.
CLIQUEZ pour avoir votre accès : https://lc.cx/mJtY

Hors ligne WarLocG

  • Contributeur de Kali-linux.fr
  • Membre sérieux
  • *****
  • Messages: 312
  • Notoriété : +42/-0
  • Spé Code Python Java Bash
Re : Crisis Wordlist Generator
« Réponse #8 le: 09 août 2015 à 22:50:28 »
rien t'empeches de créer une mini classe ou une interface avec juste des définitions des listes les plus ciblées possibles comme:
Liste <string> num = new Liste <string> () { "0", ... "9" };
Liste <string> hexL = new Liste <string> () { "a", ... "f"};
Liste <string> hexU = new Liste <string> () {"A", ... "F"};
Liste <string> alphaL = hexL.Concat( new Liste <string> () {"g", ... "z"}).ToList(); // ou le prendre au complet, Union supprime les doublons
Liste <string> alphaU = new Liste <string> () {"A", ... "Z"};
Liste <string> sym = new Liste <string> () {"!","@","-","_", ... etc};

et dans ta classe Charset juste définir (j'ai pas ton code sous les yeux la)
// alpha L + U
charsetSelecting = alphaL.Concat(alphaU).ToList();
// alpha L + U + num
charsetSelecting = alphaL.Concat(alphaU).Concat(num).ToList();
...
etc

A adapter, si c'est une classe ca sera TaClasse.alphaL par exemple, ou TaClasse.getAlphaL(), par contre pour les interfaces en C# je sais pas, je dois tester.

Mais je pense que les garder sous formes de propriétés privées dans ta classe Charset suffirait amplement.

Edit: je viens de reprendre un morceau de ton code, ca sera mieux pour m'expliquer :)

avant:
        public List <string> Hexa()
        {
            bool b = true;

            Console.Write("\n Enter the number corresponding to your choice : ");
            while (b)
            {
                if (category == '1')
                {
                    //hex_lower
                    charsetSelecting.Add("0"); charsetSelecting.Add("1"); charsetSelecting.Add("2"); charsetSelecting.Add("3"); charsetSelecting.Add("4"); charsetSelecting.Add("5"); charsetSelecting.Add("6"); charsetSelecting.Add("7"); charsetSelecting.Add("8"); charsetSelecting.Add("9"); charsetSelecting.Add("a"); charsetSelecting.Add("b"); charsetSelecting.Add("c"); charsetSelecting.Add("d"); charsetSelecting.Add("e"); charsetSelecting.Add("f");
                    b = false;

                }
                else if (category == '2')
                {
                    //hex_upper
                    charsetSelecting.Add("0"); charsetSelecting.Add("1"); charsetSelecting.Add("2"); charsetSelecting.Add("3"); charsetSelecting.Add("4"); charsetSelecting.Add("5"); charsetSelecting.Add("6"); charsetSelecting.Add("7"); charsetSelecting.Add("8"); charsetSelecting.Add("9"); charsetSelecting.Add("A"); charsetSelecting.Add("B"); charsetSelecting.Add("C"); charsetSelecting.Add("D"); charsetSelecting.Add("E"); charsetSelecting.Add("F");
                    b = false;                   
                }
                else
                {
                    try
                    {
                        category = char.Parse(Console.ReadLine());
                    }
                    catch (FormatException)
                    {
                        Console.Write(" Enter the number corresponding to your choice : ");


                    }
                    finally
                    {
                        if (noLetters.IsMatch(info.ToString()))
                        {
                            Console.Write(" Enter the number corresponding to your choice : ");

                        }

                    }

                } 
            }
           
            return charsetSelecting;           
        }

après
        public List <string> Hexa()
        {
            string message = "  Enter the number corresponding to your choice : ";
            Console.Write("\n"+message);
            var category = char.Parse(Console.ReadLine());
            while ((category != '1') && (category != '2') ) // voir en C# comment l'écrire ici
            {
                    try
                    {
                        category = char.Parse(Console.ReadLine());
                    }
                    catch (FormatException)
                    {
                        Console.Write(message);
                    }
                    finally
                    {
                        if (noLetters.IsMatch(info.ToString()))
                        {
                            Console.Write(message);
                        } // end if
                   } // end try - catch - finally
            }
            if (category == '1')
            {
               //hex_lower
               return num.Concat(hexL).ToList(); //tu peux return directement ici
            }
            else  // ca sera '2'
            {
               //hex_upper
               return num.Concat(hexU).ToList(); //itou         
            }     
        }
! Attention: J'ai juste adapté l'algorithme au visuel, c'est pas encore testé en pratique ! Je ferai ca sous monodevelop pour voir si y a des erreurs (c'est fort probable qu'il y en ait)
« Modifié: 09 août 2015 à 23:51:56 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 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 #9 le: 11 août 2015 à 22:56:30 »
Bonsoir WarLocG;

Juste un petit message pour dire que j'ai Upload les modifications que tu m'as suggéré. Tous est en ligne.
Crisis Wordlist Generator : http://bit.ly/1RQrV1Y

Formation Apprendre à utiliser Metasploit.
CLIQUEZ pour avoir votre accès : https://urlz.fr/8uIm

Formation Trojan Fud.
CLIQUEZ pour avoir votre accès : https://lc.cx/mJtY

Hors ligne WarLocG

  • Contributeur de Kali-linux.fr
  • Membre sérieux
  • *****
  • Messages: 312
  • Notoriété : +42/-0
  • Spé Code Python Java Bash
Re : Crisis Wordlist Generator
« Réponse #10 le: 12 août 2015 à 00:08:45 »
Je viens de voir, ca donne déjà beaucoup mieux  8) Tu as donc testé et ca prend ?

Maintenant, toujours pour améliorer un peu:
 1) j'ai vu que tes catégories sont toujours des nombres allant de 1 à 9 au maximum, est-ce que au lieu d'utiliser des caractères ca ne serait pas plus simple si tu utilisais des entiers à la place (en convertissant le char en integer) (ou un format plus petit comme des short, byte, ... la encore je connais pas encore le langage pour savoir quels types existent) ? Tu pourrais faire un test beaucoup plus simple tel que "si catégorie > 0 et catégorie <= au nombre le plus grand" de cette manière.
 2) tu as du code qui se répète:
try
{
       category = char.Parse(Console.ReadLine());
}
catch (FormatException)
{
       Console.Write(" Enter the number corresponding to your choice : ");
}
finally
{
       if (noLetters.IsMatch(info.ToString()))
       {
              Console.Write(" Enter the number corresponding to your choice : ");
       }
}
Tu pourrais éventuellement mettre toute ta boucle while alors dans une fonction avec un return de la categorie lorsqu'elle est bien rentrée. Voir sortir 0 ou -1 en cas d'échec.
Ce qui donnerait par exemple:
var category = TestFrappe(); // avec public integer TestFrappe() par exemple
et ensuite tu rentre dans tes if, tu ne fera ainsi qu'un seul passage dans tes if
3) Est-ce que les conditions en selon-que (switch...case) existent en C# ? Ca je vais checker de mon coté.

Bien à toi.
« Modifié: 12 août 2015 à 00:20:07 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 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 #11 le: 13 août 2015 à 21:15:07 »
T' es suggestion sont toujours les bienvenues mais je voudrai voir pour implanter des commandes. Avant de faire les modifications que tu suggères je voudrais voir si tu pourrais me souffler des idées pour faire du polymorphisme dans le code. J'ai regardé le java et après en avoir discuté avec mon collègue je peux dire que le java est très proche du c# puisque Cest un fork du java fait par Microsoft surtout au niveau de la syntaxe.
 
J'ai implanté cette librairie dans la version expérimentale du programme :
http://www.codeproject.com/Articles/19869/Powerful-and-simple-command-line-parsing-in-C#

Elle n'est pas encore en ligne puisque Mr Kali 2.0 se fait attendre depuis hier et empêche de démarrer mon ide ou autres programme (je rêve à la version 5 de monodevellop).

crisis -h
Option :

-l : taille de la chaîne de caractère
-w : types de caractère choisis
-r : génère des caractère aléatoire
-e : génère une liste de caractère sans répétition
-f : sauvegarde le fichier


Le principal problème que j'ai c'est l'appellent des charset avec une option -w. Exemple :

crisis -l 21 -w lalpha -r | aircrack-ng -w- out.1.01.cap

De la façon dont j'ai écrit mes méthodes je peux pas appeler la bonne méthode grâce à switch qui choisira la bonne liste avec l'option -w.
Le deuxième problème et le pipe où je me suis cassé les dents. HELP.
L'option -f va me forcer à tous réécrire est la je redoute les fautes frappées de l'utilisateur. Pff
 

 
« Modifié: 13 août 2015 à 21:19:26 par Teeknofil »
Crisis Wordlist Generator : http://bit.ly/1RQrV1Y

Formation Apprendre à utiliser Metasploit.
CLIQUEZ pour avoir votre accès : https://urlz.fr/8uIm

Formation Trojan Fud.
CLIQUEZ pour avoir votre accès : https://lc.cx/mJtY

Hors ligne WarLocG

  • Contributeur de Kali-linux.fr
  • Membre sérieux
  • *****
  • Messages: 312
  • Notoriété : +42/-0
  • Spé Code Python Java Bash
Re : Crisis Wordlist Generator
« Réponse #12 le: 13 août 2015 à 23:59:16 »
Pour récupérer les informations passés en arguments dans une ligne de commande, en java, c'est dans la variable String[] args et de ce que j'ai pu en tirer vite fait en C# ca semble être la même chose.

Pour "crisis -l 21 -w lalpha -r | aircrack-ng -w- out.1.01.cap", la variable args contiendra {"-l", "21", "-w", "lalpha", "-r"} après j'ai un doute avec le pipe si elle se trouvera également dedans ou si le système va automatiquement considérer que c'est une autre commande. A tester vite fait. Mais effectivement il faudra parser les élements de ce tableau et pourquoi pas, après un test, les transférer vers une hashtable/hashmap, enfin, un dictionnaire, avec clé et valeur. Du coup, je pense que le for (int i=0; i < args.length; i++) -- désolé j'écris en java -- est plus indiqué que le (for String i : args) vu qu'on aurait besoin selon les cas de l'élément suivant (pour "-l" par exemple) grace a son index, donc je vois un switch pour tester args\[i\] et au cas par cas aura d'autre conditions dedans.

public static void main(String[] args){
HashMap <String,String> _args = new HashMap<>(); // le dictionnaire clé - valeur pour retrouver rapidement le contenu de chaque option

for (int i = 0; i < args.length; i++){
  switch (args[i]){
    case "--length":
    case "-l":
       if ( i == (args.length -1) ){
          // "-l" est le dernier élément dans args
          break;
       } else { // il y a encore un élément après "-l"
          if ( Pattern.matches("^(\d)+$",args[i+1]) ){// si la string a une forme numerique
             _args.put("ARG_LENGTH",args[i+1]); // on insere un nouvel élément clé="ARG_LENGTH" valeur="21" (dans ton exemple) dans ce "dico"
          }
       }
       break;
    case "--wordlist":
    case "-w":
      if (i == (args.length -1) ){
          // "-w" est le dernier élément dans args
          break;
       } else { // il y a encore un élément après "-w"
          if ( Pattern.matches("^(lalpha|ualpha)+$",args[i+1]) ){// si la string correspond aux mots clé des wordlist (faudrait avoir la liste des mots clés)
             _args.put("ARG_WORDLIST",args[i+1]); // on insere un nouvel élément clé="ARG_WORDLIST" valeur="lalpha" (dans ton exemple) dans ce "dico"
          }
       }
       break;
    case "--random":
    case "-r":
       // TODO liste de caractères random
       break;
    case "--endless":
    case "-e":
       // TODO liste sans repetition
       break;
    case "--file":
    case "-f":
       // TODO sauvegarde vers fichier
       break;
    case "--help":
    case "-h": synthax(); break;
    default: continue;
  }
}
...
// récupération des valeurs
byte length = Byte.parseByte( _args.get("ARG_LENGTH") );
String wordlist = _args.get("ARG_WORDLIST");
...
}

Petit algo que je te sors vite fait, il est pas testé actuellement. Puis il utilise des subtilités du projet Coins comme les String dans un case et l'opérateur diamant ( <> ), c'est pour gagner du temps. C'est pas exhaustif, c'est fait à chaud, j'aurai surement d'autres idées meilleures par la suite.

Pour le polymorphisme, je vais regarder ca à mon aise comment on pourrait procéder dès que j'ai un peu de temps. Mais pour faire court, tu dois avoir une classe mère qui sera abstraite ou pas d'où il y aura des méthodes et des propriétés qui seront importées, donc faudra penser le plan, voir si on va avoir besoin d'un pattern aussi..

Pour l'option -f, tu peux utiliser un regex genre "^[a-zA-Z0-9]+(\.[a-zA-Z0-9]{3})?$"

Edit: Je viens de voir ta library, effectivement ca fera gagner du temps.

Edit2: Afin de comprendre ton code, je me suis renseigné un peu sur le langage. Et y a un truc qui me dérange fortement avec le C# : comment peut-on savoir si on a faire à un héritage ou une interface, les deux s'écrivent pareillement en C# ?

http://www.codeproject.com/Articles/1445/Introduction-to-inheritance-polymorphism-in-C
http://www.codeproject.com/Articles/18743/Interfaces-in-C-For-Beginners

Prenons, la classe enfant, Toto, la classe maman, Tata et l'interface Titi:
En java tu fais:
class Toto extends Tata implements Titi // extends -> héritage ; implements -> interface
En C#:
class Toto : Tata // la c'est un héritage
class Toto : Titi // la c'est une interface
class Toto : Tata, Titi // la t as les deux mais tu vois pas la différence, faut savoir qu'est-ce qui est quoi
Conclusion: En C# t'es paumé  ???

Bon je vais me répondre a moi-même: si il y a les méthodes qui reviennent c'est une interface; si y a un new (à la place de @Overrides) alors on a un héritage (avec une méthode surchargée mais la n'est pas la question)
« Modifié: 14 août 2015 à 23:54:51 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 WarLocG

  • Contributeur de Kali-linux.fr
  • Membre sérieux
  • *****
  • Messages: 312
  • Notoriété : +42/-0
  • Spé Code Python Java Bash
Re : Crisis Wordlist Generator
« Réponse #13 le: 14 août 2015 à 19:42:00 »
Bon j'ai analysé ton code, et schématiquement ca ressemble a peu près a ca:
                      Charset
                        /\
                       /__\
                         |
                    Combination
                        /\
                       /__\
                         |
                      Generate
                        /\
                       /__\
                         |
                    MainConsole
                        /\
                       /__\
                         |
                     Program
avec des declaration de classe ecrite dans le genre:
namespace Crisis_Wordlist_Generator
{
    public class XXX : YYY
    {
    ...
    }
}
Il n'y a pas de méthode qui reviennent donc ce sont des héritages (et de toute facon il n'y a aucune classe contenant des méthodes sans corps), bref, il n'y a aucune interface dans ton code. Et je n'ai pas vu ni Agrégation ni Composition donc ton schéma a rapidement pu être dessiné. Comment trouves-tu ce schéma ? Est-ce qu'il te parais logique ? Bon j'ai pas très envie de démanteler tout ton travail donc on va rester la dessus, je te proposerai un code différent par la suite en fonction de mon temps (C# ou Java, pas encore décidé).
Je vais te montrer un travail que j'ai réalisé puis on va réfléchir à mettre en place la suite de ton projet.
Ici un projet java que j'ai écris pour réaliser des carrés magiques ( je te le montre car j'ai inséré le schéma à même le code) : http://www.coyotus.com/viewtopic.php?id=1061
(Je pense que ce code n'est même par ailleurs plus a jour, le plus récent est sur mon CodeVault, il y avait un mini bug avec la taille de la fenêtre en GUI que j'avais corrigé par la suite)
« Modifié: 14 août 2015 à 19:49:28 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 #14 le: 14 août 2015 à 23:32:02 »
Je n'arrive pas à en piger l'utilité ?

Le point fort de ce petit logiciel c'est qu'il génère des charset pour crunch.

A quoi ça sert ?

Avec cette méthode on peut calculer toutes les combinaisons possibles sans répétitions pour faire d'autre combinaison avec crunch. Et pour les répétions pas d'inquiétude crunch sans chargera comme d'habitude.


Les charsets de bases de crunch n'ont pas de répétitions. Je n'ai pas téléchargé le zip, le C# c'est pas mon truc, mais peux tu me donner en exemple un extrait de ton fichier charset_2.lst ?