2013-01-01から1年間の記事一覧

bashrcに書いておくと便利なショートカット関数3つ

こういうの、設定してもだいたい忘れて使わなくなるのだけど、定着したものがいくつかあるので書いてみる。 l: ファイルにはless、ディレクトリにはlsを実行する 一つのコマンドで両方できるようにしておくと、判断の手間が省けて便利。 l() { # if the argu…

「Making a Proxy for Fun and Profit」というタイトルでプレゼンした

すみだセキュリティ勉強会 https://github.com/inaz2/SimpleHTTPProxy 以前ブログにも書いた、SimpleHTTPProxyの概要と利用例について話した。 Making a Proxy for Fun and Profit from inaz2 発表はデモを交えながらやったのだけど、それなりにウケていたの…

Pythonでdouble型のバイナリ表現を確認する

Pythonのstructモジュールを使うと、int型やdouble型の数字をバイト列に変換したり(pack)、バイト列から数字を取り出したり(unpack)できる。 これを利用して、double型の倍精度浮動小数点数がどのようなバイト列として表現されるかを確認してみる。 一般…

Pythonでストリーム暗号RC4を実装し、脆弱性の一端を垣間見る

この頃、SSLの暗号化などにストリーム暗号RC4を使わないほうがいいといった話がよく聞かれるようになった。 2013年版のCRYPTREC暗号リストでも128bitのRC4が「運用監視暗号リスト」に入っているし、先日には、Microsoftからストリーム暗号RC4を使わないよう…

OpenSSLとPythonでRSA暗号の原理を知る

OpenSSLを使うと、次のようにして2048bitのRSA鍵が作成できる。 $ openssl genrsa 2048 Generating RSA private key, 2048 bit long modulus ......................+++ .................+++ e is 65537 (0x10001) -----BEGIN RSA PRIVATE KEY----- MIIEowI…

OpenSSLで自己署名証明書を作成する

2048bitのRSA鍵を作成し、10年間(=3650日)有効な自己署名証明書を作成する。 $ openssl genrsa 2048 > server.key Generating RSA private key, 2048 bit long modulus .............................+++ ...+++ e is 65537 (0x10001) $ openssl req -new…

PEP 8 をつぶやくTwitter Botを作った

https://twitter.com/python_pep8 https://twitter.com/pep8_bot Pythonの標準コーディング規約 PEP 8 に書かれているフレーズを一定間隔でツイートする。 PEP 8、一度読んでもすぐ内容を忘れてしまうのだけど、いろいろ参考になることが書いてあるし、なん…

GNU Screenの画面分割のキーバインドをEmacs風にする

一つのターミナルの上で、複数の仮想ターミナルを切り替えて使うことができるscreenというソフトウェアがある。 このソフトウェアには画面分割機能 (Regions) があるのだけど、標準のキーバインドは次のようになっていて、使いやすくない(C-aはエスケープキ…

シンプルでカスタマイズしやすいHTTPプロクシ "SimpleHTTPProxy" を作った

https://github.com/inaz2/SimpleHTTPProxy 簡単にカスタマイズできるHTTPプロクシが欲しかったのだけど、Webを探してみてもちょうどよいものがなかったので作った。 ターミナルで、PythonのSimpleHTTPServerモジュールと同じように $ python -m SimpleHTTPP…

HTML5における終了タグの省略について

HTML 4.01では、下のページで O がつけられているタグは省略することができる。 http://www.w3.org/TR/1999/REC-html401-19991224/index/elements.html 具体的には、 <table> <tbody> <tr> <th>header1</th> <th>header2</th> </tr> <tr> <td>content1</td> <td>content2</td> </tr> </tbody> </table> は次のように省略して書くことが許される。 <table> <tr> <th></th></tr></table>…

ノートPCが壊れたので新調してメモリを増設した

自宅で使っていたノートPCの内蔵DVDドライブが壊れ、ブルースクリーンが頻発するようになったので、ノートPCを新調した。 さらに、仮想マシンでGUIを使うことを考えると4GBでは物足りないと思い、メモリを4GB買い増して合計8GBにした。 4GBのときのWindowsエ…

「Sniffing BitTorrent DHT ~人はBTで何を落とすのか~」というタイトルでプレゼンした

すみだセキュリティ勉強会 https://github.com/inaz2/btsniff 以前ブログに書いた話の続きで作った、btsniffというスクリプトについて発表した。 おもしろかった。 やっぱり発表の場があると、間に合わせないと、という意識が働いてよい形にまとまる気がする…

PyCon APAC 2013 に参加した

http://apac-2013.pycon.jp/ja/ 野良Pythonエンジニアとしては行くしかない、ということで初参加。 プライベートで行くカンファレンスなので、自由に聴講レポートが書ける。すばらしい。 資料や動画は、タイムテーブルのページから確認できる。 特に動画は会…

ASIS CTF Finals 2013に参加した

CTF

久しぶりにCTFの参戦記。これまでもいくつか参加していたけど、ブログに書く余裕がなかったのであった。 write upではないので、詳細な解説はないです。 今回のCTFは、イランの ASIS CTF Finals 2013。Finalsだけど参加は誰でもできる。 ジャンルはWeb, Fore…

exploit codeでよく見るログ出力のメモ

Jon Oberheide氏が使っているのをよく見るが、他の人のコードでも見かける。 起源はよくわからない。 print "[+] this is info log" print "[-] this is error log" 下記のような例を見ることもある。 print "[*] this is info log" print "[!] this is erro…

Unixパーミッションについて調べ直してみる

chown, chgrp, chmodコマンドで扱われる、いわゆるUnixパーミッションについて、理解を深めるために整理してみた。 ユーザとグループ Unix系システムでは、各ユーザは必ず一つのprimary groupに属する。 さらに、各ユーザはprimary groupのほかに、0個以上の…

DHTピアからtorrent情報を収集するBitTorrentクライアントを作った

https://github.com/inaz2/deluge-dht-collect 最近のBitTorrentクライアントにはDHTと呼ばれる仕組みが実装されており、ピア間でtorrent情報をやりとりすることによりトラッカーレスでダウンロードを行うことができるようになっている。 つまり、他のユーザ…

CentOS 6.4でWi-Fiモニタリング

なんとなくWi-Fi通信のモニタリングをしてみた。 環境 $ uname -a Linux serv 2.6.32-358.11.1.el6.x86_64 #1 SMP Wed Jun 12 03:34:52 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux $ cat /etc/redhat-release CentOS release 6.4 (Final) 無線LANアダプタ用ド…

muninでサーバの各種ステータスをグラフ化する(CentOS 6.4)

自宅サーバ(ノートPC)のCPU温度を計りたくなったので、この機会にmuninでグラフ化させてみることにした。 muninはCPU温度に限らず、ロードアベレージやトラフィックなどさまざまな情報をグラフ化し、Webブラウザから確認できるようにするサーバモニタリン…

mpd (Music Player Daemon) で自宅サーバをジュークボックスにする

mpdはデーモンとして動作し、各種クライアントプログラムからネットワーク経由で操作することができる音楽プレイヤーである。 今回は自宅サーバ(ノートPC)にスピーカーを繋げて、HDDにある音楽ファイルをスピーカーから流せるようにしてみる。 MPDroidなど…

rsyncで大容量のファイルコピーを行う

USB HDD間で大容量のファイルコピーを行う必要が出てきたので、調べてみた。 rsyncでファイルコピーを行うには、次のようにすればよい。 コピー元のパスについて、最後にスラッシュをつけない場合はディレクトリごと、つける場合はディレクトリの中身ごとの…

SambaでWindowsファイル共有を行う正しいやり方

Webを検索しても古いバージョンについての説明が多く、なかなか正しいやり方を見つけるのが難しいSambaの設定メモ。 環境 ここに書く内容は、Samba 3.6.0以降が対象です。 $ cat /etc/redhat-release CentOS release 6.4 (Final) $ smbd --version Version 3…

FreeBSD 9.1-RELEASE を使ってみる

とりあえず軽く触ってみた。 インストール 公式サイトのダウンロードページからbootonlyのISOイメージをダウンロードし、公式のハンドブックを参考にインストールを行う。 ミラーサイト選択の際に「Snapshot Server Japan」を選ぶと、どういうわけかインスト…

isearch中でのquery-replaceが便利 (C-s M-%)

http://www.gnu.org/software/emacs/manual/html_node/emacs/Special-Isearch.html 今さら気づいたのでメモ。 C-s などでインクリメンタルサーチ中に M-% を押すと、サーチ中の文字列を対象とした状態で文字列置換ができる。 M-C-s で正規表現サーチ中の場合…

CentOS 6.4でKVM仮想化基盤を作る

自宅サーバ(ノートPC)をフォーマットして、KVM仮想化基盤を作った。 これで1台の物理サーバで複数のOSを動かせるようになった。 CPUが仮想化支援機能を有しているか確認 すでにインストールされているOSがLinuxであれば、次のようにして確認できる。 Intel…

DEFCON CTF Quals 2013に参加した

CTF

http://legitbs.net/ 6/16 9:00 -- 6/18 9:00 JSTに行われたDEFCON CTF予選に参加。 相変わらずバイナリが読めないので、比較的多くのチームが解けていたWeb系問題ぐらいしかわからなかった。 バイナリ読解のノウハウが足りない…… 以下は適当な解法の説明。…

ssh-agentで手元の公開鍵をリモートサーバから使う

ssh-agentは公開鍵を保持して、認証処理を代行するデーモンプロセスである。 パスフレーズの入力を一度で済ませる ssh-agent経由でシェルを起動し、鍵を登録しておくことで、以降シェルを抜けるまでパスフレーズなしで認証できる。 $ ssh-agent bash $ ssh-a…

Gitlab 5.2 & Gitlab CI 2.2 をインストールする

http://gitlab.org/ GithubのOSSクローンGitlabと、CI(継続的インテグレーション)サーバGitlab CIをインストールした。 Gitlabについては、プロジェクトを1個作らないとメンバーを追加できないなど多少気が利かないところはあるものの、とりあえずはこれで…

CartonとcpanmでCPANモジュールをローカルインストールして使う

PerlでCPANモジュールをローカルインストールして使うには、Cartonを使う。 $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 12.04.2 LTS Release: 12.04 Codename: precise まず、apt等のパッケージマネージャ…

virtualenvとpipでPyPIパッケージをローカルインストールして使う

PythonでPyPIパッケージをローカルインストールして使うには、virtualenvを使う。 $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 12.04.2 LTS Release: 12.04 Codename: precise まず、apt等のパッケージマネ…