cs.phhsnews.com


cs.phhsnews.com / Kouzelné číslice: Tajné kódy, které si programátoři skryjí v počítači

Kouzelné číslice: Tajné kódy, které si programátoři skryjí v počítači


Od chvíle, kdy první osoba napsala na počítačích číslo 5318008, hlupáci skryli tajná čísla uvnitř počítače a používali je k vyjednávání tajných handshakes mezi aplikacemi a soubory. Většina programovacích jazyků používá 32bitový celočíselný typ, který reprezentuje určité typy dat v zákulisí - uvnitř je uloženo číslo v paměti RAM nebo použitých procesorem jako 32 a nula, ale ve zdrojovém kódu by byl napsán buď v normálním desítkovém formátu, nebo jako hexadecimální formát, který používá čísla 0 až 9 a písmena A až F.

Pokud chce operační systém nebo aplikace určit typ souboru, může se podívat na začátek souboru pro speciální značku, která označuje typ souboru. Například soubor PDF může začínat hexadecimální hodnotou 0x255044462D312E33, která se rovná "% PDF-1.3" ve formátu ASCII nebo ZIP soubor začíná 0x504B, který se rovná "PK", který sestupuje z původního nástroje PKZip. Při zjišťování tohoto "podpisu" lze typ souborů snadno identifikovat i bez dalších metadat.

Kompilované soubory Java třídy začínají CAFEBABE

Soubor "utility" Linuxu lze použít z terminálu k určení typu ze souboru - ve skutečnosti čte magická čísla ze souboru s názvem "magie".

Když aplikace chce volat funkci, může předávat hodnoty této funkci za použití standardních typů, jako je celé číslo, které lze vyjádřit v zdrojový kód v šestnáctkovém formátu. Platí to zejména pro konstanty, které jsou identifikátory definované lidskými čitelnými názvy, jako je AUTOSAVE_INTERVAL, ale mapují na skutečné hodnoty celočíselného (nebo jiného typu). Takže místo toho, aby programátor napsal hodnotu 60, pokaždé, když volá funkci ve zdrojovém kódu, mohli použít konstantu AUTOSAVE_INTERVAL pro lepší čitelnost. (Konstanty jsou obvykle snadno rozpoznány, protože jsou napsány všemi velkými písmeny.)

Všechny tyto příklady mohou spadat pod termín Magic Numbers, protože mohou vyžadovat specifické hexadecimální číslo, aby funkce nebo typ souboru fungoval správně ... pokud není hodnota správná, nebude fungovat. A když programátor chce mít trochu zábavy, mohou definovat tyto hodnoty pomocí hexadecimálních čísel, které vyslovují něco v angličtině, jinak známé jako hexspeak.

Zábava s kouzelnými čísly: Některé pozoruhodné příklady

Každý AppleScript končí FADEDEAD

Pokud se podíváte rychle na zdrojový kód systému Linux, zjistíte, že volání systému _reboot () v systému Linux vyžaduje proměnnou "magic", která se rovná šestnáctkovému číslu 0xfee1dead. Pokud se něco pokouší volat tuto funkci bez toho, aby nejprve prošla touto magickou hodnotou, vrátí se pouze chyba.

GUID (globálně jedinečný identifikátor) pro zaváděcí oddíl systému BIOS v schématu dělení GPT je 21686148-6449-6E6F-744E -656564454649, který tvoří řetězec ASCII "Hah! IdontNeedEFI", narážka na skutečnost, že GPT by se normálně používal v počítačích, které nahradily systém BIOS systémem UEFI, ale nutně nemusí být.

Microsoft skvěle ukrýval 0x0B00B135 ve svém podpůrném zdrojovém kódu pro virtuální stroj Hyper-V, který byl předán do systému Linux, pak změnili hodnotu na hodnotu 0xB16B00B5 a nakonec ji přepnuli na desítkovou plochu ještě předtím, než byla úplně odstraněna ze zdrojového kódu.

Mezi další zábavné příklady patří:

0xbaaaaaad - používá se protokolování selhání iOS, které označuje, že protokol je stack of the whole system.

0xbad22222 - používá protokol srážení iOS, který naznačuje, že aplikace VoIP byla zabita iOS, protože to bylo nesprávné.

  • 0x8badf00d - (Ate Bad Food) používaný havárií systému iOS (9)> 0xdeadfa11 - (Dead Fall), který používá protokol při selhání aplikace iOS při ukončení aplikace uživatelem.
  • 0xDEADD00D - použito Android označuje zrušení VM.
  • 0xDEAD10CC (Dead Lock), který používá protokol crash v systému iOS, když aplikace uzamkne prostředek na pozadí.
  • 0xBAADF00D (špatné jídlo) používané funkcí LocalAlloc v systému Windows pro ladění.
  • 0xCAFED00D (Cafe dude)
  • 0xCAFEBABE (Cafe babe) používané společností Java jako identifikátor pro kompilované soubory třídy
  • 0x0D15EA5E (Nemoci) používané Nintendo na GameCube a Wii pro označení normální boot.
  • 0x1BADB002 ) používaný specifikací pro spouštění jako kouzelné číslo
  • 0xDEADDEAD - použitý systémem Windows k signalizaci ručně iniciované chyby při ladění, jinak známá jako modrá obrazovka smrti
  • Samozřejmě nejsou to jediné , ale jen krátký seznam příkladů, které vypadaly zábavně. Už víte? Napište nám v komentářích
  • Vidíte příklady pro sebe
  • Další příklady můžete vidět otevřením hex editoru a otevřením libovolného počtu typů souborů. Existuje spousta freeware hex editorů pro Windows, OS X nebo Linux - stačí se ujistit, že jste opatrní při instalaci softwaru, abyste se neinfikovali s crapware nebo spywarem.

Jako příklad lze použít obnovu obrázků pro Android telefony jako ClockworkMod pokud je ve formátu ASCII čteno "ANDROID!".

Poznámka:

nezměňujte nic, když se díváte. Hex editory mohou rozbíjet věci!


Jak spravovat více uživatelských účtů na jediném Chromebooku

Jak spravovat více uživatelských účtů na jediném Chromebooku

Chromebooky jsou levné, středně výkonné a uživatelsky přívětivé notebooky, které se staly velice populární u zákazníků, kteří chtějí mít druhý stroj, silnici, ale nemáte pocit, že by ses kvůli výsadám zbavil zbytečných peněz. Pokud máte v kanceláři jeden stroj, který patří do celé domácnosti nebo více spolupracovníků, můžete si vytvořit a spravovat více uživatelských účtů ve stejném zařízení.

(how-to)

Použití skeneru v počítači Mac OS X

Použití skeneru v počítači Mac OS X

Skenování dokumentu v systému Mac OS X je velmi jednoduché, ale pro ty, kteří možná nejsou známé nebo přicházejí z Windows, je to užitečné pro rychlý prohlídku, jak to funguje SOUVISEJÍCÍ: Jak skenovat dokumenty do PDF s fotoaparátem telefonu Android Stojí za to poznamenat, že dobré procento času můžete jen použít fotoaparát smartphonu a snadno prohledávat do PDF.

(how-to)