Metadata-Version: 2.3
Name: DTS-CDD__Wdis
Version: 1.2.0
Summary: Static Features Extraction Engine
Author: Luca Fabri
Author-email: luca.fabri1999@gmail.com
Requires-Python: >=3.10,<4.0
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Dist: capstone (>=5.0.1,<5.1.0)
Requires-Dist: info-gain (==1.0.1)
Requires-Dist: ipython (>=8.36.0,<8.37.0)
Requires-Dist: matplotlib (==3.10.3)
Requires-Dist: nltk (>=3.8.1,<3.9.0)
Requires-Dist: notebook (==7.2.2)
Requires-Dist: numpy (==2.2.6)
Requires-Dist: p_tqdm (==1.4.2)
Requires-Dist: pandas (==2.2.3)
Requires-Dist: pefile (>=2024.8.0,<2024.9.0)
Requires-Dist: pyarrow (>=20.0.0,<21.0.0)
Requires-Dist: ruff (>=0.11.6,<0.12.0)
Requires-Dist: scikit-learn (==1.5.0)
Requires-Dist: scipy (>=1.15.0,<1.16.0)
Requires-Dist: seaborn (==0.13.2)
Requires-Dist: setuptools (>=70.0.0,<70.1.0)
Requires-Dist: tqdm (>=4.67.0,<4.68.0)
Description-Content-Type: text/markdown

# Static Features Extraction Engine

This project allows the user to extract static features from Windows PE files, which have been proven effective for malware family classification.

Specifically, the list of the chosen features and the extraction process itself adhere to the work proposed in the paper: [Decoding the Secrets of Machine Learning in Malware Classification: A Deep Dive into Datasets, Feature Extraction, and Model Performance](https://arxiv.org/pdf/2307.14657).

The project was carried out as part of my Master's thesis: *Clustering Windows Malware using Static Features and Concept Drift Detection*.

## Prerequisites

Make sure you have a running and active version of [Docker](https://docs.docker.com/engine/install/).

## Usage

- Configure the Docker Compose file by providing the following information:
  - `MALWARE_DIR_PATH`: the path where all the PE files are stored. The directory should group malwares based on their family, so it should contain $n$ subdirectories where $n$ is the number of families;
  - `VT_REPORTS_PATH`: the path of the VirusTotal reports. Each line of this file should be a separate json containing a report of a single PE file;
  - `MERGE_DATASET_PATH`: the path of the dataset that will be produced containing `[SHA256, family, submission-date]` of each file, starting from the VT reports file;
  - `FINAL_DATASET_DIR`: directory path where the final dataset with the extracted features will be stored.
- Deploy the engine to start the extraction process:
  ```bash
  docker compose up -d
  ```

## Authors

- Luca Fabri

