45
ハッカーのための Python入門 長山 哲也 a.k.a Euphoric wavism

ハッカーのための§ 名前:長山 哲也 (@Euphoricwavism) どこの人?:奈良在住KDL在籍 毎日三都物語 始めたきっかけ:社内のツールが一部Python

Embed Size (px)

Citation preview

ハッカーのための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-1.電卓に使える

1-b-2.すぐに試せる

1-b-3.補完機能が強力(IPython){タブキー入力}

候補を表示

メソッドも候補を表示

{タブキー入力}

1-c.イケてる言語仕様

c-1.可読性が高い c-2.ループの記述が楽 c-3.動的型付け

1-c-1.可読性が高い

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/