commit 6370838f9564fadb58dfbf1b27a0e81c0c84b585 Author: DSR! Date: Wed Feb 10 00:46:41 2021 -0300 2021 version of project diff --git a/Analysis/DIE/DIE - 3.01.7z b/Analysis/DIE/DIE - 3.01.7z new file mode 100644 index 0000000..6d3ef0d Binary files /dev/null and b/Analysis/DIE/DIE - 3.01.7z differ diff --git a/Analysis/ExeinfoPe/ExeinfoPe - 0.0.6.3.7z b/Analysis/ExeinfoPe/ExeinfoPe - 0.0.6.3.7z new file mode 100644 index 0000000..e0a035d Binary files /dev/null and b/Analysis/ExeinfoPe/ExeinfoPe - 0.0.6.3.7z differ diff --git a/Analysis/PEiD/PEiD - 0.95.7z b/Analysis/PEiD/PEiD - 0.95.7z new file mode 100644 index 0000000..7685d09 Binary files /dev/null and b/Analysis/PEiD/PEiD - 0.95.7z differ diff --git a/Analysis/ProtectionID/ProtectionID - 0.6.9.0.7z b/Analysis/ProtectionID/ProtectionID - 0.6.9.0.7z new file mode 100644 index 0000000..3edc98a Binary files /dev/null and b/Analysis/ProtectionID/ProtectionID - 0.6.9.0.7z differ diff --git a/Analysis/RDG Packer Detector/RDG Packer Detector - 0.7.6.7z b/Analysis/RDG Packer Detector/RDG Packer Detector - 0.7.6.7z new file mode 100644 index 0000000..ba483c9 Binary files /dev/null and b/Analysis/RDG Packer Detector/RDG Packer Detector - 0.7.6.7z differ diff --git a/Analysis/Stud PE/Stud PE - 2.6.7z b/Analysis/Stud PE/Stud PE - 2.6.7z new file mode 100644 index 0000000..db6d8c2 Binary files /dev/null and b/Analysis/Stud PE/Stud PE - 2.6.7z differ diff --git a/Analysis/XAPKDetector/XAPKDetector - 0.01.7z b/Analysis/XAPKDetector/XAPKDetector - 0.01.7z new file mode 100644 index 0000000..750d0cf Binary files /dev/null and b/Analysis/XAPKDetector/XAPKDetector - 0.01.7z differ diff --git a/Analysis/XELFViewer/XELFViewer - 0.01.7z b/Analysis/XELFViewer/XELFViewer - 0.01.7z new file mode 100644 index 0000000..9c93f30 Binary files /dev/null and b/Analysis/XELFViewer/XELFViewer - 0.01.7z differ diff --git a/Analysis/XPEViewer/XPEViewer - 0.01.7z b/Analysis/XPEViewer/XPEViewer - 0.01.7z new file mode 100644 index 0000000..813927d Binary files /dev/null and b/Analysis/XPEViewer/XPEViewer - 0.01.7z differ diff --git a/Decompilers/[ANDROID] JADX/JADX - 1.2.0.7z b/Decompilers/[ANDROID] JADX/JADX - 1.2.0.7z new file mode 100644 index 0000000..1cd207f Binary files /dev/null and b/Decompilers/[ANDROID] JADX/JADX - 1.2.0.7z differ diff --git a/Decompilers/[DELPHI] Dede/Dede - 3.5.7z b/Decompilers/[DELPHI] Dede/Dede - 3.5.7z new file mode 100644 index 0000000..34c415a Binary files /dev/null and b/Decompilers/[DELPHI] Dede/Dede - 3.5.7z differ diff --git a/Decompilers/[DELPHI] IDR/IDR - master.7z b/Decompilers/[DELPHI] IDR/IDR - master.7z new file mode 100644 index 0000000..99b130b Binary files /dev/null and b/Decompilers/[DELPHI] IDR/IDR - master.7z differ diff --git a/Decompilers/[DOTNET] DnSpy/DnSpy - 6.1.8.7z b/Decompilers/[DOTNET] DnSpy/DnSpy - 6.1.8.7z new file mode 100644 index 0000000..1f799d3 Binary files /dev/null and b/Decompilers/[DOTNET] DnSpy/DnSpy - 6.1.8.7z differ diff --git a/Decompilers/[DOTNET] GrayWolf/GrayWolf - 1.83.7z b/Decompilers/[DOTNET] GrayWolf/GrayWolf - 1.83.7z new file mode 100644 index 0000000..1d77d45 Binary files /dev/null and b/Decompilers/[DOTNET] GrayWolf/GrayWolf - 1.83.7z differ diff --git a/Decompilers/[DOTNET] GrayWolf/GrayWolf - 1.88.7z b/Decompilers/[DOTNET] GrayWolf/GrayWolf - 1.88.7z new file mode 100644 index 0000000..2dbeaf1 Binary files /dev/null and b/Decompilers/[DOTNET] GrayWolf/GrayWolf - 1.88.7z differ diff --git a/Decompilers/[DOTNET] ILSpy/ILSpy - 7.0-preview2.7z b/Decompilers/[DOTNET] ILSpy/ILSpy - 7.0-preview2.7z new file mode 100644 index 0000000..ad01fb3 Binary files /dev/null and b/Decompilers/[DOTNET] ILSpy/ILSpy - 7.0-preview2.7z differ diff --git a/Decompilers/[FLASH] Flasm/Flasm - 1.62.7z b/Decompilers/[FLASH] Flasm/Flasm - 1.62.7z new file mode 100644 index 0000000..e283c85 Binary files /dev/null and b/Decompilers/[FLASH] Flasm/Flasm - 1.62.7z differ diff --git a/Decompilers/[JAVA] JAD/JAD - 1.5.8g.7z b/Decompilers/[JAVA] JAD/JAD - 1.5.8g.7z new file mode 100644 index 0000000..250b6cd Binary files /dev/null and b/Decompilers/[JAVA] JAD/JAD - 1.5.8g.7z differ diff --git a/Decompilers/[JAVA] JD-GUI/JD-GUI - 1.6.6.7z b/Decompilers/[JAVA] JD-GUI/JD-GUI - 1.6.6.7z new file mode 100644 index 0000000..8f114ab Binary files /dev/null and b/Decompilers/[JAVA] JD-GUI/JD-GUI - 1.6.6.7z differ diff --git a/Decompilers/[VB] P-Code-ExDec/P-Code-ExDec - 1.0.7z b/Decompilers/[VB] P-Code-ExDec/P-Code-ExDec - 1.0.7z new file mode 100644 index 0000000..45e69c0 Binary files /dev/null and b/Decompilers/[VB] P-Code-ExDec/P-Code-ExDec - 1.0.7z differ diff --git a/Dissasembler/BDASM/BDASM - 2.5.7z b/Dissasembler/BDASM/BDASM - 2.5.7z new file mode 100644 index 0000000..1c0b90f Binary files /dev/null and b/Dissasembler/BDASM/BDASM - 2.5.7z differ diff --git a/Dissasembler/Immunity Debugger/Immunity Debugger - 1.85.7z b/Dissasembler/Immunity Debugger/Immunity Debugger - 1.85.7z new file mode 100644 index 0000000..28b19f2 Binary files /dev/null and b/Dissasembler/Immunity Debugger/Immunity Debugger - 1.85.7z differ diff --git a/Dissasembler/OllyDbg 1.10/OllyDbg - 1.10.7z b/Dissasembler/OllyDbg 1.10/OllyDbg - 1.10.7z new file mode 100644 index 0000000..5ef0464 Binary files /dev/null and b/Dissasembler/OllyDbg 1.10/OllyDbg - 1.10.7z differ diff --git a/Dissasembler/w32Dasm/[++] w32Dasm - 8.93.7z b/Dissasembler/w32Dasm/[++] w32Dasm - 8.93.7z new file mode 100644 index 0000000..566c641 Binary files /dev/null and b/Dissasembler/w32Dasm/[++] w32Dasm - 8.93.7z differ diff --git a/Dissasembler/w32Dasm/[10] w32Dasm - 8.93.7z b/Dissasembler/w32Dasm/[10] w32Dasm - 8.93.7z new file mode 100644 index 0000000..7d0b472 Binary files /dev/null and b/Dissasembler/w32Dasm/[10] w32Dasm - 8.93.7z differ diff --git a/Dissasembler/w32Dasm/[bradpach] w32Dasm - 8.93.7z b/Dissasembler/w32Dasm/[bradpach] w32Dasm - 8.93.7z new file mode 100644 index 0000000..aef1650 Binary files /dev/null and b/Dissasembler/w32Dasm/[bradpach] w32Dasm - 8.93.7z differ diff --git a/Dissasembler/w32Dasm/[original] w32Dasm - 8.93.7z b/Dissasembler/w32Dasm/[original] w32Dasm - 8.93.7z new file mode 100644 index 0000000..96be423 Binary files /dev/null and b/Dissasembler/w32Dasm/[original] w32Dasm - 8.93.7z differ diff --git a/Dissasembler/x64dbg/x64dbg - 2021-02-09_17-28.7z b/Dissasembler/x64dbg/x64dbg - 2021-02-09_17-28.7z new file mode 100644 index 0000000..1083b75 Binary files /dev/null and b/Dissasembler/x64dbg/x64dbg - 2021-02-09_17-28.7z differ diff --git a/HEX Editor/HxD/HxD - 2.4.7z b/HEX Editor/HxD/HxD - 2.4.7z new file mode 100644 index 0000000..920cd88 Binary files /dev/null and b/HEX Editor/HxD/HxD - 2.4.7z differ diff --git a/HEX Editor/WinHex/WinHex - 20.0.7z b/HEX Editor/WinHex/WinHex - 20.0.7z new file mode 100644 index 0000000..d6604a4 Binary files /dev/null and b/HEX Editor/WinHex/WinHex - 20.0.7z differ diff --git a/Monitor/Autoruns/Autoruns - 13.98.7z b/Monitor/Autoruns/Autoruns - 13.98.7z new file mode 100644 index 0000000..101b9f7 Binary files /dev/null and b/Monitor/Autoruns/Autoruns - 13.98.7z differ diff --git a/Monitor/CurrPorts/CurrPorts - 2.63.7z b/Monitor/CurrPorts/CurrPorts - 2.63.7z new file mode 100644 index 0000000..8a13ea3 Binary files /dev/null and b/Monitor/CurrPorts/CurrPorts - 2.63.7z differ diff --git a/Monitor/MultiMon/MultiMon - 3.00.7z b/Monitor/MultiMon/MultiMon - 3.00.7z new file mode 100644 index 0000000..b8034c0 Binary files /dev/null and b/Monitor/MultiMon/MultiMon - 3.00.7z differ diff --git a/Monitor/Portmon/Portmon - 3.03.7z b/Monitor/Portmon/Portmon - 3.03.7z new file mode 100644 index 0000000..ddfe41d Binary files /dev/null and b/Monitor/Portmon/Portmon - 3.03.7z differ diff --git a/Monitor/Process Explorer/Process Explorer - 16.32.7z b/Monitor/Process Explorer/Process Explorer - 16.32.7z new file mode 100644 index 0000000..aa467eb Binary files /dev/null and b/Monitor/Process Explorer/Process Explorer - 16.32.7z differ diff --git a/Monitor/Process Hacker 2/Process Hacker 2 - 2.39.7z b/Monitor/Process Hacker 2/Process Hacker 2 - 2.39.7z new file mode 100644 index 0000000..1597a90 Binary files /dev/null and b/Monitor/Process Hacker 2/Process Hacker 2 - 2.39.7z differ diff --git a/Monitor/Process Hacker 3/Process Hacker 3 - 3.0.3813.7z b/Monitor/Process Hacker 3/Process Hacker 3 - 3.0.3813.7z new file mode 100644 index 0000000..4af289f Binary files /dev/null and b/Monitor/Process Hacker 3/Process Hacker 3 - 3.0.3813.7z differ diff --git a/Monitor/Procmon/Procmon - 3.61.7z b/Monitor/Procmon/Procmon - 3.61.7z new file mode 100644 index 0000000..4cbb0fc Binary files /dev/null and b/Monitor/Procmon/Procmon - 3.61.7z differ diff --git a/Monitor/RegShot/RegShot - 1.9.0.7z b/Monitor/RegShot/RegShot - 1.9.0.7z new file mode 100644 index 0000000..5ca9681 Binary files /dev/null and b/Monitor/RegShot/RegShot - 1.9.0.7z differ diff --git a/Monitor/SysAnalyzer/SysAnalyzer - 2.10.7z b/Monitor/SysAnalyzer/SysAnalyzer - 2.10.7z new file mode 100644 index 0000000..9edb90a Binary files /dev/null and b/Monitor/SysAnalyzer/SysAnalyzer - 2.10.7z differ diff --git a/Monitor/TCPView/TCPView - 3.05.7z b/Monitor/TCPView/TCPView - 3.05.7z new file mode 100644 index 0000000..b564eb4 Binary files /dev/null and b/Monitor/TCPView/TCPView - 3.05.7z differ diff --git a/Other/AVFucker/AVFucker - 1.1.2.7z b/Other/AVFucker/AVFucker - 1.1.2.7z new file mode 100644 index 0000000..3f9572f Binary files /dev/null and b/Other/AVFucker/AVFucker - 1.1.2.7z differ diff --git a/Other/ImpREC/ImpREC - 1.7e.7z b/Other/ImpREC/ImpREC - 1.7e.7z new file mode 100644 index 0000000..81ead24 Binary files /dev/null and b/Other/ImpREC/ImpREC - 1.7e.7z differ diff --git a/Other/Indetectables Offset Locator/Indetectables Offset Locator - 2.6.7z b/Other/Indetectables Offset Locator/Indetectables Offset Locator - 2.6.7z new file mode 100644 index 0000000..5fc06b0 Binary files /dev/null and b/Other/Indetectables Offset Locator/Indetectables Offset Locator - 2.6.7z differ diff --git a/Other/NFO-Tools/ASCII Art Generator/ASCII Art Generator - 3.2.2.7z b/Other/NFO-Tools/ASCII Art Generator/ASCII Art Generator - 3.2.2.7z new file mode 100644 index 0000000..e324294 Binary files /dev/null and b/Other/NFO-Tools/ASCII Art Generator/ASCII Art Generator - 3.2.2.7z differ diff --git a/Other/NFO-Tools/Cool Beans NFO Creator/Cool Beans NFO Creator - 2.0.1.3.7z b/Other/NFO-Tools/Cool Beans NFO Creator/Cool Beans NFO Creator - 2.0.1.3.7z new file mode 100644 index 0000000..29f809a Binary files /dev/null and b/Other/NFO-Tools/Cool Beans NFO Creator/Cool Beans NFO Creator - 2.0.1.3.7z differ diff --git a/Other/NFO-Tools/NFO Maker/NFO Maker - 1.0.7z b/Other/NFO-Tools/NFO Maker/NFO Maker - 1.0.7z new file mode 100644 index 0000000..41e30bd Binary files /dev/null and b/Other/NFO-Tools/NFO Maker/NFO Maker - 1.0.7z differ diff --git a/Other/ShowString/ShowString - 2.0.7z b/Other/ShowString/ShowString - 2.0.7z new file mode 100644 index 0000000..99317e6 Binary files /dev/null and b/Other/ShowString/ShowString - 2.0.7z differ diff --git a/Other/Strings/Strings - 2.53.7z b/Other/Strings/Strings - 2.53.7z new file mode 100644 index 0000000..636247d Binary files /dev/null and b/Other/Strings/Strings - 2.53.7z differ diff --git a/Other/XOpCodeCalc/XOpcodeCalc - 0.02.7z b/Other/XOpCodeCalc/XOpcodeCalc - 0.02.7z new file mode 100644 index 0000000..4a8615a Binary files /dev/null and b/Other/XOpCodeCalc/XOpcodeCalc - 0.02.7z differ diff --git a/README.md b/README.md new file mode 100644 index 0000000..7badfc5 --- /dev/null +++ b/README.md @@ -0,0 +1,19 @@ +# Indetectables Toolkit + +Esta compilación de herramientas está pensada para que sea útil al que se inicia, a los más avanzados, +al que quiere entrar en el análisis de malware y también para los que quieren probar suerte en el mundo del cracking. + +Es el complemento ideal para ser usado con para empezar con los [manuales](https://github.com/indetectables-net/manuals) del sitio. + +## Instalación + +Puede clonar el repo con [git](https://git-scm.com/download/win) o simplemente bajarlo desde descargar. + +```bash +git clone https://github.com/indetectables-net/toolkit +``` + +## Contribuciones +Los pull requests son bienvenidos. Para cambios importantes abra primero un issue para analizarlo entre todos. + +Las herramientas están comprimidas con 7zip y el formato usado para los nombres es {nombre} - {version}.7z diff --git a/Rootkits Detector/GMER/GMER - 2.2.19882.7z b/Rootkits Detector/GMER/GMER - 2.2.19882.7z new file mode 100644 index 0000000..c60f122 Binary files /dev/null and b/Rootkits Detector/GMER/GMER - 2.2.19882.7z differ diff --git a/Rootkits Detector/Sysinspector/SysInspector - 1.4.2.0.7z b/Rootkits Detector/Sysinspector/SysInspector - 1.4.2.0.7z new file mode 100644 index 0000000..4f48ce7 Binary files /dev/null and b/Rootkits Detector/Sysinspector/SysInspector - 1.4.2.0.7z differ diff --git a/Rootkits Detector/Windows Kernel Explorer/Windows Kernel Explorer - 20201111.7z b/Rootkits Detector/Windows Kernel Explorer/Windows Kernel Explorer - 20201111.7z new file mode 100644 index 0000000..6d20943 Binary files /dev/null and b/Rootkits Detector/Windows Kernel Explorer/Windows Kernel Explorer - 20201111.7z differ diff --git a/UnPacking/GUnPacker/GUnPacker - 0.5.7z b/UnPacking/GUnPacker/GUnPacker - 0.5.7z new file mode 100644 index 0000000..c566f7c Binary files /dev/null and b/UnPacking/GUnPacker/GUnPacker - 0.5.7z differ diff --git a/UnPacking/NETUnpack/NETUnpack - 1.0.0.1.7z b/UnPacking/NETUnpack/NETUnpack - 1.0.0.1.7z new file mode 100644 index 0000000..ee61872 Binary files /dev/null and b/UnPacking/NETUnpack/NETUnpack - 1.0.0.1.7z differ diff --git a/UnPacking/QUnpack/QUnpack - 2.2.7z b/UnPacking/QUnpack/QUnpack - 2.2.7z new file mode 100644 index 0000000..f458139 Binary files /dev/null and b/UnPacking/QUnpack/QUnpack - 2.2.7z differ diff --git a/UnPacking/QUnpack/QUnpack - 3.4.7z b/UnPacking/QUnpack/QUnpack - 3.4.7z new file mode 100644 index 0000000..24f9b4b Binary files /dev/null and b/UnPacking/QUnpack/QUnpack - 3.4.7z differ diff --git a/UnPacking/QUnpack/QUnpack - 4.3.7z b/UnPacking/QUnpack/QUnpack - 4.3.7z new file mode 100644 index 0000000..c277a83 Binary files /dev/null and b/UnPacking/QUnpack/QUnpack - 4.3.7z differ diff --git a/UnPacking/RL!dePacker/RL!dePacker - 1.5.7z b/UnPacking/RL!dePacker/RL!dePacker - 1.5.7z new file mode 100644 index 0000000..d670d4e Binary files /dev/null and b/UnPacking/RL!dePacker/RL!dePacker - 1.5.7z differ diff --git a/UnPacking/UniExtract/UniExtract - 2.0.0-rc.3.7z b/UnPacking/UniExtract/UniExtract - 2.0.0-rc.3.7z new file mode 100644 index 0000000..028bb7c Binary files /dev/null and b/UnPacking/UniExtract/UniExtract - 2.0.0-rc.3.7z differ diff --git a/UnPacking/VM Unpacker/VM Unpacker - 1.6.7z b/UnPacking/VM Unpacker/VM Unpacker - 1.6.7z new file mode 100644 index 0000000..d0d26c0 Binary files /dev/null and b/UnPacking/VM Unpacker/VM Unpacker - 1.6.7z differ diff --git a/UnPacking/XVolkolak/XVolkolak - 0.22.7z b/UnPacking/XVolkolak/XVolkolak - 0.22.7z new file mode 100644 index 0000000..79606a1 Binary files /dev/null and b/UnPacking/XVolkolak/XVolkolak - 0.22.7z differ diff --git a/Updater/tools.ini b/Updater/tools.ini new file mode 100644 index 0000000..fb51535 --- /dev/null +++ b/Updater/tools.ini @@ -0,0 +1,192 @@ +[DIE] +folder = Analysis\DIE +url = https://github.com/horsicq/DIE-engine +from = github +local_version = 3.01 +re_version = ]*>(.*?) +re_download = "(.*?/die_win64_portable_(?:\S+).zip)" + +[ExeinfoPe] +folder = Analysis\ExeinfoPe +url = https://github.com/ExeinfoASL/ASL +update_url = https://github.com/ExeinfoASL/ASL/raw/master/exeinfope.zip +from = web +local_version = 0.0.6.3 +re_version = Version : (.*?) - + +[XELFViewer] +folder = Analysis\XELFViewer +url = https://github.com/horsicq/XELFViewer +from = github +local_version = 0.01 +re_version = ]*>(.*?) +re_download = "(.*?/xelfviewer_win32_portable_(?:\S+).zip)" + +[XPEViewer] +folder = Analysis\XPEViewer +url = https://github.com/horsicq/XPEViewer +from = github +local_version = 0.01 +re_version = ]*>(.*?) +re_download = "(.*?/xpeviewer_win32_portable_(?:\S+).zip)" + +[XAPKDetector] +folder = Analysis\XAPKDetector +url = https://github.com/horsicq/XAPKDetector +from = github +local_version = 0.01 +re_version = ]*>(.*?) +re_download = "(.*?/xapkdetector_win64_portable_(?:\S+).zip)" + +[JADX] +folder = Decompilers\[ANDROID] JADX +url = https://github.com/skylot/jadx +from = github +local_version = 1.2.0 +re_version = ]*>v(.*?) +re_download = "(.*?/jadx-gui-(?:\S+)-with-jre-win.zip)" + +[DnSpy] +folder = Decompilers\[DOTNET] DnSpy +url = https://github.com/dnSpy/dnSpy +from = github +local_version = 6.1.8 +re_version = ]*>v(.*?) +re_download = "(.*?/dnSpy-net-win64.zip)" + +[ILSpy] +folder = Decompilers\[DOTNET] ILSpy +url = https://github.com/icsharpcode/ILSpy +from = github +local_version = 7.0-preview2 +re_version = ]*>v(.*?) +re_download = "(.*?/ILSpy_binaries_(?:\S+).zip)" + +[JD-GUI] +folder = Decompilers\[JAVA] JD-GUI +url = https://github.com/java-decompiler/jd-gui +from = github +local_version = 1.6.6 +re_version = ]*>v(.*?) +re_download = "(.*?/jd-gui-windows-(?:\S+).zip)" + +[x64dbg] +folder = Dissasembler\x64dbg +url = https://sourceforge.net/projects/x64dbg/files/snapshots/ +update_url = https://razaoinfo.dl.sourceforge.net/project/x64dbg/snapshots/ +from = web +local_version = 2021-02-09_17-28 +re_version = snapshot_(.*?).zip +re_download = (.*?) \( + +[Autoruns] +folder = Monitor\Autoruns +url = https://docs.microsoft.com/en-us/sysinternals/downloads/autoruns +from = web +local_version = 13.98 +re_version =

]*>Autoruns for Windows v(.*?)

+re_download = "(.*?/Autoruns.zip)" + +[CurrPorts] +folder = Monitor\CurrPorts +url = https://www.nirsoft.net/utils/cports.html +update_url = https://www.nirsoft.net/utils/cports.zip +from = web +local_version = 2.63 +re_version = CurrPorts v(.*?) - Monitoring Opened + +[Portmon] +folder = Monitor\Portmon +url = https://docs.microsoft.com/en-us/sysinternals/downloads/portmon +update_url = https://download.sysinternals.com/files/PortMon.zip +from = web +local_version = 3.03 +re_version =

]*>Portmon for Windows v(.*?)

+ +[Process Explorer] +folder = Monitor\Process Explorer +url = https://docs.microsoft.com/en-us/sysinternals/downloads/process-explorer +update_url = https://download.sysinternals.com/files/ProcessExplorer.zip +from = web +local_version = 16.32 +re_version =

]*>Process Explorer v(.*?)

+ +[Process Hacker 2] +folder = Monitor\Process Hacker 2 +url = https://github.com/processhacker/processhacker +from = github +local_version = 2.39 +re_version = ]*>v(.*?) +re_download = "(.*?/processhacker-(?:\S+)-bin.zip)" + +[Process Hacker 3] +folder = Monitor\Process Hacker 3 +url = https://processhacker.sourceforge.io/nightly.php +from = web +local_version = 3.0.3813 +re_version = Build: (.*?) +re_download = href="(.*?artifacts/processhacker-(?:\S+)-bin.zip) + +[Procmon] +folder = Monitor\Procmon +url = https://docs.microsoft.com/en-us/sysinternals/downloads/procmon +update_url = https://download.sysinternals.com/files/ProcessMonitor.zip +from = web +local_version = 3.61 +re_version =

]*>Process Monitor v(.*?)

+ +[TCPView] +folder = Monitor\TCPView +url = https://docs.microsoft.com/en-us/sysinternals/downloads/tcpview +update_url = https://download.sysinternals.com/files/TCPView.zip +from = web +local_version = 3.05 +re_version =

]*>TCPView v(.*?)

+ +[Strings] +folder = Other\Strings +url = https://docs.microsoft.com/en-us/sysinternals/downloads/strings +update_url = https://download.sysinternals.com/files/Strings.zip +from = web +local_version = 2.53 +re_version =

]*>Strings v(.*?)

+ +[XOpcodeCalc] +folder = Other\XOpcodeCalc +url = https://github.com/horsicq/XOpcodeCalc +from = github +local_version = 0.02 +re_version = ]*>(.*?) +re_download = "(.*?/xopcodecalc_win64_portable_(?:\S+).zip)" + +[Windows Kernel Explorer] +folder = Rootkits Detector\Windows Kernel Explorer +url = https://github.com/AxtMueller/Windows-Kernel-Explorer +update_url = https://github.com/AxtMueller/Windows-Kernel-Explorer/raw/master/binaries/WKE64.exe +from = web +local_version = 20201111 +re_version = >Current Version: (.*?)< + +[SysInspector] +folder = Rootkits Detector\SysInspector +url = https://www.eset.com/ar/soporte/diagnostico-de-pc-gratuito/?type=13554&tx_esetdownloads_ajax[product]=46&tx_esetdownloads_ajax[beta]=0&tx_esetdownloads_ajax[page_id]=17328&tx_esetdownloads_ajax[plugin_id]=571902&tx_esetdownloads_ajax[product]=46&tx_esetdownloads_ajax[beta]=0&tx_esetdownloads_ajax[page_id]=17328&tx_esetdownloads_ajax[plugin_id]=571902 +update_url = https://download.eset.com/com/eset/tools/diagnosis/sysinspector/latest/sysinspector_nt64_esn.exe +from = web +local_version = 1.4.2.0 +re_version = "full_version":"(.*?)" + +[GMER] +folder = Rootkits Detector\GMER +url = http://www.gmer.net +update_url = http://www2.gmer.net/gmer.zip +from = web +local_version = 2.2.19882 +re_version = GMER (.*?)<\/STRONG> + +[UniExtract] +folder = UnPacking\UniExtract +url = https://github.com/Bioruebe/UniExtract2 +from = github +local_version = 2.0.0-rc.3 +re_version = ]*>v(.*?) +re_download = "(.*?/UniExtract(?:\S+).zip)" diff --git a/Updater/updater.py b/Updater/updater.py new file mode 100644 index 0000000..f4c4a54 --- /dev/null +++ b/Updater/updater.py @@ -0,0 +1,191 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2021 DSR! +# Released under the terms of the MIT License +# Developed for Python 3.6+ +# pip install requests py7zr + +import configparser +import requests +import re +import os +import shutil +import pathlib +import zipfile +import py7zr + + +# Helpers functions +def get_filename_from_url(url): + fragment_removed = url.split('#')[0] # keep to left of first # + query_string_removed = fragment_removed.split('?')[0] + scheme_removed = query_string_removed.split('://')[-1].split(':')[-1] + + if scheme_removed.find('/') == -1: + return '' + + return os.path.basename(scheme_removed) + + +def cleanup_folder(path): + for file in os.listdir(path): + full_path = os.path.join(path, file) + if os.path.isdir(full_path): + shutil.rmtree(full_path) + else: + os.remove(full_path) + + +# Steps +def handle_updates(): + for ini_name in config.sections(): + try: + update_tool(ini_name) + except Exception as exception: + print(exception) + + cleanup_folder(updates_path) + + +def update_tool(name): + # generate download url + from_url = config.get(name, 'from') + download_url = config.get(name, 'url') + if from_url == 'github': + download_url = '{0}/releases/latest'.format(download_url) + + # load html + html_response = requests.get(download_url) + html_response.raise_for_status() + + # regex shit + latest_version = check_version(name, html_response.text) + update_download_url = get_download_url(name, html_response.text, from_url) + + # download + cleanup_folder(updates_path) + file_path = download(name, update_download_url, updates_path) + file_info = os.path.splitext(file_path) + + # processing file + print('{0}: processing file'.format(name)) + unpack_path = os.path.join(updates_path, file_info[0]) + unpack(file_path, file_info, unpack_path) + repack(name, unpack_path, latest_version) + + # end! + print('{0}: update complete'.format(name)) + + +def check_version(name, html): + # https://api.github.com/repos/horsicq/DIE-engine/releases/latest + # python -c 'import json,sys;obj=json.load(sys.stdin);print obj["assets"][0]["browser_download_url"];' + local_version = config.get(name, 'local_version') + re_version = config.get(name, 're_version') + html_regex_version = re.findall(re_version, html) + + if not html_regex_version: + raise Exception('{0}: re_version not match'.format(name)) + + if local_version == html_regex_version[0]: + raise Exception('{0}: {1} is the latest version'.format(name, local_version)) + + print('{0}: updated from {1} --> {2}'.format(name, local_version, html_regex_version[0])) + + return html_regex_version[0] + + +def get_download_url(name, html, from_url): + # case 1: if update_url is set... download it! + update_download_url = config.get(name, 'update_url', fallback=None) + re_download = config.get(name, 're_download', fallback=None) + + # case 2: if update_url is not set, scrape the link from html (ex: nirsoft) + if not update_download_url: + html_regex_download = re.findall(re_download, html) + if not html_regex_download: + raise Exception('{0}: re_download not match'.format(name)) + + # fix github url + update_download_url = html_regex_download[0] + if from_url == 'github': + update_download_url = 'https://github.com{0}'.format(update_download_url) + + # case 3: if update_url and re_download is set.... generate download link (ex: sourceforge) + elif re_download: + html_regex_download = re.findall(re_download, html) + if not html_regex_download: + raise Exception('{0}: re_download not match'.format(name)) + + update_download_url = '{0}{1}'.format(update_download_url, html_regex_download[0]) + + if not update_download_url: + raise Exception('{0}: update_download_url not generated!'.format(name)) + + return update_download_url + + +def download(name, url, download_path): + # prepare + file_name = get_filename_from_url(url) + file_path = os.path.join(download_path, file_name) + print('{0}: downloading update "{1}"'.format(name, file_name)) + + # download + file_response = requests.get(url, stream=True) + file_response.raise_for_status() + + with open(file_path, 'wb') as handle: + for block in file_response.iter_content(1024): + handle.write(block) + + return file_path + + +def unpack(file_path, file_info, unpack_path): + if file_info[1] == '.zip': + with zipfile.ZipFile(file_path, 'r') as compressed: + compressed.extractall(unpack_path) + + elif file_info[1] == '.7z': + with py7zr.SevenZipFile(file_path, 'r') as compressed: + compressed.extractall(unpack_path) + + else: + pathlib.Path(unpack_path).mkdir(exist_ok=True) + shutil.copy2(file_path, unpack_path) + + +def repack(name, unpack_path, version): + # prepare + tool_folder_name = config.get(name, 'folder') + tool_folder_path = os.path.join(os.path.dirname(current_path), tool_folder_name) + tool_name = '{0} - {1}.7z'.format(name, version) + tmp_tool_path = os.path.join(os.path.dirname(unpack_path), tool_name) + + # dirty hack for correct folders structure + folder_list = os.listdir(unpack_path) + folder_sample = os.path.join(unpack_path, folder_list[0]) + if len(folder_list) == 1 & os.path.isdir(folder_sample): + unpack_path = folder_sample + + # update tool + with py7zr.SevenZipFile(tmp_tool_path, 'w') as archive: + archive.writeall(unpack_path, arcname='') + + pathlib.Path(tool_folder_path).mkdir(parents=True, exist_ok=True) + cleanup_folder(tool_folder_path) + shutil.copy2(tmp_tool_path, tool_folder_path) + + # update local version data + config.set(name, 'local_version', version) + with open('tools.ini', 'w') as configfile: + config.write(configfile) + + +# se fini +current_path = os.fsdecode(os.getcwdb()) +updates_path = os.path.join(current_path, 'updates') +config = configparser.ConfigParser() +config.read('tools.ini') +handle_updates()