var methodArr = DeviceUtil.class.getMethods(); for(var m in methodArr) { console.log(methodArr[m]); }
DeviceUtil
var methodArr = DeviceUtil.class.getMethods(); for(var m in methodArr) { console.log(methodArr[m]); }
DeviceUtil
android.permission.MODIFY_PHONE_STATE
修改电话状态:开机,MMI等。 不包括打电话
此权限, 只能为系统应用 所获取。 第3方开发应用不能获得此权限
iccOpenLogicalChannel 需要此权限 或者 有运营商权限 (hasCarrierPrivileges)
android.permission.READ_PHONE_STATE
读取电话状态:包括移动网络信息,电话当前的状态
getSubscriberId 需要
1) READ_PRIVILEGED_PHONE_STATE
2) READ_PHONE_STATE
3) hasCarrierPrivileges()
4) 默认的短信应用
5) android.permission.USE_ICC_AUTH_WITH_DEVICE_IDENTIFIER
getSimSerialNumber
1) READ_PRIVILEGED_PHONE_STATE
2) READ_PHONE_STATE
3) hasCarrierPrivileges
从 Android 10 开始,应用必须具有 READ_PRIVILEGED_PHONE_STATE 特许权限才能访问设备的不可重置标识符(包含 IMEI 和序列号)。
Android系统仅会向使用平台密钥进行签名的应用以及特权系统应用授予 READ_PRIVILEGED_PHONE_STATE
权限。
两点要求:
1)app使用平台签名
2) app是特权系统应用(放在 /system/priv-app目录?)
特许权限白名单,以向特权应用授予 READ_PRIVILEGED_PHONE_STATE
权限
如果应用是预加载(预装到系统)的特权应用,则需要获得在 AndroidManifest.xml 中声明的 READ_PRIVILEGED_PHONE_STATE
权限。此外,该应用还需要将此特许权限列入白名单。
特权应用是位于系统映像某个分区上 priv-app
目录下的系统应用。各 Android 版本中,该分区为:
/system
/system, /product, /vendor
/etc/permissions/priv-app
应该实际解析为 partition/etc/permissions/priv-app
早期版本中,设备制造商几乎无法控制可对特权应用授予哪些签名|特许权限。从 Android 8.0 开始,制造商必须在 /etc/permissions
目录下的系统配置 XML 文件中明确授予特许权限。从 Android 9 开始,实现人员必须明确授予或拒绝授予所有特许权限,否则设备将无法启动。
privapp-permissions.xml
文件只有在与特权应用位于同一分区时才能授予或拒绝授予该应用权限。例如,如果 /vendor
分区上的应用请求特许权限,则只能由同样位于 /vendor
上的 privapp-permissions.xml
文件来同意或拒绝该请求。
应用的权限白名单可列在位于 frameworks/base/etc/permissions
目录下的单个或多个 XML 文件中,如下所示:
/etc/permissions/privapp-permissions-OEM_NAME.xml
/etc/permissions/privapp-permissions-DEVICE_NAME.xml
对于如何组织内容,没有严格的规则。设备实现人员可以决定内容结构,只要 /system/priv-app
下的所有应用均列入白名单即可。例如,Google 针对由 Google 开发的所有特权应用提供了一个白名单,并建议使用以下组织方式:
/etc/permissions/privapp-permissions-platform.xml
中。/etc/permissions/privapp-permissions-google.xml
中。/etc/permissions/privapp-permissions-DEVICE_NAME.xml
。https://source.android.com/devices/tech/config/perms-whitelist?hl=zh-cn
public int checkPermission(String permission, int pid, int uid) {
….
am.checkPermission(permission, pid, uid);
https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/permission/PermissionManager.java
am.checkPermission(permission, pid, uid);
ActivityManagerService.checkPermission
com.android.server.am.ActivityManagerService
public static int checkComponentPermission(String permission, int uid,
int owningUid, boolean exported) {
….
https://android.googlesource.com/platform/frameworks/base/+/master/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
public int checkPermission(String permName, String pkgName, int userId) {
https://gowa.club/Android/Android%E7%9A%84%E6%9D%83%E9%99%90%E6%A3%80%E6%9F%A5%E8%BF%87%E7%A8%8B.html
https://lishuaiqi.top/2017/07/06/Permission3-checkPermissions/#1-3-checkPermission
Snapdragon Wear 1100: Cortex-A7 1.2G LTE Cat1 Modem 发布于2016年,没人用
Snapdragon Wear 1200: Cortex-A7 1.3G LTE M1/NB1 Modem 发布于2017年,也没人用
Snapdragon Wear 2100: 4核Cortex A7 (就是Qualcomm Technologies, Inc MSM8909W) 1.2G X5 Modem(Cat 4) 发布于2016年
Snapdragon Wear 2500: 4x ARM Cortex A7 , 其实也是8909w
Snapdragon Wear 3100: MSM8909w (Cortex A7*4 1.2G) X5 Modem(Cat4) 协处理器QCC 1100 发布于2018年
其中 MSM890w 来源于 发布于2014年9月9日的 Snapdragon 210(MSM8909),CPU和基带规格一致
Snapdragon Wear 3100: 来源于 SDM425 (Cortext A53) X5 Modem
华米智能手表2(Nexo) 参数:https://www.amazfit.com/cn/nexo.html
1.39 英寸 AMOLED 454*454分辨率
高通 Snapdragon Wear 2500 4核A7 1.1GHz
512MB LPDDR3
4G eMMC (用户可用空间约 1GB)
Bluetooth 4.2 + BLE
出门问问 TicWatch Pro 4G/LTE 参数
https://www.chumenwenwen.com/product/ticwatchpro-parameter.html
https://www.mobvoi.com/us/pages/ticwatchpro4g
Qualcomm® Snapdragon Wear™ 2100,在 /proc/cpuinfo里显示Qualcomm Technologies, Inc MSM8909W
显示屏1:AMOLED屏 400*400像素/287ppi
显示屏2:单色液晶屏
Ticwatch Pro 4G 2020版 型号:WF20066
Ticwatch Pro 2021 4G版 型号:
Ticwatch Pro 4G 2019 型号: WF11016
1. 手机上安装Wear OS By Google, 蓝牙配对激活手表
2. 手表上在待机界面下滑,调出设置界面, 设置→系统→关于→版本号(注意是下面的版本号,不是上面的版本),狂点,即可打开开发者模式
3. 设置→开发者选项,打开 ADB调试
4. PC上运行
adb reboot bootloader fastboot oem unlock
然后在手表上,用 音量键 (下面那个按钮) 选择 unlock, 然后用 电源键 (上面那个按钮) 选择确定。
5. 手表会重启,并恢复出厂设置,按照步骤1,重新激活手表
6. 下载 twrp
https://dl.twrp.me/catshark/twrp-3.5.0_9-0-catshark.img.html
7. 启动到recovery
adb reboot bootloader fastboot boot twrp-3.5.0_9-0-catshark.img
8. 下载Magisk v21.4
https://github.com/topjohnwu/Magisk/releases/download/v21.4/Magisk-v21.4.zip
9.
adb sideload Magisk-v21.4.zip
3GPP定义的频率范围分为FR1和FR2
FR1也就是Sub 6G, 低于6G Hz的频段 450 MHz ~ 6000 MHz
FR2 24.350GHz ~ 52.6 GHz
1. 700MHz频段(694~790MHz)
全球性使用的低频5G频段
2. L波段(1427~1518MHz)
所有国家和地区确定的新的全球波段
3. 2496 MHz – 2690 MHz
许多国家和地区确定的全球波段,但这频段已经给LTE使用,在中国这一频段分配了160MHz给中国移动。
2515-2575MHz、2635-2675MHz为新增频段
2575-2635MHz频段为重耕中国移动现有的TD-LTE(4G)频段
3300~3400MHz 欧美外的许多国家和地区确定的全球波段
C波段(3400~3600MHz) 所有国家和地区确定的全球波段, 中国这个频段分给了中国电信和中国联通
3.4-3.5 给中国电信
3.5-3.6 给中国联通
C波段(3600~3700MHz) 许多国家和地区确定的全球波段
4800~4990MHz 为亚太地区少数几个国家确定的新频段,在中国分配了100MHz给中国移动
n1 1.920-1.980 2.11-2.17
https://zhuanlan.zhihu.com/p/82704664
703-743/758-798MHz频段号为n28。(703MHz-748MHz/758MHz-803MHz的频段号为n28)
n1 重耕 2.1G
n41 重耕 2.6G
n78 新的 3.3g
mt7601u是ralink(mediatek) 2012年推出的一款usb接口 150 Mbps速率的802.11b/g/n无线网卡,主要规格:
嵌入式高性能32位risc微处理器
55nm CMOS工艺
高集成射频 1T1R模式
支持150MbpsPHY速率
集成高效开关调节器
紧凑型5mm×5mm QFN40L封装
Debian中只需要安装 firmware-misc-nonfree
apt install firmware-misc-nonfree
firmware-ralink现在由 firmware-misc-nonfree提供
重启后,即可以收到信号
OpenWRT编译配置
Kernel modules –> Wireless Drivers –> kmod-mt7601u
配置文件
/etc/config/wireless
config wifi-device 'radio1' option type 'mac80211' option path 'platform/101c0000.otg/usb1/1-1/1-1:1.0' option disabled '0' config wifi-iface 'default_radio1' option device 'radio1' option network 'wan' option mode 'sta' option ssid 'uplink' option encryption 'psk2' option key '12345678'
/etc/config/network
config interface 'wan' option proto 'dhcp'
ifconfig可以获取
但现在新的系统,默认安装iproute2包,没有ifconfig命令了
ifconfig命令,实际从
/sys/class/net/wwan0/statistics/rx_bytes /sys/class/net/wwan0/statistics/tx_bytes
这两个文件,获取的流量统计信息
wwan0是我的usb 4G网卡的名称
0. 下载 vscode
https://code.visualstudio.com/sha/download?build=stable&os=linux-deb-x64
1.解压缩 后 直接运行
dpkg -x code_1.52.1-1608136922_amd64.deb app cd app/user/share/code chown root:root chrome-sandbox chmod 4755 chrome-sandbox ./code
3.配置Java环境
Ctrl+Shift+P 调出 Command Palette, 输入命令
Java: Configure Java Runtime
选择 Java: Configure Java Runtime.
4.创建Java项目
Java: Create Java Project
选择No build tools
或者
Maven
一. 安装mitmproxy
1. 安装python3-venv
apt install python3-venv
2. 获取源代码
git clone https://github.com/mitmproxy/mitmproxy.git cd mitmproxy ./dev.sh
3. 激活python3虚拟环境,并执行
. venv/bin/activate mitmdump
二. 上传证书到 手机
1. 运行mitmproxy后,会自动在 ~/.mitmproxy 目录下生成证书:
mitmproxy-ca.pem 证书和私钥
mitmproxy-ca-cert.pem PEM格式的证书
mitmproxy-ca-cert.cer 跟PEM格式的证书完全一样,只是扩展名不同
2.制作一个Android兼容的证书
2.1 获得mitmproxy证书的hash值
openssl x509 -inform PEM -subject_hash_old -in mitmproxy-ca-cert.pem | head -1
会显示 hash值为 c8750f0d
注意,要用 -subject_hash_old 选项,而不是 -subject_hash 这样才会得到 openssl 0.9 兼容的hash值
2.2 android证书文件名 以.0结尾
cat mitmproxy-ca-cert.pem > c8750f0d.0 openssl x509 -inform PEM -text -in mitmproxy-ca-cert.pem -noout >> c8750f0d.0
一步到位
hashed_name=`openssl x509 -inform PEM -subject_hash_old -in mitmproxy-ca-cert.cer | head -1` && cp mitmproxy-ca-cert.cer $hashed_name.0
3. 将证书放入 /system/etc/security/cacerts/
adb push c8750f0d.0 /data/local/tmp/ adb shell su # mount -o remount,rw /system # setenforce 0 # mv /data/local/tmp/c8750f0d.0 /system/etc/security/cacerts/ # chmod 644 /system/etc/security/cacerts/c8750f0d.0 # chown root:root /system/etc/security/cacerts/c8750f0d.0 # setenforce 1 # mount -o remount,ro /system
如果是用Magisk来root的,上述命令中有些应该适当修改
mount -o remount,rw /sbin/.magisk/mirror/system_root
三.让手机通过usb上网
1. 手机开启无线数据,或者开启wifi
2. 手机开启usb共享,PC上启用usb网卡
3. PC上启用有线连接
ip addr add 192.168.1.158/24 dev eno1 ip route add default via 192.168.1.1 dev eno1 ip route del default via 192.168.42.129
4. 在手机上给usb网卡重新分配ip
ip addr del 192.168.42.129/24 dev rndis0 ip addr add 10.42.0.2/24 dev rndis0
5. 手机上 修改路由表 (rmnet_data3根据实际情况修改)
ip route add 10.42.0.0/24 dev rndis0 table rmnet_data3 ip route delete default table rmnet_data3 ip route add default via 10.42.0.1 table rmnet_data3 ip -6 route del default table rmnet_data3
6. PC上开启转发
echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -j MASQUERADE iptables -t nat -n -L
7. PC上给usb网卡重新分配地址
ip addr del 192.168.42.140/24 dev usb0 ip addr add 10.42.0.1/24 dev usb0
8. 在手机上检测
ping 10.42.0.1
9. 手机上设置私人DNS
四. PC上配置mitmproxy环境
1. 将80和443端口的流量都重定向给 mitmproxy
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080 iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8080
2.透明模式启动mitmproxy
mitmproxy --mode transparent --showhost
五. 用frida解除 ssl pinning
frida -U -f com.sinovatech.unicom.ui -l ../ssl.js --no-pause
/etc/trojan/config.json
{
“run_type”: “server”,
“local_addr”: “192.168.0.1”,
“local_port”: 443,
“remote_addr”: “127.0.0.1”,
“remote_port”: 443,
…}
local_addr这里可以改为 :: 表示任意地址
nginx配置
server {
server_name softs.im;
listen 127.0.0.1:443 default_server;
因为在worpress里有 wp-includes/load.php
function is_ssl() {
}
判断是否支持ssl
如果端口监听在443, 就认为是ssl