【9日目】Python勉強メモ - Webへの扉 -
Python 勉強メモ9日目。
セキュリティ界隈で働いていく以上、Webとは切っても切れない関係です。
というわけで、PythonでWeb界隈への扉を叩いてみようと思います。
前回はこちら ultrabirdtech.hatenablog.com
Webの基本知識
HTTP(Hypertext Transfer Protocol)
Webクライアントとサーバー間でリクエストとレスポンスをやり取りするための仕様(プロトコル)
HTML(Hypertext Markup Language)
Webページを作成するためのMarkup Language。 下記のようにタグで要素を指定する。
<html> <head>something write...</head> <body>something write...</body> </html>
URL(Uniform Resource Locator)
サーバー上のリソースを一意に特定するための識別子。
http://example.jp などがURLになる。
フレームワーク
Webアプリケーションの作成を支援してくれる便利ツール。
Pythonではdjangoというフレームワークが有名。
Webアプリケーションで必要な実装である、URLと対応ファイルとのルーティングやDBとのデータのやり取り(ORM)などを簡易化し、ルールとして統一してくれている。 他にもテンプレートとしてHTMLにどのようにデータを反映させるか、紐付けるかだったりや認証・権限の管理、セッションの管理などを担当してくれている。
Webサーバーを立ててみる
Pythonは基本的にはサーバーサイドを担当する言語である。 下記のコマンドを打つと単純なWebサーバーを実行できる。
$ python -m http.server Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
Ctrl + Cで止めることが可能。
上記コマンドを実行したフォルダ内にhtmlファイルを用意しておけば中身を閲覧することが可能になる。
下記のファイルをindex.htmlとして保存すればhttp://0.0.0.0:8000に繋いだ時点でWebページとして表示がされる。(index.htmlというものがあれば、フォルダにアクセスした時にデフォルトでindex.htmlが表示される)
<html>
<head>
<title>SAMPLE</title>
</head>
<body>
<h1>SAMPLE PAGE</h1>
<p>Stop Command is 'Ctrl + C'.</p>
</body>
</html>
Let's Try
課題1. Webサーバーを構築して通信をしてみよう
課題2. Web上のAPIを叩いて情報を取得してみよう
Web上のAPIを利用して情報を取得してみよう。
仕様
- virus total を用いてファイルがマルウェアかどうかを判断するスクリプトを書いてください
- エラー処理などは適時行なってください
- virus totalから返却されたレスポンスは分かりやすく整形してください(ファイルへの出力、
print()で出力など)
ヒント1. virus total
virus total とはファイルやファイルのハッシュ値で問い合わせをすることで、マルウェアがどうかを判別してくれるWebサービス。 マルウェアかどうかを判断する仕組みとしては、各セキュリティベンダーがマルウェアの情報を保持しており、それらの情報と付き合わせてマルウェアかどうかを判断してくれている。

ヒント2. 使用するライブラリ
PythonでHTTPリクエストを行う時に必要なライブラリ。
import urllib.request import urllib.error import urllib.parse
などを用いてください。
virust totalから返却されたレスポンスを解析する時にjsonを使う場合がある。
import json
まとめ
Webはもう少し詳しくやりたい。
djangoいじってみたいお気持ちはある。