额外小知识:
所谓内部存储空间(显示为设备名字),其实是由外部存储设备(com.android.externalstorage)提供给SAF的。
而最近/图片/视频/音频/文档,则是由媒体存储设备(com.android.providers.media.module)提供给SAF。
最后,下载由内容下载管理器(com.android.providers.downloads)提供。
SAF本身(com.android.documentsui) 并无存储访问权限,它只是中介,让用户浏览并且授权的界面。
PS:在高版本系统中,媒体存储设备也负责fuse。为什么不是外部存储设备?为了同步媒体数据库状态和底层文件系统。
我们从 2024.2 开始已经捆绑了语言包插件,所以您无需下载安装,只需要在欢迎界面的 Customize 选项卡下选择您的语言为简体中文,或者从 Settings | Appearance & Behavior | System Settings | Language and Region > Language 中选择语言为简体中文,即可设置你需要的语言。
Windows计划任务启动的进程,优先级默认是7:线程优先级低于正常,IO优先级低,内存优先级低。
控制面板不能调整优先级,也没有显示。需要用powershell或者导出xml修改后导入。
https://learn.microsoft.com/zh-cn/windows/win32/taskschd/taskschedulerschema-priority-settingstype-element
ML-KEM 已来
测试地址 https://pq.cloudflareresearch.com
Cloudflare的密码学库和Google的BoringSSL已经支持,Chromium默认启用
Enable ML-KEM by default
https://chromium-review.googlesource.com/c/chromium/src/+/5908098
Implement X25519MLKEM768 for TLS
https://boringssl-review.googlesource.com/c/boringssl/+/70547
kem: add X25519MLKEM768 TLS hybrid KEM
https://github.com/cloudflare/circl/releases/tag/v1.5.0
系统区域设置 > 对非Unicode程序使用UTF-8:开
cmd 使用 UTF-8
PowerShell 5 默认使用ASCII,需要指定为UTF-8。系统添加BOM。
PowerShell 7 默认使用UTF-8。
Windows shell将文本通过管道传递到外部程序的行为调查
cmd
echo的第一个空格后,至管道前的全部字符在添加\r\n后输出。管道原样传递。
PowerShell 7(Windows商店安装)
echo自动删除空格和引号,与Linux平台行为类似但不添加\r\n。管道后执行外部程序时添加\r\n。
PowerShell 5(Windows自带)
echo自动删除空格和引号,与Linux平台行为类似但不添加\r\n。管道后执行外部程序时添加BOM和\r\n。
网友收集的允许无SNI服务器列表,和自定义SNI能绕过GFW列表。
https://raw.githubusercontent.com/SpaceTimee/Cealing-Host/main/Cealing-Host.json
Windows 11 LTSC 正式版
密钥 CGK42-GYN6Y-VD22B-BX98W-J8JXD
下载地址 https://drive.massgrave.dev/zh-cn_windows_11_enterprise_ltsc_2024_x64_dvd_cff9cd2d.iso
文件校验 https://files.rg-adguard.net/file/47c63d9a-4030-3c5a-fcea-113d36444e8a
记一次 Chrome 崩溃调查
反复测试后发现,标签页打开较大的图片文件,鼠标移向标签页标题,在显示标签页预览时chrome会崩溃。复现稳定,多张图片复现成功,网络本地图片均复现,使用canary或chromium均复现。使用Windows沙盒不能复现,确认为本地问题。
打开 chrome://crashes/ ,显示详细信息,用everything搜索uuid找到崩溃文件。
应用商店下载windbg,拖入dmp文件。
查阅 https://www.chromium.org/developers/how-tos/debugging-on-windows 对 windbg 配置符号服务器 https://chromium-browser-symsrv.commondatastorage.googleapis.com 后定位到崩溃位置 https://source.chromium.org/chromium/chromium/src/+/refs/tags/129.0.6668.71:ui/gfx/render_text_harfbuzz.cc;l=1168
阅读注释
// The |glyph_range| might be empty or invalid on Windows if a multi-character
// grapheme is divided into different runs (e.g., there are two font sizes or
// colors for a single glyph). In this case it might cause the browser crash,
// see crbug.com/526234.
net: implement the QUIC protocol in linux kernel
啊?真当成 TCP2 吗,是不是忘了QUIC为什么构建在UDP上。
https://github.com/lxin/quic
https://patchwork.kernel.org/project/netdevbpf/cover/cover.1725935420.git.lucien.xin@gmail.com/
云存储应用可以向存储访问框架(SAF)提供文件或者目录级的访问权限,供其它应用使用。其它应用经过用户授权后,可以随时读写。云存储应用稍后把本地变更同步至云端。
这本来是存储访问框架的设计用途,但几乎没人用,只能怪Google自己的云端硬盘也不支持授权目录权限吧…本来可以成为一个超方便的通用云备份入口。
在任何文件管理器中获取不受限访问权
对以下字符串添加书签或收藏/storage/emulated/0
具体是在用户ID前添加零宽空格,其它用户也行:/storage/emulated/10
即可完全绕过fuse的路径比较,自由访问Android/data,Android/obb,甚至被隐藏的内部文件夹 /storage/emulated/0/.transforms
由于大量由工厂配置的认证密钥被公开泄露并且遭到滥用,Google 在 2024 年 10 月 25 日向合作伙伴发出公告。
受影响的 OEM 正在更新密钥箱,以消除对用户设备的潜在影响。
https://apvi.issues.chromium.org/issues/375543080
11月安全更新已经在Android框架修复
作为fuse后端的媒体存储框架app,现在会循环获取父级目录,与data/obb/sandbox目录比较是否inode相同,完整修复了该问题。
总结,在Windows平台使用终端正确计算字符串的散列,应该
cmd:非ASCII字符需要确认代码页,可以用set /p魔法输出无\r\n字符串,用echo需要注意空格问题
pwsh7:使用[System.Text.Encoding]::UTF8.GetBytes()输出无\r\n字符串
pwsh5:无法输出不带\r\n的字符串,需要关闭全局UTF-8避免BOM
git bash:echo -n
ps:不调用外部程序就没这些事了!是 .net 不够用吗,是 Linux 习惯害人(
系统区域设置 > 对非Unicode程序使用UTF-8:关
cmd 使用 GB 18030
PowerShell 5 默认使用ASCII,需要指定为UTF-8
PowerShell 7 默认使用UTF-8
Linux 内核不再删除默认可忽略代码点
https://github.com/torvalds/linux/commit/5c26d2f1d3f5e4be3e196526bead29ecb139cf91
https://r.android.com/3304855
这个安全漏洞导致上游Linux修改行为,因为在具有F属性的文件夹下,路径比较逻辑会被绕过,相当于它有了无数别名。
另外,C+F casefold 依然有效,路径中包含s或ff等的继续受影响,具体列表参考 https://www.unicode.org/Public/UCD/latest/ucd/CaseFolding.txt
ISO镜像默认安装非 IoT 版本 EnterpriseS,解压或使用 UltraISO 删除 sources\EI.CFG 后,可输入 IoT 密钥 CGK42-GYN6Y-VD22B-BX98W-J8JXD
切换为 IoTEnterpriseS 版本,该版本不强制执行 TPM 2.0 等要求。
由于install.wim镜像内仅包括EnterpriseS,无IoTEnterpriseS差分,安装完毕进入系统后需要重新输入上述密钥以真正切换系统版本。
对高级用户,如需安装前离线修改install.wim镜像到IoTEnterpriseS版本,执行以下命令
dism /mount-image /imagefile:install.wim /index:1 /mountDir:c:\1\
dism /image:c:\1 /set-edition:IoTEnterpriseS
dism /image:c:\1 /set-ProductKey:CGK42-GYN6Y-VD22B-BX98W-J8JXD
dism /unmount-image /mountdir:c:\1 /commit
或者手动释放镜像后在线修改,不过通过setup.exe安装可以保留应用数据升级。
https://developers.google.com/search/docs/monitor-debug/search-operators/web-search-cache
cache: 搜索运算符已经从文档删除
https://blog.cloudflare.com/zero-trust-warp-with-a-masque/
Zero Trust WARP的 MASQUE 协议支持下放WARP+,可以在设置菜单把协议从已经被屏蔽的WireGuard修改为MASQUE。
Google教你怎么一键格机
https://android.googlesource.com/platform/frameworks/base/+/8b7b2c66ca96d711fb364cbcc9d655197d9743e0%5E%21/#F0
脚本销毁密钥有点麻烦,直接删密钥材料也差不多
rm -rf /data/unencrypted/key
rm -rf /data/misc/vold/user_keys
echo c > /proc/sysrq-trigger
可在紧急情况下1秒内销毁数据