RubyでLeet
第5回北海道情報セキュリティ勉強会のTessyさんのセッションの中で「Unl33t」という言葉が出てきました。つまりLeet変換されたものを戻すことなのですが、これをちょっとRubyでやってみよう...と思ったら、力技になりましたorz きっともっとエレガントに書けるんだと思うんだけど、とりあえず書いちゃう。何か良い方法があったら教えてください。
#!/usr/bin/ruby -Ku class Array def choice at(rand(size)) end end keyword = ARGV[0].dup keyword.gsub!(/A|a/,['4','/\\','@','/-\\','^','aye','(L','Д'].choice) keyword.gsub!(/B|b/,['3','P>','|:','!3','(3','/3',')3','|-]','j3'].choice) keyword.gsub!(/C|c/,['[','<','('].choice) keyword.gsub!(/D|d/,[')','(|','|o','[)','I>','|>','T)','I7','cl','|}','|]'].choice) keyword.gsub!(/E|e/,['=-'].choice) keyword.gsub!(/F|f/,['=','|#','ph','/=','v'].choice) keyword.gsub!(/G|g/,['6','&','(_+','9','C-','gee','(?,','[,','{,','<-','(.'].choice) keyword.gsub!(/H|h/,['|','|-|',']~[','}{','!-!','1-1','\\-/','I+I','}-{'].choice) keyword.gsub!(/I|i/,['eye','3y3','][',']','/me'].choice) keyword.gsub!(/J|j/,['_/','</','_]','(/'].choice) keyword.gsub!(/K|k/,['<','|{',']{','|X'].choice) keyword.gsub!(/L|l/,['|_','el','[]_','[_'].choice) keyword.gsub!(/M|m/,['v|','[V]','{V}','/V\\','em','AA','|\\/|','/\\/\\','(u)','(V)','(\\/)','/|\\','^^','/|/|','//\\','|\\|\\',']\\/['].choice) keyword.gsub!(/N|n/,['\\|','/\\/','[\\]','<\\>','{\\}','[]\\','//','[]','/V','1V','И','^'].choice) keyword.gsub!(/O|o/,['0','()','oh','[]','p','<>'].choice) keyword.gsub!(/P|p/,['*','|o','|?','|^(o)','|>','|"','9','[]D','|7'].choice) keyword.gsub!(/Q|q/,['&'].choice) keyword.gsub!(/R|r/,['`','|~','|?','/2','|^','lz','|9','2','12','[z','.-','|2','|-'].choice) keyword.gsub!(/S|s/,['5','$','z','§','ehs','es','2'].choice) keyword.gsub!(/T|t/,['-','][','†','"|"'].choice) keyword.gsub!(/U|u/,['_|','v','L|'].choice) keyword.gsub!(/V|v/,['/','\\|'].choice) keyword.gsub!(/W|w/,['/','\\_|_/','\\_:_/','Ш','uu','2u','\\\\//\\\\//','ω'].choice) keyword.gsub!(/X|x/,['><','Ж','}{','ecks','×','?',')(','][','}{'].choice) keyword.gsub!(/Y|y/,['/'].choice) keyword.gsub!(/Z|z/,['_'].choice) puts keyword exit実行してみたらこんな感じ。
$ ./leet.rb "Hack the Planet." }-{@(< -}-{=- |^(o)[_@И=--.難読化だなぁ。これを使って何か面白いものが作れないか考えてみたいと思います。