QUIC sniffer: Full support for handling multiple initial packets#4642
QUIC sniffer: Full support for handling multiple initial packets#4642
Conversation
大部分代码来自 v2fly/v2ray-core@8ceba34 v2fly/v2ray-core@c8c1120 Co-authored-by: Vigilans <vigilans@foxmail.com> Co-authored-by: Shelikhoo <xiaokangwang@outlook.com>
|
整个 QUIC sniffer 的代码都是从 v2fly 那边搬来的,你要搬就全搬了 |
好 |
|
想提个问题请教啊,测试数据里那些hexData,有没办法是用代码来生成呀 |
|
我是在手机的xray加个出站到电脑端得到的 |
|
@j2rong4cn 你现在有空完善这个 PR 吗?我可以等等然后很快合并 |
现在身边没电脑 |
可以的 丢个fake conn给QUIC就行了 但是好像不是很有必要 加之奇奇怪怪的QUIC包主要来自chrome的chaos protection 要生成它们就有点麻烦了( |
|
@RPRX 好了 |
|
应该没bug了 |
|
最好全部搬过来然后移除掉那个defer recover |
搬完了 |
|
看了下修改后的 buffer.go,用标识 bytespools 取代 潜在 bug 是 NewExisted() 会把 unmanaged 和 bytespools 转为 managed,然后在 Release() 中被 但看了下 NewExisted() 只有 gRPC 传输层有两处调用,随便吧懒得再往上追了,gRPC 传输层都快成弃子了, |
是直接从v2ray搬来的,没修改这个文件就没怎么看代码 |
|
@j2rong4cn 我不确定你这项新的修改合不合适,根据之前的代码,我感觉 NewExisted() 的本意可能就是复用 New() 的 buffer?不然和 FromBytes() 的区别就只剩确保了 capacity |
|
@j2rong4cn 此外 |
感觉只加 if cap(p) == Size 判断最合适了 |
这样也行,走原逻辑, 至于 QUIC sniffer 的部分我是没有看的,交给众测,以及我计划把针对 UDP/443 的默认 block 扩展至更大范围,还没定插哪合适 这个 PR 的 title 需要 rename 一下以匹配现在的 files changed,不用提及 buffer.go |
你改吧 |
|
|
我在安卓设备上测试了几个chrome内核的主流浏览器都都可以识别了 |
PacketNumberLength great 1|
感谢 PR,以及 v2fly 的三位贡献者 |
又发现潜在bug了😅emm |
|
其实之前我还是简单对比了一下的,我发现 v2fly 的代码没有你这里加的 wipeBytes(),看到你是在 "perf" 那个 commit 加的就没有说什么,而且你给 v2fly 那边也提了一个 PR,所以与它的 main 代码不一致也正常?所以就没提出 你再看看代码,可以开个 PR 修 bug, |
是buffer.New()得到了有数据buf,导致数据错乱 |
按理来说 buf.New() 不是默认 length 0、capacity 8k 吗?为什么还会得到有数据的 buf |
因为buf是从pool里拿出来的,有时候会得到有数据的buf |
只要 length 0,capacity 有数据也无所谓啊, |
|
|
||
| nonce := cache.Extend(int32(cipher.NonceSize())) | ||
| binary.BigEndian.PutUint64(nonce[len(nonce)-8:], uint64(packetNumber)) | ||
| _, err = buffer.Read(nonce[len(nonce)-packetNumberLength:]) |
There was a problem hiding this comment.
这个 buffer.Read 没问题吧,上面 cache.Extend 可能有问题
|
|
…S#4642) Co-authored-by: RPRX <63339210+RPRX@users.noreply.github.com> Co-authored-by: Vigilans <vigilans@foxmail.com> Co-authored-by: Shelikhoo <xiaokangwang@outlook.com> Co-authored-by: dyhkwong <50692134+dyhkwong@users.noreply.github.com> (cherry picked from commit 58c4866)
…S#4642) Co-authored-by: RPRX <63339210+RPRX@users.noreply.github.com> Co-authored-by: Vigilans <vigilans@foxmail.com> Co-authored-by: Shelikhoo <xiaokangwang@outlook.com> Co-authored-by: dyhkwong <50692134+dyhkwong@users.noreply.github.com>
大部分代码来自 v2fly/v2ray-core@8ceba34 v2fly/v2ray-core@c8c1120