LPICの赤本についてきたiStudy LEのqdfファイルを開いてみたらSGML形式でした
$ file 117-201.qdf
エンコードしなおして開いてみると
$ nkf 117-201.qdf
ぱっと見た瞬間にシーザーなんじゃないかなと思いました。根拠としては同じ文字の羅列の出現率です。
例えば”yrsgznetva”という文字列はファイル中に248個あります。
$ grep -c yrsgznetva 117-201.qdf
とりあえずシフトしてみた
13シフト:leftmargin明らかに読める文字が出現しました。
英数字は13シフトで平文、句読点や記号の場合はそのままのようです。
全角の部分もこんな感じにシフトすれば解読できそうな気がしますが面倒なのでやめておきます。
$ file 117-201.qdf
117-201.qdf: exported SGML document, Non-ISO extended-ASCII text, with very long lines, with CRLF, NEL line terminators
エンコードしなおして開いてみると
$ nkf 117-201.qdf
:どこか法則が見いだせそうな文字列ですね。
<urnq>
<fglyr>
obql { sbag-fvmr: 11cg }
gq { sbag-fvmr: 11cg }
</fglyr>
</urnq>
<obql gbcznetva="1" yrsgznetva="1">
<!-- DF -->
惱昊羂晧竊ぎYvahkセーレヌぎワーエトンを嗄腱ぷみつ溲插、ぽぎYvahkェォュチ溘ぇ區えつてフケゴヌを朮淅べれぐよつぇべに。匱珱蜚か纐うくぞるフケゴヌ貍を姚殯ぷうはむふつ。<oe>
<oe>
<cer>
--------------------------
png /cebp/____________
--------------------------
</cer>
<oe>
<!-- DR -->
</obql>
:
ぱっと見た瞬間にシーザーなんじゃないかなと思いました。根拠としては同じ文字の羅列の出現率です。
例えば”yrsgznetva”という文字列はファイル中に248個あります。
$ grep -c yrsgznetva 117-201.qdf
248
とりあえずシフトしてみた
$text = <STDIN>;
foreach $shift ( 1..25 ) {
print "$_:\t", caesar( $text, $shift );
}
sub caesar {
($text, $shift) = @_;
$table = 'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz';
$strings = substr($table, $shift, length($table)/2);
$_ = $text;
eval "tr/$table/$strings/";
return $_;
}
1: zsthaofuwb
2: atuibpgvxc
3: buvjcqhwyd
4: cvwkdrixze
5: dwxlesjyaf
6: exymftkzbg
7: fyzngulach
8: gzaohvmbdi
9: habpiwncej
10: ibcqjxodfk
11: jcdrkypegl
12: kdeslzqfhm
13: leftmargin
14: mfgunbshjo
15: nghvoctikp
16: ohiwpdujlq
17: pijxqevkmr
18: qjkyrfwlns
19: rklzsgxmot
20: slmathynpu
21: tmnbuizoqv
22: unocvjaprw
23: vopdwkbqsx
24: wpqexlcrty
25: xqrfymdsuz
13シフト:leftmargin明らかに読める文字が出現しました。
英数字は13シフトで平文、句読点や記号の場合はそのままのようです。
全角の部分もこんな感じにシフトすれば解読できそうな気がしますが面倒なのでやめておきます。
- 関連記事
-
-
perlでシーザー暗号 2014/09/23
-
響ラジオをperlとcrontabで自動で定期的に落とす 2014/07/14
-
Perl Image::ExifTool 画像ファイルを撮影日時にリネームするスクリプト 2014/06/13
-
Perl ポートスキャン 2012/03/17
-
perltidyで整形 2012/02/24
-