Questo repo contiene il codice relativo al talk "The Sound Of Malware".
E' diviso in 2 branch.
- Il
main
è di sperimentazione e permette di addestrare ed esportare modelli. - Il
pipeline
è ingegnerizzato e consente di utilizzare i modelli esportati per fare delle predizioni.
Per utilizzare il codice è necessario installare i requirements tramite comando:
pip install -r requirements.txt
Ed installare ffmpeg tramite comando:
sudo apt-get install ffmpeg
NB Se sei su sistema windows ffmpeg va insallato in modi alternativi.
Per prima cosa è necessario scaricare i binari. Per questo puoi seguire due strade:
- Scarichi i binari malevoli dal link Malware Source 1, e li inserisci nel path
binaries/1/
, e i binari legittimi inbinaries/0/
(per questi puoi prendere spunto dal filecopy_source.py
che copia la cartella/bin
di ubuntu), - Scarichi i binari forniti dal link Whole Dataset. Sono già divisi nelle folder richieste quindi ti basterà decomprimere il file nella root del progetto.
Una volta scaricati i files gli script necessari al funzionamento sono 3:
converter.py
: Converte il contenuto di/binaries/{0|1}
in file.wav
, dove il contenuto di/binaries/0/
è legittimo ed è popolato dallo step precedente, mentre la cartella/binaries/1
deve essere creata prima del lancio di questo script, e deve contenere i binari malevoli scaricabili da qui.features_extraction.py
: Questo file fa features extraction dai.wav
creati nello step precedente e genera in output un.csv
. NB Per eseguire le operazioni per la features extracion è necessario porre i parametri:split_audio = True
--> Fa chunking e overlap dei singoli wavesprocess_segments = True
--> Calcola MFCC, GFCC, BFCC e salva in csv
models.py
: Inizia il train dei modelli. In questo file hai diverse variabili:load = True|False
SeTrue
ti carica i file di train, test e validation che già esistono. Se non ci sono ed è la prima volta che lanci il programma deve essereFalse
<Nomi_Modelli> = True|False
seTrue
esegue il train per quel modello. Ad ora l'unico addestrato ilensemble
.
Nota: I dati forniti non corrispondono a quelli utilizzati in fase di studio e test, i risultati sono quindi svincolati rispetto quelli presentati nel talk.
- Il file
support.py
è stato scritto per eseguire test veloci e per fare considerazioni. Non è collegato al funzionamento del resto. - Il file
constants.py
contiene le variabili costanti utilizzati nei diversi files. Questo file è tra i più importanti in quanto i valori al suo interno sono usati in maniera invasiva. Se si vuol cambiare nomi dei file in output o altre costanti, bisogna intervenire qui. - Il file
analysis.py
contiene codice per esaminare il dataset e fare delle considerazioni su di esso.
Il repo è scritto in python3.12
su sistema Ubuntu 24.04
.
Si consiglia di eseguire questo codice in ambienti controllati come VM o Container
in quanto vengono gestiti binari affetti da Malware.
Link Utili: