да я написал, потом удалил, потому что там скорее всего его скособочило от того, что болван выше написал. т.к я через хром их никогда не генерил
Можно ещё в 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
- http [tcp]
- httpS [tls]
- 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
}
Ребят, по-моему вас куда-то занесло ![]()
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 - его приходится добавлять в исключение. Возможно, это тоже реально сделать средствами командной строки.
Теперь вопросы:
- для того, чтобы все сработало, нужно, чтобы до указанного домена можно было дотянуться по тому протоколу, который выбираешь. Если указал quic, а quic в сети заблокирован, то батник выдаст ошибку?
- по умолчанию выбран довольно древний chrome109, это специально для совместимости со старыми версиями Windows? Или вообще лучше брать старый, чтобы не дробил?
Пожалуйста) Оказывается, у Ori в payloadGen тоже строка hex выдается, но на экран, а оттуда копировать неудобно. Если б добавить там сохранение в файл и протокол http, все эти штаны через голову с батниками стали б не нужны)
Не должен, он же на локалхост (127.0.0.1) по 1111 порту стучится. Только если quic (или порт) заблокирован файрволлом на самой машине
Да, вы все верно поняли, древний, чтоб без кибера, и вышел цельный фейк. У Ori тоже так, а его тулза мой Ориентир)
Спасибо за подробную инструкцию! Как-нибудь может попробую на досуге)
Поздравляю с успехом. Неплохо бы на досуге проверить контролирует коробка целостность пакета (все 1200) или достаточно первых 26 байт.
Не проверяет, хватает примерно 700-800 байт в зависимости от того как там все намешано внутри пакета