v2.0
This release refactors the monolithic entry point into a modular package, adds configurable resolution of external tools (ADB, Metasploit, scrcpy, Nmap), Rich-based console UX (tables, panels, spinners, themed messages), Nmap-driven LAN scanning via python-nmap with ADB-oriented summaries, new ADB-focused features (port forwarding, WiFi utilities, root heuristics, app lifecycle, permissions, split APKs, logcat, etc.), expands the menu to five pages (62 numbered actions + update), bumps the project to v2.0, updates dependencies, and rewrites the README with a table of contents and refreshed screenshots.
Commits (oldest → newest)
| Commit | Description |
|---|---|
ba43278 |
feat: Refactor code into modules for readability and maintainability. |
457c97d |
Improve console prompts, task status, file management; readability refactors. |
d703aa8 |
ADB/tool handling: resolve paths for ADB, Metasploit, scrcpy, Nmap; startup checks. |
20b1ac7 |
New modules: port forwarding, root checks, WiFi utilities; menu updates. |
60d6a92 |
Menu structure and paging; clearer prompts; comment cleanup. |
65bc2c1 |
ADB port scanning/sorting; Nmap-based network scan; host summaries and hints. |
ab32c6d |
README: structure, TOC, features list, screenshots. |
Architecture & code organization
phonesploitpro.pyis a thin launcher that callsmodules.cli.run().- New
modules/layout:cli.py(startup, menus, dispatch),config.py(AppConfigwith resolved tool paths),tools.py(PATH / Windows-local resolution),console.py(Rich UI helpers, ADB subprocess helpers),banner.py(v2.0, five-page menus),connection.py(connect/disconnect, list devices, Nmap scan), plus focused modules for device, files, media, apps, WiFi, root, security, extras, port forwarding, etc. modules/release.pyremoved as part of the refactor..gitignore: adds.cursor/.
Feature & behavior additions (high level)
Tooling & startup
resolve_external_tools()fillsadb_path,msfvenom_path,msfconsole_path,scrcpy_path,nmap_pathonAppConfig.check_packages()lists missing tools in a Rich Panel and allows optional continue (Y/N).set_adb_executable()so ADB calls use the resolved binary consistently.
Network scanning
- python-nmap drives the system Nmap binary (with optional
nmap_search_pathmatching startup resolution). - Host discovery on local
/24, then targeted scan of 5554/5555 with TCP connect and light-sVprobing; IPv4 hosts sorted; per-host ADB line and “Android?” hint derived from parsed results—not raw Nmap dump. PortScannerErrorhandled so failures return to the menu flow cleanly.
Menu expansion
- 5 pages of numbered actions through 61, plus 62 (update). New/expanded areas include TCP port forward / reverse, WiFi (status, dumps, toggle, ping, saved networks, etc.), root heuristics, split APKs, developer settings, locale, screen stay-on, permissions, logcat (snippet + live), app lifecycle (restart, force-stop, clear data), network snapshot, and more—alongside existing connect, shell, media, and Metasploit flows. Full list lives in
modules/banner.py.
User experience (non-library)
Downloaded-Filescreated at startup; multi-device sessions can pick a default serial when several devices are connected.
Dependencies & how they improve UX
rich (rich>=14.0.0)
Console+Theme— Semantic styles (info,success,warning,error,prompt, etc.) so messages are consistent and scannable.console.status(..., spinner="dots")(task_status) — Long operations (ADB restart/connect, device fetch, network discovery, port probe, root checks) show a spinner line that updates in place instead of a silent hang.Table— Structured output for connected devices, network scan results (IP, ADB ports, Android hint), multi-device picker, root/build heuristics, and similar flows in WiFi, apps, files, and extras—replacing hard-to-read raw command output.Panel— Bordered blocks for missing dependencies at startup and the root assessment verdict after heuristics.- Styled
console.input— Clear prompts for paths, IPs, and Y/N confirmations.
Overall, Rich turns CLI output into tables, panels, and progress feedback appropriate for a menu-driven tool.
python-nmap (python-nmap==0.7.1)
- Binds the system
nmapexecutable (still required; PyPI package does not replace installing Nmap). Uses the same resolved path asconfig.nmap_pathwhen set. - Orchestrates discovery + ADB-port scans from Python, parses results, and feeds them into Rich tables with summaries and hints—better UX than pasting full Nmap text.
Full Changelog: v1.61...v2.0