Skip to content

QUIC sniffer: handle multiple initial packets#3802

Merged
yuhan6665 merged 2 commits intomainfrom
QUIC-Sniffer
Sep 13, 2024
Merged

QUIC sniffer: handle multiple initial packets#3802
yuhan6665 merged 2 commits intomainfrom
QUIC-Sniffer

Conversation

@Fangliding
Copy link
Member

@Fangliding Fangliding commented Sep 12, 2024

#3363
#3363 (comment) 把操作搬了过来 就是一些cv工作加上少许修改 本地暂时还没法确定是否有效

@yuhan6665 yuhan6665 changed the title 尝试修复QUIC Sniff QUIC sniffer: handle multiple initial packets Sep 13, 2024
@yuhan6665
Copy link
Member

感谢 能否在 commit 加上原作者名字?

@Fangliding
Copy link
Member Author

感谢 能否在 commit 加上原作者名字?

done


// copied from github.com/quic-go/quic-go/internal/qtls/cipher_suite_go121.go

type cipherSuiteTLS13 struct {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

刚才没注意 这个是不是可以用已有的不用新加?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

还真是 我找了一圈没有才加的 想着如果重复编译器应该会报错吧 结果大小写不一样

@yuhan6665 yuhan6665 merged commit 781aaee into main Sep 13, 2024
@yuhan6665
Copy link
Member

Thanks @Fangliding @Vigilans

leninalive pushed a commit to amnezia-vpn/amnezia-xray-core that referenced this pull request Oct 29, 2024
* QUIC sniffer: handle multiple initial packets
Basically copied from Vigilans/v2ray-core@8f33db0

Co-Authored-By: Vigilans <[email protected]>

* Remove unnecessary file

---------

Co-authored-by: Vigilans <[email protected]>
return nil, io.ErrUnexpectedEOF
}
ackRangeCount, err := quicvarint.Read(buffer) // Field: ACK Range Count
packetNumberLength := b[0]&0x3 + 1
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

我用的tproxy透明代理,发现无法嗅探quic,debug发现packetNumberLength=4,继续嗅探还是能的得到域名的

func TestSniffQUICForomTProxy(t *testing.T) {
	pkt, err := hex.DecodeString("c00000000108248e686c96cdee010000449e650d1462ab203d47b3e51eabfba0711bcb9e8b528eb25fc728935b643ad7dc84b4cb7233c5ef6260d924bcac00621efa2792eec691ded271dd61beb338b78b8ba8eac3227ba56de34d1e15bf59db463194445574f64330dab897e0e8d9bc759b13dd1ead5bb6bcedb23829440bc78073eea56bcdcf2008dc8f05839035203b9ee51a30bb87ae5b0b92cc7cfeb76a251110f8dd68f6b83048c07db8dcd2c0710610bae6fdfc30f9dceaf1473759693c29dc7eadb9289a09264498d90fff7fedd9619194de4bb11d3a550eb198aa409d49eeb83d71ed8793c9a1815f3a19837235be91a0aa4bd2dd50c97c2d117e7cc3694d8cb09c12e0593b44e40782484b4277d1035dcb90eaa6bb18c4e0b11e688a4ffe499ffb32e632acc1cfdced42fd26d8cecdd53f0d8cc1e9677c3ed522f6f518cc1ad28ca8c71bdb78503881ebd938e8fcabea62c1eff39bc36f5b62b89070df21fe70267f613d884b9056c01e05ec172c14cddfa4d756bcfc21544e66be04c9749e8adbec8b55fbd347d0dfa6ecfee6b84368c77eb6868300d8296968cd237392472704ff1c94bc32298de800f55054550f93a38b6fa92d14a98fff7afbdb38b54c28454c484431dae17cd020765be0213d66d6d84b306537fdf0a26f9e695bb59d61f4f845eebad35871180cb522175d4ea3798293ff53a891ef7b3cb8a93a0afc265fe984722a5f35fe853b1b6dd40a6a63e6361f29d44510d8438296a13d4880bb8c198a8548cad1a548ca6756ef04a95aa24cb4ebc4e7e2f9271f318c837b45f7f6a9f21781987c036aaabb69358bb6fb6ce3e9c36f7cacaf128a3d7c72df67fe8521d287f5faa78736d66829c87a1434b75dc88c6fc04ee3ead258bf7f96a3ef53b65217ac84f86ff9bdbd9089e16009d07ba9feaab5192f49777e695f7dc573bfb0cb8eccfe694d526be6b6c2e2a37635e17fea1a74a23ddbcdf5ef6739cfba29999c89be71e0c0b3f30d74b27f3b95b15756aee1f4578a28e32f9116d6f92893079627299ee4a98f98db462bb5448e01471c2567d5b0e068249820673eee91022cf23dc2191d4a3c82262d7966de53116ba16a6244fb6c5d5825cbea8262846ee8cc76276497bfe73bddfb8ba57908a356e677805c34de31a7e0efaa3eabeb97d89ae5d14da864002dbddd8b6734622d57ab7e4139aa687ffbafaf0e7adb8149f0a8339a2caab26ca122c67ab11b13a0757c5c29a9e77379815d139eddc22b70d264674addb538a2ed404c5c25ada8b318045f5ca69634cd9acfbae711f56d175ceee0a8d24d1f0ecac98420ae96ad0e6aa7a4b68a14fd8fcea8e094006db0218e1cc2c8ade34795723a32dfd85ea6ceac7e877999514a5eae004a7171bdfa6b344356070deee77fd5cdd73da636b1fd16acfba46fbbcff81da7e5396722f7c6545096a4d064beadc34487e6c8af3e35f77453b483f521ac7df4450918528aee3694b17a25b8fa23c91a962a8264901d87aa232e57783e5689d8197c23c384c5c3d819ae612e83ed14d06f3de2aaae676c615ae411800a9bac5c93662c429cbfabf67e5c0478f176f0b418d9a7445512ba1335c14eed805cbbfec9f5253ff6eeef7fbe904a0387322bad5dc69fa427e9de3bd3f59ab5a6bf6f28017e552f20a07d790b1364580bcd82ad")
	common.Must(err)
	quicHdr, err := quic.SniffQUIC(pkt)
	if err != nil || quicHdr.Domain() != "www.google.com" {
		t.Error("failed")
	}
}

it2konst pushed a commit to it2konst/gametunnel-core that referenced this pull request Mar 1, 2026
* QUIC sniffer: handle multiple initial packets
Basically copied from Vigilans/v2ray-core@8f33db0

Co-Authored-By: Vigilans <[email protected]>

* Remove unnecessary file

---------

Co-authored-by: Vigilans <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants