{"id":27957475,"url":"https://github.com/eitanbakirov/malicious-file-classification-app","last_synced_at":"2026-05-08T01:41:24.597Z","repository":{"id":291575599,"uuid":"978045381","full_name":"EitanBakirov/malicious-file-classification-app","owner":"EitanBakirov","description":"A machine learning application designed to analyze and classify files as malicious or benign using static analysis features. This project combines robust data science techniques with a user-friendly web interface built using Streamlit.","archived":false,"fork":false,"pushed_at":"2025-05-05T23:43:33.000Z","size":17227,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-07T18:13:07.886Z","etag":null,"topics":["app","jupyter-notebook","ml-model","ml-pipeline","python","random-forest","static-analysis","streamlit"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/EitanBakirov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-05T11:41:29.000Z","updated_at":"2025-05-05T23:43:36.000Z","dependencies_parsed_at":"2025-05-05T13:33:41.575Z","dependency_job_id":null,"html_url":"https://github.com/EitanBakirov/malicious-file-classification-app","commit_stats":null,"previous_names":["eitanbakirov/malicious-file-classification-app"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EitanBakirov%2Fmalicious-file-classification-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EitanBakirov%2Fmalicious-file-classification-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EitanBakirov%2Fmalicious-file-classification-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EitanBakirov%2Fmalicious-file-classification-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EitanBakirov","download_url":"https://codeload.github.com/EitanBakirov/malicious-file-classification-app/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252931553,"owners_count":21827112,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["app","jupyter-notebook","ml-model","ml-pipeline","python","random-forest","static-analysis","streamlit"],"created_at":"2025-05-07T18:13:12.175Z","updated_at":"2026-05-08T01:41:24.569Z","avatar_url":"https://github.com/EitanBakirov.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Malware Detection: ML Classification \u0026 Interactive Application\n\n## Overview\n\nThis project consists of two main components:\n1. **Data Science Project**: A comprehensive malicious file classification pipeline\n2. **Interactive Web Application**: A Streamlit app for real-time file analysis and classification\n\nThe goal is to classify files as either malicious or benign based on static analysis features. The project combines rigorous data science methodology with a user-friendly interface for practical application.\n\nFor an in-depth explanation of our process, see report_english.pdf\"/\"report_hebrew.pdf or explore the complete [notebook.ipynb](https://github.com/EitanBakirov/malicious-file-classification-app/blob/main/notebook.ipynb).\n\n## App Screenshots\n\n![alt text](Screenshots/image.png)\n![alt text](Screenshots/image-1.png)\n![alt text](Screenshots/image-2.png)\n![alt text](Screenshots/image-4.png)\n\n## Table of Contents\n\n- [Malware Detection: ML Classification \\\u0026 Interactive Application](#malware-detection-ml-classification--interactive-application)\n  - [Overview](#overview)\n  - [App Screenshots](#app-screenshots)\n  - [Table of Contents](#table-of-contents)\n  - [Project Components](#project-components)\n    - [1. Data Science Pipeline](#1-data-science-pipeline)\n    - [2. Interactive Application](#2-interactive-application)\n  - [Project Description](#project-description)\n  - [Data](#data)\n  - [Methodology](#methodology)\n  - [Results](#results)\n  - [Installation](#installation)\n  - [Authors](#authors)\n  - [Contact](#contact)\n\n## Project Components\n\n### 1. Data Science Pipeline\n\nThe complete machine learning pipeline includes:\n\n- **Part 1 - Exploring the Data**: Comprehensive EDA of file characteristics\n- **Part 2 - Preprocessing**: \n  - Handling Missing Values\n  - Handling Categorical Features\n  - Handling Outliers\n  - Large Dimensionality\n  - Data Normalizing\n  - Dimensionality Reduction\n- **Part 3 - Running the Models**:\n  - Two Simple Models (KNN, Logistic Regression)\n  - Two Advanced Models (ANN, Random Forest)\n- **Part 4 - Evaluation**:\n  - Confusion Matrix\n  - Advanced Metrics\n  - KFold Cross-Validation\n- **Part 5 - Prediction**: Final model deployment\n\n### 2. Interactive Application\n\nOur Streamlit application provides:\n- User-friendly interface for file upload and analysis\n- Real-time classification of files as malicious or benign\n- Model information and performance metrics\n- Adjustable detection threshold for customized sensitivity\n\n## Project Description\n\nIn this project, we were tasked with classifying files as malicious (1) or non-malicious (0) based on various features in the dataset. The project involved:\n\n- Exploratory Data Analysis to understand the data's distribution and correlations.\n- Data preprocessing, including handling missing values, dealing with categorical features, and feature engineering.\n- Building and evaluating machine learning models, including Random Forest and K-Nearest Neighbors, to select the best model.\n- The selected Random Forest model achieved a high AUC score and was used for predictions.\n\nAlso, in the folder \"Instructions\" you can get the full instructions of the project in hebrew and english.\n\n## Data\n\nThe dataset contains 60,000 observations classified as malicious or non-malicious files. Some features are known, while others are anonymous. Data preprocessing steps included handling missing values, normalizing data, and dealing with outliers.\n\n## Methodology\n\nWe applied exploratory data analysis, including histograms and correlation analysis, to understand feature distributions and relationships. Data preprocessing involved filling missing values, converting categorical features, and feature engineering. We built machine learning models, including Random Forest and K-Nearest Neighbors, using cross-validation and hyperparameter tuning.\n\n## Results\n\nThe Random Forest model was selected as the best-performing model with a high AUC score. The model showed a balanced trade-off between precision and recall. Feature importance analysis revealed key features contributing to classification, such as 'Avlength,' 'B,' 'imports,' 'Urls,' and 'file_type_prob_trid.'\n\n## Installation\n\nTo reproduce the project and run the application:\n\n1. **Clone the repository**:\n   ```bash\n   git clone https://github.com/EitanBakirov/malicious-file-classification-app.git\n   cd malicious-file-classification-app\n   ```\n\n2. **Create a virtual environment**:\n    ```bash\n    # Create a new virtual environment\n    python -m venv .venv\n\n    # Activate the virtual environment\n    # On Windows:\n    .venv\\Scripts\\activate\n\n    # On macOS/Linux:\n    source .venv/bin/activate\n    ```\n\n3. **Install dependencies**:\n    ```bash\n    pip install -r requirements.txt\n    ```\n\n\n4. **Run the Streamlit application:**:\n    ```bash\n    streamlit run app.py\n    ```\n\n    The application will open in your default web browser.\n  \n## Authors\n\n- [Eitan Bakirov](https://github.com/EitanBakirov)\n- [Yuval Bakirov](https://github.com/YuvalBakirov)\n\n## Contact\n\nFor questions or feedback related to the project, please contact:\u003cbr\u003e\nEitan Bakirov at EitanBakirov@gmail.com \u003cbr\u003e\nYuval Bakirov at yuvalbakirov@gmail.com\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feitanbakirov%2Fmalicious-file-classification-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feitanbakirov%2Fmalicious-file-classification-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feitanbakirov%2Fmalicious-file-classification-app/lists"}