ばぁど・うぉっちんぐ

セキュリティに強いWeb屋。自由と春を求めて羽ばたく渡り鳥。

このブログはGoogle Analyticsを利用しています

【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というフレームワークが有名。

www.djangoproject.com

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サービスマルウェアかどうかを判断する仕組みとしては、各セキュリティベンダーがマルウェアの情報を保持しており、それらの情報と付き合わせてマルウェアかどうかを判断してくれている。

www.virustotal.com

f:id:UltraBirdTech:20190503111928p:plain

ヒント2. 使用するライブラリ

PythonでHTTPリクエストを行う時に必要なライブラリ。

import urllib.request
import urllib.error
import urllib.parse

などを用いてください。

virust totalから返却されたレスポンスを解析する時にjsonを使う場合がある。

import json

まとめ

Webはもう少し詳しくやりたい。

djangoいじってみたいお気持ちはある。