神奇數字:程式設計師藏在你電腦裡的密碼

自從第一個人在計算器上寫出5318008以來,書呆子們就一直把祕密號碼藏在你的電腦裡,並用它們來協商應用程式和檔案之間的祕密握手。今天我們就來看看一些更有趣的例子。...

神奇數字:程式設計師藏在你電腦裡的密碼

自從第一個人在計算器上寫出5318008以來,書呆子們就一直把祕密號碼藏在你的電腦裡,並用它們來協商應用程式和檔案之間的祕密握手。今天我們就來看看一些更有趣的例子。

什麼是幻數(magic numbers)?

大多數程式語言使用32位整數型別來表示後臺的某些型別的資料—在內部,數字儲存在RAM中或由CPU用作32個1和0,但在原始碼中,它將以常規十進位制格式或十六進位制格式寫入,後者使用數字0到9以及字母a透過F。

當作業系統或應用程式想要確定檔案的型別時,它可以在檔案的開頭查詢表示檔案型別的特殊標記。例如,PDF檔案可能以十六進位制值0x255044462D312E33開始,該十六進位制值等於ASCII格式的“%PDF-1.3”;或者ZIP檔案可能以0x504B開始,該十六進位制值等於從原始PKZip實用程式派生的“PK”。透過檢視這個“簽名”,即使沒有任何其他元資料,也可以很容易地識別檔案型別。

Linux實用程式“file”可以從終端上用來確定檔案的型別——實際上,它從一個名為“magic”的檔案中讀取幻數

當應用程式要呼叫函式時,它可以使用integer等標準型別將值傳遞給該函式,integer可以用十六進位制格式的源程式碼表示。對於常量尤其如此,常量是用AUTOSAVE\u INTERVAL等可讀名稱定義的識別符號,但它們對映到實際的整數(或其他型別)值。因此,程式設計師不必每次在原始碼中呼叫函式時都鍵入60這樣的值,而可以使用AUTOSAVE_INTERVAL常量來提高可讀性。(常量通常很容易識別,因為它們都是用大寫字母寫的)。

所有這些示例都可以歸入術語幻數,因為它們可能需要特定的十六進位制數才能使函式或檔案型別正常工作…如果值不正確,則無**常工作。當程式設計師想找點樂子的時候,他們可能會用十六進位制數來定義這些值,這些十六進位制數用英語拼寫出來,也就是說hexspeak。

神奇數字的樂趣:一些值得注意的例子

如果您快速瀏覽一下Linux原始碼,就會發現Linux上的_reboot()系統呼叫需要傳遞一個等於十六進位制數0xfee1dead的“magic”變數。如果某個函式試圖呼叫該函式而沒有首先傳入該魔術值,它只會返回一個錯誤。

GPT分割槽方案中BIOS引導分割槽的GUID(全域性唯一識別符號)是21686148-6449-6E6F-744E-656564454649,它形成ASCII字串“Hah!“IdontNeedEFI”,一個暗指GPT通常會在用UEFI代替BIOS的計算機中使用,但不一定非得如此。

微軟著名的做法是將0x0B00B135隱藏在他們的Hyper-V虛擬機器中,該虛擬機器支援提交給Linux的原始碼,然後他們將該值更改為0xB16B00B5,最後將其切換為十進位制,然後將其從原始碼中完全刪除。

更多有趣的例子包括:

  • 0xbaaaaad–由iOS崩潰日誌記錄使用,表示日誌是整個系統的堆疊快照。
  • 0xbad22222–由iOS崩潰日誌記錄使用,用於指示VoIP應用程式由於行為不當而被iOS殺死。
  • 0x8badf00d–(吃壞了的食物)由iOS崩潰日誌使用,用於指示應用程式執行某項操作花費的時間太長,並且被看門狗超時終止。
  • 0xdeadfa11–(死區)當用戶強制退出應用程式時,iOS崩潰日誌記錄使用。
  • 0xDEADD00D–由Android用於指示VM中止。
  • 0xDEAD10CC(死鎖),當應用程式在後臺鎖定資源時,iOS崩潰日誌記錄使用。
  • 0xBAADF00D(壞食物),由Windows中的LocalAlloc函式用於除錯。
  • 0xCAFED00D(Cafe dude)由Java的pack200壓縮使用。
  • 0xCAFEBABE(Cafe babe)被Java用作已編譯類檔案的識別符號
  • 0x0D15EA5E(疾病),任天堂在Gamecube和Wii上使用,表示正常啟動。
  • 0x1BADB002(1個壞引導)被multiboot規範用作幻數
  • 0xDEADDEAD–由Windows用於指示手動啟動的除錯崩潰,也稱為藍色畫面宕機。

當然,這些並不是唯一的例子,只是一個看似有趣的例子。你還知道嗎?在評論中告訴我們。

自己看例子

透過開啟一個十六進位制編輯器,然後開啟任意數量的檔案型別,您可以看到更多的示例。有很多免費的十六進位制編輯器可用於Windows,OS X,或Linux-只是要確保你在安裝免費軟體時小心,以免感染垃圾軟體或間諜軟體。

再舉一個例子,像ClockworkMod這樣的Android**的恢復影象以“Android!“如果以ASCII格式讀取。

神奇數字:程式設計師藏在你電腦裡的密碼

注意:當你環顧四周時,不要去改變任何東西。十六進位制編輯器可以破壞東西!

  • 發表於 2021-04-11 05:00
  • 閱讀 ( 44 )
  • 分類:網際網路

你可能感興趣的文章

重置忘記的windows管理員密碼的3種方法

... 從快閃記憶體驅動器啟動,讓Windows安裝程式載入,當您看到初始的Windows 10安裝螢幕時,按Shift+F10開啟命令提示符。 ...

  • 發佈於 2021-03-15 03:48
  • 閲讀 ( 59 )

3種偽裝usb驅動器的方法

...使你給它添加了一些基本的密碼保護。相反,去忍者和隱藏在普通的視線,使一個熟練的USB驅動器偽裝。 ...

  • 發佈於 2021-03-17 04:37
  • 閲讀 ( 106 )

5個避免工作中安全漏洞的資料處理技巧

...你生病在家,同事需要你電腦上的資訊。或者你的老闆想在你休假時檢視你的電子郵件。更不用說把密碼寫在便箋上並貼在螢幕上是多麼常見。 ...

  • 發佈於 2021-03-19 08:57
  • 閲讀 ( 46 )

linux真的對病毒和惡意軟體免疫嗎?事實是這樣的

...突出的作業系統,出現在為web提供動力和管理世界上許多數字基礎設施的伺服器上。 ...

  • 發佈於 2021-03-19 13:49
  • 閲讀 ( 57 )

5個密碼工具,用於建立強密碼短語和更新安全性

...基本引數組成一個強密碼:至少15個字元,大小寫字母、數字和符號的混合。使用生成器的高階設定來更改方面,例如只使用簡單的標點符號和避免程式設計標點符號。 ...

  • 發佈於 2021-03-19 21:41
  • 閲讀 ( 83 )

忘了你的iphone備份密碼?這是你能做的

...看起來不像其他一些恢復應用程式那麼粗略,但它們並不神奇。 ...

  • 發佈於 2021-03-21 08:46
  • 閲讀 ( 52 )

7個祕密的iphone功能會給你的朋友留下深刻印象

... 這也許並不神奇,但蘋果支付比你想象的更安全、更方便。只需將您的卡新增到iPhone的原生錢包應用程式中,您就可以在任何有相容終端的商店或餐廳付款。 ...

  • 發佈於 2021-03-21 13:21
  • 閲讀 ( 56 )

您應該瞭解的有關windows pc的10項重要功能

... 如果你沒有看到這裡的數字,如下面的截圖,要麼你的電腦**商沒有包括它正確或你自己建造的電腦。在這種情況下,你可能會在貼在你電腦上的標籤上找到序列號。如果你自己做了,你會在包...

  • 發佈於 2021-03-26 07:49
  • 閲讀 ( 46 )

如何用古墓保護您最敏感的資料資訊

... 由小而可讀的程式碼組成的極簡設計。 促進良好實踐,如儲存和鑰匙的物理分離。 採用了一些標準和經過良好測試的實現。 ...

  • 發佈於 2021-03-26 08:43
  • 閲讀 ( 49 )

如何在iphone或ipad上隱藏私人照片和影片

蘋果的Photos應用程式有一個內建的“隱藏”功能,但它並不能阻止可以訪問你**的人四處窺探。如果你想確保你的私人照片和影片真的保持隱私,我們有一些更好的提示。 如何在照片應用程式中隱藏照片和影片 當你在iPhone或iPa...

  • 發佈於 2021-04-02 16:15
  • 閲讀 ( 55 )
rna8u7fhtj
rna8u7fhtj

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦