Čo robiť pri otváraní súboru hieroglyfov. Namiesto súborov sú na jednotke flash „hieroglyfy“ (nezrozumiteľné symboly).

Krakozyabry - čo je také zaujímavé slovo? Toto slovo zvyčajne používajú ruskí používatelia na označenie nesprávneho/nesprávneho zobrazenia (kódovania) znakov v programoch alebo v samotnom operačnom systéme.
Prečo sa to deje? Jednoznačnú odpoveď nenájdete. Môže to byť kvôli trikom našich „obľúbených“ vírusov, možno kvôli poruche operačného systému Windows (napríklad vypadla elektrina a počítač sa vypol), možno program vytvoril konflikt s iným OS a všetko šlo haywire. Vo všeobecnosti môže byť veľa dôvodov, ale ten najzaujímavejší je „Práve sa to tak pokazilo“.
Prečítajte si článok a zistite, ako vyriešiť problém s kódovaním v programoch a OS Windows, keď k nemu dôjde.

Pre tých, ktorí stále nechápu, čo tým myslím, tu je niekoľko:


Mimochodom, aj ja som sa raz ocitol v tejto situácii a stále mám na ploche súbor, ktorý mi pomohol sa s tým vyrovnať. Preto som sa rozhodol napísať tento článok.

Za zobrazenie kódovania (písma) v systéme Windows je zodpovedných niekoľko „vecí“ - jazyk, register a súbory samotného OS. Teraz ich skontrolujeme oddelene a bod po bode.

Ako odstrániť a opraviť krakozyabry namiesto ruštiny (ruské písmená) v programe alebo Windows.

1. Skontrolujte nainštalovaný jazyk pre programy, ktoré nepodporujú Unicode. Možno je to vo vás stratené.

Poďme teda po ceste: Ovládací panel – Miestne a jazykové nastavenia – karta Rozšírené
Tam sa uisťujeme, že jazykom je ruština.


Vo Windows XP je okrem toho v spodnej časti zoznam „Kódové stránky konverznej tabuľky“ a v ňom riadok s číslom 20880. Musí tam byť aj Rus

6. Posledný bod, v ktorom vám dávam súbor, ktorý mi raz pomohol všetko opraviť a preto som si ho nechal na pamiatku. Tu je archív:

Vnútri sú dva súbory: krakozbroff.cmd a krakozbroff.reg

Majú rovnaký princíp – správne hieroglyfy, štvorce, otázky resp výkričníky v programoch a OS Windows (v bežnej reči krakozyabry). Použil som prvý a pomohol mi.

A na záver pár tipov:
1) Ak pracujete s registrom, nezabudnite si urobiť zálohu ( záložná kópia) v prípade, že sa niečo pokazí.
2) Po každom bode je vhodné skontrolovať 1. bod.

To je všetko. Teraz viete, ako opraviť/odstrániť crackery (štvorce, hieroglyfy, výkričníky a otázniky) v programe alebo Windows.

Myslím, že ste sa viackrát stretli s exploitmi, ktoré sú klasifikované ako Unicode, hľadali ste správne kódovanie na zobrazenie stránky a tu a tam ste boli spokojní s ďalšími trikmi. Nikdy nevieš, čo ešte! Ak chcete zistiť, kto celý tento ošiaľ začal a dodnes ho upratuje, zapnite si pásy a čítajte ďalej.

Ako sa hovorí, „iniciatíva sa trestá“ a ako vždy, za všetko môžu Američania.

A bolo to takto. Na úsvite rozkvetu počítačového priemyslu a šírenia internetu vznikla potreba univerzálneho systému reprezentácie symbolov. A v 60. rokoch minulého storočia sa objavil ASCII - „Americký štandardný kód pre výmenu informácií“, známe 7-bitové kódovanie znakov. Posledný ôsmy nepoužitý bit bol ponechaný ako riadiaci bit na prispôsobenie tabuľky ASCII tak, aby vyhovovala potrebám každého zákazníka počítača v konkrétnom regióne. Tento bit umožnil rozšíriť tabuľku ASCII tak, aby používala vlastné znaky pre každý jazyk. Počítače boli dodávané do mnohých krajín, kde už používali vlastný upravený stôl. Neskôr však táto funkcia prerástla do bolesti hlavy, pretože výmena údajov medzi počítačmi sa stala dosť problematickou. Nový 8-bit kódové stránky boli navzájom nekompatibilné - rovnaký kód mohol znamenať niekoľko rôznych znakov. Na vyriešenie tohto problému navrhla ISO (Medzinárodná organizácia pre normalizáciu) novú tabuľku, konkrétne „ISO 8859“.

Tento štandard bol neskôr premenovaný na UCS (“Universal Character Set”). V čase prvého vydania UCS sa však objavil Unicode. Ale keďže sa ciele a zámery oboch noriem zhodovali, bolo rozhodnuté spojiť sily. Unicode si vzal na seba neľahkú úlohu dať každej postave jedinečné označenie. Zapnuté tento moment Najnovšia verzia Unicode je 5.2.

Chcem vás varovať - ​​v skutočnosti je príbeh s kódovaním veľmi nejasný. Rôzne zdroje poskytujú rôzne fakty, takže by ste sa nemali sústrediť na jednu vec, mali by ste si byť vedomí toho, ako sa všetko formovalo, a dodržiavať moderné štandardy. Dúfam, že nie sme historici.

Unicode rýchly kurz

Predtým, ako sa ponorím do témy, rád by som objasnil, v čom je Unicode technicky. Ciele tohto štandardu Už vieme, ostáva už len opraviť hardvér.

Čo je teda Unicode? Jednoducho povedané, toto je spôsob, ako reprezentovať akýkoľvek znak ako špecifický kód pre všetky jazyky sveta. Najnovšia verzia Norma obsahuje asi 1 100 000 kódov, ktoré zaberajú priestor od U+0000 do U+10FFFF. Ale tu buďte opatrní! Unicode presne definuje, čo je kód pre znak a ako bude tento kód reprezentovaný v pamäti. Kódy znakov (napríklad 0041 pre znak „A“) nemajú žiadny význam, ale existuje logika na vyjadrenie týchto kódov v bajtoch. Unicode Consortium ponúka nasledujúce typy kódovania, ktoré sa nazývajú UTF (Unicode Transformation Formats). A tu sú:

  • UTF-7: Toto kódovanie sa neodporúča z dôvodov bezpečnosti a kompatibility. Popísané v RFC 2152. Nie je súčasťou Unicode, ale bolo predstavené týmto konzorciom.
  • UTF-8: Najbežnejšie kódovanie vo webovom priestore. Je premenná, široká 1 až 4 bajty. Spätne kompatibilný s protokolmi a programami, ktoré používajú ASCII. Zaberá rozsah od U+0000 do U+007F.
  • UTF-16: Používa premennú šírku od 2 do 4 bajtov. Najbežnejšie použitie je 2 bajty. UCS-2 je rovnaké kódovanie, len s pevnou šírkou 2 bajty a obmedzené na limity BMP.
  • UTF-32: Používa pevnú šírku 4 bajty, t. j. 32 bitov. Používa sa však len 21 bitov, zvyšných 11 je vyplnených nulami. Aj keď je toto kódovanie ťažkopádne z hľadiska priestoru, je považované za najefektívnejšie z hľadiska výkonu vďaka 32-bitovému adresovaniu v moderných počítačoch.

Najbližším analógom UTF-32 je kódovanie UCS-4, ale dnes sa používa menej často.

Napriek tomu, že UTF-8 a UTF-32 môžu predstavovať o niečo viac ako dve miliardy znakov, bolo rozhodnuté obmedziť sa na niečo viac ako milión z dôvodu kompatibility s UTF-16. Celý kódový priestor je zoskupený do 17 rovín, z ktorých každá má 65 536 symbolov. Najčastejšie používané symboly sú umiestnené v nulovej, základnej rovine. Označované ako BMP - Basic MultiPlane.
Dátový tok v kódovaní UTF-16 a UTF-32 môže byť reprezentovaný dvoma spôsobmi – little endian a big endian, nazývané UTF-16LE/UTF-32LE, resp. UTF16BE/UTF-32BE. Ako ste možno uhádli, LE je little-endian a BE je big-endian. Ale musíme nejako vedieť rozlišovať medzi týmito príkazmi. Na tento účel použite značku poradia bajtov U+FEFF v anglickej verzii - kusovník, „Maska objednávky bajtov“. Tento kusovník sa môže objaviť aj v UTF-8, ale nič tam neznamená.

V záujme spätnej kompatibility sa Unicode musel prispôsobiť znakom z existujúcich kódovaní. Tu však nastáva ďalší problém – existuje veľa variantov rovnakých znakov, ktoré treba nejako spracovať. Preto je potrebná takzvaná „normalizácia“, po ktorej je už možné porovnávať dva reťazce. Existujú 4 formy normalizácie:

  • Normalizačná forma D (NFD): kanonický rozklad.
  • Normalizačná forma C (NFC): kanonický rozklad + kanonické zloženie.
  • Normalizačná forma KD (NFKD): kompatibilný rozklad.
  • Normalizačná forma KC (NFKC): kompatibilný rozklad + kanonické zloženie.

Teraz si povedzme viac o týchto zvláštnych slovách.

Unicode definuje dva typy rovnosti reťazcov – kanonickú a kompatibilitu.

Prvá zahŕňa rozklad zložitého symbolu na niekoľko jednotlivých figúrok, ktoré ako celok tvoria pôvodný symbol. Druhá rovnosť nájde najbližší zodpovedajúci symbol. A kompozícia je kombináciou symbolov z rôznych častí, rozklad je opačná akcia. Vo všeobecnosti sa pozrite na výkres, všetko padne na miesto.

Z bezpečnostných dôvodov by sa mala normalizácia vykonať predtým, ako sa reťazec odošle filtrom na overenie. Po tejto operácii sa môže zmeniť veľkosť textu, čo môže mať negatívne dôsledky, ale o tom neskôr.

Čo sa týka teórie, to je všetko, zatiaľ som toho veľa nepovedal, ale dúfam, že som nič dôležité neprehliadol. Unicode je neskutočne rozsiahly, zložitý, vychádzajú na ňom hrubé knihy a je veľmi ťažké stručne, prístupne a úplne vysvetliť základy takéhoto ťažkopádneho štandardu. V každom prípade, pre hlbšie pochopenie by ste si mali pozrieť vedľajšie odkazy. Takže, keď je obraz s Unicode viac-menej jasný, môžeme ísť ďalej.

Vizuálna ilúzia

Pravdepodobne ste už počuli o spoofingu IP/ARP/DNS a máte dobrú predstavu o tom, čo to je. Existuje však aj takzvaný „vizuálny spoofing“ - ide o rovnakú starú metódu, ktorú phisheri aktívne používajú na oklamanie obetí. V takýchto prípadoch sa používajú podobné písmená, ako napríklad „o“ a „0“, „5“ a „s“. Toto je najbežnejšia a najjednoduchšia možnosť a je ľahšie si ju všimnúť. Príkladom je phishingový útok na PayPal z roku 2000, ktorý bol dokonca spomenutý na stránkach www.unicode.org. Má to však malý význam pre našu tému Unicode.

Pre pokročilejších chlapov sa na obzore objavil Unicode, presnejšie IDN, čo je skratka pre „Internationalized Domain Names“. IDN umožňuje použitie znakov národnej abecedy v názvoch domén. Registrátori doménových mien to považujú za pohodlnú vec, hovoria, vytáčanie Doménové meno vo svojom rodnom jazyku! Táto vymoženosť je však veľmi otázna. No dobre, marketing nie je naša téma. Predstavte si však, aké je to útočisko pre phisherov, SEO špecialistov, kybernetických squatterov a iných zlých duchov. Hovorím o efekte zvanom IDN spoofing. Tento útok patrí do kategórie vizuálneho spoofingu v anglickej literatúre sa mu hovorí aj „homograph attack“, teda útoky pomocou homografov (pravopisne zhodné slová).

Áno, pri písaní písmen sa nikto nepomýli a nenapíše úmyselne falošnú doménu. Používatelia však najčastejšie klikajú na odkazy. Ak sa chcete presvedčiť o účinnosti a jednoduchosti útoku, pozrite sa na obrázok.

IDNA2003 bol vynájdený ako akýsi všeliek, no už tento rok, 2010, vstúpil do platnosti IDNA2008. Nový protokol mal vyriešiť mnohé z problémov mladého IDNA2003, no priniesol nové príležitosti na spoofingové útoky. Opäť sa objavujú problémy s kompatibilitou - v niektorých prípadoch môže rovnaká adresa v rôznych prehliadačoch viesť k rôznym serverom. Ide o to, že Punycode je možné previesť rôznymi spôsobmi rôzne prehliadače- všetko bude závisieť od toho, ktoré štandardné špecifikácie sú podporované.
Problém vizuálneho klamania tým nekončí. Unicode prichádza aj do služieb spamerov. Hovoríme o spamových filtroch – pôvodné listy posielajú spameri cez Unicode obfuscator, ktorý hľadá podobné znaky z rôznych národných abecied pomocou takzvaného UC-Simlist (“Unicode Similarity List”, zoznam podobných znakov Unicode) . To je všetko! Antispamový filter to vzdáva a v takejto spleti znakov už nedokáže rozpoznať niečo zmysluplné, ale používateľ je celkom schopný prečítať text. Nepopieram, že sa našlo riešenie tohto problému, ale spameri majú navrch. No a ešte jedna vec z rovnakej série útokov. Si si istý, že niečo otváraš? textový súbor, a nezaoberá sa binárnym?

Na obrázku, ako vidíte, máme súbor s názvom evilexe. TXT. Ale toto je nepravda! Súbor sa v skutočnosti volá eviltxt.exe. Čo je to za svinstvo v zátvorkách, pýtate sa? A toto je U+202E alebo PREHRADENIE SPRAVA DO LEVA, takzvané Bidi (od slova obojsmerné) - algoritmus Unicode na podporu jazykov, ako je arabčina, hebrejčina a ďalšie. Posledné menované majú písanie sprava doľava. Po vložení Unicode znaku RLO uvidíme všetko, čo nasleduje po RLO v opačnom poradí. Ako príklad túto metódu od skutočný život Môžem vám poskytnúť spoofingový útok v Mozille Firfox - cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-3376.

Obtokové filtre - etapa č.1

Dnes je už známe, že dlhé formy (nie najkratšia forma) UTF-8 nie je možné spracovať, pretože ide o potenciálnu zraniteľnosť. Vývojári PHP sa tým však nedajú presvedčiť. Poďme zistiť, čo je to za chybu. Možno si pamätáte na nesprávne filtrovanie a utf8_decode(). Toto je prípad, ktorý budeme podrobnejšie zvážiť. Takže máme tento PHP kód:



Načítava...
Hore