Pokaż wyniki 1 do 10 z 29

Temat: [C] generowanie słowników WPA

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1

    Domyślnie [C] generowanie słowników WPA

    Witam. Ostatnio napisałem program do generowania słowników w linuxie. Problem tylko w tym, że już pierwsza część 8-znakowa według obliczeń zajmie około 1500 TB. Czytałem na internecie kiedyś że to powinno ważyć 32 gb. A potem to wszystko posprawdzać.. Jest to możliwe? Jak mogę zmodyfikować ten program? Czy to jest głupie ?

    Kod:
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <stdlib.h>
    #include <pthread.h>
    #include <signal.h>
    
    unsigned long long int sec,w,g;
    void* t(void* u)
    { while (1){
     sleep(1); sec++;
     if ((sec % 10) == 0) printf("%d w/s : ",w);
     w = 0;
    }}
    
    FILE *fp; char nm[21],a[32],k;
    
    char fo(char l)
    {
     sprintf(nm,"wpa-dict-%d-1.lst",l);
     fp = fopen(nm,"w"); k = 1;
     if (fp == 0){ perror("failed to open"); return 1; }
     printf("Generating %d-letter words..\n",l);
     return 0;
    }
    
    char fw(char l)
    {
      if (g >= 1073741824 && g < (1073741825+l)){
       g = 0; fclose(fp); k++; sprintf(nm,"wpa-dict-%d-%d.lst",l,k);
       printf("\n--------------------\n%s\n--------------------\n",nm);
       fp = fopen(nm,"w");
       if (fp == 0){ perror("failed to open"); return 1; }
      }
      fwrite(a,1,strlen(a),fp); fputc(10,fp);
      if (w == 0 && sec != 0 && (sec % 10) == 0) printf("[%s]\n",a);
      w++; g+=l+1;
      return 0;
    }
    
    void cpl(char l,char wh)
    {
     fclose(fp);
     printf("\n\n%d-letter words complete",l);
     if (wh == 0) printf("\n------------------------------------");
    }
    
    void quitproc()
    {
     fclose(fp);
     printf("\nStopped.\n");
     exit(0);
    }
    
    int main(int argc, char *argv[])
    {
     printf("\n Ponulaczek WPA/WPA2 Dict-Gen\n\n");
    
     unsigned char wh = 0;
     if (argc > 1){
      wh = atoi(argv[1]);
      if (!(wh >= 8 && wh <= 32)){
       printf(" %d isn't a 8-32 number.\n",wh);
       printf(" You can write nothing number too, to generate the full dictionary.\n");
       return 0;
      }
     }
     
     pthread_t id1; pthread_create(&id1,0,&t,0);
     memset(a,0,sizeof(a)); signal(SIGINT,quitproc);
     
     if (wh == 0 || wh == 8){
      if (fo(8) == 1) return 1;
      for (a[0] = 32; a[0] <= 126; a[0]++){
      for (a[1] = 32; a[1] <= 126; a[1]++){
      for (a[2] = 32; a[2] <= 126; a[2]++){
      for (a[3] = 32; a[3] <= 126; a[3]++){
      for (a[4] = 32; a[4] <= 126; a[4]++){
      for (a[5] = 32; a[5] <= 126; a[5]++){
      for (a[6] = 32; a[6] <= 126; a[6]++){
      for (a[7] = 32; a[7] <= 126; a[7]++){
       if (fw(8) == 1) return 1;
      }}}}}}}}
      cpl(8,wh);
     }
     
     if (wh == 0 || wh == 9){
      if (fo(9) == 1) return 1;
      for (a[0] = 32; a[0] <= 126; a[0]++){
      for (a[1] = 32; a[1] <= 126; a[1]++){
      for (a[2] = 32; a[2] <= 126; a[2]++){
      for (a[3] = 32; a[3] <= 126; a[3]++){
      for (a[4] = 32; a[4] <= 126; a[4]++){
      for (a[5] = 32; a[5] <= 126; a[5]++){
      for (a[6] = 32; a[6] <= 126; a[6]++){
      for (a[7] = 32; a[7] <= 126; a[7]++){
      for (a[8] = 32; a[8] <= 126; a[8]++){
       if (fw(9) == 1) return 1;
      }}}}}}}}}
      cpl(9,wh);
     }
    i tak dalej..
    Kod:
     if (wh == 0 || wh == 32){
      if (fo(32) == 1) return 1;
      for (a[0] = 32; a[0] <= 126; a[0]++){
      for (a[1] = 32; a[1] <= 126; a[1]++){
      for (a[2] = 32; a[2] <= 126; a[2]++){
      for (a[3] = 32; a[3] <= 126; a[3]++){
      for (a[4] = 32; a[4] <= 126; a[4]++){
      for (a[5] = 32; a[5] <= 126; a[5]++){
      for (a[6] = 32; a[6] <= 126; a[6]++){
      for (a[7] = 32; a[7] <= 126; a[7]++){
      for (a[8] = 32; a[8] <= 126; a[8]++){
      for (a[9] = 32; a[9] <= 126; a[9]++){
      for (a[10] = 32; a[10] <= 126; a[10]++){
      for (a[11] = 32; a[11] <= 126; a[11]++){
      for (a[12] = 32; a[12] <= 126; a[12]++){
      for (a[13] = 32; a[13] <= 126; a[13]++){
      for (a[14] = 32; a[14] <= 126; a[14]++){
      for (a[15] = 32; a[15] <= 126; a[15]++){
      for (a[16] = 32; a[16] <= 126; a[16]++){
      for (a[17] = 32; a[17] <= 126; a[17]++){
      for (a[18] = 32; a[18] <= 126; a[18]++){
      for (a[19] = 32; a[19] <= 126; a[19]++){
      for (a[20] = 32; a[20] <= 126; a[20]++){
      for (a[21] = 32; a[21] <= 126; a[21]++){
      for (a[22] = 32; a[22] <= 126; a[22]++){
      for (a[23] = 32; a[23] <= 126; a[23]++){
      for (a[24] = 32; a[24] <= 126; a[24]++){
      for (a[25] = 32; a[25] <= 126; a[25]++){
      for (a[26] = 32; a[26] <= 126; a[26]++){
      for (a[27] = 32; a[27] <= 126; a[27]++){
      for (a[28] = 32; a[28] <= 126; a[28]++){
      for (a[29] = 32; a[29] <= 126; a[29]++){
      for (a[30] = 32; a[30] <= 126; a[30]++){
      for (a[31] = 32; a[31] <= 126; a[31]++){
       if (fw(32) == 1) return 1;
      }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
      
      fclose(fp);
      printf("\n\n 32-letter words complete!");
      if (wh == 0){
       printf("\n\n DoNE! You have now the complete wpa dictionary!");
       printf("\n Let's cracking xD\n");
      }
     }
     
     return 0;
    }
    ps.
    Kod:
    if (g >= 1073741824 && g < (1073741825+l)){
    Ta linijka sprawdza czy jest już 1gb. Nie dało sie zrobić pliku wiekszego niż 2gb.
    Ostatnio edytowane przez ponulaczek : 05-16-2010 - 12:20

  2. #2
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Slowniki maja ta wade ze sa ogromne... dlatego uzywa sie rainbow tables. Poza tym slownik do WPA nie ma sensu bo wszystko zalezy od ESSID sieci wiec slownik bedzie ok ale dla jednej konkretnej nazwy siec wifi i zadnej innej. Szkoda czasu i dysku niestety :-/
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  3. #3

    Domyślnie

    A skąd można wziąć rainbow tables? Da sie je wygenerować? Jest do tego jakiś program?
    Nie wiedziałem że hasło zależy od ESSID..
    Poza tym slownik do WPA nie ma sensu bo wszystko zalezy od ESSID sieci wiec slownik bedzie ok ale dla jednej konkretnej nazwy siec wifi i zadnej innej.
    Ale jak dam aircrack-ng sprawdzać wszystko to chyba znajdzie..
    Nie wiem nie znam sie ;P Ja czytałem na internecie że tylko słownik trzeba mieć i w nim musi być hasło.

    Nie dało by sie tak że bez zapisywania na dysku karta graficzna z CUDA szybko sprawdzi wszystkie możliwości i napisze hasło? Istnieje taki program?

  4. #4
    Zarejestrowany
    Jul 2007
    Skąd
    UK
    Postów
    360

    Domyślnie

    Cytat Napisał ponulaczek Zobacz post
    Nie wiedziałem że hasło zależy od ESSID
    chodzilo chyba o tablice,ktore sa generowae na podtsawie slownika i ESSID. Mam gdzies na dysku tablice o wadze cos kolo 30gb czy nieco wiecej, sa gdzies na torrentach, tyle ze jest tam tyle bezsensownych ESSID ze nie wiem po co ktos to wogole generowal:/ ESSID-y jak Netgear belkin itp to ruzumie, ale po co cos w stylu SKY09374? A czemu nie SKY09375? To sa unikalne ESSID-y i sznasa na trafienie takigo jest mniejsza niz trafienie 6 w totka a tablice spuchly przez to niemilosiernie


    edit: ciekaw jestem czy da sie wyedytowac takie tablice i wywalic co zbedne, wie ktos cos nt temat?
    Atheros? - nanzwa mhata yangu

  5. #5

    Domyślnie

    chodzilo chyba o tablice,ktore sa generowae na podtsawie slownika i ESSID.
    Cytat Napisał http://www.aircrack-ng.org/doku.php?id=cracking_wpa
    aircrack-ng -w password.lst -b 00:14:6C:7E:40:80 psk*.cap
    nie rozumiem.. ale nie było by chyba problemu gdyby nie te terabajty.

    To sa unikalne ESSID-y i sznasa na trafienie takigo jest mniejsza niz trafienie 6 w totka a tablice spuchly przez to niemilosiernie
    czyli tablic nie ma sensu ściągac.. a program ktoś zna do generowania takich tablic?
    w jaki sposób można potem tego użyć do złamania hasła?
    Ostatnio edytowane przez ponulaczek : 05-16-2010 - 15:20

  6. #6
    Zarejestrowany
    Jul 2007
    Skąd
    UK
    Postów
    360

    Domyślnie

    przy generowaniu tablic zostaly uzyte anglieskie slowniki, wiecw Pl maly z nich bedzie raczej pozytek, do lamania mozesz uzyc slownikow albo tablic, mi aircrack przeszukuje slownik z predkoscia ok 150 hasel na sek, a tablice 1000x szybciej. Wiecej o tablicahc znajdziesz tu airolib database - Google Search, sa video tutki do tego, krok po kroku.Ogolnie uwazam, ze bawienie sie w lamanie wpa to strata czasu, jak kto ma pojecie w tym temacie to bedzie mila dobre haslo,a dla niewiedzacych providerzy sami ustawiaja hasla na ruterkaach, wstarczy 8 znakow generowanych losowo i mozesz sobie lamac do os..ej smiercico sam zauwazyles w 1-szym poscie
    Ostatnio edytowane przez bemyself : 05-16-2010 - 15:29
    Atheros? - nanzwa mhata yangu

  7. #7
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Jesli uzywasz aircrack'a i slownika to on robi atak slownikowy czyli to zajmie mase czasu... CUDA to jest rozwiazanie ale trzeba zainwestowac nieco w sprzet. Ja wlasnie kupilem sobie mala karte z CUDA i zobaczymy co bedzie.

    Tak czy inaczej generowanie slownika tak jak sugerujesz (wszystkie mozliwe hasla) nie ma sensu bo i tak samo sprawdzenie potrwa w cholere (ESSID+pass jest mielone 8192 razy - cos jak hashowanie) i to zajmuje tyle najwiecej czasu, wiec samo generowanie 1.5TB slownika mija sie z celem doszczetnie. Owszem - uzyc CPU do generowania permutacj i GPU (CUDA) do sprawdzania reszty bo GPU policzy te 8192 operacje znacznie szybciej.

    Tak czy inaczej samo generowanie slownika aby pozniej go uzyc to mija sie moim zdaniem z celem skoro slownik to mowiac krotko brute-force... Chcesz zlamac haslo do konkretnej sieci to mozesz zaplacic za usluge lamania hasla... Srednio wychodzilo kilkanascie do kilkudziesiecu dolcow za sztuke :P
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj