YSC 的频道
813 subscribers
2.58K photos
13 videos
36 files
1.05K links
Channel Owner: @ysc3839
Download Telegram
小米平板5底下会显示全面屏手势提示线,然后设置里没有开关关闭。按照网上的方法,可以跟小爱同学说“全面屏”打开另一个全面屏设置页面,然后就有“隐藏手势提示线”的开关了。
然而重启后又会显示出手势提示线,经过测试发现“隐藏手势提示线”开关控制的是 global settings 下的 hide_gesture_line,进一步反编译发现系统桌面会在启动时检查一下设备是不是平板,是的话会把 hide_gesture_line 设置成0。
我的解决方法是加一个 Magisk script,等待 boot completed 然后 settings put global hide_gesture_line 1
具体代码如下:
#!/system/bin/sh

{
until [[ "$(getprop sys.boot_completed)" == "1" ]]; do
sleep 1
done

settings put global hide_gesture_line 1
}&
可以做成模块,也可以直接放到 /data/adb/service.d,记得加上执行权限。
没有 Magisk 的用户,可以考虑用 Tasker 等工具,开机时修改一下 hide_gesture_line
之前搬家了,昨天把联通宽带迁移了过来,又被强制花钱买了个新光猫(联通不给在我有光猫的情况下不买然后减钱),光猫是华为的HG8120C。
光猫背面写着用户名密码是root和admin,但是通过网页登录进去缺少很多选项。按照网上的方法用telnet备份配置文件后得知超级管理员用户名和密码是telecomadmin和admintelecom,也是挺搞笑的。
telnet里的shell是假的,搜索了一圈居然发现有获得root shell的方法!整个过程很精彩,推荐阅读:
https://blog.leexiaolan.tk/pwn-huawei-hg8120c-ont-via-uart-part-1.html
因为有透明代理的需求,但又不想折腾路由器全局代理,于是调查了一下 sniproxy (C语言实现的那个) 的方案。sniproxy 本身不支持走 SOCKS 代理,需要套一层 proxychains,然后由于 sniproxy 是用 UDP 解析域名,proxychains 又不支持 UDP 代理,于是再加上 https-dns-proxy 走代理使用 DoH 解析 DNS。最终方案是基于Alpine Linux,可以运行在 Docker 或 WSL1 中。WSL2 未测试,建议使用 WSL1,因为可以和主机共享网络。

GitHub 地址 https://github.com/ysc3839/sniproxy-socks
Docker Hub 地址 https://hub.docker.com/r/ysc3839/sniproxy-socks

在 WSL 中使用,需要手动下载 releases 中的 sniproxy-socks-rootfs.tar.gz,然后在 cmd 中执行:
mkdir %localappdata%\wsl\sniproxy-socks
wsl --import sniproxy-socks %localappdata%\wsl\sniproxy-socks sniproxy-socks-rootfs.tar.gz
其中 sniproxy-socks 是 WSL 的 distro name (或者叫容器名更加贴切),%localappdata%\wsl\sniproxy-socks 是安装位置,这两个选项都可以随意设置。
然后执行 wsl -d sniproxy-socks /entrypoint.sh 会自动在后台运行。
启动后在文件管理器中打开 \\wsl$\sniproxy-socks 可修改配置文件。
执行 wsl -t sniproxy-socks 停止运行。
执行 wsl --unregister sniproxy-socks 卸载。
后续会考虑写个脚本自动下载并安装到 WSL 中。(已取消)
要登录时自动运行,可以运行 shell:startup 打开“启动”文件夹,新建 start-sniproxy.jse 并写入:
new ActiveXObject('WScript.Shell').Run('wsl -d sniproxy-socks /entrypoint.sh',0)
我编写了个编译 nft-fullcone 内核模块的脚本,可编译适用于 OpenWrt 官方内核的模块。
编译出的模块的内核 vermagic 和 OpenWrt 官方内核是一致的,因此可以直接在 OpenWrt 官方镜像中安装。

编译流程参考了 https://hamy.io/post/0015/how-to-compile-openwrt-and-still-use-the-official-repository/
patch 文件修改自 https://github.com/wongsyrone/lede-1

使用 GitHub Actions 自动编译 https://github.com/ysc3839/openwrt-official-builds-fullcone/actions

https://github.com/ysc3839/openwrt-official-builds-fullcone
阿里云的云服务器要安装自定义系统,只能传一个系统盘镜像上去,假如手头上只有iso怎么办呢?
实测可以把iso作为系统盘镜像传上去,再添加一个数据盘,启动后把系统安装到数据盘里,再开一台机子,挂载刚才的系统盘和数据盘,把数据盘的内容dd回系统盘,就能正常使用了。
原理是绝大多数Linux的iso镜像都是混合镜像,能当成硬盘镜像来用,包含MBR,在传统BIOS模式下能直接启动。即使遇到了一些不是混合镜像的系统(比如银河麒麟),使用UEFI模式也能启动,具体原理不明,猜测是UEFI也能认硬盘里面的光盘文件系统。
nginx 的默认服务器这么写,可以实现 http 无 Host 时直接断开连接,https 无 SNI 时返回 ERR_SSL_UNRECOGNIZED_NAME_ALERT,同时 http 请求错误地发到 https 端口时也会直接断开连接。
server {
server_name _;
listen 80 default_server;
listen 443 ssl http2 default_server;
ssl_reject_handshake on;
error_page 497 =444 /;
return 444;
}
YSC 的频道
nginx 的默认服务器这么写,可以实现 http 无 Host 时直接断开连接,https 无 SNI 时返回 ERR_SSL_UNRECOGNIZED_NAME_ALERT,同时 http 请求错误地发到 https 端口时也会直接断开连接。 server { server_name _; listen 80 default_server; listen 443 ssl http2 default_server; ssl_reject_handshake on; error_page…
nginx 内部的错误码 497 代表 http 请求错误地发到 https 端口。还可以利用这个错误码实现重定向到 https:
error_page 497 =301 https://$server_name$request_uri;

444也是 nginx 的内部错误码,代表直接断开连接,仅适用于 http 请求,不能用于 https 请求。
Debian 系的 nginx 版本十分落后 (Ubuntu 23.04 的 nginx 版本只有 1.22.0),且缺少 brotli 插件。而 nginx 官方提供的包版本虽然新,但是 brotli 插件属于 NGINX Plus 付费功能,并没有提供。
因此看上去要用上新版 nginx+brotli,似乎都免不了要编译。然而 Alpine Linux 的官方源里面正好就有新版 nginx 和 brotli 插件。
于是就写了个 Docker Compose 配置,把 PID 和网络等设为不隔离,以主系统上的 www-data 用户运行。
同时我在使用 go-acme/lego 来获取 SSL 证书,配合 systemd timer 定时执行,同样以 www-data 用户运行,这样可以直接发送信号 reload nginx。
相关配置文件将会在后续整理后发布到 GitHub。
nginx 配置了 brotli 插件后并作为反向代理时,可能会发现浏览器收到的响应仍然是使用 gzip 压缩。这个问题有两种情况:
一种是没有使用 https,Chrome 浏览器只会对 https 请求启用 brotli 压缩,因为中间可能有某些透明代理服务器不支持。
另一种是 nginx 反向代理的上级服务器支持且只支持 gzip 压缩,nginx 把客户端请求发上去后,上级服务器发现客户端支持 gzip 就返回了 gzip 压缩后的数据,于是 nginx 就没法使用 brotli 压缩了。
解决办法是在 nginx 配置中加上 proxy_set_header Accept-Encoding ""; 让上级服务器以为客户端不支持压缩,直接返回未压缩的数据,然后 nginx 就会自动压缩了。
Linux 使用 WireGuard 进行内网穿透,可以在公网机子上不开启 NAT,把内网机子上 WireGuard 的 allowed ips 设置成 0.0.0.0/0,然后按如下设置 ip rule:
ip route add default via $GW dev wg0 table 20
ip rule add from $IP table 20
其中 $IP 是 WireGuard 接口的 IP,因为 WireGuard 是隧道协议,不需要 gateway,$GW 可以写 0.0.0.0,或者直接去掉 via $GW。20 是 table id,可以写任意整数。
这样设置后内网机子能拿到外部访问者的 IP 地址,同时沿原路发回数据包。这个方案也可以用于其他多网络的情况。
YSC 的频道
Linux 使用 WireGuard 进行内网穿透,可以在公网机子上不开启 NAT,把内网机子上 WireGuard 的 allowed ips 设置成 0.0.0.0/0,然后按如下设置 ip rule: ip route add default via $GW dev wg0 table 20 ip rule add from $IP table 20 其中 $IP 是 WireGuard 接口的 IP,因为 WireGuard 是隧道协议,不需要 gateway,$GW 可以写 0.0.0.0,或者直接去掉…
如果使用 NetworkManager,可以把以下脚本放到 /etc/NetworkManager/dispatcher.d/ 并加上执行权限,实现自动设置 ip rule:
#!/bin/bash

[ "$1" == "wg0" ] || exit

TABLE_ID=20

function update_routing_table() {
IP_ADDR="${IP4_ADDRESS_0%/*}"
ip route add default via ${IP4_GATEWAY} dev ${DEVICE_IP_IFACE} table ${TABLE_ID}
ip rule add from ${IP_ADDR} table ${TABLE_ID}
}

function clear_routing_table() {
ip rule del lookup ${TABLE_ID}
ip route flush table ${TABLE_ID}
}

case "$2" in
up)
update_routing_table
;;
down)
clear_routing_table
;;
*)
;;
esac

请按需要修改其中的 [ "$1" == "wg0" ]。这个脚本修改自 https://gist.github.com/dcode/bbf990ea781bed1e42d39e2351b6c432
Google Play 香港区可以使用内地银联卡了,添加时需要输入银行绑定手机号,接收短信验证码
YSC 的频道
Google Play 香港区可以使用内地银联卡了,添加时需要输入银行绑定手机号,接收短信验证码
已经看到有反馈说添加银行卡的页面输入了62就提示无效,原因不明,不知道是不是在灰度测试?
新项目发布
mTorrent (M-Team) PT 助手
Greasy Fork
GitHub
功能:
种子列表及排行列表批量复制链接
种子列表及排行列表右侧做种下载人数点击刷新
种子列表及种子详情页下载种子改为复制种子链接
种子详情页下载者列表按完成率从大到小排序