読者です 読者をやめる 読者になる 読者になる

ゆず日記

戦う Vimmer 兼 Dvorakユーザ 兼 Kinesisユーザ 兼 おぺらー が戦わないブログ

スター暗号文64

暗号

「フォックス ナウスから通信が入っているぞ」

○○○株式会社の人事部です。
(略)
下記のウォームアップ問題から始まるプログラミングクイズにチャレンジしてください。



■ ウォームアップ問題
コーネリア防衛軍のパイロット兼プログラマのあなたは、
天才科学者Dr.アンドルフ皇帝の通信を傍受した。



m7752902780q5670754954w2654637406q5286271066m8125522416a1926172574x504148223l9676431138g5289793839l5799859691n5135660909g5241613386k4148674163p2895427859i4115643171d6373795065



これはどうやら、次の攻撃ターゲットの名前のようだ。



以下の、これまでに解読成功した暗号文をヒントに、
次の攻撃ターゲットはどこか、特定してください。



暗号文 : 解読結果

                                          • -

a0c2e4g6 : aaaa
a0z1c2x3 : aaaa
p65e68t2o51d27n48u38n13 : corneria
x6136494262r7484725313x185670378k2531105274x7114948063 : venom



■プログラミングクイズのURL
http://the-{ウォームアップ問題の答え}.appspot.com/

一体どこの企業なんだろう?アンドルフおじさーん


作戦No. 1 出撃

「まずはヒントを元に解析を行うぞ」

暗号文 : 解読結果
----------------------
a0c2e4g6 : aaaa

「どうやらa0, c2, e4, g6がそれぞれaを示しているようだ!」


「敵シールド分析完了 モニターに表示するよ」

a0 a = a - 0
c2 a = c - 2
e4 a = e - 4
g6 a = g - 6


「c2はcから2個ずらして c -> b -> a
「なるほど、プレフィクスのアルファベットをサフィックスの数字分ずらせばいいわけだな」



「プログラム構築完了 モニターに表示するよ」

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

import re

cryptogram = 'a0c2e4g6'
re_string = re.compile('[a-z][0-9]+')

for chars in re_string.findall(cryptogram):
  prefix = chars[:1]
  suffix = int(chars[1:])
  dechar = chr(ord(prefix) - suffix) # ASCIIコードに変換し減算したものを、文字に戻す


  print '|%s|%s = %s - %s|' % (chars, dechar, prefix, suffix)

# 実行結果: 上の表

作戦No. 2 ヒントをこえて

「引き続き次のヒントを解析だ」

暗号文 : 解読結果
----------------------
a0z1c2x3 : aaaa

「分析完了 モニターに表示するよ」

a0 a = a - 0
z1 a = z + 1
c2 a = c - 2
x3 a = x + 3

「おかしいよ?数字のずらし方が逆もある!」
「逆にする法則があるかもしれん 引き続き次のヒントへ向かうぞ」

作戦No. 3 ヒントは続く

暗号文 : 解読結果
----------------------
p65e68t2o51d27n48u38n13 : corneria

「前方から、大きいのが来るよ!」
「26の倍数は切り捨てろ n % 26」


「プログラム構築完了 モニターに表示するよ」

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

import re

cryptogram = 'p65e68t2o51d27n48u38n13'

re_string = re.compile('[a-z][0-9]+')
for chars in re_string.findall(cryptogram):
  prefix = chars[:1]
  remaindar = int(chars[1:]) % 26 # アルファベットは26個で1ループ
  dechar = ord(prefix) - remaindar
  if dechar < 97: dechar += 26 # aのASCIIコードより小さい値になった場合に、26を足してa-z内にズラす

  print '|%s|%s = %s - %s|' % (chars, chr(dechar), prefix, remaindar)
p65 c = p - 13
e68 o = e - 16
t2 r = t - 2
o51 n = o + 25
d27 e = d + 1
n48 r = n - 22
u38 i = u - 12
n13 a = n - 13

「チッ!+と-の区別も出来ねえのか!」


作戦No. 4 最終ヒント

「こっちの暗号も解析するぞ!」

暗号文 : 解読結果
----------------------
x6136494262r7484725313x185670378k2531105274x7114948063 : venom
x6136494262 v = x - 2
r7484725313 e = r - 13
x185670378 n = x - 10
k2531105274 o = k - 22
x7114948063 m = x + 15

「おかしい?法則が見いだせん!」
「正解は目の前なのにクソ〜 あっちいけよ」
「チッ そこに正解があるっていうのに!!」



作戦No. 5 最終決戦!! 諸悪の根源 アンドルフの通信

m7752902780q5670754954w2654637406q5286271066m8125522416a1926172574x504148223l9676431138g5289793839l5799859691n5135660909g5241613386k4148674163p2895427859i4115643171d6373795065

「法則性が見いだせなければ解くことが出来ん!」



無理矢理変換してみる
「16つの文字列を 全て変換しろ!」

m7752902780 a = m - 12
q5670754954 w = q - 20
w2654637406 e = w - 18
q5286271066 s = q - 24
m8125522416 o = m - 24
a1926172574 m = a - 14
x504148223 q = x - 7
l9676431138 b = l - 10
g5289793839 b = g - 5
l5799859691 w = l - 15
n5135660909 y = n - 15
g5241613386 k = g - 22
k4148674163 n = k - 23
p2895427859 q = p - 25
i4115643171 f = i - 3
d6373795065 c = d - 1

awesomqbbwyknqfc




「逃しはせん!お前は私と共に滅びるのだ!」
「うわああああ(棒」


作戦No. 6 最終決戦!! 諸悪の根源 アンドルフの通信

「どんな時でも決してあきらめるなフォックス」
「!!・・・父さん!?」
「フォックス 私について来い!」



-へずらした行

a w e s o m q b b w y k n q f c


「ここだ フォックス」



+へずらした行を追加してみる

a w e s o m q b b w y k n q f c
y k o o k o e v l a c c h o l e


「決してあきらめるな 自分の感覚を信じろ」



意味のある単語になるよう、両者から単語を拾う

a w e s o m q b b w y k n q f c
y k o o k o e v l a c c h o l e
a w e s o m e b l a c k h o l e


awesomeblackhole



awesome blackhole



「強くなったな・・ フォックス」



作戦No. 7

http://the-awesomeblackhole.appspot.com/

「いくぞ!ベノムの大気圏突入!」


f:id:Yuzuemon:20120326033015p:image

受信日12/02/17
※このオファーの有効期限は受信日から5日間となっております。

「フォックスーーーーーーーーーーーー!!」(テロテロテロリン!!)


エンディング

希望者が多い企業だからこそ、プログラミングクイズで篩に掛けるというのはいいですね
知っている人はニヤリとするネタだったので、期限は過ぎていましたが思わず挑戦してみました

初暗号挑戦で力技過ぎた感があるのですが、結局法則はあったのでしょうか
もし解いた人で法則を見つけた人がいたら教えて下さい




教えていただきました。
「スター暗号文64」を解いてみた - blechmusik2の日記




ちなみにこのエントリを書くにあたってスターフォックス64を引っ張り出してプレイしました
名作ですよね

STARFOX64 3D(スターフォックス64 3D)

STARFOX64 3D(スターフォックス64 3D)

広告を非表示にする