confusion und ich habe ein Programm Namens dict_gen geschrieben.
Es erstellt "on the fly" Wortlisten die aircrack verwenden kann
um WPA Handshakes zu cracken.
Bei 2x3,1Ghz rund 500 Keys/Sekunde
WIR SUCHEN DICH!
Du kannst C oder C++ und hast Lust uns bei dict_gen zu unterstützen?
Wir möchten folgendes einbauen.
-Startstring (Um nicht bei jedem Vorgang von vorne anfangen zu müssen)
-Konstanten im String (Zum Bsp. Stelle 3 ist immer eine "F")
-Bereiche im String (Zum Bsp. Stelle 3 ist nur von "5" bis "7")
Weitere Ideen sind erwünscht!
Hier der Code, das Programm hat die GNU General Public License:
C-Quellcode
- #include <stdio.h>
- #include <string.h>
- /*
- dict_gen ist ein Programm, welches eine Wortliste erstellt, die alle moeglichen Kombinationen mit den gewaehlten
- Zeichen in einer bestimmten Laenge generiert.
- Es arbeitet gut zusammen mit Aircrack-NG um WPA/WPA2 Handshakes zu cracken.
- Copyright (C) 2008 confusion & horiz0n
- This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public
- License as published by the Free Software Foundation; either version 3 of the License, or (at your opinion) any
- later version.
- This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY, without even the implied
- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- You should have received a copy of the GNU General Public License along with this program; if not, see
- http://www.gnu.org/licenses/
- Parameter:
- -i interaktiv benutzen zum Testen und um die richtigen Einstellungen zu finden mit -l und -t
- ---------------------------
- -l Laenge Laenge der zu testenden Passwoertes
- -t Worttyp zu verwendende Zeichen sind Klein- und Großbuchstaben, Zahlen und Sonderzeichen
- -f Datei bisher noch nicht integriert
- Benutzung mit Aricrack-NG:
- dict_gen -l <Laenge> -t <Worttyp> | aircrack-ng <CAP Datei> -w "-" -b <BSSID des AP>
- Beispiel: dict_gen -l 8 -t 1234 | aircrack-ng meinwpa-01.cap -w "-" -b 00:11:22:33:44:55
- */
- int pwlaenge, type, charslaenge = 92, c = 0, i = 1, j, k;
- int finished = 1; //used to determine if all combinations are gone through
- char chars[92]; //contains the allowed characters, the length is the highest amount of chars + \0
- char pw[2][65]; //contains the actual string (index 0 or c) and the coresponding index in chars (index 0 or i)
- void generate(); // controlling the rec_gen()
- void typetochars(); // used to create the characterlist by a given mode
- void rec_gen(int); // a recursive function to create the strings
- int main(int argc, char *argv[]){
- if(argc == 2 && strcmp(argv[1], "-i") == 0){
- printf("\nDictionary-Generator 0.1beta\n\n");
- printf("Benutzen sie dict_gen NICHT um Handshakes fremder Netzwerke zu cracken!\n\nBitte geben sie die Laenge des zu erzeugenden Passwortes ein:");
- scanf("%i", &pwlaenge);
- printf("\nWas soll alles versucht werden?\n\n");
- printf("\t[1]\tZahlen 0-9\n\t[2]\tKleinbuchstaben a-z\n\t[3]\tGrossbuchstaben A-Z\n\t[4]\tSonderzeichen 30 Stueck \n\n");
- printf("\tMoegliche Eingaben sind: [ 1, 2, 3, 4 | 12, 13, 14, 23, 24, 34 | 123, 234, 134, 1234 ]\n\t");
- scanf("%i", &type);
- typetochars(type);
- printf("Beginne Erstellung...\nJe nach Auswahl kann es einige Zeit dauern...\n");
- }else if(argc == 5){
- if((strcmp(argv[1], "-t") == 0 && strcmp(argv[3], "-l") == 0) || (strcmp(argv[1], "-l") == 0 && strcmp(argv[3], "-t") == 0)){
- if(strcmp(argv[1], "-t") == 0){
- type = atoi(argv[2]);
- pwlaenge = atoi(argv[4]);
- }else{
- type = atoi(argv[4]);
- pwlaenge = atoi(argv[2]);
- }
- typetochars(type);
- }else{
- printf("\nDictionary-Generator 0.1beta\n\n");
- printf("Falsche Parameter!\n");
- printf("Benutzung:\n\t-i\tInteraktiv\n\t-t\tWorttyp\n\t-l\tWortlaenge\n\n");
- return 1;
- }
- }else{
- printf("\nDictionary-Generator 0.1beta\n\n");
- printf("Falsche Parameter!\n");
- printf("Benutzung:\n\t-i\tInteraktiv\n\t-t\tWorttyp\n\t-l\tWortlaenge\n\n");
- return 1;
- }
- // initialize array
- for(j = 0; j < pwlaenge; j++){
- pw[c][j] = chars[0];
- pw[i][j] = 0;
- }
- pw[0][pwlaenge] = '\0';
- pw[1][pwlaenge] = 0;
- // start to generate strings
- generate();
- return 0;
- }
- void typetochars(){
- if(type == 1){
- strcpy(chars, "0123456789");
- charslaenge = 10;
- }else if(type == 12){
- strcpy(chars, "0123456789abcdefghijklmnopqrstuvxxyz");
- charslaenge = 36;
- }else if(type == 123){
- strcpy(chars, "0123456789abcdefghijklmnopqrstuvxxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");
- charslaenge = 62;
- }else if(type == 2){
- strcpy(chars, "abcdefghijklmnopqrstuvxxyz");
- charslaenge = 26;
- }else if(type == 3){
- strcpy(chars, "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
- charslaenge = 26;
- }else if(type == 1234){
- strcpy(chars, "0123456789abcdefghijklmnopqrstuvxxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!§$%&/()=?+#-.,²³{~[]}@€^°:;'*");
- charslaenge = 92;
- }else if(type == 23){
- strcpy(chars, "abcdefghijklmnopqrstuvxxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");
- charslaenge = 52;
- }else if(type == 234){
- strcpy(chars, "abcdefghijklmnopqrstuvxxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!§$%&/()=?+#-.,²³{~[]}@€^°:;'*");
- charslaenge = 82;
- }else if(type == 34){
- strcpy(chars, "ABCDEFGHIJKLMNOPQRSTUVWXYZ!§$%&/()=?+#-.,²³{~[]}@€^°:;'*");
- charslaenge = 34;
- }else if(type == 134){
- strcpy(chars, "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ!§$%&/()=?+#-.,²³{~[]}@€^°:;'*");
- charslaenge = 56;
- }else if(type == 14){
- strcpy(chars, "0123456789!§$%&/()=?+#-.,²³{~[]}@€^°:;'*");
- charslaenge = 40;
- }else if(type == 24){
- strcpy(chars, "abcdefghijklmnopqrstuvxxyz!§$%&/()=?+#-.,²³{~[]}@€^°:;'*");
- charslaenge = 56;
- }else if(type == 4){
- strcpy(chars, "!§$%&/()=?+#-.,²³{~[]}@€^°:;'*");
- charslaenge = 30;
- }else if(type == 13){
- strcpy(chars, "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ");
- charslaenge = 36;
- }
- }
- void generate(){
- printf("%s\n", pw[c]);
- while(finished == 1){
- rec_gen(0);
- }
- }
- void rec_gen(int ws){
- if(finished == 1){
- // if the last character in the char-array is not yet reached...
- if(pw[i][ws] < charslaenge-1){
- pw[i][ws] = pw[i][ws] + 1;
- pw[c][ws] = chars[pw[i][ws]];
- // print the string on screen
- printf("%s\n", pw[c]);
- }else{
- // if we finished the last position in the string and are finished
- if(ws == pwlaenge-1){
- finished = 0;
- // otherwise continue in the next position
- }else{
- pw[i][ws] = 0;
- pw[c][ws] = chars[pw[i][ws]];
- rec_gen(ws+1);
- }
- }
- }
- }
mfg
horiz0n