Skip to content

v2.0

Choose a tag to compare

@AzeemIdrisi AzeemIdrisi released this 05 Apr 10:58
3fc9b41

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.py is a thin launcher that calls modules.cli.run().
  • New modules/ layout: cli.py (startup, menus, dispatch), config.py (AppConfig with 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.py removed as part of the refactor.
  • .gitignore: adds .cursor/.

Feature & behavior additions (high level)

Tooling & startup

  • resolve_external_tools() fills adb_path, msfvenom_path, msfconsole_path, scrcpy_path, nmap_path on AppConfig.
  • 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_path matching startup resolution).
  • Host discovery on local /24, then targeted scan of 5554/5555 with TCP connect and light -sV probing; IPv4 hosts sorted; per-host ADB line and “Android?” hint derived from parsed results—not raw Nmap dump.
  • PortScannerError handled 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-Files created 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 nmap executable (still required; PyPI package does not replace installing Nmap). Uses the same resolved path as config.nmap_path when 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