Обход блокировок c помощью WARP, ProtonVPN, Подписки, BPB Worker Panel

да я написал, потом удалил, потому что там скорее всего его скособочило от того, что болван выше написал. т.к я через хром их никогда не генерил

Можно ещё в hex dump, потом используя text2pcap превратить это в pcap и сунуть в Wireshark.

mail.ru

c80000000114717f226d63b0fe0a63addba1498f4e9557e4b2c5000044c68de2c4031312e78454a633c957f88b8ff12e3f3982b4ba7d49c6fc2a66b123cf951fe7cbb825e8a0b446f64ad7cfd4c378f521b629c7020a5e14495c35da0c95772b15a403e081aaf0d6284bca725fece1a0ba49f79d1a319acb15b2866509cafecd31a560ebfc410bc1f13c1469e5ba995c296226aaef9c1bb2ca4ba32cf609d346709e1880edd3dbb5b36037c0b4ca7904cd7cece669dce7bc8fa5cc1903b3e91925ad5248275a040362bf40e0e5f4c165c3bfe0193053a83bea579a4a07967075a079485e2052ebe824bf17a345ad43b063fa886484f08e855cdb175f6b58da5a1d01dd903f1526cf3aca10c6665a4c694f7cbc5984c710a7e44ffc94d097709c5eb8d712262b1ffb90ea224d676cbf38dfb77236e3069cf36725b7a7e024a35421da69755a94925c5ecd8db916b539acd275fb55481ac601ab964256f13a49a5c8c22fe2481886cf7f17acd19086794e96f2f77e9680e84a090f4c1d56ffb1315a7e1c6a84cad42df19d48fed48c3ad541235f95a1f69f762be798f749dad46ac3b317bf35181b6405aa6b691d79653ca2ee840a98c111a42d8314dbdb44c9d514d820f14d1ab6f90785f2e4d79481682475fa0e7d4f69e90605ce03fe813dec6ac2f4cbf49ee10cb1db6ce227d8afa0ed418ff0b4e525f26e2ec7a1d176eede2503d00133de363323363d6b771de0fade5c5fd80da3746c2401c6e50e5e5f1dec04cacd06bb6b5fb5db96f8483b089f7ea1d67acde535b19c13990905dfa1e73d09560b8c4116c27eb9de45f7d6b9cd569fbc2ef178741ba80f2760b7f6f4b1fc26e13839e9846691ea9da44330abd3ae039ad1518f50acea3d6d09aceb54c0fffaf89aaf4e2071098f2ea0c161300f9a16fd87e5b38324cd9b865f76070b4856d651d8056c3d9d674217a9f31dd925909b4becb370aa0fd7da26bf2a8458d766273ff8eb20f143c39d14d6627debe5fceafd028ea5c4b3e5fd28194af71eadbd2104677c5ef6a66c031152d38f833a9897258cda4132c3fd16d95c46971dce54ece28b46e39a6f6b432282d7edcaf086f6de6dee14ffe6c473521eb16d98b191366a99b2b577d246423eb0456843931d98a2e33e2babd17f27f6a0561978baf46a334a27fab6d5090e1eac3b1179801839909a37e6cf68033da2f7d4cd565012fb6306c4b0883264072d17e8964fb02c5701dbcbd94b35f816de6150c94525b24101882846d03ee960fd17ac26d7ebf02ac4c90c1a521608402566afe6995a256d6cdec2b693c695564be9a6a265c78b3c8e554709a5c173fa097161cca5b4c577362a40c22814b891f5c6a0f3d4ff08323407803484cc8f4793ed8aa3d4cbc74f4b73a40a1fff9b30099eaf4a0de4af294df316a886c8d2022f2d698bef56566bdc8ad522b7880f0890ac89b2b9cca3428721e455e52e118f747c189fc3cf7ced85f75e0095c1763265453a0b83f90e679fc24e508cddb188b8d66aaf600e46b8f58a4760c2e6a6e43d15e518acf873d0ebe0a27fbfeea857cd2db84c54d402e60bca21d6cb40da6fd1fc9fddfebfb169d66469f3542788166bdbc9f017e719a986d742e24bfb6ca3cdbd53810a1527cd5e60c65f59d33c2f7ebe3f6819283e09fc33da170a97abdda219ee60b2c233445181005132ad733846c21822e2071fc260270b1e96c020a1eb601378da5e7f61ed3c90c0b0be5db97794030e2c95cd2665d8

max.ru

c3000000011494b69fad1bd5fede5bc0cc9a6468bdc562e46593000044c657ea9090ee6f93f2a473f0e7885ceb0b1c2f6d3f40c606f7388506e3a49df3e4909e6f343589b7b1e55f7e6472f28e73232f44feb36f520aebb0b42cfe096928fbcee93bd3e8278f4dcdadc90229b33699d4a33eb13658f1357caa3d52f3c94ba42ee53647b489e20ad1de8cd3b4787d41b2969a9aa317b28ca7722bf60bfa0c559361a3f8577fbde3a438423d2ff2130d0728ae8bf90e7686d47f082d704de255ffc7f79981db2c5c004669390781aa4da836873af7ae725ea599c09c7d4267d7fb1b7629e8a0f617a3532d881bbc0d2c6fcfee129598ec5e4b67d422639fab9fd242c57735ff33d4da47a4b2a42a0a199e57c5425beb81241ea9b76c7f43d4deab9806446757b95ae74632dec50d8bef3c81974aa5c7d4adc1d7f3cd98bc9b588d8a4c4aa9c186ae831af546ebb5a063cd850823be9b8fcffc823f81aae0f3c1b15d118d0463a2844f62ccf591337e29193cb6cddb99d81f716bbf54854339f7671225c2b15ec0bda30b0b0f61f53cc4e0469b141095071b9ffc53b1bc720ba53d8df93fabe5461db840da5ffa968dd08fd3137f44d3b6982165314e8722e2f75b00a4ea20060bf10c5ad80a8c4e1c7aaf27600b7bd90afcfcea617c311eb8360cd03d16773e9a07c731da811272033908e13269738857e6c7a952d60464d2484073775725182d426a3b725d962ad18162ec9a4d9651b49391282665e49f741b75b15a1984877ebc4c586e77a3d2e0a7073d7b85765e7f18b5909781d4e9fdb56c62084ab3ecff47e7222199b2c5c9bcb363b17e71db26eb32e7cb11ac121de3d683fabaf326cb5dcc633c5e7de975d156bb7f5e6be0ef8447d39fa148d7446cc480a30ae7de360139c9764b2ea6ff5ca056388787911e5c6bafbc67f927f54b7bc50c6a80bc961c13483406ed41f68c602811043de194c7ffb073ccf45b179385259537a9fe0ec0af71ac327640291cd289bdc5590659617604cbf5b849a7004214c0e4ae62e05716c84301480193521315c1067ded041adf5a7b50ee25bc23a959121be0150cf2cec32b6f9296b57cb79ec7b63323e609e593d5b3660321a1816bc386a490610cf956c3b35f4f9b641278bdb1205d8c32eff9c47ded5684aa6a88b9efe29ccd59381a74f21da6e103493fadd834e19a7ccbc4c4915b2406b6e547ff634fbc08c0a19e2e80f28bbda0d04647ea677100060bccec2814d9f20b2146a155a0562c8c07cc061f9111cf4b4f64379f0a0c457877989c0d35ccc1c7a03f7411fe740f8435be23712781a84021df2d4d368e221aa9d00ec6e900753e7592baf2137bc74ed8f6dfdc0a205efc27792aba4f6b477394b60b4e11399355dc6a59781c268588d62869cc88fec00057963d2fa35e2c67589a6d64858a0663bb5c9c0f1ead0700f8f6a2014673def3d83514366f6a9f0000a440c19086c6e652e7541a68b7fbaabebf48a772063ea3cd2c66c4d668178a50d8c2933f667fced9ed8331bbcb1f84db645d6ade09afa5477c5916c7a9983694700e8130106e5d26ac56f5c2f02a936607a4c979b050e1a8b13d2af82151dc0fe27227acd5e9419e94657b55914a89ec6c6c974e8fd7db890fc5a5bd2e176d391374269ef11a9ca8b4f0483ca836248350a82260dcf3bba528c2be8af077a71b60f5986ca0e60dfd1a53105b32396aeb8e671bf57a7865b46a649b7a1a5a51174734cff031205496cac5a4ed

vk.com

c20000000114b7d21f610e37f56652c6e925d750d791e817b945000044c6d53f16442e04d35500c6522a2baa83fc930b151b6b39611a38404b8041ca73ae2b5ca6b5a422518c56a7836e7923103898f4ebe9bf960f2eb28fb20b8aacb2e6be9cd374b0e34f7e500d5bc781510ce2b9ce1e2ab00a19234f9e1df44295eaae8881f50407ad45e8c389d4eba2597c49844d210109c5e93a85c0e704a50c2f155a732e7ccc6a4a92f1606cbab58a7c668bf57905b9c59d670c30cacfad1cd056c99a358c57ef0717d21d722aa1f5e6470f7d26a5fb7c71ed7a4d7d132aef3bd4e1e1b6c506b821a5ea1537a603bce43ffca04ffa78de34de4d1ba04aead78f987365b88852878bdc6682dfba9ab6669b551c20fd3c5c74d1da3e2d004207a98d09c1a69b9fc606da117d736a82555618b08af6e852c62bb89582f3a7e165358f4e4fd54af2d5937eddbf971ba0991e54a92c17fa2abe6debf4ef8f6faf21f20717a50ebada1b11f2273c7f1deaebcbbd20349474c1a973631447bf6eb9d447696150d57ec75780bb9325bd155f7da66464d4170a3cd98cdb774ed386dab977769d2d6ce9ee4ef8fc3b01bfb55f57eebf0a8a702fd962bbac6b0072d2bb9f7da2350e47b60301ff750019eba6f537eb673042241d6db9b25e5fde2a0671f12ae72f4939c0b68d7b7b0c4ab0eac36f3b3bef04de18ffbeac814643ecc0fd06589d4f65393f8808b0c5cc0f3068b5e18e31a7582781ac68663ebd0c7d73b8bc2769bd8ccf7fc263c9ffc3d41f39f2c7e526c1b30162c2fd8acaf55fac9c0252b324e97d03fd39eefb5e099fff809bb59e4c40e88769336e49bce03a9878760eef6446eef3cb5eedde3837db81b9ee679cb8a16ee90d13b381f5bb624be7f8115c88355a0ce927b249653a9a33f966c9730e328957b7bfc291dd522c28c39c6b0a06b0852b655025da5fae1f27e1aa527f8b3ebba9b8a7b7b952378610a19ab872722c995819561bedb1768da75686e7b674c6ede20b87d086fec6b76eb4e466ec268abce450ca75c5293efb3b231ed4606d531f1ecf2943913cdd87c6b0d12bb8183d46fda211d59eee900f9a8561b3d036d5eebeccd107b0080aefca1b6cb6c5a5693b51b1524c5f459e6fc38ef615100e42050d2295c39de601fdcd3232b646f88da2301442d43063ecd89dc0cc95dc0c1e1cf1993522fe642352a5dc764ed1b829ca99ce89ae6c99ca8e2e7b7b9f363c595e1351f3b4cd5026472d3195a0289f14b1354d5a85e50bf800409d2d52676409acd1d46adf93a51a7f9a729c06ddf6ebaf6d1f634d98463a45f215a4533b21fdd39ae296db8be08599af159f344f3f75ba0c184a1efdba9f493e0d93a75e960e59a62f3a6bf5f0c2320c42212204b7dfde07b6211684603d09a9315245baabde2a1bdd95c504ed978f976210ade93a9ec0d778f5c7d2346a859faac1f2192a5169c7116145d20adac244ca4bb46e0fdf82811fb82f17f3ea3bc6332dc27842e4e64ca05c74a60f1c17d8ce1da13f69c4e0aa3ddb37282e41130529c704d43953463d64e525e2adedeefb8b675294b3c3c848ce44f4702e5a3b1617d755d461da60bed3eee5c8b9402ae803f079606e5b9cdd536f7c671f5b3ff87668049fe79dcf9c5b2fb35ff2db5c6c3826c05688cb6bd5d85d9f668258b2073ade938ff27629621feeac7fb08c17acfb359350ccfc077859323ca6d4064ab605d9623186d9c1457f5d00b52997be8bb077e9496e2fdbdb892acf

www.google.com

c700000001140357eb42d784658e4f9b7fb545f4df124d85b134000044c6eee59bdb7a37680ffb374a4a895aadd078a046765ab0c240de37f6771eb47285b97a1cc70aa0bde2ff0fdae40063193ae036cb0f97cf652d4ee31990c48c60aa4e1773cfb755fd963eada5f78bd2ee71bd05c02e838f7ba6744e1a705122581c817e8b09c2e7a2cee01f0ac3a179a296c364546818ab663e47708b66117579f5baba6fcb35279eb07dbab19f14a7bc83cb7c657a743ba4b0d1ba8bfccd113c53871bba1770e4dd6502744ed18d5a48f46df322817973756848f5393b4c9c079f2968f99fd9cbdf9e772a14f3b2237e4672168318fb3e4123a3e2e9693b0885114f60b50a91583eb08826a5148bdd3a520790f6b6140c977c20c476aeaa83322c84a71d922373641a4b2922fd44217277c10ee81d21ec61c546d2168bcdf1283a51808d50e5bd2cad28179c80fc3819105aa75701cbab1392d9876909ffcd4b36cfa741f3c6bd52e1207a9a9ea5820d2cf05b75970045ee70a4cfd8e4c6ebf1516b8baa83d46e13a713980a5535cb18cea0e8fadc7131969712a6a7b4e5e723380a5fb221b55c40c72304fbeeee06efaa5b9326becc6fcf502d3e14afbf0ae985cf9030c4f6fafdaaadb1cce403d8396cd195d2f70de69c29cd80504f317e4629b0d8132314c4c4eae1e5ea3703dd06f4677efe086625aa8d5d0464576185dee797f4ed6ec0b9f711410704a5d60834cbcb8f6c64082f44a62e2ff6037c7b551cc01a60fc99d3cbbf8c08bb5dbf3b890800c47a60c83f33463de18138aaf1f59725d99f5bed0492dc7b2585727d4feb753a759dadec5b2d1a35cd46d325ea0a0fa926b74169b21028e0cc5197c0de50c3c05589ef9b77bc62f8d889bd59bf7b2721b93438eb54e73cb26acc510c0b98b1269566ceb793f702e712e86423d24e79091dbfa313db494f1aeac3f675cb50630d80ae6967ab68495c86644dccd5ef79becabb6ad270265f7dde1f013abd3930010f8745b88f180f001acd9a7d7fc63344e0d986f42c620fb5c8ae9a4eab84668f59e8fbd85d317c3b0f13142ac2cef6cc43ef439d0e648ebb90de5e4f82acf0f7edef0ff3e3e830466a6896fb7b3ff9972b6555e17a87d5f0d86837a024701f88120206ad0202c3f749a420c315eb929cf31c0cc14a109f5532d5c1f206bc88168b1dd3a364f1baa5c191c82aeaf7b84c80a4232b605acfa909ca2e05480e891d58c8dad4b891894dfc0c038d0480d03047a25f160955169ec4bd0f8e35b0e5e0b4c61fae82c05ff3153755ecd96341128bd1a7fdab0cc17c65b93b703e35ec51da1c64cebd4c32a3de5e8831156e8de2141c83fd0f5496b3a8d85fef41d642acbdf618ab40b9197dfb120c8aca6a3bcf7fa20c573961ba0cc1e2562e58f5a512efa75c7f4fe54251721cf1b38bf003812dfb136312e4c51a95130d8c8e1f4337e021c1ad835f82233022d101af15df131c7b5b245f018f55e06e55f33d3a79d0abcaeb8c836ad7b0a5862f6993534613a5e483b3eb351c4560442f19f7c9535ce9704f189c849e256ac65d2b86b3b6786f01513c9b2840d5edfd48c12f2dc639dda651897c2e1a71ae09b289807b9e6273f04562a1ee91faa2a469a94de799d59e19c299c02d87a156e8eb4b1f7a1db91c6a42f5e4aca606b2fde8ee6204e4cbf7ac220e6fdf035e75d267763c563753d667dfe28dba3da55c721cfa7f0c6b17fd3c708be8b2ac4d9a4a524fdce48c516747c668a5

www.facebook.com

cc000000011474674bfa818e417feaf071c4b405999fb4570648000044c68f673b8beabdfbbdff3218f941950aa1111bcaab6bde856cd32f1d610b9fcfb835a37d10e71c2e9b29ae7122be3d813333e37331e0022a0312ea7803680a92ffb29ea65a017b14a79a3390dbb0704894fb32afb68d4d5db5d11ffb6651867eae0bc8fb73b9f8dc3e842c75431e68976caa237b957a8506e211be057295e9436440388dab7b6226af9ea77dc1e338a9ca8a05d35a88bed2aca033ed88c5ab7581861dc6cc83d21780637691069f15250653ac13c5b0b9fad5ffffe01aad2c5bb25c4200092593267d6cfe5ed1cfd12ab6114e456f25ec9d9ec1267c00760841e9e1d94c0eb3922aef48643d9537e5243e086f1ad6f7daf108c236ad6b0aab4f9dfd1ff3de544bdf8b430b7f41c132848933ee58e8432904c8313a02a6a33c6d24527623273ca9f2b37b60c549a7d3589cf6859236510ccc21edab7d6ebe71cb4d1258b8ed2ffb73beba2c9a8faec38567523ba45a1cc0bf5d927e71dc0c42b556c765eb0a0fe722437c2a28e524be3f5982052a6acf4d7ca3037b67dfaa62733e6668a03931faa4bb23ea4c290cb7c77808436c5b5abd969f02cc67d14de8f2b696c00ee41c61f88f663f076d7257299146764da4a81809ba7392b671f5881413e60c53dad6d8915e5f91c79e9ada8072ca89d4963511b5522d4ff989d17d811d89ae720136f8d9deeef7e770321206a77815e6befb3505eba0a265d68db85ec86a8122f9f42dfe413c3ca21b7fb67095aba54069fc9af3eb5c5560ae2ced0e0c4ec7b9182d7b04f497dea5eadd9604ff618be34bbf2e052b8c1de6d88a4f305bf339dc4377e7dce111405da891f49c63e6f7d10e2b785b51ee7a9d6a2ee98227abdebae11dfef35a44ebf509d14934bb99cb656422f72d20ac7b5c84efd86178065863fb45836a8454ed7dc1693c230e3ae7f61923c7433b410b0b5245104c00a0a503e8ec90c4783023919dbf3fa4beb83bfd84b2115b453c23dfc63e28389956c097959410416b82124048bfd0d6464d114fd9fcd9ff459c4abe036032d6aeae0d48749dc0e87ea7ea8e189aa9883fb897209f0325dabd4ad5c59410eb727e823d79f4bfce0bec22bc34882d2a5cab2a8f371da1a1ed9e9ddb621156ae753a0ef0d20f122a4bb2987a61cb4f40c985f76842bab0b4317fa7108ed9b4045b00d2e4f2ffb275103642a6e861e8acc4c220e273d462577eed8b44d9c95ed22514379bc9f664e197d4deaca51fc4813ebce861257cf8c3edc366265060234c37e83d99d53a735feb296025a78093ac3ab15aab10ac443708912756b9a7597ab0e1da78b12b622aa76d28c6c55d4ab11e1e13bebd57f475c002f7331a1d29d1404a6f425f47e1627898b3b1e9e6dddab9cf78ec91fa0271fa321de0329375e99e633225dbdf11a36f8b2d825d74a4a2fd7e9c8581fff32d4a51f7290807896fefe2a6e9b816df287371d3dde41dd2c0f6bef38f1377331974b446ad182e64ec438841fbd43650f1dbc98ac3b2eb260e2fc7ea0d340ec63203e197db82fcce05530d5c5e24c06eee1a89aef9adee0472c6b9c97c18e9d5e4ab0d91569aca5b13c2af35298b10e499fdb672846bd9eaaf930ef49eb8595505fec5c22256bb7a6b46f444fdc8c932c17c7d7f4e091e73a255df14ce4c2712dd3da8d128f4e16e689fb41a0b8193e01b1eb118eaa8adbf048923e464c8f7c2e97a9f5bc21da9ee9dd4796ff0507a78ef

На windows запускаю

ncat.exe -l 127.0.0.1 -p 1111 --udp >mail.ru.bin
curl -4ksv -m 1 --http3-only --tlsv1.3 https://mail.ru --connect-to ::127.0.0.1:1111

Размер mail.ru.bin 2400 байт
Если увеличить таймаут до 2 сек -m 2, то будет уже 3600 байт и т.д.
Может быть вы подскажете, ЧЯДНТ?

Очевидно, нкат ничего не режет, а просто перенаправляет поток в файл. Что получил, то и перенаправил. Получил 2 пакета по 1200 сдампил 2400, получил 3 пакета - 3600, и т.д. 4800, 6000, 7200…

Отрежь от 2400 через дд или первые 1200 или последние:

dd if=mail.ru.bin of=quic_initial_mail_ru.bin bs=1 count=1200

dd if=mail.ru.bin of=quic_initial_mail_ru.bin bs=1 skip=1200

Да это понятно. Но у Ori в PayloadGen получается красивый bin , а у меня хрень какая-то)

Есть аналог на win?

дд есть и под винду - dd.exe

что касается красоты, то тебе шашечки или ехать? 1200 байт и в Африке 1200 байт, они (пакеты) кстати разные по идее, первые 1200 != вторым 1200

хочется красиво делай дамп через тспдамп или шарк, они в пакеты умеют

что-то типа

tcpdump -i lo -n port 1111 -w tcpdump.mail.ru.pcap

вместо команды с ncat, а курлом то же самое, потом откроешь pcap-файл шарком и увидишь пакеты

Мне просто хочется понять, в чем отличие такого bin от дампа payloadGen (1300 байт примерно). bolvan ведь советует “связку curl + netcat”
Т.е. да, шашечки) А для ехать вполне годится и payloadGen

Если шашечки, то смотреть надо через вайршарк, он специально для этого создан, с гуем и кучей свистоперделок.

В payloadGen uTLS/uQuic с фингерпринтом браузера. Конечно он будет от обычного курла отличаться. Можешь curl-impersonate попробовать.

Ретрансмиты.
Таймаут стоит сделать 0.1 сек (1/10)
Либо curl с kyber. Тогда файл 2400 надо порезать пополам, чтобы получить 2 фейка.
Я не знаю умеет ли амнезия слать их 2
Лучше все же взять curl с openssl <3.5.0

Спасибо. curl-impersonate с chrome109 и использую в FakeGenerator)
Просто различий нет никаких, что с curl, что с curl-impersonate дамп 2400 байт. Мне кажется, чего-то не хватает в параметрах curl, но что именно - не пойму

Спасибо, попробую
upd таймаут 0.1 не помог, файл все равно 2400 б

Спойлер

Enter domain or url (default=mail.ru) : mail.ru

Choose protocol

  1. http [tcp]
  2. httpS [tls]
  3. quic [udp]
    Enter the number of your choice (default=2 [tls]): 3

  • Connecting to hostname: 127.0.0.1
  • Connecting to port: 1111
  • Trying 127.0.0.1:1111…
  • ALPS: offers h3
  • Connection timed out after 103 milliseconds
  • closing connection #0

Fake Data saved in fakes\quic_mail.ru.bin

Для продолжения нажмите любую клавишу . . .

Курл посылает крипто фрейм с clienthello в первом пакете, а потом CONNECTION_CLOSE фрейм во втором, при закрытии соединения (closing connection #0 в консоли курла). В go-quic там посылается clienthello+ретрансмиссии (можно избежать ретрансмиссий, уменьшив таймаут, как сказал болван выше), а CONNECTION_CLOSE будет слаться, только если руками закрыть соединение или транспорт. Но т.к. запрос возвращает ошибку и nil ответ, то CONNECTION_CLOSE туда не посылается в принципе, т.к. закрывать нечего. Что касается payloadGen, то он в принципе только первый пакет записывает.

Можно вот так сделать, чтобы прибить курл до того как он второй пакет отправит:

(start curl -4ksv -m 3 --http3-only --tlsv1.3 https://mail.ru --connect-to ::127.0.0.1:4545) & (timeout /T 1) & (taskkill /IM curl.exe)

Если интересно с go попробовать, то вот код. Автоматом он не завершается, так что можно на него из курла слать тоже для теста, это плюс-минус то что в payloadGen сделано:

Спойлер
package main

import (
	"context"
	"crypto/tls"
	"encoding/hex"
	"fmt"
	"net"
	"net/http"
	"os"
	"os/signal"
	"syscall"
	"time"

	uquic "github.com/refraction-networking/uquic"
	uhttp3 "github.com/refraction-networking/uquic/http3"
	utls "github.com/refraction-networking/utls"
)

const (
	sni     = "mail.ru"
	port    = 4545
	timeout = 100 * time.Millisecond
)

var (
	fingerprint = uquic.QUICFirefox_116A
)

func main() {
	ctx, stop := signal.NotifyContext(context.Background(),
		os.Interrupt,
		syscall.SIGTERM, // "the normal way to politely ask a program to terminate"
		syscall.SIGINT,  // Ctrl+C
		syscall.SIGQUIT, // Ctrl-\
		syscall.SIGHUP,  // "terminal is disconnected"
	)
	defer stop()

	bytesChan, err := listenUDP(ctx)
	if err != nil {
		fmt.Printf("ERROR: %v\n\n", err)
		os.Exit(1)
	}

	fmt.Printf("Sending QUIC request\n\n")
	go sendRequestQUIC(ctx)

LOOP:
	for {
		select {
		case <-ctx.Done():
			fmt.Println("Interrupted")
			break LOOP
		case buf := <-bytesChan:
			fmt.Printf("Received %d bytes: %s\n\n", len(buf), hex.EncodeToString(buf))
		}
	}

	os.Exit(0)
}

func listenUDP(ctx context.Context) (chan []byte, error) {
	udpConn, err := net.ListenUDP("udp", &net.UDPAddr{Port: port})
	if err != nil {
		return nil, err
	}

	bytesChan := make(chan []byte, 1)

	go func() {
		defer udpConn.Close()

		for {
			select {
			case <-ctx.Done():
				return
			default:
				buf := make([]byte, 4096)
				n, _, err := udpConn.ReadFromUDP(buf)
				if err != nil {
					fmt.Printf("WARN: %v\n\n", err)
					continue
				}
				bytesChan <- buf[:n]
			}
		}
	}()

	return bytesChan, nil
}

func sendRequestQUIC(ctx context.Context) {

	roundTripper := &uhttp3.RoundTripper{
		TLSClientConfig: &utls.Config{
			NextProtos:         []string{uhttp3.NextProtoH3},
			InsecureSkipVerify: true,
			ServerName:         sni,
			MinVersion:         tls.VersionTLS12,
			MaxVersion:         tls.VersionTLS13,
		},
		QuicConfig: &uquic.Config{},
	}
	defer roundTripper.Close()

	quicSpec, err := uquic.QUICID2Spec(fingerprint)
	if err != nil {
		fmt.Printf("WARN: %v\n\n", err)
		return
	}

	uRoundTripper := uhttp3.GetURoundTripper(
		roundTripper,
		&quicSpec,
		nil,
	)
	defer uRoundTripper.Close()

	ctxWithTimeout, cancel := context.WithTimeout(ctx, timeout)
	defer cancel()

	req, err := http.NewRequestWithContext(ctxWithTimeout, "GET", fmt.Sprintf("https://127.0.0.1:%d/", port), nil)
	if err != nil {
		fmt.Printf("WARN: %v\n\n", err)
		return
	}

	uRoundTripper.RoundTrip(req) // ignoring an error here
	uRoundTripper.CloseIdleConnections()

	return
}

Ребят, по-моему вас куда-то занесло :melting_face:

Ori, спасибо тебе за такой подробный и исчерпывающий ответ! Вопросов больше не осталось. В go я ничего не смыслю. Мой потолок - это батники)

И тебе спасибо большущее! С dd получилось хоть и костыльный, но работающий батник FakeGeneratorV2.zip (2,3 МБ). Он обрезает bin. переводит в хекс и сохраняет строку hex в файл quic_*1200.binToHEX.txt
По крайней мере, у меня протон взлетел с этим хексом

Тут всё просто. Ставишь go отсюда https://go.dev/dl/ (msi пакет), чтобы он был в PATH. Т.е. если открыть cmd и вписать go version, то показалась бы версия.
Потом создаёшь папку в Документах (лучше без кириллических путей, пробелов, где есть права на запись пользователю), например prog. Заходишь в неё в командной строке. Т.е. открываешь cmd, пишешь cd пробел и перестаскиваешь в терминал папку prog, туда вставится её путь и жмёшь Enter. Создай в папке prog файл prog.go с кодом проги.
Потом по очереди вводишь команды:
go mod init prog
go mod tidy
(вторая команда скачает нужные пакеты, должен работать интернет)
А потом
go build -ldflags=“-s -w”
убедись, что кавычки норм. Это скомпилирует exe. Пока идёт компиляция, терминал ничего не показывает. Это нормально. Но проц грузится, когда компиляция закончится, терминал снова замигает (приглашение к вводу вернётся), а в папке появится скомпиленный экзешник.
При компиляции будут грузиться все ядра. Если этого не хочется, перед go build можно ввести команду
set GOMAXPROCS=1
После всего этого исходники можно удалить или переместить и оставить только exe.

Только не уверен, что на винде так можно скомпилить все проги. Кто знает, вдруг некоторым понадобится ещё gcc комплилятор, а это засада.

Также лучше поставить нормальный терминал. Не cmd. Из cmd неудобно копировать показываемый текст (при копировании добавляются лишние переносы строк). Например, ConEmu. Настроить удобный размер окна по умолчанию, шрифт и цвет.

Скомпиленную прогу надо не даблкликать, а перетащить в терминал и работать с ней в терминале. Или добавить в PATH (например, C:\Windows) и обращаться просто по имени файла. Если прога prog.exe, то её можно вызвать по имени prog. Для завершения Ctrl+C.

Проблему неудобного копирования текста из виндовых терминалов можно, наверное, решить перенаправив вывод в файл. Что-то вроде prog > prog.txt

отличный батник, спасибо. Это хорошо, что он на выходе создает и bin, и hex файл. Один побочный эффект - это срабатывание Windows Defender на ncat.exe - его приходится добавлять в исключение. Возможно, это тоже реально сделать средствами командной строки.
Теперь вопросы:

  1. для того, чтобы все сработало, нужно, чтобы до указанного домена можно было дотянуться по тому протоколу, который выбираешь. Если указал quic, а quic в сети заблокирован, то батник выдаст ошибку?
  2. по умолчанию выбран довольно древний chrome109, это специально для совместимости со старыми версиями Windows? Или вообще лучше брать старый, чтобы не дробил?

Пожалуйста) Оказывается, у Ori в payloadGen тоже строка hex выдается, но на экран, а оттуда копировать неудобно. Если б добавить там сохранение в файл и протокол http, все эти штаны через голову с батниками стали б не нужны)

Не должен, он же на локалхост (127.0.0.1) по 1111 порту стучится. Только если quic (или порт) заблокирован файрволлом на самой машине

Да, вы все верно поняли, древний, чтоб без кибера, и вышел цельный фейк. У Ori тоже так, а его тулза мой Ориентир)

Спасибо за подробную инструкцию! Как-нибудь может попробую на досуге)

Поздравляю с успехом. Неплохо бы на досуге проверить контролирует коробка целостность пакета (все 1200) или достаточно первых 26 байт.

Не проверяет, хватает примерно 700-800 байт в зависимости от того как там все намешано внутри пакета