Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2017
    Messaggi
    4

    programmazione c: brute force chiave sha1

    salve qualcuno sa perche non mi fa compilare questo codice?:

    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
    int i;
    char hash[40],parola[99000000][15],wordlist[15],tmp[40];
    FILE *fp;

    printf("inserisci l'hash da decifraresha1)\t");
    scanf("%s",hash);
    printf("inserisci wordlist:\t");
    scanf("%s",wordlist);


    fp=fopen(wordlist,"r");
    while(!feof(fp))
    {
    tmp=system("echo -n %s | sha1sum",parola[i]);

    if(tmp==hash)
    {
    printf("pass:\t%s",parola[i]);
    break;
    }

    i++;
    }
    fclose(fp);
    printf("fine");

    return 0;
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Avrai un messaggio d'errore ... leggilo ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2017
    Messaggi
    4
    too many arguments to function ‘system’
    tmp=system("echo -n %s | sha1sum",parola[i]);
    ^~~~~~
    /usr/include/stdlib.h:677:12: note: declared here
    extern int system (const char *__command) __wur;
    ^~~~~~
    error: assignment to expression with array type
    tmp=system("echo -n %s | sha1sum",parola[i]);
    ^
    Compilazione fallita.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ecco ... leggi il primo

    " too many arguments to function ‘system’ "

    La funzione system non si usa con 2 argomenti, la stai usando come fosse una printf ma la funzione accetta solo 1 parametro.


    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2017
    Messaggi
    4
    conosci un modo o una funzione (con lo stesso scopo di system()) che permetta pero anche l'inserimento di una variabile?

  6. #6
    Devi prima costruire la stringa (ad esempio con sprintf), quindi chiamare system. Nota comunque che il valore restituito da system è il return code della shell, non lo standard output del processo; se ti interessa quest'ultimo, dovrai usare qualcosa tipo popen.

    In ogni caso, cercare di fare brute forcing di un hash richiamando un processo esterno non ti porterà molto lontano... il costo di creare un processo esterno (anzi, almeno due visto che system chiama /bin/sh) è superiore di diversi ordini di grandezza rispetto al costo di calcolare l'hash. Se vuoi andare a velocità vagamente decenti come minimo devi incorporare l'algoritmo di SHA1 direttamente nel tuo programma. In ogni caso non arrivi nemmeno vicino a quello che fa un programma come hashcat (che usa algoritmi estremamente ottimizzati e li fa girare in parallelo su GPU), ma almeno fai lavorare la CPU sul problema effettivo invece di fare perdere tempo al sistema operativo a lanciare processi inutilmente.
    Ultima modifica di MItaly; 19-03-2017 a 18:57
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    @MItaly ... ovviamente sono d'accordo ma concorderai sul fatto che, prima di tutto, dovrebbe conoscere le basi del C/C++. Il primo passo sarebbe, appunto, studiare il linguaggio da usare e solo dopo "buttarsi" in avventure di "brute forcing" di alcunché ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2017
    Messaggi
    4
    @MItaly grazie per l'aiuto e il cosiglio (ho risolto).

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.