解析補助用 Rubyスクリプト
毎回ごそごそ作るのもめんどくさいので、この記事に溜めていこうと決意した5分前。
16進2桁区切りでバイナリが記述されたファイルをバイナリファイルに変換(日本語でおk)
a = File.read( ARGV[0] ) a.split("\n").each do |v| v.split(" ").each do |b| print b.to_i(16).chr if b.length == 2 end end
Zlib 解凍
0x78 0x9C とかがきたら解凍。
require 'zlib' z = Zlib::Inflate.new() data = File.read( ARGV[0] ) buf = z.inflate(data) z.close print buf
何か分からないファイルをXOR総当たりで調べてそれっぽいファイルを保存する
xortoolという便利なものがあるみたいなので、Rubyに書きなおし中。。
書きなおしたけど、普通にpythonで使った方がよいね。
ROTしてくれる
a = "fbzr shpx fragrapr" tbl = "abcdefghijklmnopqrstuvwxyz" for k in 0..tbl.length-1 b = a for i in 0..b.length-1 r = tbl.index(a[i]) b[i] = tbl[(r+1)%tbl.length] if r != nil end puts b end
文字の出現頻度をカウントして表示
a = File.read("file_of_a_bitch"); cnt = Hash.new for j in 0..a.length-1 cnt[a[j]] = ((cnt[a[j]]==nil)?0:cnt[a[j]]) + 1 end cnt = cnt.to_a.sort{|a,b| (b[1]<=>a[1])*2 + (a[0]<=>b[0]) } cnt.each{|c| k = c[0] v = c[1] printf("%02x %c %" + cnt[0][1].to_s.length.to_s + "d ",k,k,v) (1..(v*20/cnt[0][1])).each{|m| print "l"} puts "" }