Mae’r gwall yn cyfeirio at linell gyntaf ffeil .ovpn ac yn dyfynnu rhywbeth sy’n edrych fel llythrennau cymysg lle dylai client fod. Mae’r ffeil yn agor yn iawn yn eich golygydd, mae’r llinell gyntaf yn darllen client, ac mae’r gyfarwyddeb yn hollol gyffredin. Mae’r ddau sylw’n wir, oherwydd bod y golygydd yn dadgodio’r beitiau ac nad yw’r cleient yn gwneud hynny. Yr hyn rydych chi’n ei weld bron bob amser yw problem amgodio, nid problem gystrawen.

Y myth: mae’r golygydd yn dangos y ffeil i chi

Mae golygydd testun yn dadgodio beitiau’n gymeriadau gan ddefnyddio amgodio y mae naill ai’n ei ganfod neu’n ei ddyfalu. Pan fydd yn dyfalu UTF-16, mae’r ffeil yn edrych yn berffaith ar y sgrin tra bo’r beitiau oddi tano’n barau, gyda beit sero ar ôl pob llythyren Ladin. OpenVPN yn darllen y beitiau hynny fel cymeriadau, ac mae’r anghysondeb yn ymddangos ar y gyfarwyddeb gyntaf y mae’n ceisio’i dosrannu.

Felly mae y llinell weladwy a’r llinell a ddanfonwyd yn ddau beth gwahanol. Mae dileu’r cymeriadau od rydych chi’n eu gweld yn newid i’r arddangosfa, nid i’r amgodio, ac mae’r dosrannu nesaf yn methu am yr un rheswm â neges ychydig yn wahanol. Dyna pam mae erlid y tocyn yn y gwall yn parhau i arwain at unman. Mae’r beitiau’n anghywir yn y ffynhonnell, ac mae pob darllenydd i lawr y llinell yn dyfalu yr un dilyniant toredig.

Mae’n werth adnabod siâp penodol y methiant, oherwydd mae’n ddiagnostig mewn ffordd benodol. Mae tocyn ar ddechrau’r ffeil, mewn proffil sydd wedi gweithio fel arall ar beiriannau eraill, yn gwestiwn trefn beitiau yn hytrach na chwestiwn geirfa.

Beth mae’r beitiau cyntaf yn ei ddweud mewn gwirionedd

Darllenwch y beitiau yn lle’r cymeriadau. Mae dau orchymyn bach yn setlo’r mater mewn eiliadau, ac nid oes angen i’r un ohonynt agor y ffeil mewn rhaglen a allai ei newid:

file client.ovpn
head -c 24 client.ovpn | od -An -tx1

Y patrwm rydych chi’n chwilio amdano yw pâr o feitiau blaenllaw wedi’u dilyn gan destun lle mae pob ail feit yn sero. Mae FF FE yn nodi UTF-16 little-endian, FE FF yn nodi big-endian, ac EF BB BF yn nodi UTF-8 gyda marc trefn beitiau. Mae ffeil UTF-8 blaen heb farc yn dechrau’n uniongyrchol â beit y llythyren gyntaf.

Beitiau sero rhwng llythrennau yw’r arwydd. Mewn UTF-16 little-endian, mae’r gair client yn cymryd deuddeg beit yn lle chwech, oherwydd bod pob cymeriad ASCII yn cael ei ddilyn gan sero. Nid yw’r strwythur hwnnw’n rhywbeth y gall arddangosfa golygydd ei ddangos i chi, ac nid yw’n rhywbeth y gall dileu dau feit ei symud.

Mae niwns pwysig yma: mae darllenydd ffurfweddiad OpenVPN yn sgipto marc trefn beitiau UTF-8 ar ddechrau ffeil, fel y mae’r darllenydd ffurfweddiad 2.6 yn ei ddangos. Mae’r goddefiad hwnnw’n benodol i’r marc hwnnw, ac nid yw’n gwneud dim i ffeil UTF-16 y mae ei llythrennau wedi’u padio â seroau. Trin y ddau farc fel yr un broblem yw ail hanner y myth.

Mae trosi yn cadw-fel, nid yn dileu

Cadwch gopi heb ei gyffwrdd o wreiddiol y gweithredwr cyn gwneud unrhyw beth, a gweithiwch ar ffeil ar wahân. Gall proffil gynnwys allwedd breifat neu ddeunydd cyfrif, felly mae’r copi yn golygu adfer ac yn gyfeirlyfr i chi.

Yna gwnewch drawsnewidiad amgodio go iawn, naill ai drwy fwydlen amgodio eglur y golygydd neu gyda thrawsnewidydd sy’n nodi ei amgodio mewnbwn ac allbwn:

iconv -f UTF-16 -t UTF-8 client.ovpn > client-utf8.ovpn
file client-utf8.ovpn

Gwiriwch y canlyniad yn hytrach na breintio statws allbwn y gorchymyn. Dylai’r trawsnewidiad gadw pob cyfarwyddeb, ac mae’n rhaid iddo gadw unrhyw floc tystysgrif neu allwedd fewnol feit wrth feit y tu mewn i’w farciau. Mae ail-afnio data PEM, newid terfynau llinell y tu mewn i floc, neu ailfformatio’r proffil yn ystod y trawsnewidiad yn creu problem newydd wrth drwsio’r hen un.

Pwyntiwch y cleient neu’r gwasanaeth at y ffeil drawsnewidiedig a golwgwch ar y gwall cyntaf y mae’n ei adrodd. Os yw’r tocyn cymysg wedi diflannu, mae’r gwaith amgodio drosodd ac mae unrhyw beth sy’n methu wedyn yn gwestiwn arall.

Beth nad yw amgodio wedi’i drwsio yn ei drwsio

Mae amgodio yn pennu sut mae testun yn cael ei ddarllen; nid yw’n dweud dim am ba un a yw’r opsiynau’n ddilys i’r cleient o’ch blaen. Gall proffil a allforiwyd ar gyfer gweithrediad arall ddosrannu’n lân a chael ei wrthod o hyd am opsiwn nad yw’r build sy’n rhedeg yn ei gefnogi, neu am gyfarwyddeb y mae ei dadl yn golygu rhywbeth arall yn y cleient hwnnw.

Mae’r gwallau diweddarach hynny’n haeddu eu hymchwiliad eu hunain: yr union sillafu, cystrawen y ddadl, a’r fersiwn sy’n ei derbyn. Peidiwch â thrin dosrannu llwyddiannus fel proffil llwyddiannus.

Cadwch yr ymchwiliad yn lleol tra byddwch wrthi. Mae trawsnewidyddion cyhoeddus ar-lein a dympiau hex wedi’u pastio’n lle gwael i ffeil a allai gynnwys allwedd breifat, oherwydd mae’r broblem amgodio’n hawdd i’w thrwsio ac nid yw allwedd wedi gollwng felly.

Erthyglau cysylltiedig