cookies.txt      .scr

ただのテキストファイルのようだ

qtbindingsのemitが動かない話

ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux]
ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-linux]
gem 2.1.9
gem-1.9 1.8.23 にて。

http://stackoverflow.com/questions/15583114/qtruby-emit-does-not-work
これ。

ruby2.0では動かないらしいので、ruby1.9で動かしましょうという話。
しかし実際にruby-1.9で動かしてみたら、Segmentaition Fault起こした。ふぇぇ。
rubyが(というかqtbindingsのnativeが)せぐふぉったのを見たのは初めてですね。
qtbindingsの最新版だとダメかな、とか思ってqtbindings 4.6.3.4も試したけどおんなじ。せぐふぉ。
でもemitに関係なくせぐふぉってるので、これはこれでまた別のおかしい状況です。
ちなみにせぐふぉっているのはlibqtruby4shared.soのrb_type()とかいう関数らしい。

ふぇぇ。

CTF各位

正直言いましょう、良問ではないです。
ただ、解けないことはありません。いや、解けないかもしれません。


・本来のファイルから、初めの4byte(印字可能文字列)を削ってあります。正しい4byteを足してからごにょごにょしてください。
http://www.dropbox.com/s/t8x29k4fxfm5l0s/file

解けたら@cookies146までDMでもしてください。

ヒント(今の段階では見ないとおそらく解けない):
1.カテゴリではTrivia/Misc辺りになると思います。Trivia要素が強いでしょうか。


2.僕の好きなものを考えてみてください。自分のプロフィールが書けるところには欠かさず入れているあれです。


そのうち、削った4byteを公開します。

正答者

    • @nk0t 13/09/14 12:46:53

Symbol Table Overflow

初めて知った。Rubyのシンボルって無限には作れないんだね。

a="a"
loop do
  puts a.to_sym
  a = a.succ
end

こんなスクリプト書いた。
そしたら"dodxx".to_symの次のシンボルづくりで死んだ。

a.rb:3:in `to_sym': symbol table overflow (symbol dodxy) (RuntimeError)
        from a.rb:3:in `<main>'
ruby a.rb  28.19s user 16.40s system 28% cpu 2:37.73 total

んで、

("a".."dodxx").to_a.size # => 2094896

この数字 is 何.

暇だったらRubyのソース読みたいっすね


追記:
ちなみに
$ ruby -v
ruby 2.0.0p247 (2013-06-27 revision 41674) [i686-linux]
でしたのだ。
環境によって数はかわるっぽいのですだ。特にx86_64?

追記2:
上のloopに入る前に
a="aaaaa"
300.times do
eval("#{a}=\"test\"")
end
と入れたら、作成できるシンボルの数が300減った。
今頑張って
2095000.timesのevalしてるとこ。
GCとか僕よくわかんないので。
学校から帰ってきたらなにか起きているはず。