ハッカーのためのPython入門
長山 哲也 a.k.a Euphoric wavism
私名前:長山 哲也 (@Euphoricwavism) どこの人?:奈良在住KDL在籍 毎日三都物語 始めたきっかけ:社内のツールが一部Python Euphoric wavism?:アーティスト/DJ名 テクノとかハウスとか 作ってリリース中
Menu1.なぜPythonなのか2.Pythonの言語仕様3.PythonChallenge!!
Menu1.なぜPythonなのか2.Pythonの言語仕様3.PythonChallenge!!
1.なぜPythonなのか
a.ライブラリが豊富 b.対話型モードが強力 c.イケてる言語仕様
1-a.ライブラリが豊富
a-1.標準ライブラリが豊富 a-2.拡張ライブラリも豊富 a-3.(CTFで使えそうな)拡張ライブラリも豊富
1-a-1.標準ライブラリが豊富
csv:csvを「,」等で区切って読み書き hashlib:MD5、SHA等のハッシュ出力 base64:base64のエンコード/デコード urllib:Webサイトにアクセスする。 URLエンコード/デコード
1-a-2.拡張ライブラリが豊富
mtplotlib:グラフ作成 django:Webサーバを立てる py2exe:Pythonをexeファイルに py2app:Pythonをappファイルに
1-a-3.(CTFで使えそうな)拡張ライブラリが豊富
mechanize:Webサイトをクロール scapy:OSIそれぞれのレベルに対するネットワークアクセス PyCrypt:AES,RSAの暗号化/複合
1-b.対話型モードが強力
b-1.電卓に使える b-2.すぐに試せる b-3.補完機能が強力
1-b-3.補完機能が強力(IPython){タブキー入力}
候補を表示
メソッドも候補を表示
{タブキー入力}
1-c.イケてる言語仕様
c-1.可読性が高い c-2.ループの記述が楽 c-3.動的型付け
1-c-2.ループの記述が楽
どんな型でもとりあえずin句使っとけば大抵なんとかなる
1-c-3.動的片付け 代入したときに型が決まるので 細かいこと気にせず使える
まとめ
やりたいことが
豊富な標準ライブラリ、(CTFで使えそうな)拡張ライブラリ、補完機能が強力
すぐに 電卓に使える、すぐに試せる、ループの記述が楽、動的型付け
皆で 可読性が高いできる
!
Menu1.なぜPythonなのか2.Pythonの言語仕様3.PythonChallenge!!
2.Pythonの言語仕様
a.Hellow World! b.変数宣言 c.数値の扱い d.文字列の扱い e.リストの扱い
f.辞書の扱い g.ファイルの扱い h.if文 i.for文 j.try...except文
2.Pythonの言語仕様(今日話さないこと)
データ構造:タプル、集合型 複合文:while文、メソッド定義、 クラス定義 呼び出し:main、import その他:ラムダ式、イテレータ、 内包表記
知らなくても
できる!
2-a.Hellow World !
2-b.変数宣言
宣言だけだと 怒られる 代入=宣言
2-c.数値の扱い=を2回使っても良い
_は直前の計算結果 (対話モードのみ)
インクリメントは+=
2-d.文字列の扱い シングルクォートも
ダブルクォートも
途中で シングルクォート等を 入れる場合は バックスラッシュ
2-d.文字列の扱い
改行は¥nか三重クォートで
文字列連結は+で 配列としても使用可
2-e.リストの扱い
リストの追加も+で
[X:Y]とすると その間一式抽出
[ ]で定義 テキスト、数値 混在OK
2-f.辞書の扱い{ }で定義
左:キー、右:値
keys:キー一覧、items:キーと値の組み合わせ一覧、has_key:キー
があるか確認
[キー]で値抽出
2-g.ファイルの扱い(読込)
open:ファイルを開く r:読込専用モード read:全文読込 readline:一行読込
2-g.ファイルの扱い(書込)
w:書込モード(上書き) write:書き込み
2-g.ファイルの扱い(追記)
a:追記モード
2-h.if文 ==で同一チェック 最後に:必須、後はタブorスペースでインデント!=で不同チェックx in yのようにin句を使うことで「yの中にxはあるか?」という判定の仕方ができる
2-h.if文
「もし~または~でないならば」はif...elif...elseで表現。 switch文がないのでこれで代用
2-i.for文
基本in句を用いる。rangeメソッドで0~3まで等範囲を決める。 日本語に意訳すると「「0~3」までの集合の中から順番にiに代入してループさせる」
2-i.for文
インクリメントの間隔も指定できる
2-i.for文
revesedメソッドを 用いると逆順に
2-i.for文
リスト型も順番に取り出してくれる
2-i.for文
辞書型も順番に取り出してくれる。 ループで使う要素は複数でもOK
2-i.for文
for文にもelseが使える 最後に1回だけ実行
2-i.for文
for文にもelseが使える 最後に1回だけ実行
2-j.try...except文
「except 例外名,e」と書くと「例外名に合致した例外をeに格納」となる。type(e):例外名取得、e.args:例外の内容取得。
Menu1.なぜPythonなのか2.Pythonの言語仕様3.PythonChallenge!!
3.PythonChallengeVMの環境 Python:2.7.6 拡張ライブラリ: IPython、mechanize、scapy、Django IDE:Pycharm ユーザ: pyuser/pyuser pyadmin/全問解くとパスワード完成
3.PythonChallenge参考ページ Python公式ドキュメント日本語訳 http://docs.python.jp/2/