NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
S účinností od 26. 3. jsme aktualizovali Zásady zpracování osobních údajů – doplnili jsme informace o monitorování telefonických hovorů se zájemci o studium. Ostatní části zůstávají beze změn.

Diskuze – Generování hesel

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
melda23hokej
Člen
Avatar
melda23hokej:1.6.2013 23:12

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:17.3.2015 14:21

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
Avatar
neutr
Člen
Avatar
Odpovídá na melda23hokej
neutr:27.12.2016 18:23

Je to sice starší téma ale odpovím. Nejsnadnějí jsou 4 vnořené cykly FOR - píšu schematicky pro StarBasic.
deklarovat a(3) as string. Rozsah iterací je dán od znaku 33 (tuším vykřičník) až 254 - 255 se asi nepoužívá i tak jsou tam nečeské znaky.
For a 33 To 254
For b 33 To 254
For c 33 To 254
For d 33 To 254
a(0) = Char(a)
a(1) = Char(b)
a(2) = Char(c)
a(3) = Char(d)
Next d
Next c
Next b
Next a

Jinak bych doporučil spíš načítat z array kde se vynechají některé znaky dle uvážení. Takže pak do zdrojové array zadat například UTF-8 - tipuji cca 200 znaků a cykly nastavit od 0 do 200.
Má to výhodu v tom, že nepotřebuješ přímo wordlist - nanejvýš zabudovat zápis posledního testovaného cyklu pro případy přerušení práce.

 
Odpovědět
27.12.2016 18:23
Avatar
neutr
Člen
Avatar
Odpovídá na neutr
neutr:27.12.2016 18:46

Ještě jsem zapoměl - když bys chtěl WordList tak potom pomocí dvojrozměrného pole a(i,3) Kde inkrementuješ "i" a když by mělo přetéct tak vytvořít jiný seznam od i = 0. Navázat se musí jen čísla na cyklech a, b, c, d. Má to výhodu že nemusíš nic extra jiného sledovat jen aby počet výrazů nepřetekl. Nanejvýš tam vložit nějakou hlášku, že je to u konce.

 
Odpovědět
27.12.2016 18:46
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 4 zpráv z 4.