ksnctfを使ってHTTP通信について学ぶ③(python・ksnctf-8)

HTTP通信をpythonで行う方法を学び、それを使って次回ksnctfの問9を解く。
ksnctf - 9 Digest is secure!


①HTTPリクエストメッセージをPythonで作る
・下記はksnctfの問8のHTTPリクエストメッセージ

GET /~q8/ HTTP/1.1
Host: ctfq.sweetduet.info:10080
Connection: keep-alive
Authorization: Basic cTg6RkxBR181dXg3eksyTktTSDhmU0dB
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.162 Safari/535.19
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate,sdch
Accept-Language: ja,en-US;q=0.8,en;q=0.6
Accept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.3


・Requestsライブラリを使って、Pythonで同じメッセージを作ってみる

import requests
url="http://ctfq.sweetduet.info:10080/~q8/"

headers={
'Host': 'ctfq.sweetduet.info:10080',
'Connection':'keep-alive',
'Authorization': 'Basic cTg6RkxBR181dXg3eksyTktTSDhmU0dB',
'User-Agent': 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.162 Safari/535.19',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Encoding': 'gzip,deflate,sdch',
'Accept-Language': 'ja,en-US;q=0.8,en;q=0.6',
'Accept-Charset': 'Shift_JIS,utf-8;q=0.7,*;q=0.3',
}

r=requests.get(url, headers=headers)


②HTTPレスポンスメッセージをPythonで表示してみる
・下記はksnctfの問8のHTTPレスポンスメッセージ

HTTP/1.1 200 OK
Date: Sat, 26 May 2012 20:54:05 GMT
Server: Apache/2.2.15 (CentOS)
Last-Modified: Sat, 26 May 2012 12:24:46 GMT
ETag: "422da-b8-4c0ef920b3f8e"
Accept-Ranges: bytes
Content-Length: 184
Connection: close
Content-Type: text/html; charset=UTF-8

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Q8</title>
  </head>
  <body>
    <p>Congratulations!</p>
    <p>The flag is q8's password.</p>
  </body>
</html>


pythonでメッセージを表示させてみる
ソースコード

print(r.status_code)
print(r.headers)
print(r.text)

(実行結果)

> python .\sample.py
200
{'Date': 'Tue, 21 Jan 2020 08:38:22 GMT', 'Server': 'Apache/2.2.15 (CentOS)', 'Last-Modified': 'Sat, 26 May 2012 12:24:46 GMT', 'ETag': '"422da-b8-4c0ef920b3f8e"', 'Accept-Ranges': 'bytes', 'Content-Length': '184', 'Connection': 'close', 'Content-Type': 'text/html; charset=UTF-8'}
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Q8</title>
  </head>
  <body>
    <p>Congratulations!</p>
    <p>The flag is q8's password.</p>
  </body>
</html>

下記のドキュメントを参考にした。
Requests: 人間のためのHTTP — requests-docs-ja 1.0.4 documentation


(間違い等あればコメントよろしくお願いいたします。)