YSC 的频道


Kanal geosi va tili: Xitoy, Xitoycha
Toifa: ko‘rsatilmagan


Channel Owner: @ysc3839

Связанные каналы

Kanal geosi va tili
Xitoy, Xitoycha
Toifa
ko‘rsatilmagan
Statistika
Postlar filtri


有群友反馈之前不可添加的账号,目前已经可以添加了。


已经看到有反馈说添加银行卡的页面输入了62就提示无效,原因不明,不知道是不是在灰度测试?


Google Play 香港区可以使用内地银联卡了,添加时需要输入银行绑定手机号,接收短信验证码


如果使用 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


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 地址,同时沿原路发回数据包。这个方案也可以用于其他多网络的情况。


nginx 配置了 brotli 插件后并作为反向代理时,可能会发现浏览器收到的响应仍然是使用 gzip 压缩。这个问题有两种情况:
一种是没有使用 https,Chrome 浏览器只会对 https 请求启用 brotli 压缩,因为中间可能有某些透明代理服务器不支持。
另一种是 nginx 反向代理的上级服务器支持且只支持 gzip 压缩,nginx 把客户端请求发上去后,上级服务器发现客户端支持 gzip 就返回了 gzip 压缩后的数据,于是 nginx 就没法使用 brotli 压缩了。
解决办法是在 nginx 配置中加上 proxy_set_header Accept-Encoding ""; 让上级服务器以为客户端不支持压缩,直接返回未压缩的数据,然后 nginx 就会自动压缩了。


顺带一提,Alpine Linux 中 nginx 的默认配置结构很清晰,子配置文件都放在 http.d 目录内,不像 Debian 系搞什么 sites-available,太麻烦了


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 内部的错误码 497 代表 http 请求错误地发到 https 端口。还可以利用这个错误码实现重定向到 https:
error_page 497 =301 https://$server_name$request_uri;


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;
}


阿里云的云服务器要安装自定义系统,只能传一个系统盘镜像上去,假如手头上只有iso怎么办呢?
实测可以把iso作为系统盘镜像传上去,再添加一个数据盘,启动后把系统安装到数据盘里,再开一台机子,挂载刚才的系统盘和数据盘,把数据盘的内容dd回系统盘,就能正常使用了。
原理是绝大多数Linux的iso镜像都是混合镜像,能当成硬盘镜像来用,包含MBR,在传统BIOS模式下能直接启动。即使遇到了一些不是混合镜像的系统(比如银河麒麟),使用UEFI模式也能启动,具体原理不明,猜测是UEFI也能认硬盘里面的光盘文件系统。




我编写了个编译 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


又发现问题了,wsl后台运行的进程好像会被停止,必须要有一个前台的进程……
可以临时把前面提到的 start-sniproxy.jse 改成:
new ActiveXObject('WScript.Shell').Run('wsl -d sniproxy-socks /entrypoint.sh -f',0)






因为有透明代理的需求,但又不想折腾路由器全局代理,于是调查了一下 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 中使用,需要手动下载 release 中的 sniproxy-socks-rootfs.tar.gz,然后在 cmd 中执行:
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 中。


之前搬家了,昨天把联通宽带迁移了过来,又被强制花钱买了个新光猫(联通不给在我有光猫的情况下不买然后减钱),光猫是华为的HG8120C。
光猫背面写着用户名密码是root和admin,但是通过网页登录进去缺少很多选项。按照网上的方法用telnet备份配置文件后得知超级管理员用户名和密码是telecomadmin和admintelecom,也是挺搞笑的。
telnet里的shell是假的,搜索了一圈居然发现有获得root shell的方法!整个过程很精彩,推荐阅读:
https://blog.leexiaolan.tk/pwn-huawei-hg8120c-ont-via-uart-part-1.html




小米平板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。

20 ta oxirgi post ko‘rsatilgan.

893

obunachilar
Kanal statistikasi