duongducnguyen/device-fingerprint
GitHub: duongducnguyen/device-fingerprint
一款用于安全研究与教学的 Android 应用,集中采集并展示设备暴露的各类标识信号以帮助评估隐私风险。
Stars: 1 | Forks: 0
# 设备指纹
**语言 / 语言 / Языки:** [English](#english) · [中文](#中文) · [Русский](#русский)
## English
### 概述
**Device Fingerprint** 是一款专为安全研究和教育目的而构建的 Android 应用程序。它收集并展示 Android 设备暴露的广泛标识信号——硬件标识符、网络适配器、已安装的包、输入外设、广告 ID 和模拟器检测标记——所有这些都集中在一个多标签界面中。
该应用对您的数据保持严格只读:除了在您打开 **Location** 标签时触发的可选 IP 地理位置查询(`ip-api.com`)外,不会向设备外传输任何数据。
### 功能
九个检查标签,每个标签都有专门的读取器模块支持:
| 标签 | 显示内容 |
|---|---|
| **Dashboard** | Android ID、IMEI、设备序列号、MediaDRM ID、MAC 地址、构建/系统属性 |
| **Applications** | 已安装的包,带有筛选器(系统 / 用户 / 旁加载) |
| **SIM** | 电话号码、订阅信息、运营商数据 |
| **WiFi** | 可见网络(SSID、BSSID、RSSI、信道) |
| **LAN** | 本地子网主机扫描 |
| **Bluetooth** | 经典 + BLE 设备发现 |
| **Location** | GPS 定位和基于 IP 的地理位置 |
| **Input** | 键盘、鼠标、触摸板、手柄、传感器 |
| **Accounts** | 通过 `AccountManager` 注册的账号 |
其他功能:
- **模拟器检测**,通过原生 C++ 扫描器(JNI)检查构建/系统属性中已知的模拟器标记。
- **Google Advertising ID** (GAID)、**AppSet ID** 和 `Settings.Global.AD_AAID` 暴露。
- **Root 感知的权限授予**通过 [libsu](https://github.com/topjohnwu/libsu) —— 当设备已 root 时,可以自动授予运行时权限,以解除对研究场景的阻碍。
### 要求
- Android **9.0** (API 28) 或更高版本
- 架构:`arm64-v8a`、`armeabi-v7a`、`x86_64`、`x86`
- 约 5 MB 可用存储空间
### 权限
manifest 声明了 16 项权限,涵盖电话状态、网络适配器、位置、联系人和广告 ID:
- `READ_PHONE_STATE`、`READ_PHONE_NUMBERS`、`READ_PRIVILEGED_PHONE_STATE`
- `ACCESS_WIFI_STATE`、`CHANGE_WIFI_STATE`、`NEARBY_WIFI_DEVICES`
- `BLUETOOTH`、`BLUETOOTH_ADMIN`(≤ Android 11)、`BLUETOOTH_SCAN`、`BLUETOOTH_CONNECT`
- `ACCESS_COARSE_LOCATION`、`ACCESS_FINE_LOCATION`
- `READ_CONTACTS`
- `com.google.android.gms.permission.AD_ID`
- `QUERY_ALL_PACKAGES`、`INTERNET`
跳过某项权限只会禁用相关的标签;应用程序的其余部分仍然可用。
### 免责声明
此工具仅用于**研究、教育和自我审计**。它不用于监视他人的设备。维护者对滥用不承担任何责任。仅在您拥有或明确授权检查的硬件上使用它。
## 中文
### 概述
**Device Fingerprint** 是一款面向安全研究与教学的 Android 应用,集中展示设备暴露的各类标识信号——硬件标识、网络适配器、已安装应用、输入外设、广告 ID 以及模拟器特征——全部呈现在一个多标签页界面中。
该应用对用户数据保持只读:除非用户打开 **Location** 标签触发 IP 定位查询(`ip-api.com`),否则不会向设备外发送任何数据。
### 功能
应用提供 9 个检测标签,每个标签对应一个独立的读取模块:
| 标签 | 显示内容 |
|---|---|
| **Dashboard** | Android ID、IMEI、设备序列号、MediaDRM ID、MAC 地址、构建/系统属性 |
| **Applications** | 已安装应用(系统应用 / 用户应用 / 旁加载应用筛选) |
| **SIM** | 电话号码、订阅信息、运营商数据 |
| **WiFi** | 可见网络(SSID、BSSID、RSSI、信道) |
| **LAN** | 局域网主机扫描 |
| **Bluetooth** | 经典蓝牙 + BLE 设备发现 |
| **Location** | GPS 定位与 IP 地理位置 |
| **Input** | 键盘、鼠标、触摸板、手柄、传感器 |
| **Accounts** | 通过 `AccountManager` 注册的账号 |
其他特性:
- **模拟器检测**:通过 JNI 调用 C++ 原生扫描器,检查构建/系统属性中已知的模拟器特征。
- **Google 广告 ID** (GAID)、**AppSet ID** 与 `Settings.Global.AD_AAID` 展示。
- **Root 感知的权限授予**:使用 [libsu](https://github.com/topjohnwu/libsu)。在已 root 的设备上,可自动授予运行时权限以加速研究流程。
### 系统要求
- Android **9.0**(API 28)或更高版本
- 支持架构:`arm64-v8a`、`armeabi-v7a`、`x86_64`、`x86`
- 约需 5 MB 存储空间
### 权限说明
清单文件共声明 16 项权限,覆盖电话状态、网络适配器、定位、联系人与广告 ID:
- `READ_PHONE_STATE`、`READ_PHONE_NUMBERS`、`READ_PRIVILEGED_PHONE_STATE`
- `ACCESS_WIFI_STATE`、`CHANGE_WIFI_STATE`、`NEARBY_WIFI_DEVICES`
- `BLUETOOTH`、`BLUETOOTH_ADMIN`(仅 Android 11 及以下)、`BLUETOOTH_SCAN`、`BLUETOOTH_CONNECT`
- `ACCESS_COARSE_LOCATION`、`ACCESS_FINE_LOCATION`
- `READ_CONTACTS`
- `com.google.android.gms.permission.AD_ID`
- `QUERY_ALL_PACKAGES`、`INTERNET`
拒绝某项权限只会禁用对应标签页,应用其余功能仍可正常使用。
### 免责声明
本工具仅用于 **研究、教学与自查**,不得用于监控他人设备。维护者不对滥用承担任何责任。请仅在您拥有或获得明确授权的设备上使用。
## Русский
### Обзор
**Device Fingerprint** — Android-приложение для исследований и обучения в области безопасности. Оно собирает и показывает широкий набор идентификационных сигналов устройства: аппаратные идентификаторы, сетевые адаптеры, установленные пакеты, устройства ввода, рекламные ID и маркеры обнаружения эмулятора — всё это в едином интерфейсе с несколькими вкладками.
Приложение работает с вашими данными только в режиме чтения: за пределы устройства ничего не отправляется, кроме опционального запроса IP-геолокации (`ip-api.com`), который выполняется только при открытии вкладки **Location**.
### Возможности
Девять диагностических вкладок, каждая опирается на отдельный модуль-считыватель:
| Вкладка | Что отображается |
|---|---|
| **Dashboard** | Android ID, IMEI, серийный номер, MediaDRM ID, MAC-адрес, свойства сборки/системы |
| **Applications** | Установленные пакеты (фильтры: системные / пользовательские / sideload) |
| **SIM** | Номера телефонов, информация о подписке, оператор |
| **WiFi** | Видимые сети (SSID, BSSID, RSSI, канал) |
| **LAN** | Сканирование хостов локальной подсети |
| **Bluetooth** | Обнаружение классических и BLE-устройств |
| **Location** | GPS-координаты и IP-геолокация |
| **Input** | Клавиатуры, мыши, тачпады, геймпады, сенсоры |
| **Accounts** | Аккаунты, зарегистрированные через `AccountManager` |
Дополнительные возможности:
- **Обнаружение эмулятора** через нативный C++ сканер (JNI), анализирующий свойства сборки/системы на известные маркеры эмуляторов.
- Отображение **Google Advertising ID** (GAID), **AppSet ID** и `Settings.Global.AD_AAID`.
- **Выдача разрешений с поддержкой root** через [libsu](https://github.com/topjohnwu/libsu): на устройствах с root-доступом runtime-разрешения могут автоматически предоставляться для ускорения исследований.
### Требования
- Android **9.0** (API 28) или новее
- Архитектуры: `arm64-v8a`, `armeabi-v7a`, `x86_64`, `x86`
- Около 5 МБ свободной памяти
### Разрешения
Манифест объявляет 16 разрешений, охватывающих состояние телефона, сетевые адаптеры, геолокацию, контакты и рекламные идентификаторы:
- `READ_PHONE_STATE`, `READ_PHONE_NUMBERS`, `READ_PRIVILEGED_PHONE_STATE`
- `ACCESS_WIFI_STATE`, `CHANGE_WIFI_STATE`, `NEARBY_WIFI_DEVICES`
- `BLUETOOTH`, `BLUETOOTH_ADMIN` (Android 11 и ниже), `BLUETOOTH_SCAN`, `BLUETOOTH_CONNECT`
- `ACCESS_COARSE_LOCATION`, `ACCESS_FINE_LOCATION`
- `READ_CONTACTS`
- `com.google.android.gms.permission.AD_ID`
- `QUERY_ALL_PACKAGES`, `INTERNET`
Отказ от какого-либо разрешения отключит лишь соответствующую вкладку; остальное приложение продолжит работать.
### Отказ от ответственности
Этот инструмент опубликован исключительно для **исследований, обучения и самоаудита**. Он не предназначен для слежки за чужими устройствами. Сопровождающий не несёт ответственности за злоупотребление. Используйте его только на оборудовании, которым вы владеете или которое вам разрешено инспектировать.
标签:Android, DSL, JNI, Root, 设备指纹