Generování hesel

C++ Základní konstrukce C Zdrojákoviště Generování hesel

Zdravím. Dnes si ukážeme, jak si vygenerovat wordlist s heslama v jazyce C.

Co je to wordlist?

Wordlist je nějaký soubor, plný třeba hesel, který se používá pomocí nějakého software k prolomení hesla. Možná už jste viděli nějaký wordlist, v kterém jsou všemožné kombinace hesel pod sebou, aby je mohl nějaký ten software načíst a zkoušet je. Teď si ukážeme, jak jednoduše si takový wordlist můžeme udělat sami v jazyce C.

Co k tomu budeme potřebovat?

Bude nám bohatě stačit knihovna stdio, stdlib pro vstup/výstup a ukládání do souboru + jedna proměnná! :)

Jak jistě víte, mnoho lidí používá čtyřmístná hesla, nehledě na to, že třeba i na platební kartu máte čtyřmístný PIN kód. Takovýto wordlist se v jazyce C dá napsat na pár řádků.

#include <stdio.h>
#include <stdlib.h>

int main(int i)
{
    FILE *soubor;
    soubor = fopen("Hesla.txt","a+");
    for(i = 0; i < 10000; i++)
    {
        fprintf(soubor,"%04d\n",i);
    }
    return 0;
}

Vytvoříme si nějaký soubor, v našem případě je to soubor Hesla.txt. A poté pomocí cyklu zapisujeme čísla do souboru. "%04d%\n" znamená, že to bude psát čísla ve formátu čtyř míst, například : 0001,9951 a odřádkuje. V souboru poté vidíme opravdu všechny možné kombinace čísel 0 až 9999. Vualá a máme všechna čtyřmístná hesla na světě. Asi si říkáte, "ale co když chci osmimístná hesla?" Odpověď je jednoduchá, místo "%04d\n" napíšeme "%08d\n" a místo 10000 v našem cyklu dáme největší možné osmimístné číslo tedy 100 000 000 tedy :

#include <stdio.h>
#include <stdlib.h>

int main(int i)
{
    FILE *soubor;
    soubor = fopen("Hesla.txt","a+");
    for(i = 0; i < 100000000; i++)
    {
        fprintf(soubor,"%08d\n",i);
    }
    return 0;
}

A vypíší se nám všechny možné kombinace do souboru Hesla.txt. Ovšem to už je trošičku drastické, protože ten soubor už bude mít nějaký ten MB :D možná i GB O:-). No a výsledný wordlist už můžeme hodit do našeho software pro zkoušení hesel, třeba Brutus :) nebo si napsat vlastní aplikaci pro přihlašování se na nějaký server. :)


 

  Aktivity (2)

Článek pro vás napsal Зайчик
Avatar
Коммунизм для нашего будущего!

Jak se ti líbí článek?
Celkem (2 hlasů) :
4.54.54.54.54.5


 


Miniatura
Předchozí článek
Rámeček

 

 

Komentáře

Avatar
melda23hokej
Člen
Avatar
melda23hokej:

Jak by to šlo udělat i s písmenama ?

 
Odpovědět 1.6.2013 23:12
Avatar
Jozef
Člen
Avatar
Odpovídá na melda23hokej
Jozef:

Pre prípad, že by to niekoho zaujímalo, tak pripájam svoj kód, ktorý robí toto isté s písmenami. V

n = 100000;

, si dosaďte aké číslo chcete, vypíše to všetky možnosti až po pozíciu, ktorú zvolíte. Ak chcete napr. od 3 miestnych znakov, tak si za k dosadíte namiesto 0 číslo 703(pozícia prvého trojmiestneho reťazca) atď...

int main()
{
  FILE*fa;
  fa = fopen("Hesla.txt","a+");
  uint64_t i,zad_cisloint,cis_pism,j = 0,k,n;
  double zad_cislor;
  char znak[26];
  char *zn;
  for(i = 0; i < 26;i++)
      znak[i] = (65+i);
  n = 100000;
  char **retazec;
  retazec = (char **) malloc(n * sizeof(char *));
  for(i = 0; i < n; i++)
      retazec[i] = (char *) malloc(26 * sizeof(char));
  for(k = 0; k < n; k++){
  zad_cisloint = k+1;
  zad_cislor = zad_cisloint;
  while((zad_cislor / 26) > 0){
        i = j++;
        zad_cisloint = (uint64_t)zad_cislor;
        cis_pism = zad_cisloint % 26;
        if(cis_pism == 0)
            cis_pism = 26;
        retazec[k][i] = znak[cis_pism-1];
        zad_cislor = (zad_cisloint-cis_pism) / 26;
  }
        retazec[k][j] = '\0';
        j = 0;
  }
  for(k = 0; k < n; k++){
      for(i = strlen(retazec[k]); i > 0; i--)
            fprintf(fa,"%c",retazec[k][i-1]);
      fprintf(fa,"\n");
  }

  return 0;
}
Odpovědět 17.3.2015 14:21
I'm not afraid to die on a treadmill
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.