環境
CentOS7.2(Vagrant上) Python2.7.5 pwntools-3.5.0
やり方
以下でいけました。vagrant上でpwnできるねやったね!
$ sudo yum install libffi-devel openssl-devel $ sudo pip install pwntools
Pwn勉強中なので、しっかり勉強した上でオレオレライブラリを作りたい…(願望)
とりあえず1日目です。
本をざっと読んでみたのですが、やはりWindows向けに書かれていました。
自分が持っているのはMacなので、早くも詰みました。困りましたね。
そんなところで検索すると環境構築をしている方がいらっしゃいました。感謝…感謝…
CD-ROMから該当するファイルを引っ張ってきて、上記サイトにかかれていたシェルスクリプトを実行し、環境構築完了。
毎度おなじみ「世界へこんにちは」から入りました。
しかし、これがかなりきつい。
CDにはすでに完成されてたhelloos.img
が用意されていましたが、試しに自分で作成してみました。
バイナリを読むのはCTF等で機会が山ほどあったのでなんともないのですが、まさか書くことになるとは…
正直かなりきつかったです。
でもこうやって昔の人はOSを手組してたと考えると今の時代はかなり楽しちゃってるなあ…とも思います。
先程のコードをアセンブラのコードに書き換えるセクションでした。
筆者お手製のnask
というアセンブラを使って先程のコードを書き換えます。
本に書いてあるとおり、まだ手で打てるレベルだったので多少は楽になりました。
アセンブラの恩恵を初めて直に受けられた気がしました(?)
先程のアセンブラのコードをもう少し文法的にわかりやすく書き換えるセクションでした。
FAT12フォーマットに関する説明がアセンブラのコードと一緒に説明されていました。
FATっていう名前久々にきいたな…(林檎並感)
ここまできて、今まで作ってきたプログラムはブートセクタに入ってて、本来はここにbootstrapのプログラムが入ってるということがわかりました。
1日目…意外と濃い…
高校のころから図書館で借りて読んでいた本をついに買いました。
それが、川合秀実さんの著書である「30日でできる!OS自作入門」です。
低レイヤ界隈にはとても有名な本ですね。「名著」と某先輩も推しています。
今回は、数週間後に控えたもくもく会に向け、一冊30日かけてやる本を二週間ほどで終わらせるという無謀なチャレンジを行います。
目標は、本書で紹介されているOSをとりあえず完成させることです。内容理解の漏れに関しては、再読ともくもく会を通してカバーしていくつもりです。
内容に触れすぎない程度に1日分ごとに進捗をまとめていきたいと思います。
頑張ります!
IntelliJ IDEAやPhpStorm、Rubymineなどは、プログラマ界隈ではおなじみの高機能IDEですよね。
ただし難点なのが、これらは有料だということです。
しかもかなり高額。
そこで、Jetbrains製品にもStudent Licenseがないか調べたところ、「Jetbrains Product Pack for Students」というものがあったので、申し込んでみました。
まず、「JetBrains Product Pack for Students」のページに移動します。
Apply Now
をクリックします。
必要事項を記入します。
Email Addressは、必ず学校から付与されたメールアドレスを入力してください。
APPLY FOR FREE PRODUCTS
を押すと、先程入力したメールアドレス宛に承認リンクの載ったメールが届くと思うので、リンクをクリックしてください。
規約に同意すると、アカウント登録ページへのリンクが載ったメールが再度送られてくると思うので、クリックしてください。
Jetbrainsのアカウント作成画面に移るので、必要事項を記入すれば完了です。
(どうでもいいけどPhpstorm重い…)
サークルで統計が流行っているのですが、みんなRを使うのでひねくれものの私はPythonでデータサイエンスを勉強しています。(Rもそのうち触りたい)
そんな中、matplotlibがインライン展開されないという問題にぶちあたったのでメモ。
ノートのはじめで以下のコードを走らせないとインライン展開されないみたいですね。
%matplotlib inline
In [48] : tz_counts[:10].plot(kind='barh', rot=0) Out [48] : <matplotlib.axes._subplots.AxesSubplot at 0x18dd7d8c358>
In [49] : %matplotlib inline In [50] : tz_counts[:10].plot(kind='barh', rot=0) Out [50] : <matplotlib.axes._subplots.AxesSubplot at 0x18dd7d8c358>
表示されるよ!やったねたえちゃん!
今読んでる本です。実際のデータ使えるので楽しいです。
Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理