modify readme

This commit is contained in:
chn 2019-10-18 12:01:25 +08:00
parent 6a7ec2411f
commit 37a5b4c0b2

View File

@ -1,12 +1,8 @@
我昨天花了一天时间,想要写一个船新的版本:它会监控所有的符合条件的 TCP 流,并且一个不落地把 UA 改掉。这样的程序原理上没什么难度,但是内核里只能用 C 写,啥都得自己动手(相比于 C++于是非常痛苦。写了几百行还远远没写完。dev 分支)
喵喵喵,这里是一个修改 UA 的小模块。细致地讲,就是用在 OpenWrt 上修改发给外网 80 端口 GET 和 POST 请求的 UA 字段为 `XMURP/1.0` 再加很多个空格的内核模块,用来防止学校检测到使用代理(接路由器)。当然,你改一下 `Makefile`,用到其它 Linux 系统上也是可以的。如果你不了解 OpenWrt 的食用方法或者还是不明白这个插件是用来干什么的的话,又或是不知道怎么编译这个模块,可以看[这里]([https://catalog.chn.moe/%E6%96%87%E7%AB%A0/%E6%95%99%E7%A8%8B/OpenWrt/%E5%9C%A8%E5%8E%A6%E5%A4%A7%E5%AE%BF%E8%88%8D%E5%AE%89%E8%A3%85%E8%B7%AF%E7%94%B1%E5%99%A8.html](https://catalog.chn.moe/文章/教程/OpenWrt/在厦大宿舍安装路由器.html))。
我想起来,我写 mirism 的时候,看到好像用户态也有办法可以直接拿到转发的链路层封包而不需要等应用层数据都组装好了再给你端上来。我顺着这个思路找了找,然后就发现了确实有非常简便的办法,可以用 C++ STL。那我之前都写了个锤子啊
到现在为止,在 `4.x``3.x` 的内核上好像用得都没问题
总之,这个版本放弃维护,我哪天想写的时候会写个船新的版本出来。因为是用户态的,基本不依赖于内核,我可以给每个架构、闪存的路由器都编译一份。说不定还可以写一个 luci-app-xmurp 可以直接在后台改设置。自己再建个仓库,添加自定义源然后 opkg 就能装,美滋滋。
---
喵喵喵,这里是一个修改 UA 的小模块。细致地讲,就是用在 OpenWrt 上修改发给外网 80 端口 GET 和 POST 请求的 UA 字段 为`XMURP/1.0`再加很多个空格的内核模块,用来防止学校检测到使用代理(接路由器)。具体情况,百度“厦大路由”然后看我的简书文章就好了。在 WNDR4300 OpenWrt 18.06.1(内核 4.9.120)测试似乎没问题。前两天还适配了一下 4.14的内核。
注意,这个模块因为设计上的缺陷,不能修改到所有的 UA只能修改绝大多数的对于厦门大学的情况够用了。
如果有一些包不希望被改 UA只要在防火墙规则里将 MARK 的第九位设置为 1 就可以了。例如:
@ -85,7 +81,7 @@ make package/xmurp-ua/compile V=sc ARCH=mips
ls staging_dir/host/bin
```
所以,这个目录里准备的就是一些常用的命令,或许是因为担心宿主机上缺少某些或者用法不一样导致编译错误。初心是好的,但这毕竟是几年前的玩意儿,当时准备的 `find` 等工具放到现在的电脑上闪退了(如果是老电脑的话,说不定还能用)。
所以,这个目录里准备的就是一些宿主机上常用的命令,都是几年前的玩意儿,当时准备的 `find` 等工具放到现在的电脑上闪退了(如果是老系统的话,说不定还能用)。
* 解决办法就是,用自己电脑上的工具来替换这些老旧的东西。
@ -101,5 +97,7 @@ make package/xmurp-ua/compile V=sc ARCH=mips
make package/xmurp-ua/compile V=sc ARCH=mips CROSS_COMPILE=/home/chn/Desktop/lede-sdk-17.01.5-ar71xx-generic_gcc-5.4.0_musl-1.1.16.Linux-x86_64/staging_dir/toolchain-mips_24kc_gcc-5.4.0_musl-1.1.16/bin/mips-openwrt-linux-musl-
```
搞定。
---
有人问我为啥不能编译个二进制文件放出来,因为这是内核模块啊,和大多的 OpenWrt 模块是不一样的,要和内核版本(精确到 commit id严格对应。至于为啥要写到内核里是历史原因最开始我想修改 ipid这当然在内核里更方便后来又想改 ua就继续写在内核里了。最开始的功能还很简单后来代码一点点变复杂了我也后悔开始时写到内核里了。