florida-push
Frida Android server 自动下载与推送工具。
它会根据本地 Frida 版本,从 GitHub Release 中查找匹配设备架构的 server
压缩包,解压后重命名为 fs,推送到 Android 设备的
/data/local/tmp/fs,并通过 adb shell /data/local/tmp/fs --version
验证远端版本。
默认目标仓库是 xihan123/Florida,
兼容 Florida release 中的命名:
florida-server-17.11.0-android-arm64.gz
也兼容上游 Frida 常见命名:
frida-server-17.11.0-android-arm64.xz
目录
功能特性
- GitHub API 获取 Release:使用 GitHub Releases API,不抓取 HTML 页面。
- 自动版本匹配:优先读取本地
fridaPython 包版本,也支持frida --version、frida-ps --version。 - 设备架构识别:读取
ro.product.cpu.abi,自动映射到arm、arm64、x86、x86_64。 - 灵活命名匹配:不固定
frida-server前缀,支持florida-server、custom-server等命名。 - 多压缩格式支持:支持
.gz和.xz,下载后自动解压并重命名为fs。 - 代理支持:支持
--proxy,未指定时自动读取HTTP_PROXY、HTTPS_PROXY、ALL_PROXY。 - 推送后验证:推送到设备后执行
fs --version,确认远端版本和目标版本一致。
环境要求
- Python 3.9 及以上,已验证 Python 3.14。
adb已加入PATH。- Android 设备已通过 USB 连接并完成 adb 授权。
- 已安装本地 Frida,或者运行时传入
--frida-version。
安装 Frida 工具:
python -m pip install frida-tools
项目结构
.
├── .github/
│ └── workflows/
│ ├── release-please.yml
│ └── release.yml
├── src/
│ └── florida_push/
│ ├── __init__.py
│ ├── __main__.py
│ └── cli.py
├── tests/
│ └── test_cli.py
├── .release-please-manifest.json
├── LICENSE
├── README.md
├── release-please-config.json
├── main.py
└── pyproject.toml
项目使用标准 src/ 布局,发布后提供 florida-push 命令。
使用说明
安装
发布包:
python -m pip install florida-push
源码:
python -m pip install .
开发模式:
python -m pip install -e ".[dev]"
基本使用
使用默认 Florida 仓库:
florida-push
源码仓库中也可以直接运行:
python main.py
命令会输出目标仓库、设备名称、设备架构、目标版本、代理来源、远端路径和最终验证结果。
示例输出:
Target repository: xihan123/Florida
Device serial: ABC123
Device ABI: arm64-v8a
Device architecture: arm64
Target Frida version: 17.11.0
Proxy: none
Remote path: /data/local/tmp/fs
Release asset: florida-server-17.11.0-android-arm64.gz
Download: https://github.com/xihan123/Florida/releases/download/17.11.0/florida-server-17.11.0-android-arm64.gz
Pushing server...
Remote version: 17.11.0
Done.
指定设备
当存在多个 adb 设备时,需要指定设备序列号:
florida-push --serial <device-serial>
设备序列号来自:
adb devices
指定版本
默认会自动检测本地 Frida 版本。需要手动指定时:
florida-push --frida-version 17.11.0
自定义仓库
默认仓库是 xihan123/Florida。需要改为其他 owner/repo:
florida-push --owner frida --repo frida
或者:
florida-push --owner xihan123 --repo Florida
代理设置
显式指定代理:
florida-push --proxy http://127.0.0.1:7890
如果没有传入 --proxy,会自动读取环境变量:
export HTTPS_PROXY=http://127.0.0.1:7890
export HTTP_PROXY=http://127.0.0.1:7890
export ALL_PROXY=http://127.0.0.1:7890
代理中包含账号密码时,日志会脱敏:
Proxy: environment (https=http://***:***@127.0.0.1:7890)
验证与构建
本地测试:
python -m unittest discover -s tests
本地编译检查:
python -m compileall -q src tests main.py
构建发布包:
python -m build
检查 PyPI 元数据:
python -m twine check dist/*
当前发布流程会在 Python 3.9 和 3.14 上运行测试,并使用 Python 3.14 构建发布包。
常见问题
Q: 找不到匹配的 release 怎么办?
A: 先确认目标仓库存在对应版本 tag,例如 17.11.0 或 v17.11.0。再确认该 release
中存在以 android-<arch>.gz 或 android-<arch>.xz 结尾的 server asset。
Q: 多个设备连接时为什么直接退出?
A: 为了避免推送到错误设备,多个 adb 设备同时在线时必须使用 --serial 明确选择。
Q: 没安装 Frida 可以使用吗?
A: 可以。没有本地 Frida 时传入 --frida-version 即可:
florida-push --frida-version 17.11.0
Q: 推送后如何手动验证?
A: 可以直接执行:
adb shell /data/local/tmp/fs --version
致谢
免责声明
- 本项目仅供学习交流、逆向分析辅助和安全研究使用。
- 使用者应确保自己拥有分析目标和 Android 设备的合法授权。
- 请勿在未授权环境中使用本工具。
- 工具会写入并可能覆盖目标设备上的
/data/local/tmp/fs。
Metadata
Release files for florida-push 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| florida_push-0.1.0.tar.gz | 26.1 kB | With provenance | Details for florida_push-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| florida_push-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for florida_push-0.1.0-py3-none-any.whl |
Total release size: 48.2 kB
Release files / florida_push-0.1.0.tar.gz
| Download URL | florida_push-0.1.0.tar.gz |
|---|---|
| Size | 26.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3a47c91b721bed702e788947a3e1d09045d2ca3d298c88638259885a61ad8e32
|
|
BLAKE2b-256 checksum How to use checksums |
e2394c5054713509a9611f357b6de1539f8fc77c9311c3294328d618d5047842
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 7, 2026.
Transparency logRelease files / florida_push-0.1.0-py3-none-any.whl
| Download URL | florida_push-0.1.0-py3-none-any.whl |
|---|---|
| Size | 22.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c3d6f346788375408cab5f2ebb487517cca7f85bde09af8efd7d353663497f1d
|
|
BLAKE2b-256 checksum How to use checksums |
4f425e3358016e27b8d24d78d17ec4f041264ebb4cd761a6263deb6c899582a3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 7, 2026.
Transparency logSecurity for florida-push 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for florida_push-0.1.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 7, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.