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.pyche copia la cartella/bindi 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/1deve 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.wavcreati 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|FalseSeTrueti 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|FalseseTrueesegue 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.pycontiene 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.pycontiene 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: