← Tutti i video

Tools Hacking in Rust: Hash-Cracker

Guarda su YouTube → 1:11:08 5 agosto 2022

Descrizione

In questo video faccio vedere come implementare un semplificato hash cracker utilizzando il linguaggio Rust. NOTA BENE: Mai utilizzare MD5 o SHA1 per applicazioni di crittografia, in quanto sono vulnerabili dal punto di vista crittografico. ------------------------------------ MATERIALE ORIGINALE: https://archive.leonardotamiano.xyz/yt/rust/02/ https://youtu.be/AvNXFBaUMVU?t=1354 https://academy.leonardotamiano.xyz/video/1qHPHFQ_4E0.html ------------------------------------ RIFERIMENTI ESTERNI: https://crates.io/crates/md5 https://crates.io/crates/sha1 https://github.com/skerkour/black-hat-rust/tree/main/ch_01/sha1_cracker ------------------------------------ TIMESTAMPS: 00:00:00 introduzione 00:01:00 sulle funzioni hash 00:05:00 funzionamento di hash_cracker 00:06:50 mdsum, sha1sum echo, e problemi con il newline 00:10:00 utilizzo di hash_cracker 00:13:35 inizio progetto con cargo 00:15:00 leggere gli argomenti in input 00:21:35 il tipo &str 00:23:00 esempio lettura argomenti 00:24:25 importazione librerie esterne md5 e sha1 00:26:25 gestione dei diversi hash supportati tramite una hashmap 00:35:25 rendere i dati mutabili tramite mut 00:37:25 controllo sul valore di hash_type 00:39:05 il ruolo della Option in rust e il pattern matching 00:42:50 come calcolo la lunghezza in bit di un hash? 00:46:25 controllo sulla lunghezza di hash_value 00:49:05 gestione apertura file 00:52:35 lettura file 00:56:00 calcolo hash per ogni riga del file 01:02:45 analisi funzionamento 01:05:46 stampa finale 01:07:46 overview finale ------------------------------------ PER CONTATTI: - Website: https://leonardotamiano.xyz - Academy: https://academy.leonardotamiano.xyz - Email: leonardotamiano95@gmail.com - LinkedIn: https://www.linkedin.com/in/leonardo-tamiano-707591236

Commenti 7

I commenti vengono da YouTube e sono aggiornati periodicamente.

  1. @esadecimale Autore 5 agosto 2022
    Quando ho menzionato che le password venivano salvate calcolandone prima l'hash, mi sono dimenticato di menzionare anche il ruolo del salt nella memorizzazione delle password hashate. Detto questo, è un argomento che avevo già trattato in un altro video. Metto quindi il link a seguire con relativo timestamp: https://youtu.be/AvNXFBaUMVU?t=1350
  2. @simox7492 5 agosto 2022
    Complimenti Leo utile come sempre.
  3. @costamvp3373 9 agosto 2022
    Sempre complimenti per il modo in cui trasmetti quello che sai e che ti piace fare! Rust è un linguaggio di programmazione che ho sentito solo grazie al tuo canale, per caso nel mondo lavorativo o al di fuori dell'università Rust è ritenuto importante o è specifico per qualche tipo di programmazione?
    1 risposta
    1. @esadecimale Autore 9 agosto 2022 1
      Rust è il tentativo più promettente fino adesso di avere un linguaggio low level che sia efficiente ma che allo stesso tempo sia ancora sicuro rispetto a questioni quali gestioni della memoria e parallelismo. L’idea è quella di evitare corruzioni di memoria (segmentation faults), e data races. Ultimamente sta diventando alquanto popolare, certo non ai livelli di linguaggi già presenti ovunque, ma è comunque interessante e ultimamente mi ci sto divertendo un pochino con Rust.
  4. @samas69420 5 agosto 2022
    nel match che hai fatto con l'option avresti potuto usare anche una if let che in generale va bene al posto di tutti i match dove ti interessa quasi soltanto un arm e nel resto dei casi chiami la panic, stampi errore o cose cosi
    2 risposte
    1. @esadecimale Autore 6 agosto 2022 1
      Ti ringrazio del feedback. Ci avevo pensato a mettere un if let, ma ho preferito farlo come ho mostrato perché mi sembrava più uniforme, che altrimenti avrei dovuto mettere tutto dentro l’if. Un’altra cosa che invece se tornassi indietro cambierei è l’utilizzo della hashmap per salvare le hash function supportate. Sarebbe stato meglio mettere una enum con le varie opzioni tipo MD5 e SHA1, e ciascuna opzione mi andava poi a contenere sia la rappresentazione a stringa della funzione e sia il numero di bit dell’output
    2. @samas69420 6 agosto 2022
      @esadecimale si effettivamente con l'enum sarebbe stato più pulito vabbe l'importante è che compila xd