Featured image of post Cipher Walkthrough - Morse

Cipher Walkthrough - Morse

モールス信号による暗号の解読

あらすじ

サークルの同期が、以下のような暗号を出していました。

1
2
3
4
5
6
7
8
9
烏烏 鳥鳥鳥烏 鳥烏鳥鳥 鳥烏 鳥鳥烏鳥鳥 鳥鳥 鳥鳥鳥烏 鳥烏鳥烏烏 鳥鳥
烏鳥烏鳥鳥 烏鳥鳥烏 烏烏鳥烏鳥 烏鳥 烏烏鳥烏
烏鳥 烏鳥 鳥鳥 烏烏鳥烏鳥 烏烏烏烏 鳥烏鳥烏鳥 鳥烏鳥 烏鳥鳥烏鳥 鳥鳥
烏烏 鳥烏烏烏 鳥烏鳥鳥 鳥烏 鳥鳥烏鳥鳥 鳥鳥 鳥鳥鳥烏 烏烏鳥烏鳥 鳥烏
鳥烏烏 鳥烏 烏鳥烏烏鳥 烏烏鳥鳥烏 烏鳥鳥烏 鳥烏鳥鳥 鳥鳥 烏烏鳥烏烏
烏烏烏 烏鳥鳥鳥 鳥鳥 烏烏鳥 烏鳥烏鳥烏 鳥烏烏鳥烏 鳥鳥烏鳥 鳥烏烏烏
烏烏鳥烏鳥 鳥烏鳥 烏鳥烏鳥烏 鳥烏
鳥烏鳥鳥 鳥烏 烏鳥烏鳥鳥 鳥鳥 鳥烏鳥鳥 鳥鳥 鳥烏鳥烏鳥 烏鳥鳥鳥 鳥鳥
鳥烏鳥烏烏 烏烏鳥烏

これを解いた過程を解説していきます。

思索

まず最初に目についたのは漢字の物量。見た目いかつすぎだろ・・・

字数を区切ると以下のような形になりました。

文字登場回数
烏 (からす)102
鳥 (とり)122

空白についてもカウントしようかと迷いましたが、空白の長さは必ず一文字であることからそれ単体での意味は構成しないだろうと踏んで数えませんでした。

思い付き:モールス信号

二種類の文字、一文字だけの空白・・・

絶対モールスでしょ(笑)と思いました。

それではモールス信号として処理して復号できるか試してみます。

二文字の漢字をトン「・」とツー「-」のどちらに当てはめるかで二通りあるので場合分けして進めます。

パターン① トン「・」:烏 ツー「-」:鳥

以下のようになり・・・

1
・・ ---・ -・-- -・ --・-- -- ---・ -・-・・ -- ・-・-- ・--・ ・・-・- ・- ・・-・ ・- ・- -- ・・-・- ・・・・ -・-・- -・- ・--・- -- ・・ -・・・ -・-- -・ --・-- -- ---・ ・・-・- -・ -・・ -・ ・-・・- ・・--・ ・--・ -・-- -- ・・-・・ ・・・ ・--- -- ・・- ・-・-・ -・・-・ --・- -・・・ ・・-・- -・- ・-・-・ -・ -・-- -・ ・-・-- -- -・-- -- -・-・- ・--- -- -・-・・ ・・-・

当てはめてみると・・・

1
I[---・]YN[--・--]M[---・][-・-・・]M[・-・--]P[・・-・-]AFAAM[・・-・-]H[-・-・-]K[・--・-]MIBYN[--・--]M[---・][・・-・-]NDN[・-・・-][・・--・]PYM[・・-・・]SJMU[・-・-・][-・・-・]QB[・・-・-]K[・-・-・]NYN[・-・--]MYM[-・-・-]JM[-・-・・]F

[]でくくられている部分は判別不能なものです。これを見る限りこのパターンではなさそうですね。

パターン② トン「・」:鳥 ツー「-」:烏

それではペアを反転させてみましょう。すると、、

1
-- ・・・- ・-・・ ・- ・・-・・ ・・ ・・・- ・-・-- ・・ -・-・・ -・・- --・-・ -・ --・- -・ -・ ・・ --・-・ ---- ・-・-・ ・-・ -・・-・ ・・ -- ・--- ・-・・ ・- ・・-・・ ・・ ・・・- --・-・ ・- ・-- ・- -・--・ --・・- -・・- ・-・・ ・・ --・-- --- -・・・ ・・ --・ -・-・- ・--・- ・・-・ ・--- --・-・ ・-・ -・-・- ・- ・-・・ ・- -・-・・ ・・ ・-・・ ・・ ・-・-・ -・・・ ・・ ・-・-- --・-

となり、

1
MVLA[・・-・・]IV[・-・--]I[-・-・・]X[--・-・]NQNNI[--・-・][----][・-・-・]R[-・・-・]IMJLA[・・-・・]IV[--・-・]AWA[-・--・][--・・-]XLI[--・--]OBIG[-・-・-][・--・-]FJ[--・-・]R[-・-・-]ALA[-・-・・]ILI[・-・-・]BI[・-・--]Q

あれ、違くないか・・・?

結構自信あったんですが、意味をなしていないので別の方式なのかと考えてしばらく試行錯誤していました。

バイナリ文字列

二種類の文字といえば、モールス信号の他にもバイナリデータとしてとらえることもできそうと考えました。

しかし文字列の長さは2~5文字と一定ではないため、仮にASCIIコードであると仮定すると空白をトルツメして復号することになり、それはあまり美しいやり方ではないので出題者としても意図していないものでしょう。

実際に復号してみても割り当てがないコードが散見され、復号できませんでした。

点字

思いついた当初は天才かと思いました。

しかし実際に当てはめてみると全然意味が通らない、、、これもダメでした。

転換点:和文モールスを知る

LLMに暗号の方式を列挙してもらっていたところ、モールス信号には欧文の他に和文形式もあることを知りました。

和文形式として再度解読してみます。

パターン① トン「・」:烏 ツー「-」:鳥

1
゛ソケタアヨソキヨテツミイチイイヨミヌサワーヨ゛ハケタアヨソミタホタヰ゜ツケヨトラヲヨウンモネハミワンタケタテヨケヨサヲヨキチ

最初に「゛」があるのでこれもだめそうですが、全部の単語が復号できているのは初めてです。 符号を逆にしたらうまくいくかもしれません。

パターン② トン「・」:鳥 ツー「-」:烏

1
ヨクカイドクデキマシタネタダシコンナモ゛ヨヲカイドクシイヤイルヒマガアレバリサーチヲシナサイカイギガンバテネ

!!!!

ヨク カイドク デキマシタネ タダシ コンナモ゛ヨヲ カイドク シイヤイルヒマガ アレバ リサーチヲ シナサイ カイギ ガンバテネ

途中ちょっと怪しいですがこれは文意が成り立ちます!!

出題者に提出したところ、こちらで正解となりました。

感想

分かってしまえば、こんなものか・・・と拍子抜けするような話ではありますが、試行錯誤した末に復号できた時のうれしさはひとしおです。

素敵な問題を提供し、walkthroughも許可してくれた出題者に感謝です。ありがとうございました。

おまけ:モールス信号の復号化サイト

モールス信号 解読サイト

欧文と和文のモールス信号を一度に分析できるサイトはなさそうだったので自作しました。

2種類の文字で構成されている文字列であれば、トンツーの符号でなくても当てはめで復号できるかを確かめることができます。

文字ペアもワンクリックで入れ替えることができたり、復号できた文字の割合を表示も可能です。同様の暗号を解く機会があれば活用できるときが来るかもしれません。

こういうサイトも一瞬でデプロイまでできるのが、今の生成AIやgithub pagesをはじめとしたサーバーレス型サービスの発展の賜物だなと実感してます。便利な世の中になったもんだ。

発言は個人の見解であり、所属組織とは関係ありません。
Hugo で構築されています。
テーマ StackJimmy によって設計されています。