眠気

戯言とメモ

adent

書こうと思ってた日にびっくりするほど寝てしまったので適当に書きました。

Let's Encrypt使った話

この記事は OIC ITCreate Club Advent Calendar 2015 16日目(12/16)の記事です。

Let's Encryptにメール送って返ってきたのをしばらく放置していたのですが、

いつの間にかpublicBETAになってて、

やってみると10分くらいで出来たので、

通信を暗号化したいなどの需要には答えてくれるのではないかと思い、書きました。

git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto

これだけでapt-getとか勝手に走って、その通りに答えれば証明書が得られるのですが、

それだと記事としてもアレなので、http2にするためのソレなどを書こうかなと。


nginxに1.9.5からhttp2が取り込まれたということで、nginxでhttp2を使用するには1.9.5以上が必要なのですが、

気がつけば1.9.9がリリースされてたりするので、好きな感じのバージョンをインストールして頂ければなと。

ソースからビルドする場合はnginx: downloadなどから好みのバージョンをインストールし、ビルドして下さい。

aptの場合は/etc/apt/sources.list

deb http://nginx.org/packages/mainline/debian/ squeeze nginx
deb-src http://nginx.org/packages/mainline/debian/ squeeze nginx

とか書いてアレすれば良いんじゃないかなと思います。

デフォルトだと

./letsencrypt-auto certonly --webroot -d ドメイン名 --webroot-path /usr/share/nginx/html

的な感じにしておけば、/etc/letsencrypt/live/ドメイン名/

cert.pem  
chain.pem  
fullchain.pem  
privkey.pem

が作成されるので、

/etc/nginx/nginx.conf

server {
         listen 443 ssl http2;
         server_name  ドメイン名;
        ssl_certificate      /etc/letsencrypt/live/ドメイン名/fullchain.pem;
        ssl_certificate_key  /etc/letsencrypt/live/ドメイン名/privkey.pem;
}

みたいな設定でnginxを再起動すれば一応出来るんじゃないかなと思います。

apacheの場合はデフォルトでプラグインが用意されてるので--apacheなどを付ければカンタンだと思います。

また、80か443しか受け付けてくれないので、サーバを止めずに認証ファイルを受け取る場合はwebrootプラグインを使います。

ちなみに無料のためか証明書の有効期間は90日しかないので、90日内に再度証明書を発行しないといけません。

cronでやれば良いので、こういう感じでやれば良いと思います。

おわり

advnt

暇つぶしアセンブラ

今日も誰も書かないので、適当に。

もう半分くらい自分の記事になってきた…

あとだんだん書くネタが無くなってきたこの頃。


この記事は OIC ITCreate Club Advent Calendar 2015 12日目(12/12)の記事です。

セキュリティキャンプ・キャラバンで拝聴した中島さんのアセンブリ読経がとても良かったので、最近の暇つぶしはもっぱらアセンブリ読経になっている。

gccの最適化とかさせてみる遊び。(mainのみ

$ cat code.c 
#include <stdio.h>

int main(){
    int n=10;
    n++;
    printf("%d",n);
    return 0;
}

適当なCを書く。

とりあえず最適化を無効にしてビルド。

$ gcc -mpreferred-stack-boundary=2 code.c -O0 -o ex
$ objdump -d -M intel --no-show-raw-insn ex

0804841d <main>:
 804841d:       push   ebp
 804841e:       mov    ebp,esp
 8048420:       sub    esp,0xc
 8048423:       mov    DWORD PTR [ebp-0x4],0xa
 804842a:       add    DWORD PTR [ebp-0x4],0x1
 804842e:       mov    eax,DWORD PTR [ebp-0x4]
 8048431:       mov    DWORD PTR [esp+0x4],eax
 8048435:       mov    DWORD PTR [esp],0x80484e0
 804843c:       call   80482f0 <printf@plt>
 8048441:       mov    eax,0x0
 8048446:       leave  
 8048447:       ret 

上のコードの通り、[ebp-0x4]に0xa(10)をmovして、それに0x1をaddしている。

最適化オプションを指定してみる。

$ gcc -mpreferred-stack-boundary=2 code.c -O1  -o ex1
$ objdump -d -M intel --no-show-raw-insn ex1

0804843d <main>:
 804843d:       sub    esp,0xc
 8048440:       mov    DWORD PTR [esp+0x8],0xb
 8048448:       mov    DWORD PTR [esp+0x4],0x8048500
 8048450:       mov    DWORD PTR [esp],0x1
 8048457:       call   8048330 <__printf_chk@plt>
 804845c:       mov    eax,0x0
 8048461:       add    esp,0xc
 8048464:       ret 
 

[esp+0x8]に直接0xb(11)をmovしている。

最初の2行とか、eaxに[ebp-0x4]を入れて戻してみたいな処理が削られている。

サイズの最適化オプションを指定してみる。-Os

$ gcc -mpreferred-stack-boundary=2 code.c -Os  -o exs
$ objdump -d -M intel --no-show-raw-insn exs

08048340 <main>:
 8048340:       push   ebp
 8048341:       mov    ebp,esp
 8048343:       push   0xb
 8048345:       push   0x80484e0
 804834a:       push   0x1
 804834c:       call   8048330 <__printf_chk@plt>
 8048351:       xor    eax,eax
 8048353:       leave  
 8048354:       ret 

mov処理がpushに変わっている。最後のmovもxorに変わってたりしてて面白い。

適当にコードを書いて、ビルドして、印刷して持ち歩くことによって暇つぶしになる。

オプション

最適化オプション


  • もっとCTFのバイナリ問題が解けるようになりたい。
  • Base64読みたかった。

advent3

slackにアップされてる画像からGPS情報取得するやつ

この記事は OIC ITCreate Club Advent Calendar 2015 9日目(12/9)の記事です。


slackでアップロードされる画像に位置情報があるのがすごく気になって

いたけれど、誰もつっこまないし、

誰もアドベントカレンダー書かない日だったので、

無理やり何か作ってみました。

暇なのか。暇じゃないです。全然。

slackにアップロードされている画像に位置情報があった場合、Google Mapにピンを立てます。

ピンのアイコンはファイルをアップしたユーザーのslackアイコンで、

ピンに表示されるのはexif情報の時間です。

github.com

所属しているslackチームの、web apiのtokenがあれば使えます。

trasla.rbを実行後(実行中)、map.htmlでこんな感じで見れると思います。

f:id:lailaiskyn:20151209201618p:plain GPS情報を公開するのもアレなので内容は適当に編集しています。

jsonajaxで取得するため、webサーバを立てるなりして下さい。

これで、slackメンバーの活動とかが見れて遊べます。

あとslackはSNSのようにExif情報などは消してくれないので、

閉じた環境ですが、気にする方は一度スマホの設定を良いかもしれません。


  • スマホの画像がとても大きいわりに、exifはファイルの先頭なので全部ダウンロードするのは無駄な感じがする
  • 位置情報があったメンバーが限られていたのでそこまで面白くもない結果だった

明日は 紅き衝動 さんの「oculusかな?」です!