bill-jtrammell/py-adbkit

GitHub: bill-jtrammell/py-adbkit

py-adbkit 是一个 Python ADB 自动化工具包,将 Android 设备控制、应用管理、文件传输、日志采集等操作封装为可编程的 API,方便开发者用脚本完成设备自动化任务。

Stars: 0 | Forks: 0

# py-adbkit 面向 Android 的 Python ADB 自动化工具包。控制设备、运行 shell 命令、管理应用、截屏、流式传输 logcat,并自动化渗透测试工作流。 ## 安装 ``` pip install py-adbkit ``` ## 快速开始 ``` from pyadbkit import ADB adb = ADB() # 列出设备 devices = adb.devices() for dev in devices: print(f"{dev.serial} - {dev.model} (Android {dev.android_version})") # 通过 WiFi 连接 adb.connect("192.168.1.100") # Shell 命令 code, stdout, stderr = adb.shell("DEVICE_SERIAL", "ls -la /sdcard/") # 截取屏幕截图 screenshot = adb.screenshot("DEVICE_SERIAL") with open("screenshot.png", "wb") as f: f.write(screenshot) # 电池信息 battery = adb.battery("DEVICE_SERIAL") print(f"Battery: {battery.get('level', '?')}%") ``` ## Shell 自动化 ``` from pyadbkit import ADB adb = ADB() serial = adb.devices()[0].serial # 高级 Shell 接口 from pyadbkit.commands import Shell sh = Shell(adb, serial) # 获取/设置属性 android_ver = sh.getprop("ro.build.version.release") # 设置 sh.settings_put("system", "screen_off_timeout", "600000") # 启动 activities sh.am_start("com.android.settings/.Settings") # 输入自动化 sh.input_tap(500, 500) sh.input_swipe(100, 500, 900, 500, 300) sh.input_text("hello world") sh.input_keyevent(3) # HOME # Root shell(如果已 root) sh.su("cat /data/data/com.package/databases/app.db") ``` ## 应用管理 ``` # 列出已安装的应用包 packages = adb.packages(serial, third_party=True) # 安装 APK adb.install(serial, "app.apk", flags=["-r", "-g"]) # 卸载 adb.uninstall(serial, "com.package.name") # 备份 adb.backup(serial, "backup.ab", packages=["com.package.name"]) ``` ## Logcat ``` from pyadbkit.commands import Logcat logcat = Logcat(adb, serial) # 导出所有日志 lines = logcat.dump(max_lines=500) # 按 tag 过滤 errors = logcat.by_tag("ActivityManager", level="E") # 仅崩溃日志 crashes = logcat.crash() # 内核日志 kernel = logcat.kernel() ``` ## 文件操作 ``` from pyadbkit.commands import Push, Pull # 推送文件 pusher = Push(adb, serial) pusher.file("local.apk", "/sdcard/Download/") # 推送整个目录 count = pusher.dir("./my_folder", "/sdcard/my_folder") # 拉取文件 puller = Pull(adb, serial) puller.file("/sdcard/Download/data.json", "./data.json") # 拉取目录 count = puller.dir("/sdcard/Documents", "./backup_docs") ``` ## 网络 ``` # WiFi ADB adb.tcpip(serial, port=5555) adb.connect("192.168.1.100", port=5555) # 端口转发 adb.forward(serial, local_port=8080, remote_port=8080) # 反向转发 adb.reverse(serial, remote_port=9090, local_port=9090) ``` ## 设备信息 ``` # 完整的设备属性 dev = adb.get_device_props(serial) print(f"Model: {dev.model}") print(f"Android: {dev.android_version}") print(f"Build: {dev.build_id}") # 电池 battery = adb.battery(serial) print(battery) # 磁盘使用情况 mounts = adb.df(serial) for m in mounts: print(f"{m['mount']}: {m['used']}/{m['size']} ({m['use_pct']})") # 正在运行的进程 processes = adb.process_list(serial) ``` ## 环境要求 - Python >= 3.10 - 已安装 `adb` 和 `fastboot` 并添加到 PATH 中 - 目标设备已启用 USB 调试 ## 使用场景 - **Root 自动化**:结合 [moto-root-2026](https://github.com/bill-jtrammell/moto-root-2026) 为完整的 root 工作流编写脚本 - **渗透测试**:自动化 Android 设备的信息侦察与数据提取 - **测试**:UI 自动化、应用测试、截屏捕获 - **取证**:提取应用数据、数据库以及设备日志 ## 捐赠 如果它为您节省了时间: - **PayPal**: bill.jtrammell@gmail.com - **Cash App**: $slauter99 ## 许可证 MIT
标签:ADB, Android, DSL, Python, 无后门, 移动端测试, 设备管理, 逆向工具