|
5 | 5 | import mpt.config |
6 | 6 | from mpt.config import Config |
7 | 7 |
|
8 | | -__version__ = '0.7.56' |
| 8 | +__version__ = '0.7.57' |
9 | 9 | HOME_FOLDER = expanduser("~") |
10 | 10 | DEFAULT_MOBILE_FOLDER = os.path.join(HOME_FOLDER, "tools/MOBILE/") |
11 | 11 | MPT_BIN = os.path.join(DEFAULT_MOBILE_FOLDER, 'bin') |
|
28 | 28 | # sh does not support source command and it was replaces with . |
29 | 29 | # "The . is POSIX-compliant and also works in /bin/sh." |
30 | 30 |
|
| 31 | + |
| 32 | +# ANDROID_TOOLS Versions |
| 33 | +# for the tools without version use release date e.g. 2025.03.07 |
| 34 | +VERSION_MOBSF = '4.3.0' # check: 'https://github.com/MobSF/Mobile-Security-Framework-MobSF' |
| 35 | +VERSION_RMS = '1.5.23' # check: https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security', |
| 36 | +VERSION_OBJECTION = '1.11.0' |
| 37 | +VERSION_SPOTBUGS = '4.9.3' |
| 38 | +VERSION_JADX = '1.5.1' |
| 39 | +VERSION_JD_GUI = '1.6.6' |
| 40 | +VERSION_LUYTEN = '0.5.4' |
| 41 | +VERSION_SQLITESTUDIO = '3.4.17' |
| 42 | +VERSION_PIDCAT = '2018.12.22' # check: https://github.com/healthluck/pidcat-ex |
| 43 | +VERSION_PIDCAT_EX = '2018.12.22' # check: https://github.com/healthluck/pidcat-ex.git |
| 44 | +VERSION_ADUS = '2025.03.19' # check https://github.com/ByteSnipers/adus |
| 45 | +VERSION_FRIDUMP = '2024.11.07' # check https://github.com/rootbsd/fridump3 |
| 46 | +VERSION_AAPT = 'r34-rc3' |
| 47 | +VERSION_ADB = '35.0.2' # check version https://developer.android.com/tools/releases/platform-tools |
| 48 | +VERSION_ABE = '2025.01.15' |
| 49 | +VERSION_APKTOOL = '2.11.1' |
| 50 | +VERSION_DEX2JAR = '2.4' |
| 51 | +VERSION_JANUS = '2023.05.16' |
| 52 | +VERSION_LINUX_ROUTER = '2024.12.18' |
| 53 | +VERSION_KITTY = '0.40.1' |
| 54 | +VERSION_SCRCPY = '3.1' |
| 55 | + |
| 56 | + |
31 | 57 | ANDROID_TOOLS = { |
32 | 58 | # available parameters |
33 | 59 | # bin |
|
71 | 97 | 'MobSF': { |
72 | 98 | # check updates: 'https://github.com/MobSF/Mobile-Security-Framework-MobSF' |
73 | 99 | # fix dependency in mobSF (remove if not required) -> sed -i \'s/packaging = ">=21\.3,<22\.0"/packaging = ">=24\.2"/\' pyproject.toml |
74 | | - 'url': 'https://github.com/MobSF/Mobile-Security-Framework-MobSF/archive/refs/tags/v4.3.0.zip', |
| 100 | + # 'url': 'https://github.com/MobSF/Mobile-Security-Framework-MobSF/archive/refs/tags/v4.3.0.zip', |
| 101 | + 'version': VERSION_MOBSF, |
| 102 | + 'url': f'https://github.com/MobSF/Mobile-Security-Framework-MobSF/archive/refs/tags/v{VERSION_MOBSF}.zip', |
75 | 103 | 'info': 'Mobile Security Framework (MobSF)', |
76 | 104 | 'bin': 'cd {}; python -m venv venv; . ./venv/bin/activate; . ./run.sh'.format(os.path.join(conf.load_config('install-dir'), 'MobSF')), |
77 | 105 | 'bin_info': 'Open MobSF in browser: http://127.0.0.1:8000 (Press CTRL+C to quit)', |
78 | 106 | 'dir': 'MobSF', |
79 | 107 | 'install': 'http', |
80 | | - 'post': 'mv Mobile-Security-Framework-MobSF-4.3.0 MobSF; cd MobSF; python -m venv venv; . ./venv/bin/activate; pip install poetry; . ./setup.sh', |
| 108 | + 'post': f'mv Mobile-Security-Framework-MobSF-{VERSION_MOBSF} MobSF; cd MobSF; python -m venv venv; . ./venv/bin/activate; pip install poetry; . ./setup.sh', |
81 | 109 | }, |
82 | 110 |
|
83 | 111 | # RMS installation old version |
|
95 | 123 | 'RMS': { |
96 | 124 | # check 'https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security', |
97 | 125 | # |
98 | | - # HOW TO SELECT A RIGHT NODEJS VERSION ?? |
| 126 | + # HOW TO SELECT A RIGHT Node.js VERSION ?? |
99 | 127 | # https://github.com/ChiChou/Grapefruit/wiki/How-do-I-decide-which-version-of-nodejs-to-use%3F |
100 | 128 | # |
101 | 129 | # You need to find the right node version. To check which nodejs is supported, you can refer to these two pages: |
|
107 | 135 | # we need to install v22.12.0 |
108 | 136 | # put the correct version in post command "... nodeenv --python-virtualenv --node 22.12.0 ..." |
109 | 137 | # |
| 138 | + 'version': VERSION_RMS, |
110 | 139 | 'info': 'Runtime Mobile Security (RMS)', |
111 | 140 | 'dir': 'RMS', |
112 | 141 | 'bin': 'cd {}; . ./venv/bin/activate; rms'.format(os.path.join(conf.load_config('install-dir'), 'RMS')), |
113 | 142 | 'bin_info': 'Running on http://127.0.0.1:5491/ (Press CTRL+C to quit)', |
114 | 143 | 'install': 'local', |
115 | | - # install nodejs locally within the python virtual environment |
| 144 | + # install Node.js locally within the python virtual environment |
116 | 145 | 'post': 'cd RMS; python -m venv venv; . ./venv/bin/activate; pip install nodeenv; nodeenv --python-virtualenv --node 22.12.0; npm install -g rms-runtime-mobile-security', |
117 | 146 | }, |
118 | 147 | 'objection': { |
119 | 148 | # check: 'https://github.com/sensepost/objection', |
| 149 | + 'version': VERSION_OBJECTION, |
120 | 150 | 'info': 'Runtime Mobile Exploration Toolkit', |
121 | 151 | 'dir': 'objection', |
122 | 152 | # 'bin_info': 'Please run "frida-ps -U" to find an app and start objection with the following command:\nobjection --gadget "<APP-NAME>" explore', |
|
126 | 156 | 'post': 'cd objection; python -m venv venv; . ./venv/bin/activate; pip install --upgrade setuptools; pip install -U objection' |
127 | 157 | }, |
128 | 158 | 'spotbugs': { |
129 | | - # check: 'https://github.com/spotbugs/spotbugs/releases', |
130 | | - 'url': 'https://github.com/spotbugs/spotbugs/releases/download/4.9.3/spotbugs-4.9.3.zip', |
| 159 | + #'url': 'https://github.com/spotbugs/spotbugs/releases/download/4.9.3/spotbugs-4.9.3.zip', |
| 160 | + 'version': VERSION_SPOTBUGS, |
| 161 | + 'url': f'https://github.com/spotbugs/spotbugs/releases/download/{VERSION_SPOTBUGS}/spotbugs-{VERSION_SPOTBUGS}.zip', |
131 | 162 | 'info': 'Static code analysis for vulnerabilities and bugs', |
132 | 163 | 'dir': 'spotbugs', |
133 | 164 | 'bin': f'cd {os.path.join(conf.load_config('install-dir'), 'spotbugs')}; ./bin/spotbugs', |
134 | 165 | 'install': 'http', |
135 | | - 'post': 'mv spotbugs-4.9.3 spotbugs', |
| 166 | + 'post': f'mv spotbugs-{VERSION_SPOTBUGS} spotbugs', |
136 | 167 | 'bin_global': {'spotbugs': 'bin/spotbugs'} |
137 | 168 | }, |
138 | 169 | 'jadx': { |
139 | 170 | # check updates: 'https://github.com/skylot/jadx/releases' |
140 | | - 'url': 'https://github.com/skylot/jadx/releases/download/v1.5.1/jadx-1.5.1.zip', |
| 171 | + # 'url': 'https://github.com/skylot/jadx/releases/download/v1.5.1/jadx-1.5.1.zip', |
| 172 | + 'version': VERSION_JADX, |
| 173 | + 'url': f'https://github.com/skylot/jadx/releases/download/v{VERSION_JADX}/jadx-{VERSION_JADX}.zip', |
141 | 174 | 'info': 'Dex to Java decompiler', |
142 | 175 | 'bin': os.path.join(conf.load_config('install-dir'), 'jadx/bin/jadx-gui'), |
143 | 176 | 'dir': 'jadx', |
|
148 | 181 | }, |
149 | 182 | 'jd-gui': { |
150 | 183 | # check updates: 'https://github.com/java-decompiler/jd-gui/releases' |
151 | | - 'url': 'https://github.com/java-decompiler/jd-gui/releases/download/v1.6.6/jd-gui-1.6.6.jar', |
| 184 | + #'url': 'https://github.com/java-decompiler/jd-gui/releases/download/v1.6.6/jd-gui-1.6.6.jar', |
| 185 | + 'version': VERSION_JD_GUI, |
| 186 | + 'url': f'https://github.com/java-decompiler/jd-gui/releases/download/v{VERSION_JD_GUI}/jd-gui-{VERSION_JD_GUI}.jar', |
152 | 187 | 'info': 'Java Decompiler, dex2jar required', |
153 | 188 | 'bin': os.path.join(conf.load_config('install-dir'), 'jd-gui/jd-gui.jar'), |
154 | 189 | 'dir': 'jd-gui', |
155 | 190 | 'install': 'http', |
156 | 191 | }, |
157 | 192 | 'luyten': { |
158 | 193 | # check updates https://github.com/deathmarine/Luyten/releases |
159 | | - 'url': 'https://github.com/deathmarine/Luyten/releases/download/v0.5.4_Rebuilt_with_Latest_depenencies/luyten-0.5.4.jar', |
| 194 | + # 'url': f'https://github.com/deathmarine/Luyten/releases/download/v0.5.4_Rebuilt_with_Latest_depenencies/luyten-0.5.4.jar', |
| 195 | + 'version': VERSION_LUYTEN, |
| 196 | + 'url': f'https://github.com/deathmarine/Luyten/releases/download/v{VERSION_LUYTEN}_Rebuilt_with_Latest_depenencies/luyten-{VERSION_LUYTEN}.jar', |
160 | 197 | 'info': 'Java Decompiler Gui for Procyon', |
161 | 198 | 'bin': os.path.join(conf.load_config('install-dir'), 'luyten/luyten.jar'), |
162 | 199 | 'dir': 'luyten', |
163 | 200 | 'install': 'http' |
164 | 201 | }, |
165 | 202 | 'sqlitestudio': { |
166 | 203 | # check updates : https://github.com/pawelsalawa/sqlitestudio/releases |
167 | | - 'url': 'https://github.com/pawelsalawa/sqlitestudio/releases/download/3.4.17/sqlitestudio-3.4.17-linux-x64.tar.xz', |
| 204 | + #VERSION_SQLITESTUDIO |
| 205 | + 'version': VERSION_SQLITESTUDIO, |
| 206 | + # 'url': 'https://github.com/pawelsalawa/sqlitestudio/releases/download/3.4.17/sqlitestudio-3.4.17-linux-x64.tar.xz', |
| 207 | + 'url': f'https://github.com/pawelsalawa/sqlitestudio/releases/download/{VERSION_SQLITESTUDIO}/sqlitestudio-{VERSION_SQLITESTUDIO}-linux-x64.tar.xz', |
168 | 208 | 'info': 'Multi-platform SQLite database manager', |
169 | 209 | 'dir': 'SQLiteStudio', |
170 | 210 | 'bin': os.path.join(conf.load_config('install-dir'), 'SQLiteStudio/sqlitestudio'), |
171 | 211 | 'install': 'http', |
172 | 212 | 'bin_global': {'sqlitestudio': 'sqlitestudio', 'sqlitestudiocli': 'sqlitestudiocli'} |
173 | 213 | }, |
174 | 214 | 'pidcat': { |
| 215 | + 'version': VERSION_PIDCAT, |
175 | 216 | 'url': 'https://github.com/JakeWharton/pidcat', |
176 | 217 | 'info': 'excellent logcat color script', |
177 | 218 | 'bin': os.path.join(conf.load_config('install-dir') + 'pidcat/pidcat.py'), |
178 | 219 | 'dir': 'pidcat', |
179 | 220 | 'install': 'git' |
180 | 221 | }, |
181 | 222 | 'pidcat-ex': { |
| 223 | + 'version': VERSION_PIDCAT_EX, |
182 | 224 | 'url': 'https://github.com/healthluck/pidcat-ex.git', |
183 | 225 | 'info': 'PID Cat (extended version)', |
184 | 226 | 'bin': os.path.join(conf.load_config('install-dir') + 'pidcat-ex/pidcat-ex.py'), |
185 | 227 | 'dir': 'pidcat-ex', |
186 | 228 | 'install': 'git' |
187 | 229 | }, |
188 | 230 | 'adus': { |
| 231 | + 'version': VERSION_ADUS, |
189 | 232 | 'url': 'https://github.com/ByteSnipers/adus', |
190 | 233 | 'info': 'Bash script to dump, build and sign apk', |
191 | 234 | 'bin': os.path.join(conf.load_config('install-dir') + 'adus/adus.sh'), |
|
195 | 238 | 'fridump': { |
196 | 239 | # check https://github.com/rootbsd/fridump3 (updated version) |
197 | 240 | # https://github.com/Nightbringer21/fridump (obsolete version) |
| 241 | + 'version': VERSION_FRIDUMP, |
198 | 242 | 'url': 'https://github.com/rootbsd/fridump3', |
199 | 243 | 'info': 'Memory dumping tool using frida', |
200 | 244 | 'bin': f'cd {os.path.join(conf.load_config('install-dir'),'fridump')}; . ./venv/bin/activate; python fridump3.py', |
|
203 | 247 | 'post': 'cd fridump; python -m venv venv; . ./venv/bin/activate; pip install --upgrade frida-tools; chmod +x fridump3.py' |
204 | 248 | }, |
205 | 249 | 'adb': { |
| 250 | + 'version' : VERSION_ADB, |
206 | 251 | 'url': 'https://dl.google.com/android/repository/platform-tools-latest-linux.zip', |
207 | 252 | 'info': 'Android Debug Bridge (adb)', |
208 | 253 | 'dir': 'platform-tools', |
|
215 | 260 | # URL examples |
216 | 261 | # version + RC: https://dl.google.com/android/repository/build-tools_r34-rc3-linux.zip' |
217 | 262 | # version: https://dl.google.com/android/repository/build-tools_r34-linux.zip # android 14 |
218 | | - 'url': 'https://dl.google.com/android/repository/build-tools_r34-rc3-linux.zip', # android 14 |
| 263 | + 'version' : VERSION_AAPT, |
| 264 | + 'url': f'https://dl.google.com/android/repository/build-tools_{VERSION_AAPT}-linux.zip', # android 14 |
219 | 265 | 'info': 'Android Asset Packaging Tool', |
220 | 266 | 'bin': os.path.join(conf.load_config('install-dir'), 'build-tools/aapt'), |
221 | 267 | 'dir': 'build-tools', |
|
227 | 273 | }, |
228 | 274 | 'abe': { |
229 | 275 | # check updates: https://github.com/nelenkov/android-backup-extractor/releases |
| 276 | + 'version' : VERSION_ABE, |
230 | 277 | 'url': 'https://github.com/nelenkov/android-backup-extractor/releases/download/latest/abe-0059753.jar', # 2024-11 |
231 | 278 | 'info': 'Android backup extractor, android:allowBackup="true" required', |
232 | 279 | 'bin': os.path.join(conf.load_config('install-dir'), 'abe/abe.jar'), |
233 | 280 | 'dir': 'abe', |
234 | 281 | 'install': 'http' |
235 | 282 | }, |
236 | | - 'signapk': { |
237 | | - 'url': 'https://github.com/appium-boneyard/sign', |
238 | | - 'info': 'sign an apk with the Android test certificate', |
239 | | - 'bin': os.path.join(conf.load_config('install-dir'),'sign/dist/signapk.jar'), # not tested |
240 | | - 'dir': 'sign', |
241 | | - 'install': 'git' |
242 | | - }, |
243 | 283 | 'apktool': { |
244 | 284 | # check https://bitbucket.org/iBotPeaches/apktool/downloads/ and https://apktool.org/blog |
245 | | - 'url': 'https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.11.1.jar', |
| 285 | + 'version': VERSION_APKTOOL, |
| 286 | + # 'url': 'https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.11.1.jar', |
| 287 | + 'url': f'https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_{VERSION_APKTOOL}.jar', |
246 | 288 | 'info': 'A tool for reverse engineering Android apk files', |
247 | 289 | 'bin': os.path.join(conf.load_config('install-dir'), 'apktool/apktool.jar'), |
248 | 290 | 'dir': 'apktool', |
249 | 291 | 'install': 'http' |
250 | 292 | }, |
251 | 293 | 'dex2jar': { |
252 | 294 | # check https://github.com/pxb1988/dex2jar/ |
253 | | - 'url': 'https://github.com/pxb1988/dex2jar/releases/download/v2.4/dex-tools-v2.4.zip', |
| 295 | + 'version': VERSION_DEX2JAR, |
| 296 | + 'url': f'https://github.com/pxb1988/dex2jar/releases/download/v2.4/dex-tools-v{VERSION_DEX2JAR}.zip', |
254 | 297 | 'info': 'Convert the Dalvik Executable (.dex) file to jar', |
255 | 298 | 'bin': os.path.join(conf.load_config('install-dir'), 'dex2jar/d2j-dex2jar.sh'), |
256 | 299 | 'dir': 'dex2jar', |
257 | 300 | 'install': 'http', |
258 | | - 'post': 'mv dex-tools-v2.4 dex2jar', |
| 301 | + 'post': f'mv dex-tools-v{VERSION_DEX2JAR} dex2jar', |
259 | 302 | 'bin_global': { |
260 | 303 | 'd2j-apk-sign.sh': 'd2j-apk-sign.sh', 'd2j-asm-verify.sh': 'd2j-asm-verify.sh', 'd2j-baksmali.sh': 'd2j-baksmali.sh', |
261 | 304 | 'd2j-class-version-switch.sh': 'd2j-class-version-switch.sh', 'd2j-decrypt-string.sh': 'd2j-decrypt-string.sh', 'd2j-dex2jar.sh': 'd2j-dex2jar.sh', |
|
266 | 309 | } |
267 | 310 | }, |
268 | 311 | 'janus': { |
| 312 | + 'version': VERSION_JANUS, |
269 | 313 | 'url': 'https://github.com/ppapadatis/python-janus-vulnerability-scan', |
270 | 314 | 'info': 'scans an APK and an Android device for CVE-2017–13156', |
271 | 315 | 'bin': 'cd {}; . ./venv/bin/activate; python janus.py'.format(os.path.join(conf.load_config('install-dir'), 'python-janus-vulnerability-scan')), |
|
274 | 318 | 'post': 'cd python-janus-vulnerability-scan; python -m venv venv; . ./venv/bin/activate; pip install -r requirements.txt' |
275 | 319 | }, |
276 | 320 | 'linux-router': { |
| 321 | + 'version': VERSION_LINUX_ROUTER, |
277 | 322 | 'url': 'https://github.com/garywill/linux-router', |
278 | 323 | 'info': 'Set Linux as router in one command. Able to provide Internet, or create WiFi hotspot', |
279 | 324 | 'bin': 'cd {}; sudo ./lnxrouter'.format(os.path.join(conf.load_config('install-dir'), 'linux-router')), |
|
284 | 329 | 'kitty': { |
285 | 330 | # check https://sw.kovidgoyal.net/kitty/binary/ |
286 | 331 | # requirement tool to objection execution with interactive cli |
| 332 | + 'version': VERSION_KITTY, |
287 | 333 | 'info': 'The fast, feature-rich, GPU based terminal emulator', |
288 | 334 | 'bin': os.path.join(conf.load_config('install-dir'), 'kitty/kitty.app/bin/kitty'), |
289 | 335 | 'dir': 'kitty', |
|
292 | 338 | }, |
293 | 339 | 'scrcpy': { |
294 | 340 | # check version and replace file: https://github.com/Genymobile/scrcpy/releases |
295 | | - 'url': 'https://github.com/Genymobile/scrcpy/releases/download/v3.1/scrcpy-linux-x86_64-v3.1.tar.gz', |
| 341 | + 'version': VERSION_SCRCPY, |
| 342 | + # 'url': 'https://github.com/Genymobile/scrcpy/releases/download/v3.1/scrcpy-linux-x86_64-v3.1.tar.gz', |
| 343 | + 'url': f'https://github.com/Genymobile/scrcpy/releases/download/v{VERSION_SCRCPY}/scrcpy-linux-x86_64-v{VERSION_SCRCPY}.tar.gz', |
296 | 344 | 'info': 'Application mirrors Android devices (video and audio) connected via USB', |
297 | 345 | 'bin': os.path.join(conf.load_config('install-dir'), 'scrcpy/scrcpy'), |
298 | 346 | 'dir': 'scrcpy', |
|
0 commit comments