File: README.md
Detect It Easy (DiE) is a powerful tool for file type identification, popular among malware analysts, cybersecurity experts, and reverse engineers worldwide. Supporting both signature-based and heuristic analysis, DiE enables efficient file inspections across a broad range of platforms, including Windows, Linux, and MacOS. Its adaptable, script-driven detection architecture makes it one of the most versatile tools in the field, with a comprehensive list of supported OS images.
๐ Getting started
- ๐ Download release/beta
- ๐งช DiE API Library (for Developers)
- ๐ Changelog
- ๐ฌ Contribute to Translations
๐ก Why use Detect It Easy?
Detect It Easyโs flexible signature system and scripting capabilities make it an essential tool for malware analysis and digital forensics. With traditional static analyzers often limited in scope and prone to false positives, DiEโs customizable design enables precise integration of new detection logic, ensuring reliable results across diverse file types.
Key advantages:
- Flexible Signature Management: Easily create, modify, and optimize detection scripts (rules).
- Cross-Platform Support: Runs on Windows, Linux, and MacOS.
- Minimal False Positives: Combined signature and heuristic analysis ensures high detection accuracy.
๐ Supported file types
Detect It Easy supports a wide range of executable and archive types, including:
- PE (Portable Executable format for Windows)
- ELF (Executable and Linkable Format for Linux)
- APK (Android Application Package)
- IPA (iOS Application Package)
- JAR (Java Archive)
- ZIP (Compressed archives)
- ISO9660 (Optical media format)
- DEX (Dalvik Executable for Android)
- MS-DOS (MS-DOS executable files)
- COM (Simple executable format for DOS)
- LE/LX (Linear Executable for OS/2)
- MACH (Mach-O files for MacOS)
- NPM (JavaScript packages)
- Amiga (Executable format for Amiga computers)
- Binary (Other unclassified files)
And that's not all... The list is expanding as the tool is updated
Unknown formats undergo heuristic analysis, providing identification for both known and unrecognized files.
๐ Key features
- Flexible Signature Management: Define or modify detection rules.
- Scripted Detection: Use a JavaScript-like scripting language (DiE-JS ES5 runtime) for custom detection algorithms.
- Cross-Platform Compatibility: Available for Windows, Linux, and MacOS.
- Reduced False Positives: Combines signature and heuristic scanning for accuracy.
๐ฅ Installation
๐ฆ Install via package managers
Windows:
Linux:
- Parrot OS: Package name
detect-it-easy - Arch Linux: AUR package detect-it-easy-git
- openSUSE: OBS
- REMnux: Malware analysis distribution
- Parrot OS: Package name
[!NOTE]
Use Detect It Easy bot via Telegram to quickly check files: @detectiteasy_bot
โ๏ธ Build from source
See the BUILD.md for detailed instructions.
๐ณ Docker installation
Run DiE in a Docker container:
git clone --recursive https://github.com/horsicq/Detect-It-Easy
cd Detect-It-Easy/
docker build . -t horsicq:diec๐ฅ๏ธ Usage
Detect It Easy offers three versions:
- die - Graphical interface.
- diec - Command-line version for batch processing.
- diel - Lightweight GUI version. (scanner only)
For detailed usage, refer to the RUN.md.
๐ Example use cases
- ๐ฆ Malware Analysis: Identify file types, packers, or protections. Heuristic engine detects multiple malware and file virus families.
- ๐ก Security Audits: Determine executable potential security risks.
- ๐ Software Forensics: Inspect software components and validate compliance.
๐ฌ Our community
๐ Hello! / ะัะธะฒะตั! Welcome to the Detect It Easy community!
Have questions, ideas, or just want to chat? Here's where to find us:
- GitHub Discussions: Start a conversation in Discussions
- GitHub Issues: Report bugs or request features via Issues
๐ Special thanks
๐ค Thanks to all contributors
File: docs/BUILD.md
How to build on Docker
git clone https://github.com/horsicq/DIE-engine.git
cd DIE-engine
sudo docker build . -t horsicq:diecHow to build on Linux based on Debian
- You can also watch tutorial on YouTube
- For further Information you can look at fr0stb1rd blogpost.
Install packages:
sudo apt-get install qtbase5-dev qtscript5-dev qttools5-dev-tools libqt5svg5-dev git build-essential -y- Ubuntu 14.04-20.04:
sudo apt-get install qt5-default -y- Ubuntu 21.04-26.04
sudo apt-get install qtchooser qt5-qmake pkg-config -yClone this repo recursively:
git clone --recursive https://github.com/horsicq/DIE-engine.git
cd DIE-engineRun build script:
bash -x build_dpkg.shInstall deb package:
sudo dpkg -i release/$(ls release)How to build on Linux based on Fedora (DNF)
Install packages:
sudo dnf install qt5-qtbase-devel qt5-qtscript-devel qt5-qttools-devel git make gcc-c++
sudo dnf install qt6-qtbase-devel qt6-qtscript-devel qt6-qttools-devel qt6-qt5compat-devel qt6-qtdeclarative-devel git make gcc-c++Clone this repo recursively:
git clone --recursive https://github.com/horsicq/DIE-engine.git
cd DIE-engineBuild
chmod a+x configure
./configure
make -j4How to build on Linux based on openSuse (zypper)
Install packages:
sudo zypper install libqt5-qtbase-devel libqt5-qtscript-devel libqt5-qttools-devel libqt5-qtsvg-devel git gcc-c++ makeClone this repo recursively:
git clone --recursive https://github.com/horsicq/DIE-engine.git
cd DIE-engineBuild
chmod a+x configure
./configure
make -j4How to build on Linux based on Arch Linux (pacman)
Install packages:
sudo pacman -S --needed git base-devel qt5-base qt5-tools qt5-scriptClone this repo recursively:
git clone --recursive https://github.com/horsicq/DIE-engine.git
cd DIE-engineBuild
chmod a+x configure
./configure
make -j4How to build on Linux (Automake)
Qt framework has to be installed on the system.
(Ubuntu) Install Qt Framework:
sudo apt-get install --quiet --assume-yes build-essential qt5-default qtbase5-dev qttools5-dev-tools qtscript5-dev libqt5svg5-devClone this repo recursively:
git clone --recursive https://github.com/horsicq/DIE-engine.git
cd DIE-engineBuild
Might require sudo privileges
chmod a+x configure
./configure
make -j4
sudo make installHow to build on Linux (Qt6)
Qt framework has to be installed on the system.
(Ubuntu) Install Qt Framework:
sudo apt-get install --quiet --assume-yes build-essential qt6-base-dev qt6-base-dev-tools qt6-tools-dev-tools qt6-5compat-dev libqt6svg6-dev qt6-declarative-devClone this repo recursively:
git clone --recursive https://github.com/horsicq/DIE-engine.git
cd DIE-engineBuild
mkdir build
cd build
cmake ..
makeHow to build on macOS
Install Qt 5.15.2: https://github.com/horsicq/build_tools
Clone project: git clone --recursive https://github.com/horsicq/DIE-engine.git
Edit build_mac.sh (check QMAKE_PATH variable)
Run build script: bash -x build_mac.sh
How to build on Windows (XP)
Install Visual Studio 2013: https://github.com/horsicq/build_tools
Install Qt 5.6.3 for VS2013: https://github.com/horsicq/build_tools
Install 7-Zip: https://github.com/horsicq/build_tools
Clone project: git clone --recursive https://github.com/horsicq/DIE-engine.git
Edit build_winxp.bat (check VSVARS_PATH, SEVENZIP_PATH, QMAKE_PATH variables)
Run build_winxp.bat
How to build on Windows (7-11)
Install Visual Studio 2019: https://github.com/horsicq/build_tools
Install Qt 5.15.2 for VS2019: https://github.com/horsicq/build_tools
Install 7-Zip: https://github.com/horsicq/build_tools
Clone project: git clone --recursive https://github.com/horsicq/DIE-engine.git
Edit build_win32.bat ( check VSVARS_PATH, SEVENZIP_PATH, QMAKE_PATH variables)
Edit build_win64.bat ( check VSVARS_PATH, SEVENZIP_PATH, QMAKE_PATH variables)
Run build_win32.bat
Run build_win64.bat
How to build with CMAKE
Clone this repo recursively:
git clone --recursive https://github.com/horsicq/DIE-engine.git
cd DIE-engineBuild (Release)
mkdir -p build
cmake . -B build
cd build
make -j4
# To use it as a command, uncomment the following line:
# sudo make install -j4Build (Debug)
mkdir -p build
cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug
cd build
make -j4
# To use it as a command, uncomment the following line:
# sudo make install -j4How to build with MinGW/MSYS2
Install MSYS2: https://www.msys2.org/
Clone this repo recursively:
git clone --recursive https://github.com/horsicq/DIE-engine.git
cd DIE-engineInstall libaries
pacman -S mingw-w64-ucrt-x86_64-gcc
pacman -S mingw-w64-x86_64-qt5-toolsBuild
chmod a+x configure
./configure
make -j4How to build with WSL
- Activate Windows Subsystem for Linux
- Download from the Microsoft Store any distribution
Clone this repo recursively:
git clone --recursive https://github.com/horsicq/DIE-engine.git
cd DIE-engineInstall libaries
sudo apt-get install --quiet --assume-yes build-essential qtbase5-dev qttools5-dev-tools qtscript5-dev libqt5svg5-devBuild
chmod a+x build_dpkg.sh
./build_dpkg.shHow to build on Linux (Debug)
Qt framework has to be installed on the system.
(Ubuntu) Install Qt Framework:
sudo apt-get install --quiet --assume-yes build-essential qt5-default qtbase5-dev qttools5-dev-tools qtscript5-dev libqt5svg5-devClone this repo recursively:
git clone --recursive https://github.com/horsicq/DIE-engine.git
cd DIE-engineBuild
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Debug ..
makeHow to build on Linux (Qt6/Debug)
Qt framework has to be installed on the system.
(Ubuntu) Install Qt Framework:
sudo apt-get install --quiet --assume-yes build-essential qt6-base-dev qt6-base-dev-tools qt6-tools-dev-tools qt6-5compat-dev libqt6svg6-dev qt6-declarative-devClone this repo recursively:
git clone --recursive https://github.com/horsicq/DIE-engine.git
cd DIE-engineBuild
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Debug ..
makeHow to build on Linux (Qt5/AppImage)
Qt framework has to be installed on the system.
(Ubuntu) Install Qt Framework:
sudo apt-get install --quiet --assume-yes build-essential qt5-default qtbase5-dev qttools5-dev-tools qtscript5-dev libqt5svg5-devSetup linuxdeploy
wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
chmod +x linuxdeploy-x86_64.AppImage
sudo mv linuxdeploy-x86_64.AppImage /usr/local/bin/linuxdeploy
sudo chmod +x /usr/local/bin/linuxdeploy
wget https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage
chmod +x linuxdeploy-plugin-qt-x86_64.AppImage
sudo mv linuxdeploy-plugin-qt-x86_64.AppImage /usr/local/bin/linuxdeploy-plugin-qtClone this repo recursively:
git clone --recursive https://github.com/horsicq/DIE-engine.git
cd DIE-engineBuild
chmod a+x configure
./configure
make
chmod a+x create_appimage.sh
./create_appimage.shHow to build on nixOS (Qt5)
Qt framework has to be installed on the system.
Download dependencies
nix-shell -p git gcc gnumake pkg-config qt5.qtbase qt5.qtscript qt5.qttools qt5.qtsvg qt5.qtwaylandClone this repo recursively:
git clone --recursive https://github.com/horsicq/DIE-engine.git
cd DIE-engineBuild (Release)
mkdir build
cd build
cmake ..
makeBuild (Debug)
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Debug ..
makeRun
export QT_QPA_PLATFORM=wayland
./dieHow to build on Alpine Linux (Qt5)
Qt framework has to be installed on the system.
Download dependencies
apk update
apk add qt5-qtbase-dev qt5-qtscript-dev qt5-qttools-dev qt5-qtsvg-dev git build-base pkgconfClone this repo recursively:
git clone --recursive https://github.com/horsicq/DIE-engine.git
cd DIE-engineBuild (Release)
mkdir build
cd build
cmake ..
makeBuild (Debug)
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Debug ..
makeHow to build on openBSD (Qt5)
Qt framework has to be installed on the system.
Download dependencies
su -
pkg_add git gmake cmake qtbase qtsvg qtscript qttools
exitClone this repo recursively:
git clone --recursive https://github.com/horsicq/DIE-engine.git
cd DIE-engineBuild (Release)
mkdir build
cd build
cmake ..
gmakeBuild (Debug)
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Debug ..
gmakeFile: docs/RUN.md
Instructions to run Detect It Easy
Linux Package/Build
die [FileName] or diec [FileName] or diel [FileName]Portable version on Linux
Download an appImage file https://github.com/horsicq/DIE-engine/releases/download/Beta/Detect_It_Easy-3.22-x86_64.AppImage
Make the file executable
chmod +x Detect_It_Easy-3.22-x86_64.AppImageRun it
./Detect_It_Easy-3.22-x86_64.AppImageRun with Docker
Here's how to use DIE with Docker:
docker/diec.sh [FileName]