monthlyliaoyuan / Unofficial_Z_Access

Access (not only) Zlibrary in China! (Unofficial Way...)
GNU General Public License v3.0
68 stars 9 forks source link

Fragment的一丝希望 #12

Closed louiesun closed 5 days ago

louiesun commented 1 week ago

试试吧。

louiesun commented 1 week ago

在上海电信下: freezhihu.com小概率成功,收到RST。 bridges.torproject.org总是成功,似乎不会收到RST。

louiesun commented 6 days ago

https://mastodon.social/explore 小概率成功,无法稳定复现

louiesun commented 6 days ago

过了的两个包长这样

b'\x16\x03\x01\x02\x00\x01\x00\x01\xfc\x03\x037u\xca\xe5\x86@A3Z>_\xa0\xfa&\xd9\xa9\x18\xd1\x0c\xaa\x1e\x19\xb7\xbb\xcf6&\xc9\xe3\x85F\xa9 \xe1\x9d\x1f\x99y\x0b\xb2\xd6\x01B3c-\xa3\x0f\xb9\xde\xea\x12e\xbcs\x82\x07\\\x15G\xc46\x04\xe9\xf4\x00 ZZ\x13\x01\x13\x02\x13\x03\xc0+\xc0/\xc0,\xc00\xcc\xa9\xcc\xa8\xc0\x13\xc0\x14\x00\x9c\x00\x9d\x00/\x005\x01\x00\x01\x93**\x00\x00\x00\x0b\x00\x02\x01\x00\x00\r\x00\x12\x00\x10\x04\x03\x08\x04\x04\x01\x05\x03\x08\x05\x05\x01\x08\x06\x06\x01\xfe\r\x00\xba\x00\x00\x01\x00\x01\xa8\x00 (\x02d2s{\xe3\x8e\xbc\xb6\xb9\xce\xbf\xd1\xa9\xfbY\xf6n\xe9\xb3\xd0M\x1a\x1c\x8c\x8dh.\xbe\xb7Q\x00\x90\x8da\xe2n\'-\xcc\x0f\xb4\x1b\r<\x13 M\xab\xd2Q\x17\xf62f\xf8\xaenK"o\x12v`\xcd_5*\x03\xf1`Hu\xcd\xde\x12u\xd4\xe8&N\xe8\xce\x8e\x91\xbcN\xbe\xe7E\xb2E\xb5\xe2\x81\xa1F\xff\x88\x97#\xa1/\x08\x19\x89H\xea\x04\x18\xcf\xc6\x15\x04\'\xb2\xb8\x93?\x89z}4\xc4\x1c\xa1P\x15Q\xf2\x05\xa1B\xf4\x96\x95m\xf8\x8e\xc7\x90\x02\xaaz\xa1zr\xd2\x00C\t\x9eE\x9e\x81q*<`$ocF=\xf6y\x8d\xbaC\x91\x01\xb9,\xc4\xed\x934\x00\x10\x00\x0e\x00\x0c\x02h2\x08http/1.1Di\x00\x05\x00\x03\x02h2\xff\x01\x00\x01\x00\x003\x00+\x00)jj\x00\x01\x00\x00\x1d\x00 \x97\x05\xfd1\xb5\xc8^\xe4\xb4P\\\xf0\x1c\xd6\xa2\xce\xf2\xcb\xb2l\xcd\x04gO+M\xa6\xff\x87\xea\xfc3\x00\x05\x00\x05\x01\x00\x00\x00\x00\x00\x1b\x00\x03\x02\x00\x02\x00\n\x00\n\x00\x08jj\x00\x1d\x00\x17\x00\x18\x00+\x00\x07\x06\n\n\x03\x04\x03\x03\x00#\x00\x00\x00\x17\x00\x00\x00\x12\x00\x00\x00-\x00\x02\x01\x01\x00\x00\x00\x14\x00\x12\x00\x00\x0fmastodon.social\x9a\x9a\x00\x01\x00\x00\x15\x00\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
b'\x16\x03\x01\x02\x00\x01\x00\x01\xfc\x03\x03@(\x04\xee\x03\x8b<\xb7xXjb\xff\x99\xd7\xe7O\x10\x18X\x07I\xf8\xc4x\xe3\x9c\x83ZU\xa3\x05 \x11/\x8c\xba\x90Xx\xa3Q\x0b\xf4)\xbb\xd1\xd5\xda\xf1\\\x84\xa8*\xe8\xde\x85\xdck\xf3\xb8\xad\xbc\xfa\xd2\x00 \xca\xca\x13\x01\x13\x02\x13\x03\xc0+\xc0/\xc0,\xc00\xcc\xa9\xcc\xa8\xc0\x13\xc0\x14\x00\x9c\x00\x9d\x00/\x005\x01\x00\x01\x93\xaa\xaa\x00\x00\xfe\r\x00\xba\x00\x00\x01\x00\x01\x93\x00 n\x1fMZ\xe8f\xf9I;M\xef\x93.\xed\x97\xa1\xa2l\xc4w\x16\xac\xd5/x\'\xc3\x15\xa3\x01\xd6D\x00\x90\x04f\x9b\xf1\xa5XY\xb7\xcf\x83\xcc>\xa3\x98\x18\xacl.>\xc0\xbd\x80\x1b% QG\xf6;K\xd4\xc2[\x8f\x9c$\x0b+\xfd\x16\xc3\x93#\xa3r\xdc3\x1f:\x7f\xa7\xf2\x8d\xafK\';tAx\x10\x8c\x9c\x83E\x8dE\x01\xea\x92;{evg\xe5\xb1&\x13\xa2\x8b\xc5\xc6\x11\xab\xe1\x0f\xbd\x13\x06\xfc\xddX\xeb\xf6>\xc4\xfe/\x9aOo\x9b\xe7\xc7\x19\xd6H?Y\x14\xb2F\x85\xdcE\x04\xe7\xb6\xef\xc4\xb4\xf8\xfd\x1b^\x12\xb6\'qztX\\$\xe9Z-\x02x\xcfi\x03\xa3\x00\n\x00\n\x00\x08::\x00\x1d\x00\x17\x00\x18\x00\x10\x00\x0e\x00\x0c\x02h2\x08http/1.1\x00#\x00\x00\x00-\x00\x02\x01\x01\x00\r\x00\x12\x00\x10\x04\x03\x08\x04\x04\x01\x05\x03\x08\x05\x05\x01\x08\x06\x06\x01\x00+\x00\x07\x06\xda\xda\x03\x04\x03\x03\x00\x1b\x00\x03\x02\x00\x02\xff\x01\x00\x01\x00\x003\x00+\x00)::\x00\x01\x00\x00\x1d\x00 \xe0\xd5\x10\xf19\x9f\xc6\x8e\x01\xbf\xf4.!K\xe9N\x87X\x0f\x9f\xf4_{M\xc8\xc2\x8e"\xc7u\x96\x19Di\x00\x05\x00\x03\x02h2\x00\x17\x00\x00\x00\x12\x00\x00\x00\x05\x00\x05\x01\x00\x00\x00\x00\x00\x0b\x00\x02\x01\x00\x00\x00\x00\x14\x00\x12\x00\x00\x0fmastodon.social\x8a\x8a\x00\x01\x00\x00\x15\x00\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
louiesun commented 6 days ago

一个为美没过的包长这样。 sni的位置疑似有所不同

b'\x16\x03\x01\x022\x01\x00\x02.\x03\x03\xaf\xd8\xd1\xf2\xc4}\xbd\xa4\'\xd4\xb6R\xe0\xc9.l\x10\x8a\xba\x9c\xaf\xca\xe4\xaf\xb8\xed\x16\xff(\x9a\x15V \x92\xeb\xd5\xe0b\xc7\\\x8e]Nq\x8ev\xc4^c.\x97\xc8\x0b\x16\xb8\xcdT\x99\xed\xee7\xf4j\x1fp\x00 \n\n\x13\x01\x13\x02\x13\x03\xc0+\xc0/\xc0,\xc00\xcc\xa9\xcc\xa8\xc0\x13\xc0\x14\x00\x9c\x00\x9d\x00/\x005\x01\x00\x01\xc5\n\n\x00\x00\x00\x00\x00\x14\x00\x12\x00\x00\x0fmastodon.social\xff\x01\x00\x01\x00\x00+\x00\x07\x06\x9a\x9a\x03\x04\x03\x03Di\x00\x05\x00\x03\x02h2\x00\x0b\x00\x02\x01\x00\x00\x1b\x00\x03\x02\x00\x02\x00\n\x00\n\x00\x08ZZ\x00\x1d\x00\x17\x00\x18\x00\x05\x00\x05\x01\x00\x00\x00\x00\x00-\x00\x02\x01\x01\x00#\x00\x00\x00\x12\x00\x00\xfe\r\x00\xfa\x00\x00\x01\x00\x01\xf0\x00 \xc1%\xb7\xfez\x02\x1b\x9br\x9e#\xdcb\x8a\x99\xa5\xa5\xa5\xd5pY\xd1\x9fJ\xbd\xb4\xe1\xc6e4~x\x00\xd0\x16\xff,j\xca\xf2\x06\x85\xc9\xd6\r$\x02\x1az\xf2\x05\xb9\x1b\xe0\xa5\x87?\xfc\xbc\x8a\x9b\xd8&\xfft\xd1\x92X4\x19\x17\xb5\x92\x9b\xaaGw\xd1\x07f"\xfb\xd8J\xf1\x95\xf7!\x93\xed[\x8c\xa8\xa5\x92\x8cS\x10\x12\x0c\xbd\xda\xbf@\x83\xc2\x87V\xd5YY\x84\xe8\xb7\x99\xba\xe4\x9d\xaa\x9e\x8d\xff\x97\x9c\x91\xc5\xa6mX\x1e\xb1\xe6\x93\x81\x07\x8a\xc1E\xc5=iB\x96\xa9\x8a\xfa\x17\xa5\xe2\xe5"\x7f\xac\xc0}\x14\xfcY\xcc\xc3\xec\xbf\xa9tX\x01G\xb9\x9f\x07:e\x0e\x9e\xa9tv\xdb;\xc9\xce\xba\x01p7XN\xafB\xb5\xe7\xc64\x80S\x051\xda\xb2\x84\xb4\x13B\xec\x8c\x11\x11I\xff\x0e[\xf3r\xacZ\x8f(\xa4;\xfdA\x05\xb6\xb8=L\xcc`\x0be\x80\xd7\x1b\xc9.b\xe9\x00]xl\xd9\x00\r\x00\x12\x00\x10\x04\x03\x08\x04\x04\x01\x05\x03\x08\x05\x05\x01\x08\x06\x06\x01\x00\x17\x00\x00\x003\x00+\x00)ZZ\x00\x01\x00\x00\x1d\x00 0\xbe\xeb\x95\x90\xf5\xa2\xdd\xb1"\xa5\xe3e1\x11\x04\xaeb\xb5\x8d\xe7S\xca\xe4\xf9\xe0\xa4|"K\rP\x00\x10\x00\x0e\x00\x0c\x02h2\x08http/1.1\xfa\xfa\x00\x01\x00'
louiesun commented 6 days ago

有人能解释这两种白包的成因吗。为什么一个sni后面还有400多字节,而一个只有100出头。 总体clinethello差距也很多大?

louiesun commented 6 days ago

或者要让sni在aplan后面?

louiesun commented 6 days ago

这个包疑没有收到rst

b'\x16\x03\x01\x02\x00\x01\x00\x01\xfc\x03\x03\x07]\x81(E\xa8\xd7$\x1c \x89\x9c\xaa\xcbym{jL\x05\xd4\xaa0(\xfd`Y\x00\x84N\x1eU \xa1\x99{\x9eq\xcc\xd8\xbbp\xa5oJzp30f}\xd0\xb6\x18\xb4}\xfbk\x08\xcd\'\xd3\x11\x9f\xf2\x00 \xaa\xaa\x13\x01\x13\x02\x13\x03\xc0+\xc0/\xc0,\xc00\xcc\xa9\xcc\xa8\xc0\x13\xc0\x14\x00\x9c\x00\x9d\x00/\x005\x01\x00\x01\x93\n\n\x00\x00\x00\x05\x00\x05\x01\x00\x00\x00\x00\x00#\x00\x00\x00+\x00\x07\x06\xda\xda\x03\x04\x03\x03\xff\x01\x00\x01\x00Di\x00\x05\x00\x03\x02h2\x00\x10\x00\x0e\x00\x0c\x02h2\x08http/1.1\x00-\x00\x02\x01\x01\x00\n\x00\n\x00\x08\x8a\x8a\x00\x1d\x00\x17\x00\x18\x00\r\x00\x12\x00\x10\x04\x03\x08\x04\x04\x01\x05\x03\x08\x05\x05\x01\x08\x06\x06\x01\x00\x17\x00\x00\x00\x12\x00\x00\x003\x00+\x00)\x8a\x8a\x00\x01\x00\x00\x1d\x00 \x12+X\xcd\xc1\x02\xe3\xe2\x19f\xcf\x95\xe2\xbd\xd2\xa2\xc3\xfc\xb7\x95\xd6o\xee\xf3\x88\xbe\xdf\xb3\xee\xe3\xe7S\x00\x1b\x00\x03\x02\x00\x02\xfe\r\x00\xba\x00\x00\x01\x00\x01\xb0\x00 \x99\xf9\x0c\xa3\x14j5!\x01\xbdu\xcci\xc1s\x93g\xa3|\x8f=\x01\xf2]\xb4\xe3P\x00\xf6\x95\xc0H\x00\x90"\xb70\x97L\xf1X\x02\xbaG6\xb0\xe0\x98\x95\x83\xe2\x91\xcfc\xc2\xf7dRE\xe5\xb8\x17\xc9Kn\xd9\xf3\xe4p\xe9-\xbe\xabb\x9c\x10\xcb3\x9a\x19\xca\x80C"\xd9\xd2X?Gu\xde\xa4\x08\xf0\xdf\x15W?\'\xa4C+\xb0\xced\xd08y_\xe6\xf7 <\x0e\xdc%:\xf8\x94\xcf\xad\xb3\xd7\xef\xa4\xe4\\i\xf5Q!>\xc4bI\xec\xdf\xea\xbe\xd6\xf0\x10\xba-\n\xa3\xbf\xa83\xd4yse6\x12hom\xe8\x02\xe8\x86\xcc\n\xcf\x03\xc0e\xb6t\x1d|@_n\x90/\x0f\x00\x0b\x00\x02\x01\x00\x00\x00\x00\x14\x00\x12\x00\x00\x0fmastodon.social\x9a\x9a\x00\x01\x00\x00\x15\x00\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
Lanius-collaris commented 5 days ago

在TLS record layer上分就行了

def fragment1(p: bytes):
 if(len(p) >= 7):
  t1 = int.from_bytes(p[3:5], byteorder='big', signed=False) - 1
  return p[:3] + b"\x00\x01" + p[5:6] + p[:3] + t1.to_bytes(2,'big') + p[6:]

参考: https://upb-syssec.github.io/blog/2023/record-fragmentation/ https://datatracker.ietf.org/doc/html/rfc8446#section-5.1

还有一些TCP的策略(一般要特权)也可以绕过GFW的SNI blocking,但我看你在测TCP fragmentation,估计不想用要特权的。

louiesun commented 5 days ago

好像freezhihu.org连上的包不符合猜想

louiesun commented 5 days ago

在TLS record layer上分就行了

def fragment1(p: bytes):
 if(len(p) >= 7):
  t1 = int.from_bytes(p[3:5], byteorder='big', signed=False) - 1
  return p[:3] + b"\x00\x01" + p[5:6] + p[:3] + t1.to_bytes(2,'big') + p[6:]

参考: https://upb-syssec.github.io/blog/2023/record-fragmentation/ https://datatracker.ietf.org/doc/html/rfc8446#section-5.1

还有一些TCP的策略(一般要特权)也可以绕过GFW的SNI blocking,但我看你在测TCP fragmentation,估计不想用要特权的。

thanks!