Hatena::Grouprubyist

たばさの RSSフィード

11/07(水) 2007

ascii,7bit

ascii,7bit - たばさの を含むブックマーク はてなブックマーク - ascii,7bit - たばさの

# pr-chr7b.rb
sepa="\n"

while gets
  d=""
  $_.each_byte{|c|d<<format("%c,%x:%07b", c,c,c);d<<sepa}
  print d #.to_s(2)
end
# pr-chr7b8bChr.rb
sepa=""
n=0

o=[]
d=""
while gets
  $_.chomp.each_byte{|c|
    o<<format("%02x", c);d<<format("%07b", c);d<<sepa
  }
end

# print d 
n=d.length % 8
d<<"0"*n if n>0

w7=[]
l=d.length/8
l.times{|i|
  # print d[i*8,8]+":"
  w7 << format("%02X",d[i*8,8].to_i(2),d[i*8,8].to_i(2)) #.to_s(16)
}

def bi o
 w=[]
 o.each{|i|
  w << format("%08b",i.to_i(16)	)
 }
 w
end

#puts bi(o)*" "
puts o*" "
#puts bi(w7)*" "
puts w7*" "
d:\>pr-chr7b8bChr.rb
12345678
^Z
31 32 33 34 35 36 37 38
62 C9 9B 46 AD 9B B8

d:\>

7ビットに詰めてみた

違うんだけどもね

関連 http://golf.shinh.org/p.rb?packed+UTF+9

つづき

つづき - たばさの を含むブックマーク はてなブックマーク - つづき - たばさの

utf9

二種類あるらしい

ひとつはエイプリルフール・ネタもうひとつは、といいいたいところですが

http://d.hatena.ne.jp/ytqwerty/20060314

出題者らしいのでこっちでしょう


ascii はどっちにしても変換なしで頭に0つけるだけじゃないのかな。

packってなに。圧縮?わかんねー

先頭2byteはもとのasciiのままだし。

それでも淡々と解かれるのを見ると自分がバカなだけってふうに思えてくる。

そんな時は

そんな時は - たばさの を含むブックマーク はてなブックマーク - そんな時は - たばさの

気晴らしに Bronspeak

ネタバレっぽいので 自力で解く方は(以下略

===

なんだかいかにも暗号って感じの問題。といっても単語の長さといい、それほど複雑ではない感じ。

まずはcipherを訳すと、、、、やっぱりそんな感じ。

さて単語が同じ長さっぽいので、置き換えだけではないかと、いやいやしかしそう簡単にも行くまいて。と用心しつつ。あとは、なんだかドイツ語っぽい綴りだなあと思うが例文は英文があるのでひとまず安心。置き換えならそれも余り関係なさそうとはいいつつ。


plaintext>ciphertextで暗号化というところ。でも例には逆もあるので逆向きも出来るようにしないといけない。置き換えだけならそれもまあ何とかなりそう。

例文にもヒントっぽく「オレの友人が教えてくれたんだけどドイツ語っぽく」うんぬん。

あーそれほどヒントにはなってないな。とりあえずこのへんで、何か有名な暗号化ではないんだろうなと、検索はやめる。読みようによってはあるということかもしれないけど。

さて、例1からすると、数字は変わらない。アルファベットは母音だけ変わっている。

??いやちょっと違うな。でもまあとりあえず母音だけでみるとそれっぽいので対応を調べて実装。一部おかしいがまあそこそこ。

theはshiになっているようだ。このへんで1対1は確信。子音は一個ずらすとかかな。逆向きもありの置き換え。1対1、しかも多分アルファベットのみ。母音は除く。なんか見通しがいいような。

しかし子音で変わらないものもある。条件は?

例1に戻ってみるとどうも最初と最後が変だ。子音も全部変わっていない。



というわけで、単語の最初と最後の子音をずらす。実装。そこそこ。

単語の最初最後で、母音はどうするか、単語の区切り文字はほんとにアルファベット以外か、とか単語我一文字の時はどうするか(最初と最後の判定はどっち優先か)。

調整。

途中、正規表現変換でタイムアウトになるところを調整。


などなど、どうにか完成っぽくなるも、最後になぜか例3だけ通らない。


diffで違う行をだして比較。

そこにはなんと!


隠された暗号が!





なんてことはないんだけど、これはなんでしょう。引っ掛けでしょうか。

おわり。

丸一日かかったよ

トラックバック - http://rubyist.g.hatena.ne.jp/hatecha/20071107
カレンダー
<< 2007/11 >>
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30
archive Error : RSSが取得できませんでした。