冲浪小本本儿(一)(1-1) byedpi/zapret/spoofdpi教程

  1. byedpi项目地址 GitHub - hufrea/byedpi: Bypass DPI
    byedpi 提供的参数比goodbyedpi更丰富、智能
    这是byedpi.bat给出的默认参数
    ciadpi.exe --split 1 --disorder 3+s --mod-http=h,d --auto=torst --tlsrec 1+s
    它包含了三部分
    第一部分 --split 1 --disorder 3+s --mod-http=h,d
    第二部分 --auto=torst 如果发生auto内设置的阻塞或故障的事件,将应用该选项后面的绕过参数
    第三部分 --tlsrec 1+s
    实际使用中,可以放弃第二、第三部分,只用第一部分。

byedpi 对数据包有5种处理方式,实际是3种,split disorder简单对数据进行分割,fake发送伪造数据包,oob disoob 发送带外数据
同时还支持混合使用例如 --split 1 --disorder 3+s
当启用–tlsrec时会分片clientHello中的sni

可以看到tlsrec会按照设置的数值来分割sni

与goodbyedpi一样,会暴露完整或部分sni,goodbyedpi的真实sni在另一个包里。这两工具都会暴露sni,和destination ip,建议只访问一些审查分级程度低的被墙的网站,俄友可以放心用,是因为普丁不会按“翻墙罪”抓人,心眼确实比他大多了。俺会在别的章节提供一些方法在使用这种工具情况下来安全访问审查分级程度高的网站

推荐一些参数模板,也可以尝试用–auto=torst 将它们拼接起来智能的切换模式
ciadpi.exe --split 3 --split 6 --disorder 9+s --tlsrec 3+s --mod-http=h,d --debug 2
ciadpi.exe --fake 3+s --fake-offset 3 --fake-data=“:GET /110101195306153019” --tlsrec 3+s --mod-http=h,d --debug 2
ciadpi.exe --oob 3+s --oob-data x --tlsrec 3+s --mod-http=h,d --debug 2

这个工具默认在本地ip 0.0.0.0开启socks5协议的1080端口,可以通过–ip 修改绑定ip --port修改监听端口

此外还有安卓版本 GitHub - dovecoteescapee/ByeDPIAndroid: App to bypass censorship on Android

  1. zapret项目地址 GitHub - bol-van/zapret: DPI bypass multi platform
    这个项目编译完成的文件不在releases,在binaries文件夹下,请下载整个项目

zapret 项目的参数配置十分复杂,依然以默认配置入手
WINWS1=–wf-l3=ipv4,ipv6 --wf-tcp=80,443 --dpi-desync=fake,split --dpi-desync-ttl=7 --dpi-desync-fooling=md5sig

–wf-l3=ipv4,ipv6 过滤 ipv4,ipv6
–wf-tcp=80,443 过滤端口80,443
–dpi-desync=fake,split DPI desync模式:synack syndata fake fakeknown rst rstack hopbyhop destopt ipfrag1 disorder disorder2 split split2 ipfrag2 udplen tamper
–dpi-desync-ttl=7 设置数据包 TTL
–dpi-desync-fooling=md5sig 额外的方法使伪造的数据包无法到达服务器。选项包括:none、md5sig、badseq、badsum、datanoack、hopbyhop、hopbyhop2

dpi-deysnc模式中包含split,那么在项目readme中寻找split下有哪些可配置参数
–dpi-desync-split-pos=<1…1500> ; (仅适用于 split* 和 disorder*)在指定位置分割数据包。
–dpi-desync-split-http-req=method|host ; 在指定的逻辑位置分割 HTTP 请求。
–dpi-desync-split-tls=sni|sniext ; 在指定的逻辑位置分割 TLS ClientHello。
–dpi-desync-split-seqovl= ; 在发送的第一个原始 TCP 段之前使用序列重叠。
–dpi-desync-split-seqovl-pattern=|0xHEX ; 用于填充重叠的伪造部分的内容。

然后可以依据提示添加相关参数,例如
–dpi-desync-split-pos=89 --dpi-desync-split-http-req=method --dpi-desync-split-tls=sni --dpi-desync-split-seqovl=64 --dpi-desync-split-seqovl-pattern=0x11010195306153019A

拼接后运行
winws.exe WINWS1=–filter-l3=ipv4,ipv6 --wf-tcp=80,443 --dpi-desync=fake,split --dpi-desync-ttl=7 --dpi-desync-fooling=md5sig -debug 1 --dpi-desync-split-pos=89 --dpi-desync-split-http-req=method --dpi-desync-split-tls=sni --dpi-desync-split-seqovl=64 --dpi-desync-split-seqovl-pattern=0x11010195306153019A
这个工具与goodbyedpi一样为透明代理,不需要设置ip和端口
其他参数请自行翻译使用
win端可以直接运行service_create.cmd 来运行,task_stop.cmd 停止运行

  1. spoofdpi项目地址GitHub - xvzc/SpoofDPI: A simple and fast anti-censorship tool written in Go
    这个工具是目前为止原理最简单、参数最简洁的一个工具
    -window-size 用于分片的客户端 Hello 的块大小,以字节为单位;如果默认值无法绕过 DPI,请尝试较小的值;

只需要修改一个参数,它影响的是分片的 client hello 的块大小,可以先设置10,如果访问不了被sni阻断的网站逐渐减小chunk块大小值直到为1,不推荐上来直接设为1,因为会卡


这个工具默认在本地ip 127.0.0.1开启http协议的8080端口,可以通过 -addr 修改绑定ip -port修改监听端

上述工具都必须在已经处理好dns污染的情况下使用
spoofdpi可以设置dns,如果在本地有设dns服务器可以这样去设置
spoofdpi.exe -window-size 10 -dns-addr 127.0.0.1
为什么不设置-dns-addr 8.8.8.8呢?还省的本地搭dns服务器了,因为明文的"域名服务器的’DNS 应答’必定也会经过国际出口",源头干净也是没用的,详见扫盲 DNS 原理,兼谈“域名劫持”和“域名欺骗/域名污染” @ 编程随想的博客

spoofdpi也许考虑到这一点,甚至允许设置doh
spoofdpi.exe -window-size 10 -dns-addr https://dns.google/dns-query -enable-doh
不过冲浪小本本儿(一)就说过如果doh地址被墙,doh不会起效
dns如此重要,俺会尽快把处理dns污染章节更新

[1] 冲浪小本本儿(一) :heavy_check_mark:
[2] 冲浪小本本儿(一)(1-1) byedpi/zapret/spoofdpi :heavy_check_mark:
[3]冲浪小本本儿(二)---- http-https-ECH 最广泛、最真实、最管用的互联网隐私保护[1]— 简单说两句http;查看http报文;HTTP的TCP握手;OSI模型下的HTTP :heavy_check_mark:
[4] 冲浪小本本儿(二)(2-1)---- http-https-ECH 最广泛、最真实、最管用的互联网隐私保护[2]— 简单说两句https;非常重要的自签证书;后量子加密 :heavy_check_mark:
[5] 冲浪小本本儿 (二)(2-2)----http-https-ECH 最广泛、最真实、最管用的互联网隐私保护[3]— ECH详谈 :heavy_check_mark:
[6]冲浪小本本儿 (二)(2-3)----伊友闹得欢,rprx拉清单,小圈子大新闻始末 :heavy_check_mark:
[7]冲浪小本本儿 (三) — 什么是desync类工具,还有哪些直连类型工具;什么是正代反代,如何完成反代;steam++这类工具是怎么完成不连接第三方服务器直连的;简易反代制作;当你直连一个网站时外部能看到什么
[8]冲浪小本本儿 (三)(3-1) 什么是tun模式,为什么clash的tun模式叫tun模式,而不叫tunnel
[9] 冲浪小本本儿 (四) — 当你通过proxy翻墙时,会在日志里、服务器上留下什么,通过代理连接有哪些风险
[10] 冲浪小本本儿 (五) — 被墙的网站有哪些分级,一些简单的dns污染名单,sni阻断名单,直连有哪些风险
[11] 冲浪小本本儿 (六) — 如何对网站方隐藏自身,什么是浏览器指纹,怎么改变;分析怎么逃过宏迪追杀
[12] 冲浪小本本儿 (七) — 如何处理dns污染;低延迟但被污染的dns、高延迟但正确的dns怎么选?域名分流;doh本身被封了怎么办 :heavy_check_mark:
[13] 冲浪小本本儿 (七)(7-1)— 测试doh/dot/doq 是否被墙方法 ;adguard home自签证书让局域网内浏览器用上doh
[14]冲浪小本本儿(七) (7-2) — 旧文新更,从“DNS 在代理环境中的应用”说起;Firefox 使用自带的代理设置时, "使用 SOCKS v5 时代理 DNS 查询"开还是不开?令人尴尬的代理解析选择
[15]冲浪小本本儿(七) (7-3) — 不知道什么时候会开始写、能用得上的ODOH