明日方舟解謎都需要會什麼?(2.8 3:36更新第五部分第二小節)

文丨無Lee旋轉@bigfun社區

你將看到什麼?

本貼將盤點自明日方舟產生以來,解讀隱藏信息所需要的知識,並對其簡單講解。由於謎題大多都已經被破解,這裡不再對原謎題的解答進行復讀。

一.Base64編碼

1.什麼是Base64編碼?

Base64是網絡上最常見的用於傳輸8Bit字節碼的編碼方式之一,Base64就是一種基於64個可打印字符來表示二進制數據的方法。

其中包括A-Z,a-z共52個大小寫英文字母,0-9共10個阿拉伯數字,“+”,“/”個符號,共計64個可打印字符。

二進制編碼轉Base64做的事情就是把每三個8Bit的字節轉換為四個6Bit的字節(3*8 = 4*6 = 24),然後把6Bit再添兩位高位0,組成四個8Bit的字節,然後每76個字符加一個換行符。也就是說,轉換後的字符串理論上將要比原來的長1/3。

但是這種做法會導致末尾有可能湊不齊8位,為了解決這個問題,當字符數不是3的倍數時,採用“=”補位。所以在Base64編碼中,你有可能看到65種不同的字符。注意等號本身並沒有參與到信息的傳遞中去,只是一個補位工具。

注:

什麼是可打印字符?在ASCII碼中規定0~31和127這33個字符屬於控制字符,例如退格、另起一行,沒法打印出來。而剩下的ASCII碼對應著字母,數字,標點符號等等,可以打印出來,就被稱為可打印字符。

2.在哪裡用到過?

那麼在明日方舟中的哪裡可以見到它呢?遊戲出了這麼久,解謎看了那麼多,相信大家都不陌生,主線任務做完之後的圖片背景上,就隱藏著被鏡像過的Base64編碼。

明日方舟解謎都需要會什麼?(2.8 3:36更新第五部分第二小節)

二.異或密碼

要了解異或密碼,首先我們需要了解什麼是異或運算。由於無法打出異或運算符號(圓圈中間帶個加號),本段落中的“+”將全部代表異或運算符號。

1.異或運算的法則

由於無法打出異或運算符號(圓圈中間帶個加號),本段落中的“+”將全部代表異或運算符號。

簡單來理解,異或運算就是相同取0,相異取1,例如1+0=0,0+0=0,1+1=1。

異或運算遵循加法交換律和結合律。

2.異或密碼

瞭解了異或運算,理解異或密碼就不是什麼難事。異或密碼就是通過將暗文與密鑰進行異或運算得到明文的。

為了便於理解,我們先從加密開始。

密鑰:綠色

例如Arknights作為明文,其對應的二進制編碼是:01000001 01110010 01101011 01101110 01101001 01100111 01101000 01110100 01110011,我們對其進行加密,就要編一個密鑰,這個密鑰是我們自己任意編寫的。比如我們可以編這樣一串密鑰:01101010 01100100 01101110 01110110 01100101 01110111 01101100 01100110 01100100。然後我們對二者進行異或運算,就會得到暗文。01000001 01110010 01101011 01101110 01101001 01100111 01101000 01110100 01110011+00101011 00010110 00000101 00011000 00001100 00010000 00000100 00010010 00010111=00101011 00010110 00000101 00011000 00001100 00010000 00000100 00010010 00010111

由此,你只能通過將暗文與密鑰進行異或運算才能得到明文:00101011 00010110 00000101 00011000 00001100 00010000 00000100 00010010 00010111+00101011 00010110 00000101 00011000 00001100 00010000 00000100 00010010 00010111=01000001 01110010 01101011 01101110 01101001 01100111 01101000 01110100 01110011,將紅色部分由二進制轉文本,即得到明文Arknights

3.在哪裡用到過?

還記得遊戲剛剛開始時,可露希爾(黑心老闆娘)問你是否收到了信件嗎?信件內容其實就是由異或密碼加密而成的,明文與密鑰分別隱藏在測試時的關卡劇情中和本文第一部分所講的背景圖片中。對此感興趣的朋友可以移步微博@_GORIE得到詳細步驟。

三.Morse Code

1.什麼是摩爾斯電碼?

摩爾斯電碼於1837被髮明出來,它的代碼包括五種: 點、劃、點和劃之間的停頓、每個字符之間短的停頓、每個詞之間中等的停頓,因此它並不像許多人想象中那樣和二進制一樣只有點和劃。(真的只有點劃的話電報傳達信息怕不是阿消語速。。。)

摩爾斯電碼由兩種基本信號組成:短促的點信號“·”,讀“滴”;保持一定時間的長信號“—”,讀“嗒”。

間隔時間:

如果把滴持續的時間定義為1t,那麼嗒=3t,滴嗒間=1t,字符間=3t,單詞間=7t。

摩爾斯電碼相關的知識大概是本文所講內容中最“親民”的部分,因為我們從小接受的安全教育都會教給我們國際通用求救信號SOS與其摩爾斯電碼:三點,三長,三點。在各類偵探小說中,我們也時常能夠見到摩爾斯電碼的身影。儘管各國已於1999年停止使用摩爾斯碼,但由於它所佔的頻寬最少,又具一種技術及藝術的特性,在實際生活中仍然有廣泛的應用。

在人教版生物課本(必修二)中,我們也能夠看到摩爾斯電碼的身影。

下圖為摩爾斯電碼對照表(圖片來自百度百科)

明日方舟解謎都需要會什麼?(2.8 3:36更新第五部分第二小節)

2.在哪裡用到過?

2018年12.31,C95上方舟主美唯老師的本子CARVE發售,本子中有一頁留有大量摩爾斯碼,見下圖(圖片來自微博)

明日方舟解謎都需要會什麼?(2.8 3:36更新第五部分第二小節)

四.解讀隱藏在圖片中的文字信息

2019年1月15日明日方舟官博上發了這樣的一條消息,

明日方舟解謎都需要會什麼?(2.8 3:36更新第五部分第二小節)

看似和之前發的沒有什麼太大的區別,看一下第五張圖片

明日方舟解謎都需要會什麼?(2.8 3:36更新第五部分第二小節)

右下角的框框裡面

明日方舟解謎都需要會什麼?(2.8 3:36更新第五部分第二小節)

乍一看沒有任何的信息,然而把手機屏幕亮度調到最高,或者用圖片處理軟件將圖片亮度調高,對比度調低,就會得到下面的結果

明日方舟解謎都需要會什麼?(2.8 3:36更新第五部分第二小節)

隱藏的文字出現了:原來你還在寫啊?

目前這段話的意義不明,在方舟其他類似的微博裡也沒有找到類似的隱藏文字。

值得注意的是,只有真理這段文字的結尾有色塊標識,其他幹員都沒有類似的色塊。

五.解讀條形碼

條形碼的種類很多,有大概二十多種編碼,在此不一一列舉,僅挑幾個在方舟解謎過程中出現過的編碼進行簡單介紹。

我們稱條形碼中黑色的為條(B),稱白色的為空(S)

解讀條形碼的時候常用的手段是反色

1.Code128碼

Code128碼可以表示從ASCII 0至ASCII 127共128個字符,故稱128碼。至於這128個ASCII碼,在第一部分講Base64的時候已經簡要提到過。

下面來講一講Code128碼的構造

(1)Code128碼的條和空總共分四種粗細,由細到粗分別賦予1,2,3,4四個值,這是其一大特徵。

(2)Code128碼的結構分為頭,內容,校驗,尾,四個部分。其中除了結尾之外,都是六個條一位,也就是三個黑條三個白條(BSBSBS)一斷。

頭部總共有三種,分別是:211412,211214,211232三種,分別對應Code128的三種類型(共有A,B,C三類),A類含有標準數字和大寫字母,控制符,特殊字符,B類含有標準數字和大寫字母,小寫字母,特殊字符,C類含有[00]-[99]的數字對集合。看到Code128條形碼的前六位,就可以知道該條形碼所包含的內容大致是什麼了。

內容就是條形碼所含有的信息。

校驗就是去除尾段之後的倒數一段(倒數六個條,BSBSBS),用途是檢驗該條形碼是否被正確編碼。

尾部不管是AB還是C類Code128碼,統一都是2331112。

解讀該條形碼的步驟是:將條形碼的頭和尾截下來,根據頭部六位判斷條形碼的類型,然後將剩下的部分6個條空一斷,查編碼對照表進行閱讀。

我們可以以官博上出現過的條形碼為例進行解讀。

明日方舟解謎都需要會什麼?(2.8 3:36更新第五部分第二小節)

2019年1月22日鷹角發佈三測預告,在其中的第四張圖片中暗藏了一個條形碼

明日方舟解謎都需要會什麼?(2.8 3:36更新第五部分第二小節)

先將他們平移至同一水平線

明日方舟解謎都需要會什麼?(2.8 3:36更新第五部分第二小節)

然後據我所知沒有這種格式的條形碼,於是想到反色

明日方舟解謎都需要會什麼?(2.8 3:36更新第五部分第二小節)

再按照粗細讀一下,結果是211232/221231/23(2)1132/121223/112214/2331112

紅色部分是開頭,表示條形碼是C類的,也就是說裡面包含的都是[00]-[99]的數字對集合

綠色部分是內容,沒什麼好多說的,第二部分括號外部分是我肉眼觀察出來的,括號內是機器掃出來的。221231對應20,221132對應19(肉眼看的231132沒有對應,大概就是原圖的失誤,這個問題的鍋應該鷹角背)121223對應03

橙色(大概是橙色,或者說淺紅?)對應的是校驗碼,只是用於校驗,一定要查的話,112214對應的是69

紫色部分是結尾,固定格式,只要是Code128,不管AB還是C類,統統都是2331112

綜上,這個條形碼隱藏的信息就是201903,也就是三測開始的月份呢。

2.Code39碼

當數據需要處理字母時,CODE 39 是最理想的。

Code39碼叫這個名字並不是因為它能表示39個字符,事實上,Code39能夠且僅能夠表示以下43個有效輸入字符:26個大寫字母(A - Z),十個阿拉伯數字(0 - 9),連接號(-),句號(.),空格,美圓符號($),斜槓(/),加號(+)以及百分號(%)。

下面來講一講Code39碼的構造。

(1)Code39碼的條和空總共分兩種粗細,細的是0,粗的是1。

(2)Code39碼的結構分為開頭,內容,結尾,其中開頭與結尾一定是*(就是星號,對應010010100,不是被屏蔽了)。

(3)Code39通常情況下不需要校驗碼。但是對於精確度要求高的應用,需要在code39條形碼後面增加一個校驗碼(即結尾星號後面再加一個校驗碼)。

(4)Code39之所以叫這個名字,是源於其條和空的圖案。與Code128編碼6個條空一斷句的方式不同,Code39是9個條空表示一個字符(即BSBSBSBSB),字符與字符之間的空是字符間隔,無意義,舉個例子,BSBSBSBSBSBSBSBSBSB,中間黑色的S就是字符間隔。而在這九個條空之中,一定有三個是寬的(不管黑白),故稱39碼。

下面給出一個Code39碼的對照表。可以看看,九個條空中確實是有三個是寬的。

明日方舟解謎都需要會什麼?(2.8 3:36更新第五部分第二小節)

(5)字符間隔一般來說,是窄的空而不是寬的。

解讀該條形碼的步驟是:將條形碼的頭和尾截下來,將剩下的部分9個條空一斷,查編碼對照表進行閱讀。

我們也可以以官博上出現過的條形碼為例進行解讀。

在2019年4月18日,官博發出了公測預告

明日方舟解謎都需要會什麼?(2.8 3:36更新第五部分第二小節)

在最後三張圖的下方,隱藏了類似條形碼的信息,由其只有粗細兩種線條初步判斷它是Code39編碼的條形碼,為了方便大家觀看,我用圖像處理軟件進行了一系列處理,包括拼接,拉伸,反相,最終得到了如圖的條形碼。

明日方舟解謎都需要會什麼?(2.8 3:36更新第五部分第二小節)

處理過後的有些細小的字符間隔不太好看,需要仔細辨認,當然如果不做拉伸處理的話,還是很好辨認的,但是這樣發上來圖片會特別長,又不方便大家觀看。。。

我們可以照著讀一下,注意這裡麵條空的粗細並不一致,空明顯都比條要粗一些,字符間隔也是比最細的空還要細。

100001001(A)空100000110(R)空100000011(K)空000010011(N)空001001100(I)空000001101(G)空100001100(H)空000010110(T)空001000110(S)空010000101(-)

連起來讀就是ARKNIGHTS-

值得吐槽的是,這次鷹角並沒有嚴格按照Code39的格式,在開頭與結尾加上*(再次強調是星號,不是被屏蔽了),而那個看似奇怪的“-”,在原圖中與之前的“S”雖然在同一張圖裡面,但是有很大的空隙,推測為之前所提到的校驗碼。

補充

明日方舟解謎都需要會什麼?(2.8 3:36更新第五部分第二小節)

埃及研也曾解析過這個條形碼,當時我看他們的解法看了半天沒看懂,在自己寫完上面那一堆之後才明白過來(後 知 後 覺),圖中左半部分分為BAR和WILD BLANK,意思就是黑條和寬的白條,而大部分Code39碼的三個寬條都是兩個黑寬條一個白寬條,只要找到了黑條對應的數字和白色寬條的位置,那麼這個字符就可以被確定下來。

在圖片右半部分的表中,左邊那一列表示黑條,上面那一行表示白空,這樣找到了BAR和WILD BLANK,就可以通過橫縱座標找到對應的字符了,例如找黑條是10001,白空的第三個是寬空的條形碼對應的字符,只需要在右表中找到對應的行與列,就能發現對應的字符是A。

這種方法顯然比我剛開始講的那種方法方便快捷許多。

還有其他類型條形碼,過億會更新,樓主正在備戰危機合約,可能會咕一會兒。


不要點贊啦,喜歡的話評論一下頂一頂啊秋梨膏

(*꒦ິ⌓꒦ີ)


分享到:


相關文章: