dd և ee secret-ներ. ինչպես կարդալ պրոքսիի հղումը
Սերվեր, պորտ և secret. ինչ են նշանակում dd և ee նախածանցները և ինչ կարելի է ստուգել մինչև միանալը։
Բովանդակություն
Պրոքսիի հղումը սովորաբար պարզապես սեղմում են՝ առանց կարդալու։ Բայց դրա երեք պարամետրերը միակ բանն են, որ կարելի է ստուգել մինչև միանալը, իսկ secret-ը հուշում է աշխատանքի ռեժիմը և հաճախ՝ այն պատճառը, թե ինչու պրոքսին չի միանում։ Վերլուծենք հղումը մաս առ մաս։
Հղումը ըստ պարամետրերի
Հղման ձևաչափը սահմանված է Telegram-ի փաստաթղթերով։ Կան երկու հավասար գրառում. tg://proxy-ն բացվում է անմիջապես հավելվածում, իսկ t.me/proxy-ն՝ զննարկչում։ t.me հոսթը կարելի է գրել նաև որպես telegram.me կամ telegram.dog, իսկ #-ից հետո մասը անտեսվում է։
tg://proxy?server=proxy.example.com&port=443&secret=ee473ce5d4958eb5f968c87680a23854a0676f6f676c652e636f6d
| Պարամետր | Պարտադիր | Ինչ է դա |
|---|---|---|
| server | այո | սերվերի հասցեն կամ IP հասցեն |
| port | այո | սերվերի պորտը |
| secret | այո | պրոքսիի secret-ը |
Պարամետրերը բաժանվում են & նշանով։ Եթե հղումը պատճենում եք էջից, համոզվեք, որ դրա հետ ավելորդ նիշեր չեն պատճենվել. HTML-ում ամպերսանդը գրվում է որպես &, և այդպիսի հղումը չի բացվի։
Սերվեր և պորտ
Սերվերը տիրույթի անունն է կամ IP հասցե։ Տիրույթն ավելի հարմար է. սերվերի հասցեն կարելի է փոխել՝ առանց հղումը վերաթողարկելու։ Պորտը առավել հաճախ 443 է՝ նույնը, ինչ սովորական կայքերինը HTTPS-ով. դրա վրա տրաֆիկը ավելի բնական է թվում, իսկ ոչ ստանդարտ պորտերի վրա կապերն ավելի հաճախ են ընկնում ֆիլտրերի տակ։[1]
[1] ee ռեժիմի համար սա հատկապես կարևոր է. այն նմանակում է HTTPS-ը, իսկ HTTPS-ը ապրում է 443 պորտի վրա։
Սերվերի և պորտի մասին ավելին ասելու բան չկա. ստուգել՝ հասցեն պատասխանո՞ւմ է, կարելի է միայն միանալով։ Հղման մեջ թաքնված գլխավորը secret-ն է։
Secret
Secret-ը տասնվեցական տող է։ Նրա հիմքում միշտ 16 պատահական բայթ է, այսինքն՝ 32 նիշ։ Հետո հնարավոր են երեք տարբերակ՝
| Տեսք | Երկարություն | Կառուցվածք | Ռեժիմ |
|---|---|---|---|
| Առանց նախածանցի | 32 նիշ | բանալի | սովորական (obfuscated2) |
| dd | 34 նիշ | dd + բանալի | փաթեթների պատահական լրացում |
| ee | 42 նիշից | ee + բանալի + տիրույթը hex-ով | FakeTLS |
Telegram-ի փաստաթղթերում ձևաչափը նկարագրված է հենց այսպես. secret-ը 16 բայթ է, սովորաբար hex-ով. գոյություն ունի նաև 17 բայթանոց ձև, որի առաջին բայթն ընտրում է տրանսպորտը, առավել հաճախ՝ 0xdd՝ padded intermediate։
Ինչ է նշանակում dd
Պաշտոնական MTProxy-ի README-ում ասված է. որոշ մատակարարներ MTProxy-ն որոշում են փաթեթների չափերով, ուստի այդ ռեժիմին ավելացված է պատահական լրացում։ Այն միացնում են հաճախորդի կողմից՝ secret-ում dd նախածանցով (cafe…babe-ը դառնում է ddcafe…babe), և լրացումը կիրառվում է միայն այն հաճախորդների համար, որոնք այն պահանջել են։
Արձանագրության մակարդակում սա padded intermediate տրանսպորտն է. փաթեթից առաջ գալիս է 4 բայթանոց երկարություն, իսկ ընդհանուր երկարությունը ներառում է 0-ից 15 պատահական բայթ։ Չափերը դադարում են հաստատուն լինել, բայց կապի սկիզբը մնում է նախկինը։
Ինչ է նշանակում ee
ee նախածանցը միացնում է FakeTLS-ը։ dd-ից տարբեր, բանալուց հետո secret-ում գալիս է նաև տիրույթը. հենց այն բայթերը, որոնք հաճախորդը կնշի SNI դաշտում։ Ուստի ee secret-ը միշտ ավելի երկար է։ Տիրույթը կարդացվում է hex-ից՝
echo 676f6f676c652e636f6d | xxd -r -p
Ինչու է այս տիրույթից կախված պրոքսիի կյանքը՝ «FakeTLS. ինչպես է պրոքսին կայք ձևացնում» հոդվածում։
mtg-ի համար secret-ը լինում է և՛ base64 ձևաչափով, և՛ hex-ով՝ ee նախածանցով. mtg generate-secret --hex google.com հրամանը տալիս է երկրորդ ձևը, իսկ --hex բանալիի բացակայությամբ՝ առաջինը։ Եթե ձեզ մոտ base64 է, այն մի կտրեք և ձեռքով մի վերակառուցեք, այլ պատրաստի հղումը ստացեք mtg access հրամանով։
Պրակտիկում. վերլուծում ենք secret-ը ըստ նիշերի
Վերցնենք mtg-ի փաստաթղթերի օրինակը՝ google.com-ի secret-ը։ Դրանում 54 նիշ կա, և հաշվել դրանք հարմար է աղյուսակով՝
| Նիշեր | Երկարություն | Ինչ է դա |
|---|---|---|
| 1–2 | 2 | ee՝ FakeTLS ռեժիմ |
| 3–34 | 32 | բանալի՝ 16 պատահական բայթ |
| 35–54 | 20 | 676f6f676c652e636f6d՝ google.com բառը բայթերով գրված. երկու նիշ յուրաքանչյուր տառի համար |
Այստեղից կանոնը. ee-secret-ի երկարությունը հավասար է 2 + 32 + տիրույթի նիշերի կրկնապատիկ քանակին։ Տասը նիշանոց տիրույթով secret-ի համար կստացվի 54, տասներկուսի համար՝ 58։ 42 նիշից կարճ ee-secret չի լինում. Telegram Desktop-ն այն ընդունում է 21 բայթից, այսինքն՝ տիրույթին պետք է բաժին ընկնի առնվազն չորս բայթ։ Եթե երկարությունը չի համընկնում, secret-ը կտրված է կամ սխալով է կազմված։
Նույն բանալին dd ռեժիմում կունենար dd473ce5d4958eb5f968c87680a23854a0 տեսքը՝ 34 նիշ առանց տիրույթի, իսկ սովորական ռեժիմում՝ պարզապես բանալու 32 նիշ։
Ինչպես ինքնուրույն ստեղծել secret
Բանալին 16 պատահական բայթ է։ Տիրույթ չունեցող ռեժիմների համար բավական է մեկ հրաման. երկուսն էլ վերցված են նախագծերի փաստաթղթերից՝
openssl rand -hex 16
head -c 16 /dev/urandom | xxd -ps
dd ռեժիմի համար արդյունքին ավելացնում են dd նախածանցը։ FakeTLS-ի համար ամենահեշտն է վստահել ծրագրին՝ mtg generate-secret --hex ձեր-տիրույթ.example-ը անմիջապես տալիս է պատրաստի secret՝ նախածանցով և տիրույթով։ Եթե պետք է այն ձեռքով կազմել, բավական է իրար կպցնել նախածանցը, բանալին և տիրույթը hex-ով՝
KEY=$(openssl rand -hex 16)
DOMAIN=ձեր-տիրույթ.example
printf 'ee%s%s\n' "$KEY" "$(printf '%s' "$DOMAIN" | xxd -p | tr -d '\n')"
Secret-ի տիրույթը պետք է համընկնի սերվերում կարգավորվածի հետ. telemt-ում դա tls_domain պարամետրն է, mtg-ում տիրույթը վերցվում է հենց secret-ից։
Ինչ է անում հաճախորդը secret-ի հետ
Secret-ը ցանցով չի ուղարկվում. այն մասնակցում է բանալիների ստացմանը։ Telegram-ի փաստաթղթերի համաձայն՝ օբֆուսկացիայի ժամանակ հոսքի գաղտնագրման բանալին հաշվարկվում է որպես SHA256 սկզբնական փաթեթի բանալու և secret-ի։ Հաճախորդը և պրոքսին, որոնք գիտեն նույն secret-ը, ստանում են միևնույն բանալիները. օտար հաճախորդի բանալիները կլինեն այլ, և պրոքսին նրա կապը չի ընդունի։
Եթե secret-ը 17 բայթանոց է (dd նման նախածանցով), առաջին բայթը որոշում է տրանսպորտը և բանալիների ստացմանը չի մասնակցում։ Հաճախորդները, տեսնելով ավելորդ բայթը, լռելյայն օգտագործում են padded intermediate՝ պատահական լրացմամբ ռեժիմը։
Մեկ secret թե՞ մի քանիսը
Սերվերը կարող է ընդունել մի քանի secret. պաշտոնական MTProxy-ում -S բանալին կարելի է նշել մի քանի անգամ։ Դա պետք է, որպեսզի տարբեր մարդկանց տրվեն տարբեր հղումներ և դրանք չեղարկվեն առանձին։ mtg-ում secret-ը մեկն է, հեղինակները դա համարում են գիտակցված որոշում. telemt-ում secret-ները սահմանվում են օգտատերերի համար [access.users] բաժնում։
Հղումների երեք օրինակ
«Սերվեր և պորտ» նույն զույգը կարող է տրվել տարբեր secret-ով։ Ահա երեք տարբերակ (հասցեն և բանալին պայմանական են)՝
tg://proxy?server=proxy.example.com&port=443&secret=473ce5d4958eb5f968c87680a23854a0
tg://proxy?server=proxy.example.com&port=443&secret=dd473ce5d4958eb5f968c87680a23854a0
tg://proxy?server=proxy.example.com&port=443&secret=ee473ce5d4958eb5f968c87680a23854a0676f6f676c652e636f6d
Առաջին հղումը միացնում է սովորական ռեժիմը, երկրորդը՝ պատահական լրացմամբ ռեժիմը, երրորդը՝ FakeTLS google.com տիրույթով։ Հաճախորդի համար տարբերությունը միայն secret-ում է. սերվերն ու պորտը նույնն են։ Հենց այդ պատճառով secret-ն է առաջինը, որ արժե կարդալ։
Տիրույթը և secret-ը փոխվում են միասին
ee-secret-ում տիրույթը բանալու մասն է, իսկ սերվերում տիրույթը սահմանված է առանձին. telemt-ում դա tls_domain պարամետրն է, mtg-ում տիրույթը վերցվում է secret-ից։ Եթե փոխեք մեկը՝ առանց մյուսը փոխելու, հաճախորդները կդադարեն միանալ. telemt-ի FAQ-ի համաձայն՝ տիրույթը փոխելիս հին հղումները «Unknown TLS SNI» սխալ են տալիս։ Ուստի փոխեք դրանք զույգով և վերաթողարկեք հղումները։
Ինչպես փոխանցել հղումը
- անձնական հաղորդագրությամբ նրանց, ում վստահում եք, ոչ թե հանրային ալիքներում ու զրույցներում;
- հնարավորության դեպքում՝ յուրաքանչյուրին առանձին secret. այդպիսի secret-ը կարելի է չեղարկել՝ առանց մյուսներին դիպչելու (աջակցում են պաշտոնական MTProxy-ն և telemt-ը);
- եթե հղումն արդեն տարածվել է, փոխեք secret-ը, ոչ թե հույս դրեք, որ այն «կկորցնեն»;
- secret-ը մի ուղարկեք «պրոքսիի ստուգման» երրորդ կողմի ծառայություններին. դուք գաղտնաբառ եք հանձնում։
Ինչ ստուգել մինչև միանալը
- Հղումը սկսվում է
tg://proxyկամt.me/proxy-ով և պարունակում է բոլոր երեք պարամետրերը։ - Secret-ը սկսվում է
ee-ով. հակառակ դեպքում ռեժիմը սովորական է կամ dd։ - Secret-ի երկարությունը տեղավորվում է վերևի աղյուսակում՝ 32, 34 կամ առնվազն 42 նիշ։
- ee-secret-ի վերջում տիրույթը կարդացվում է, և սա սովորական կայք է, ոչ թե նիշերի պատահական հավաքածու։
- Պորտը 443 է կամ HTTPS-ի համար սովորական այլ պորտ։
- Չկան բացատներ, տողադարձեր և ավելորդ նիշեր, ինչպիսին
&-ն է։
Հաճախակի սխալներ
- Secret-ը կտրված է։ Տողադարձի կամ մեսենջերում կրճատման պատճառով կորչում է տիրույթով պոչը. Telegram-ը կմիանա այլ ռեժիմով կամ չի միանա։
- Secret-ը մտցված է SOCKS5-ի գաղտնաբառի դաշտում։ MTProto-ի համար պետք է ընտրել MTProto տեսակը և secret-ը մուտքագրել համապատասխան դաշտում։
- Սերվերն ու պորտը շփոթված են։ Հատկապես ձեռքով մուտքագրելիս։
- Հղումը փոխված է ձեռքով։ Secret-ի մեկ փոփոխված նիշը այլ բանալի է տալիս, և պրոքսին հաճախորդին չի թողնի։
Օրինակ. ինչպես գտնել սխալը secret-ում
Ենթադրենք, ձեզ հղում են ուղարկել, և դրանում secret-ը 48 նիշ երկարությամբ է և սկսվում է ee-ով։ 2 + 32 + տիրույթի նիշերի կրկնապատիկ քանակ բանաձևով ստացվում է, որ տիրույթին բաժին է ընկնում 14 նիշ, այսինքն՝ յոթ տառանոց անուն։ Վերծանեք պոչը xxd -r -p հրամանով. եթե ստացվում է կայքի ընթեռնելի անուն, secret-ը կարգին է։ Եթե արդյունքում աղբ է կամ սպասվածից կարճ անուն, secret-ը ճանապարհին կտրվել է. նորից հղում խնդրեք։
Նույն հնարքը աշխատում է օտար հղումները ստուգելու համար. այն կես րոպե է տևում և միանալ չի պահանջում։
Secret-ը գաղտնաբառ է
Ով գիտի secret-ը, նա միանում է պրոքսիին և կարող է հղումը փոխանցել այլոց։ mtg-ի README-ում secret-ը կոչվում է պրոքսիի բանալի և հաճախորդի գաղտնաբառ։ Ուստի անձնական հղումը բաց զրույցներում չեն հրապարակում. որքան լայն է այն տարածվում, այնքան բարձր է սերվերի ծանրաբեռնվածությունը և այնքան արագ այն կավելացվի արգելափակման ցանկերում։
Հաճախ տրվող հարցեր
Ի՞նչ է նշանակում dd պրոքսիի secret-ի սկզբում։
dd նախածանցը միացնում է պատահական լրացմամբ ռեժիմը (padding). փաթեթներին ավելացվում է 0-ից 15 պատահական բայթ, որպեսզի փաթեթների չափերով պրոքսին ավելի դժվար ճանաչվի։ Նախածանցից հետո բանալին նույն 16 բայթն է։
Ինչպե՞ս տարբերել ee secret-ը dd-ից։
Առաջին երկու նիշով և երկարությամբ։ dd secret-ը dd է և բանալու 32 նիշ, ընդամենը՝ 34։ ee secret-ն ավելի երկար է. բանալուց հետո գալիս է քողարկման տիրույթը տասնվեցական գրառմամբ։
Կարելի՞ է հրապարակել secret-ը։
Ավելի լավ է՝ ոչ։ Secret-ը գաղտնաբառի պես է աշխատում. ով այն գիտի, միանում է պրոքսիին և կարող է հղումը փոխանցել հետագա։ Որքան լայն է տարածվում հղումը, այնքան արագ այն ավելացվում է արգելափակման ցանկերում։
Ինչպե՞ս իմանալ ee-secret-ի տիրույթը։
Վերցրեք secret-ի այն մասը, որը գալիս է առաջին 34 նիշից հետո (նախածանցի երկու նիշ և բանալու 32 նիշ), և տասնվեցական գրառումից այն վերածեք տեքստի, օրինակ՝ echo ՊՈՉ | xxd -r -p հրամանով։ Արդյունքը կլինի այն կայքի անունը, որով քողարկվում է պրոքսին։
Ինչո՞վ է t.me/proxy-ն տարբերվում tg://proxy-ից։
Պարամետրերը նույնն են։ tg://proxy հղումը բացվում է անմիջապես հավելվածում, իսկ t.me/proxy-ն աշխատում է նաև զննարկչում։ Telegram-ի փաստաթղթերի համաձայն՝ t.me-ն կարելի է գրել նաև որպես telegram.me կամ telegram.dog։