Nuo to laiko, kai pirmasis asmuo išspausdino skaičiuoklę 5318008, "nerds" slepia slaptus numerius jūsų kompiuteryje ir juos naudoja derėtis dėl slaptų rankos tarp programų ir failų. Šiandien mes greitai pažvelgime į kai kuriuos įdomius pavyzdžius.
Dauguma programavimo kalbų naudoja 32 bitų natūralų skaičių, atstovaujantį tam tikrus duomenų tipus už siužetų - vidinis numeris saugomas RAM atmintyje arba CPU naudojamas kaip 32 taškai ir nuliai, tačiau šaltinio kodu jis būtų išrašomas arba įprastu dešimtainiu formatu, arba kaip šešioliktainis formatas, kuris naudoja skaičiai nuo 0 iki 9 ir raidės nuo A iki F.
Kai operacinė sistema ar programa nori nustatyti failo tipą, gali atrodyti, kad failo pradžioje yra specialus žymeklis, nurodantis failo tipą. Pavyzdžiui, PDF failas gali prasidėti šešiabriaunio verte 0x255044462D312E33, kuris lygus "% PDF-1.3" ASCII formatu, arba ZIP failas prasideda nuo 0x504B, kuris lygus "PK", kuris nusileidžia iš originalios PKZip programos. Žvelgiant į šį "parašą", failo tipas gali būti lengvai identifikuojamas net ir be jokių kitų metaduomenų.
Sudėtiniai Java klasės failai prasideda CAFEBABE
"Linux" įrankis "failas" gali būti naudojamas iš terminalo, siekiant nustatyti tipą failo - iš tikrųjų jis skaito magijos numerius iš failo, vadinamo "magija".
Kai programa nori paskambinti funkcijai, ji gali perduoti į šią funkciją vertes, naudodama standartinius tipus, tokius kaip sveikasis skaičius, kuris gali būti išreikštas šaltinio kodas šešioliktainiu formatu. Tai ypač pasakytina apie konstantas, kuris yra identifikatorius, apibrėžtas žmogaus skaitomuose varduose, pvz., AUTOSAVE_INTERVAL, tačiau jie nurodo faktinius sveikuosius (ar kitokio tipo) vertes. Taigi vietoj to, kad programuotojas įveda tokią vertę kaip 60 kiekvieną kartą, kai jie vadina funkciją šaltinio kodu, jie galėtų naudoti AUTOSAVE_INTERVAL konstantą, kad būtų lengviau juos skaityti. (Konstantai paprastai yra lengvai atpažįstami, nes jie yra parašyti visais didžiosiomis raidėmis). Visi šie pavyzdžiai gali būti priskiriami Magic Numbers, nes gali prireikti tam tikro šešioliktainio skaičiaus, kad funkcija ar failo tipas veiktų tinkamai ... jei vertė neteisinga, ji neveiks. Kai programuotojas nori šiek tiek įdomus, jie gali apibrėžti šias reikšmes naudodamiesi šešioliktainiais skaičiais, kurie paaiškina kažką anglų kalba, kitaip vadinama hexspeak.
Pramogos su magiškais numeriais: kai kurie žinomi pavyzdžiai
Jei greitai pažvelgsite į "Linux" šaltinio kodą, pamatysite, kad sisteminis "_reboot ()" skambutis "Linux" reikalauja perduoti "magišką" kintamąjį, kuris lygus šešioliktainiam skaičiui 0xfee1dead. Jei kažkas bandė skambinti šia funkcija, pirmiausia nepatekdamas tokios magijos vertės, tai tik grąžina klaidą.
GPT skaidinio schemos GUID (globaliai unikalus identifikatorius) yra 21686148-6449-6E6F-744E -656564454649, kuris sudaro ASCII eilutę "Hah! IdontNeedEFI" - aliuziją į tai, kad GPT paprastai būtų naudojamas kompiuteriuose, kurie pakeitė BIOS su UEFI, bet tai nebūtinai turi būti.
Microsoft smarkiai paslėpė 0x0B00B135 jų "Hyper-V" virtualioje mašinoje, palaikančiame "Linux" pateiktą kodą, jie pakeitė reikšmę į 0xB16B00B5 ir galiausiai pakeitė jį iki dešimtainio, kol jis iš pradžių buvo pašalintas iš šaltinio kodo.
Daugiau įdomių pavyzdžių yra:
0xbaaaaaad - naudojama "iOS" avarijų žurnale, kad būtų rodoma, kad žurnalas yra visos sistemos stackshot'as.
Patirties pavyzdžių peržiūra
Kaip papildomą pavyzdį atkūrimo vaizdai "Android" telefonams, pavyzdžiui, "ClockworkMod" pradėkite nuo "ANDROID!", jei skaitoma ASCII formatu.
Pastaba:
nieko nekeisdami, kai žiūrite. Hex redaktoriai gali sugadinti dalykus!
Kodėl hex redaktoriai vadinami dvejetainiais redaguotais?
Kartais vardai ir terminai yra gana pakeičiami ir visi supranta, kas yra paminėta be painiavos, bet tada yra kartų, kai viskas nėra tokia aiški ir palikite jus daugiau klausimų nei atsakymai. Šiandien "SuperUser" užklausų ir atsakymų tema padeda išsiaiškinti, kas yra supainioti skaitytojas. Šiandienos klausimų ir atsakymų sesija ateina pas mus "SuperUser", "Stack Exchange", bendruomenės pagrįstos Q & A grupės svetainių dalimi.
Kaip automatiškai išjungti savo lizdo termostatą, kai jis yra šaltas
ŠIltas oras yra kelyje, o tai reiškia, kad oro kondicionavimo įrenginiai paleidžiami. Tačiau yra keletas dienų, kai temperatūra iš tikrųjų nukrenta iki malonaus lygio. Štai kaip jūsų "Nest" termostatas automatiškai išsijungia, kai išorinė temperatūra tampa aušinama. Naudodami tvarkingą internetinę paslaugą, vadinamą IFTTT, galite pasakyti, kad "Nest" termostatas automatiškai išsijungia, jei oras visada pasiekia tam tikrą temperatūrą, taigi jūs Galite atidaryti langus ir sutaupyti pinigų, nenaudodami AC, kai to nereikia.