読者です 読者をやめる 読者になる 読者になる

tk3.log

こちはら、メモやいろいろを残していきます

Re:VIEW の環境を構築する

Windows Subsystem for Linux に Re:VIEW をインストールする。

まずは Ruby をインストールする

$ sudo apt install -y libreadline-dev libyaml-dev libssl-dev make
$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(rbenv init -)"' >> ~/.bashrc
$ source ~/.bashrc
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
$ rbenv install 2.4.0
$ rbenv global 2.4.0

実行環境を作成する

books というディレクトリを作成し、Re:VIEW の サンプルデータを取得する。 サンプルデータ には生成するための設定などが含まれている。

$ mkdir books
$ cd books
$ git clone https://github.com/takahashim/review-sample-book.git

必要な Ruby のパッケージをインストールする

$ bundle init

Gemfile に gem "review" を追記する。

$ vi Gemfile

追記後、次のコマンドを実行する。

$ bundle install --path vendor/bundle

EPUB ファイルを生成してみる

$ cd review-sample-book/src
$ bundle exec review-epubmaker config.yml

PDF ファイルを生成する

PDF の場合は、追加でパッケージをインストールする必要がある。

sudo apt-get install texlive-lang-cjk texlive-binaries  texlive-fonts-recommended

PDF ファイルを生成するには、次のコマンドを実行する。

bundle exec review-pdfmaker config.yml

参考

CTF for ビギナーズ 2016 東京

f:id:qtakamitsu:20161025235940p:plain

前半は講義、後半は練習問題を解くという構成になっていました。 フォレンジックスという言葉を初めて知りました。そのフォレンジックスは、今回はネットワーク中心の内容でした。

そして後半の練習問題は 1010点でした。時間が足りない。半分くらいしか手を付けられませんでしたね。

write-upを書くのが作法のようですけれど、解けなかったものばかり記憶に残っていて、覚えていません。

結局覚えていたのは、解けなかった問題だけ。

  • てけいさん for ビギナーズ
    スクリプトを作る」と聞いたときは、なるほどと納得してしまった。Cookie変更できるのではとか、ページに何かあるのか探してました。考えすぎました
  • Find Key2
    2つ目のpcapからzipを取り出したのですが、その中にあるpngが取り出せなかった。Wireshark の使い方に無駄に時間を使いすぎた
  • CountUp Game
    終わった後に、こういう問題があるのに気付いた。

次回があるかはわかりませんが、以下のことに注意して臨もうと思います。

  • 一通りすべての問題に目を通しておく
  • 引き出しを多く持つ
  • ツールの基本的な使い方は覚えおく

でんぱの神神 219

トレーナーレベルが22

Pokémon GO をたまにやっていますが、トレーナーレベルがやっと22に。

f:id:qtakamitsu:20160806221609j:plain:w300

ngx_mruby as proxy for Amazon S3 private files

Summary

ngx_mruby を使って、プライベートな S3 にアクセスできるようにします。

Operation verification

  • Ubuntu
  • ngx_mruby
    • qtkmz/mruby-digest-ffi
      • HMAC-SHA1 を使うために使用します
      • iij/mruby-digest でもできるかもしれませんが、試していません
    • iij/mruby-pack
      • Base64 を使うために使用します

Configuration

build_config.rb

MRuby::Build.new do |conf|
  ...(省略)...
  conf.gem :github => 'iij/mruby-pack'
  conf.gem :github => 'qtkmz/mruby-digest-ffi'

  ...(省略)...
end

nginx.conf

location ~* ^/s3/(.*) {
  set $bucket '<bucket-name>';
  set $aws_access '<access-key>';
  set $url_full "$1";
  mruby_set $aws_signature "./aws_signature.rb";
  mruby_set $aws_now "./aws_now.rb";

  resolver               8.8.8.8 valid=300s;
  resolver_timeout       10s;
  proxy_http_version     1.1;
  proxy_set_header       Host $bucket.s3.amazonaws.com;
  proxy_set_header       x-amz-date $aws_now;
  proxy_set_header       Authorization "AWS $aws_access:$aws_signature";
  proxy_buffering        off;
  proxy_intercept_errors on;
  rewrite .* /$url_full break;
  proxy_pass             http://<bucket-name>.s3-ap-northeast-1.amazonaws.com;
}

aws_now.rb

[Time.new.utc.to_s.split(" ")].map{|s| "#{s[0]}, #{s[2]}-#{s[1]}-#{s[5][2,2]} #{s[3]} GMT"}[0]

aws_signature.rb

bucket = '<bucket-name>'
aws_secret = '<aws-secret>'

req = Nginx::Request.new

method = req.method
now = [Time.new.utc.to_s.split(" ")].map{|s| "#{s[0]}, #{s[2]}-#{s[1]}-#{s[5][2,2]} #{s[3]} GMT"}[0]

string_to_sign = "#{method}\n\n\n\nx-amz-date:#{now}\n/#{bucket}/#{req.var.url_full}"

h = Digest::HMAC.new aws_secret, Digest::SHA1
h.update string_to_sign

[h.digest].pack("m")

References

もっと雑に文章を残す

技術系のブログはあるが、それ以外のことをこちらに残すようにします。

気軽にポストしようと思っているから短文になってしまうかもしれない、できる限り文章にしようと思う。