Ingress 13 Archetypes 01: Dreamer
老咸鱼爬起来解密了。
About 13 Archetypes
这是一个长达 13 周的解谜挑战,北京时间 12 月 10 日凌晨 01:00 起, Niantic 会在其论坛上发布一个谜题,然后让玩家解谜,结果会是一个 Passcode ,兑换后可获得 Media 一个。
Dreamer
这是第一周的谜题,主题为 Dreamer ,谜题标题为 Sweet Dreams 。
Decode
两只羊、一床被子、一个时钟。
其中被子的图案非常有规则,很容易联想到条形码,并且应该是「两个」条形码叠加的样子。
我的第一想法就是找个能识别条形码的工具来解析,通过PS或截图工具分别截取横向和纵向的条形码,然后拉伸之后就可以很方便地用工具来识别了。
然而尝试了三款条形码解析工具直接对着图像识别,都没有得出有效结论。于是我开始尝试手动人工解析。
条形码由多个宽度不同的条形和空白组成,以最细的条形(或空白)的宽度记为 1 ,其它条形或空白的宽度是 1 宽度的几倍则记为几。
一开始尝试按顺序交替看两个颜色的宽度数值,试了两次都不太顺利,看一会儿眼睛就花了。后来想到一个办法,每次只看一个颜色,对两个条码共计看 4 次,这样来记录条码宽度数值还算比较顺利。
横向的条码宽度数字从左往右为
1 | 2112321122144211121224111241121224111212412412111112421341112411121122141421121 |
其中开头6位为 211232
,为 Code128 编码条形码的 Start Code C ,那么这应该是一个 Code128C 标准的条形码。
根据维基百科 Code128 词条的介绍,一个 Code128 标准的条形码由6部分组成,分别为:空白区域、起始标记、数据区、校验符、终止符、空白区域。其中上述前6位 211232
即为起始标记之一。而最终的终止符应为 2331112
7位,但上面获得的横向条码的结尾并不是这个,说明我们还需要继续解析纵向条码。
纵向条码应该从下往上还是从上往下来看呢?从原图的方向来看,将原图顺时针旋转 90° 后,可以获得羊脑袋、床头、闹钟朝上的方向的图片,那么这时的从左往右即为原图的从下往上来看。
纵向的条码宽度数字从下往上为
1 | 212411421121411221341112411121122141241121224111212411211241212412121232331112 |
结尾 2331112
符合 Code128 标准的终止符。
将两串数字合并,即为
1 | 2112321122144211121224111241121224111212412412111112421341112411121122141421121212411421121411221341112411121122141241121224111212411211241212412121232331112 |
按照 Code128 的定义,每 6 位分为一组,转换为对应的 Code128C 数值,再根据此数值转换为对应的 ASCII 字符。
1 | 211232 |
去除校验符,则原本的条形码串为
1 | 6987728472827580797869738273677978698472826582 |
有兴趣的可以用这个串去生成一个 Code128 格式的条形码与原图做一下对比看看是否一致。
而转换后的字符串则为
1 | ewhthrkponeiriconethrar |
按照 thr = 3 、 one = 1 来转换,即为
1 | ewh3kp1iric13ar |
但这个并不符合 Passcode 通常用的格式。
经翻阅词典后得知,oneiric
是个单词, adj. 梦的
。此处的 one
不用替换为 1
。
这个人连英语四级都没过就别强求他会这种的单词了(摔)
则转换后的 Passcode 应为
1 | ewh3kponeiric13ar |
兑换 Passcode ,获取一个 Media 。