ニュース

「シチズンフォー スノーデンの暴露」を見てきました (1コメント)

kanataほぼ8年前に追加

シチズンフォー スノーデンの暴露というエドワード・スノーデンを題材にしたドキュメンタリーを見てきました!

映画「シチズンフォー スノーデンの暴露」

ここの記事を事前に読んでおくと更に楽しめます。

THE ZERO/ONE - 正義の告発者か買収されたスパイか スノーデンの素顔に迫るドキュメンタリー映画『シチズンフォー スノーデンの暴露』

正義の告発者か買収されたスパイか スノーデンの素顔に迫るドキュメンタリー映画『シチズンフォー スノーデンの暴露』
https://the01.jp/p0002479/

THE ZERO/ONE - ハッカーの系譜 エドワード・スノーデン

米国で繰り返される「諜報」と「内部告発」の歴史(1/6)
https://the01.jp/p0001924/

米諜報機関が生んだハッカーの葛藤(2/6)
https://the01.jp/p0001950/

闇に葬られないための入念な「告発準備」(3/6)
https://the01.jp/p0001968/

世界に衝撃を与えた米国の盗聴プログラム「プリズム」(4/6)
https://the01.jp/p0001998/

「世紀の告発者」への第一歩を踏み出す(5/6)
https://the01.jp/p0002027/

香港からの脱出、そしてロシアへ(6/6)
https://the01.jp/p0002038/

THE ZERO/ONE - ハッカーの系譜 ジュリアン・アサンジ

ウィキリークス「反骨」の原風景(1/6)
https://the01.jp/p0002395/

少年ハッカー「メンダックス」の冒険(2/6)
https://the01.jp/p0002414/

サイファーパンクスとの出会い(3/6)
https://the01.jp/p0002449/

少年ハッカーから国家と戦うハクティビストに(4/6)
https://the01.jp/p0002464/

※連載中(2016.6.18現在)

いちエンジニアとしての感想

当初より、エドワード・スノーデンさんのリークした情報の真偽が疑われたりしています。
また、現在に至るまで名だたるIT関連企業は、関与した事実を認めていません。

映画はドキュメンタリーでしたので、エドワード・スノーデンさん自身が、ものすごく、ものすご~く、情報の取り扱いに気を使っていたのを生で見ることが出来ました。(VOIP電話のコード抜いたり、スマホを冷蔵庫に入れたり、全てPGPで暗号化したり)

さてさて、信じられないような情報が数々がリークされた訳ですが、いちエンジニアとして、その真偽について感想を述べたいと思います。

まず、

  • 技術的に矛盾した話は無かった。
  • ちょっと、大げさに情報漏えいを恐れていたようにも感じたが、(VOIP電話のコード抜いたり、スマホを冷蔵庫に入れたり)、技術的には盗聴が可能という側面と、自分の命がかかってるので解る。
  • 逆にそこまで気にしないといけないNSA怖い。

国家規模の盗聴に関して言うと、

  • 実現するには、国家規模で、ものすごいリソースの用意が必要。(特にディスクとメモリが。どの位必要なのか想像もできない。)
  • さらに、IT関連の複数の大企業の協力が必要(顧客のプライバシーを守ると声高に宣言している企業の協力が)。
  • さらに、国家間で秘密裏に協定を結んだり、もしくは勝手に他国へもネットワークを広げることが必要。

という、普通なら実現不可能に思えました。
特に、「IT関連の複数の大企業の協力が必要」というあたりは、CEOだけが墓場まで持って行けばよいという訳でもなくて、そんな工事・作業するのにも複数人の関係者が必要になります。彼らの口を全て塞ぐのは難しいんじゃないんですかね。まさか
でも、でも、もしかしたら国が本気出せばできるのかもしれません。。

2016.6.21追記
と、思ったんだけど次のコンボで特に疑われずにNSAは動けるね。コメント欄に書いたTEDの動画見て思った。
米国には裁判所の命令があれば、合法的に盗聴できる。→それを理由に盗聴する仕組みを各IT企業に作る。→(本当は裁判所の命令がないと盗聴できないけど)後は、勝手に盗聴する。

盗聴されると、どうなるのかしら

そんな訳で、国家規模で盗聴されていると仮定すると何がどうなるか想像してみます。

まず日常的に使っている検索エンジンやメール、ネットショッピングの内容が全て筒抜けになります。
普通に生活している分には、データ収集されても、あまり影響がないような気もしますが、技術的には改竄も可能なので、

  • 「検索語A」で検索したのに「検索語B」の結果が返ってきたり
  • メールに書いてある待合せ場所と時間を書き換えられたり
  • クレジットカードの番号を盗まれて勝手に買い物される

そんなリスクまで考えられます。国がやろうと思ったら、ですけど。

「自分ネットする時、絶対HTTPS(SSL/TLS)しか使わないんで大丈夫っすよ」
と思われる方もいるかもしれませんが、HTTPSは、みなさんのPCとサービスを提供する企業の入り口までを暗号化しているのであって、それ以降は筒抜けになります。ここから抜かれるとどうしようもありません。

                              ┏━━━━━━━━━━ IT企業のデータセンタ ━━━━━━━━━┓
                              ┃                                                            ┃
自分のPC(ブラウザ) <---------->[HTTPSをHTTPに複合する機能]<---------->[ロードバランサ等]<---┃
                       HTTPS  ┃                              HTTP                          ┃
                   暗号化して┗━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━━┛
                    安全な区間                                │
                                                   この区間で盗聴されると平文
                                      (普通の常識だとデータセンターの中なので、盗聴は無理)

個人でできる情報の秘匿 - PGPを使う

こんな情報筒抜けな世の中だとしても、誰にも内緒で情報を伝える手段は存在します。
エドワード・スノーデンさんも頻繁に使っておりましたが、公開鍵暗号方式で暗号化して送ればいいんですね。

映画ではPGPを使っておりました。
日常的に使うには、ちょっと面倒なんですが、届いた相手のPCでしか複合できない仕組みなので確実です。

余談ですが、PGPを使う際には鍵長は最大(恐らく2048bit)を設定しましょう。短い鍵長だと、計算能力が高いコンピュータで割り当てられてしまうかもしれません。ちなみに鍵破りコンテストが随時開催中で、640bitの鍵長までは破られています。

参考:MathWorld Headline News RSA-640 Factored

スノーデンさんの件に関しては、真偽についても賛否についても、ご意見ある方いらっしゃると思いますが、いちエンジニアとして技術的に大変興味深く拝見させて頂いた映画でした。

なんか書いてて怖くなってきた。
あれ、誰か来たみたい。

ニコナレで公開されているスライドをpdfでダウンロードするコマンド

kanataほぼ8年前に追加

niconare-dl

niconareは、2019年8月15日(木)をもってサービス終了とのことです。

niconareで公開されているスライドをpdfでダウンロードするコマンド

2019.2.18追記 ニコナレの仕様が変わちゃったので現状は動きません

Installation

ファイルダウンロードして実行権限をつけるだけ

$ wget https://raintrees.net/attachments/download/422/niconare-dl
$ chmod u+x ./niconare-dl

動作環境

x86_64のLinuxで動作すると思われます。

以下で、動作確認しました。

  • CentOS Linux release 7.2.1511 x86_64
  • Kali GNU/Linux 2.0 (sana) x86_64

Debian系だと、若干表示がおかしくなることもあるみたいだけど(゚ε゚)キニシナイ!!

Usage

$ ./niconare-dl [URL]

$ niconare-dl http://niconare.nicovideo.jp/watch/kn1275
initializing..
downloading.. 59 slides
converting.. 恐怖!シェルショッカーのPOSIX原理主義シェルスクリプト.pdf
complete
$ls
恐怖!シェルショッカーのPOSIX原理主義シェルスクリプト.pdf

URLは'(シングルコーテーション)で囲んでおいた方が無難。

URLの中に & が入っているとシェルがバックグラウンド実行の記号と解釈しちゃうので。。

Specification

一時作業領域として、コマンド実行中にカレントディレクトリに以下のディレクトリが作成されます。
コマンド実行後には、削除されます。

niconare-dl_temp_[プロセスID]

もし、なんらかの理由でこのディレクトリが残っていたら、不要ですので削除してかまいません。

注意事項

スライド形式はダウンロードできるんですが、動画形式(?)には対応していません。
許してつかぁさい。堪忍してつかぁさい。。

Background

何故作ったか

最近なんかSlide Share以外に、Speacker Deckニコナレを使う人が出てきたみたい。(Speaker Deckは標準でPDFダウンロード機能がある)

Slide ShareSpeacker Deckは、ダウンロードして、電車の中で読むというのをしておりまして。
ニコナレも・・・!と、思って気がついたら作ってた。

動的リンクの実行ファイルを静的リンクに変換する

kanataほぼ8年前に追加

statifierというのを使ってみました。

Statifier

経緯

とあるコマンドをインストールしようと思った・・・・が・・・・・ 駄目っ・・・・・!
パッケージの依存関係がすごい。つまり、1つコマンドを導入するのに、入れたくないパッケージを山のように入れなければならない。。

そのコマンド1つだけ実行したいだけなのに・・・

そこで思いつく悪魔の発想・・・っ!

fig2.png
fig1.png

1バイナリで動くようにすれば、他の環境に楽に持っていける。理論上は出来るはず・・・と思い、調べたら出てきた。

statifierというのを使えば可能であることがわかった。

ELF STATIFIER MAIN PAGE

メンテナンスはあまり活発ではないようだが、x86_64にも対応してくれているっぽい。

その他の案として、参照している動的リンクライブラリを全部洗い出してコピーし、LD_PRELOAD環境変数に突っ込んだ上で実行すればいけるかなぁ。とか、思ったんだけど、試してはいない。

概要

結局、なにがしたいかと言うと、

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

int main(){
  printf("Helloworld");
  return 0;
}
$ gcc test.c 
$ ldd a.out 
        linux-vdso.so.1 =>  (0x00007fffc62d0000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f886214a000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f8862517000)

この単純なプログラムですら、3つの動的リンクライブラリを必要としている事がわかる。
このライブラリがシステムに存在しないと、プログラムは動かない。
だったら・・・プログラム(a.out)の中に、この3つの動的リンクライブラリを取り込んだらいいじゃない。
という発想。

Install

まず、自分はこのソフトのコンパイルのため、コンパイル用の仮想環境を用意した。
statifierを導入するために、依存関係となっている複数パッケージを導入する・・・のは本末転倒である。
コンパイル済みのものだけを目的の環境にコピーしてやればよいではないか。

という訳で、ここから最新版のtar.gzをダウンロードする。

自分が実施した時は、statifier-1.7.4.tar.gz でした。

適当なところに展開しておく。

$ tar xvfz statifier-1.7.4.tar.gz

コンパイル時に必要となるパッケージをインストール。

# yum install glibc.i686 glibc-devel.i686 libgcc.x86_64 libgcc.i686 

makeする。

$ cd xvfz statifier-1.7.4
$ bash ./configure
$ make

というのが、めんどうな方のために自分がコンパイルしたものをここに置いておく。

statifier-1.7.4_for_x86_64.tar.gz

実行環境について

さっそく動作確認してみる。
dateコマンドを静的リンクにしてみよう。

$ ldd /bin/date 
        linux-vdso.so.1 =>  (0x00007fff3432f000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f61fcf4f000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f61fd31c000)
$ cd statifier-1.7.4
$ setarch `uname -m` -R src/statifier.sh /bin/date /tmp/date2

これでstaticなdateコマンドが出来たはず。

$ setarch `uname -m` -R /tmp/date2
2016年  6月  5日 日曜日 17:30:56 JST
$ ldd /tmp/date2
        動的実行ファイルではありません

うん、たぶんうまく動いてるんだと思われる。

超注意:ASLRの怪

なんか、おまじないのようなコマンドがくっついているのが、おわかり頂けただろうか・・・

$ setarch `uname -m` -R

実は、これ、LinuxのASLRというセキュリティ機能を一時的に無効にするコマンドになります。
ASLRについては、ググるか、CTF_Pwnをみてね。
なんか、いろいろやってみたけど、動かなくてね~。

どうやら、「静的リンクの実行体に変換する時」と、「実際に動作させる時」にメモリアドレスが同じになってないといけないっぽい。

なので、必ず「setarch uname -m -R」を頭につけて変換&実行しておくれ。

想定される使い方

よっしゃー。これで、1バイナリになって、どの環境でも動くぞイヤッッホォォォオオォオウ!

と、ならないのが世の定め。。

ちょっとLinuxディストリビューションの違うLinuxに持ち込んでみたが動かない。。
まぁ全部試した訳ではないのだけれど、
同じディストリビューションだと動いているっぽい。

たぶん、kernelのバージョンが違ってたりすると、取り込んだlibcでそれを吸収できないとか、そんな感じになっている気がする。
調べてないけど。

そう考えると1バイナリになるGo言語って結構考えられてますね。ファイルサイズが大きくなるだろうから、そこらへんトレードオフなんだろうけど。

なので、自分は同じLinuxディストリビューションで2環境用意して運用している。

  • VMでコンパイル用環境を作る(足りない物は、なんでもかんでもyum install。使い捨て)
  • 本番環境。できるだけパッケージを入れない。

補足

statifier には、こんな記述が

Recent Linux kernels introduced VDSO (Virtual Dynamic Shared Object) and stack randomization. Those things, while valuable features, don't play well with Statifier.

意訳:ASLRとVDSOを使うバイナリは上手く動かないぜ

この statifier を作った方達は、Ermine というソフトを販売しております。

Ermine works in a fashion similar to Statifier, creating self-contained executables from dynamically-linked >applications. But Ermine-packed applications are not snapshots: instead they can be thought of as small virtual machines.
And because of this an Ermine-packed application does not suffer from the problems created by VDSO/stack randomization

意訳:Ermineなら問題ないんだぜ

Ermine
http://www.magicermine.com/

15日トライアルもできるらしい。

参考

bkブログ - statifier で動的リンクの実行ファイルを擬似的に静的リンクにする
http://0xcc.net/blog/archives/000089.html

ELF Statifierを使って実行形式ファイルをシステム間で移動する
https://osdn.jp/magazine/08/12/02/012255

WAFを知らない人に説明する試み

kanataほぼ8年前に追加

仕事で使うかもしれんのでまとめてみた。

WAFとIPSとFireWallとウィルス対策ソフトと何が違うの?
とか、確かに説明しづらい気がする。WAF知らない人に対しても、できるだけ簡潔に説明したい。

詳細は、Security#WAF参照。

WAF~><

Redmineにブログパーツを貼るには

kanataほぼ8年前に追加

Redmineプラグインを作った。
Redmineにブログパーツを貼るには、このプラグインの機能を使えば可能。
可能というか、HTMLとJavaScriptで出来ることなら、なんでもできてしまう。

Redmine RawHtml plugin

RawHtml plugin開発

概要

通常のRedmine(RubyOnRails)は、デフォルトで許可していないタグやスクリプトを表示・実行することができません。
これはセキュリティ上の仕様であり、正しい、あるべき姿です。

ただ、ただどうしても、貼り付けたいブログパーツとか、実行させたいJavaScriptとかがある場合があります。
それを可能にするWikiマクロになります。

使い方

{{rawhtml(ここにhtmlタグ等を書く)}}

{{rawhtml(<div style="color:#ff0000">あああ</div>)}}

あああ

実行例

SlideShareの貼り付け

PHOTOPRESSOの貼り付け

ブログカードの貼り付け(はてなブログ記事紹介ジェネレータを利用)

オシャレ定量化コマンドを作ってオシャレ評価してみた - A painter and a black catオシャレ定量化コマンドを作ってオシャレ評価してみた - A painter and a black cat

ブログカードの貼り付け(Embed Code Generatorを利用)

オシャレ定量化コマンドを作ってオシャレ評価してみた - A painter and a black cat

ダウンロード

このページに添付してあるやつをダウンロードします。

redmine-rawhtml-0.8.0.tar.gz

セットアップ

DBは使ってないので、rakeとかは必要ありません。
ダウンロードファイル解凍後、pluginsフォルダへ。

# mv -i ./rawhtml /opt/alminium/plugins

お使いの環境に合わせて、ファイルの所有者を変更してください。

# cd /opt/alminium/plugins

# chown -R apache:apache rawhtml

注意事項

利用者のセキュリティに対する考慮について

このプラグインは 全てのタグ、全てのスクリプトを許容 します。
そのため、Redmineの登録ユーザは、 XSSCSRF 等の攻撃を容易に仕込む事が出来ます。

まぁ…かなり気の知れた仲間内で使うとか、私みたいに自分用Redmineとして使ってる人向けだと思ってください。

特定のユーザだけ許可するとか、そんな機能を加えればいいんだろうけど。

混在コンテンツのブロックについて

HTTPとHTTPSが入り交ざってコンテンツを配信していることを、混在コンテンツと言います。
最近のほとんどのWebブラウザは混在アクティブコンテンツに対しては自動でブロックします。
これはWebブラウザのセキュリティを考慮した仕様です。

以下の条件で、表示されたり、表示されなかったりします。

ブログパーツがhttp ブログパーツがhttps
表示元のサイトがhttp ○表示できる ○表示できる
表示元のサイトがhttps ×表示できない ○表示できる

これはこのプラグインに限った話ではなく、ブログパーツ一般のお話になります。
うまく表示されないブログパーツについては、混在コンテンツになっていないか確認するのがよいでしょう。

ちなみにニコニコ動画のブログパーツがhttpのみで、このサイトをhttpsでアクセスしていると、うまく表示されないんや。。

オシャレ定量化コマンドを作ってオシャレ評価してみた (2コメント)

kanataほぼ8年前に追加

以下の記事に感動した。

Instagramでオシャレを定量化できると信じて疑わない彼氏の話
http://kuma-no-kara-age.hatenablog.com/entry/2016/02/01/003051

なるほど、、、一理ある。この方法でオシャレが定量化できそうだ。

さっそくコマンドを作ってみる。

getOshareFromInstagram.sh

#!/bin/bash

# オシャレ定量化コマンド

while [ "$1" != "" ]
do
  # instagramからオシャレ指数を取得
  #POINT=`curl -s curl -s https://www.instagram.com/explore/tags/${1}/|tr ',' '\n'|grep count|grep entry_data|awk -F':' '{print $NF}'`
  # 2017.11.05 動かないので直した
  POINT=`curl -s https://www.instagram.com/explore/tags/${1}/|tr ',' '\n'|grep count\" |grep -v likes|grep -v comments|cut -d' ' -f3`
  # 表示位置調整のための小細工
  if [ `echo "${1}"|wc -m` -le 4 ]
  then
    WORD="${1} "
  else
    WORD="${1}"
  fi
  printf "%.15s\t%'10d oshare\n" "${WORD}" "${POINT}"
  shift
done

exit 0

実測

食べ物 で測定

思いつくままに、適当に食べ物を並べてみる。

$ ./getOshareFromInstagram.sh からあげ ハンバーグ パスタ パフェ ラーメン 蟹 パン ケーキ 沢庵
からあげ            76,194 oshare
ハンバーグ         423,013 oshare
蟹                 97,937 oshare
パン            1,001,182 oshare
ケーキ          1,168,795 oshare
沢庵                2,585 oshare

パンやケーキのオシャレ指数が、かなり高い事がわかる。
ケーキは、沢庵と比べ452倍オシャレであることがわかる。

飲み物 で測定

英名での評価も考えられるが、今回は日本固有のオシャレ感覚を考慮し、和名だけで調査した。

$ ./getOshareFromInstagram.sh 水 牛乳 青汁 ビール 焼酎 日本酒 カクテル ワイン
水        155,891 oshare
牛乳       71,144 oshare
青汁       25,258 oshare
ビール    989,409 oshare
焼酎       93,936 oshare
日本酒    564,994 oshare
カクテル    91,766 oshare
ワイン    397,795 oshare

とりあえずビールを飲んでおけば、オシャレであることに疑いの余地はない。
日本酒も意外にオシャレである。

ファッションブランド で測定

ちょっとググッて見つけたブランドを並べてみる。
日本語と英字の両方が存在する場合は、その両方を記載している。

$ ./getOshareFromInstagram.sh ユニクロ UNIQLO GAP しまむら ZARA GU 無印良品 MUJI
ユニクロ           495,885 oshare
UNIQLO           1,207,245 oshare
GAP             1,528,165 oshare
しまむら           529,127 oshare
ZARA            15,303,593 oshare
GU                656,049 oshare
無印良品           443,495 oshare
MUJI               468,137 oshare

ZARAの圧勝である。

ONE PIECE で測定

$ ./getOshareFromInstagram.sh ルフィ ゾロ ナミ ウソップ サンジ チョッパー ロビン フランキー ブルック
ルフィ             26,365 oshare
ゾロ               13,699 oshare
ナミ                7,082 oshare
ウソップ             4,670 oshare
サンジ             11,418 oshare
チョッパー          33,180 oshare
ロビン             10,586 oshare
フランキー           5,865 oshare
ブルック             3,355 oshare

ゾロとサンジがいい勝負であるが、なんとチョッパーが一番オシャレ指数が高い。
これは、同時にカワイイ指数も含まれていると推察される。

山手線駅名 で測定

山手線駅名の駅名で検索してみる。

$ ./getOshareFromInstagram.sh 東京 有楽町 新橋 浜松町 田町 品川 大崎 五反田 目黒 恵比寿 渋谷 原宿 代々木 新宿 新大久保 高田馬場 目白 池袋 大塚 巣鴨 駒込 田端 西日暮里 日暮里 鶯谷 上野 御徒町 秋葉原 神田
東京    2,225,774 oshare
有楽町     72,929 oshare
新橋       82,467 oshare
浜松町     17,881 oshare
田町       13,631 oshare
品川       90,886 oshare
大崎       10,113 oshare
五反田     40,071 oshare
目黒       79,041 oshare
恵比寿    382,042 oshare
渋谷    1,177,357 oshare
原宿    1,317,258 oshare
代々木     82,567 oshare
新宿      941,782 oshare
新大久保   249,498 oshare
高田馬場    69,581 oshare
目白       19,243 oshare
池袋      492,544 oshare
大塚       12,218 oshare
巣鴨       20,336 oshare
駒込       11,560 oshare
田端        3,841 oshare
西日暮里     7,112 oshare
日暮里     21,986 oshare
鶯谷        4,889 oshare
上野      207,968 oshare
御徒町     19,407 oshare
秋葉原    107,962 oshare
神田       43,982 oshare

東京は、地名以外でもヒットしていると思われるので比較対象から除外する。
すると最もオシャレなのは原宿、次いで、渋谷となり、オシャレ指数の精度の高さを確認できる。
ワーストは田端であるが、原宿の1/342のオシャレ指数となり、東京都心でも格差が大きい。

考察

以上の結果から、かなり高い精度でオシャレ指数を測定できる事が確認できた。
ただし、ONE PIECEでの測定結果にみられるように、純粋なオシャレ指数ではなく「オシャレ指数+カワイイ指数」となっている疑いが残る。
カワイイ指数とオシャレ指数の分離については、今後の課題としたい。

Halvar Flake&PPPとローレイヤーな話をしよう に参加しました

kanataほぼ8年前に追加

Halvar Flake&PPPとローレイヤーな話をしように参加させて頂きました。

当日は、以下の錚々たる顔ぶれで御座いました。

  • 中津留勇さん
  • 黒米祐馬さん
  • ucqさん
  • inaz2さん
  • Halver Flakeさん

お話面白かったです。すごい高度でございました。恐るべしローレイヤーの世界。
(ただ英語力がなくてHalver氏のプレゼンで死んだ。英語力が必要だ。。)

ぼっちで突入した私を気遣って対応して頂いたkanaさん、隣の席で私のお相手して頂いたお二方、ありがとうございました。

資料

inaz2さんは、当日のプレゼンスライドを公開されておりました。

ももいろテクノロジー - 「Self Introduction & The Story that I Tried to Make Sayonara ROP Chain in Linux」というタイトルで発表した
http://inaz2.hatenablog.com/entry/2016/04/28/012136

会場

20160427_HalverFlakeAndPPP.jpg

使わない順 業務で使わないコマンド

kanataほぼ8年前に追加

何気に手元にあるCentOSには標準でインストールされていて、そのコマンドの存在を知っている割には1度も使ったことが無いコマンド達。

調査環境

$ cat /etc/centos-release
CentOS Linux release 7.2.1511 (Core) 

コマンドの仕様を解りやすく説明するために、こういうファイルを用意してみた。

$ cat test.txt 
abcdefg
ABCDEFG
1234567

shuf

行をランダムに入れ替える。

$ shuf test.txt 
ABCDEFG
1234567
abcdefg

使わない。

rev

文字の並びが逆になる。

$ rev test.txt 
gfedcba
GFEDCBA
7654321

使わない。

tac

行単位で逆に出力する。

$ tac test.txt 
1234567
ABCDEFG
abcdefg

ログファイル見る時にもしかして使う・・・?
(いや、でもtail使うし。。)

tput

ターミナル出力に色をつける事ができる!
細かい仕様はこのあたりを参照すると良い。

# 文字色を変える
$ tput setaf [0-255]
# 背景を変える
$ tput setab [0-255]
# 太字にする
$ tput bold
# 下線を引く
$ tput smul
# 文字と背景を反転
$ tput rev
# 全部リセット
$ tput sgr0

今までechoで代用してたけど、今後はこれを使おうと思ってる。
ちなみにPOSIXコマンドでもある。


みんなの使わないコマンドを教えて欲しい

決してディスっている訳ではない。むしろ全くの逆である。
シェル芸人としての嗜みである。
他にもあったら教えてほしいです。

SlideShareで公開されているスライドをpdfでダウンロードするコマンド

kanataほぼ8年前に追加

slideshare-dl

SlideShareで公開されているスライドをpdfでダウンロードするコマンド

Installation

ファイルダウンロードして実行権限をつけるだけ

$ wget https://raintrees.net/attachments/download/421/slideshare-dl
$ chmod u+x ./slideshare-dl

動作環境

x86_64のLinuxで動作すると思われます。

以下で、動作確認しました。

  • CentOS Linux release 7.2.1511 x86_64
  • Kali GNU/Linux 2.0 (sana) x86_64

Debian系だと、若干表示がおかしくなることもあるみたいだけど(゚ε゚)キニシナイ!!

Usage

$ ./slideshare-dl [URL]

$ ./slideshare-dl 'http://www.slideshare.net/ShellShoccarJpn/posix-59780910'
initializing..
downloading.. 59 slides
converting.. 恐怖!シェルショッカーのPOSIX原理主義シェルスクリプト.pdf
complete
$ ls
恐怖!シェルショッカーのPOSIX原理主義シェルスクリプト.pdf

URLは'(シングルコーテーション)で囲んでおいた方が無難。

URLの中に & が入っているとシェルがバックグラウンド実行の記号と解釈しちゃうので。。

Specification

一時作業領域として、コマンド実行中にカレントディレクトリに以下のディレクトリが作成されます。
コマンド実行後には、削除されます。

slideshare-dl_temp_[プロセスID]

もし、なんらかの理由でこのディレクトリが残っていたら、不要ですので削除してかまいません。

中の細かい動作

やっている事は、以下と同じでした。

PILOG - slideshareをPDFダウンロードするRubyスクリプト&Webアプリ
http://xoyip.hatenablog.com/entry/2013/12/12/071507

というかこのコマンド作った後に、このrubyスクリプトの存在に気付いた・・・

Background

何故作ったか

SlideShareのダウンロードをするのに、以下のサイトを利用させて頂いておりました。

http://crazyworks.jp/slideshare_downloder/

ダウンロードして、電車の中で読むというのをしておりまして。
なんですが、どうもエラーになるスライドが幾つかありまして、ちょっとしたストレスになっていて、気がついたら自作してた。

オンラインサービスの逆アセンブラ Retargetable Decompiler がヤバイ (3コメント)

kanataほぼ8年前に追加

CTFなんかで、ELFファイルを逆アセンブル・解析する時

  • IDA Proで・・・
  • OllyDbgで・・・
  • pedaで・・・

そんなふうに考えていた時期が俺にもありました。

今日、新しい選択肢が1つ増えました。

オンラインサービスでの逆アセンブラがございました。

Retargetable Decompiler
https://retdec.com/decompilation/

とりあえずコイツを見てくれ

20160410_RetargetableDecompiler_fig1.png

①…ELF形式だけじゃなく、PEやCOFFまで対応
②…対象のCPUアーキテクチャは、Intel x86, ARM, ARM+Thumb, MIPS, PIC32, PowerPC が対象っ・・・!
③…なんと、C言語かPythonのコードで逆コンパイルしてくれるッ!
④…後述のCall GraphがSVGかPNGかPDFで出力可能!!!1

もぅこの時点で結構高機能。

ちょっと解析してみますか。

解析対象として、SECCON2015オンライン予選の問題 Individual Elebin で出されたELFファイルを利用します。

Decompileボタンを押して、しばらく待つと結果が出てきます。
こんな感じ。

20160410_RetargetableDecompiler_fig2.png

では、デコンパイル・逆アセンブル結果を参照してみます。
⑤の所をクリックすると

20160410_RetargetableDecompiler_fig3.png

おぉ・・・左がアセンブラ、右がC言語ですね。鼻血出そう。
次はCall Graphを見てみる。
⑥の所をクリック

20160410_RetargetableDecompiler_fig4.png

グレートですよ・・・こいつぁ・・・
各関数ごとにこれが参照できます。しかもSVGとかPNGでダウンロードできる!writeup書くのすごく捗りそう。

ちなみに⑦の所クリックで全部ダウンロードできる。

20160410_RetargetableDecompiler_fig5.png

キマシタワー(n'∀')η゚・*゚・*

1 ... 8 9 10 11 12 ... 15 (91-100/150)

他の形式にエクスポート: Atom

クリップボードから画像を追加 (サイズの上限: 100 MB)