パスワードを忘れた? アカウント作成
452695 journal

fslashtの日記: はてなダイアリー自動転記スクリプト開発(3) 3

日記 by fslasht

STATUS: 故障中

● パケット解析

 ログイン時と日記POST時のパケットをダンプしてみました。

ログイン時
日記POST時(新規投稿)
日記POST時(2回目)

▼ ログイン時

・[ブラウザ→はてな] ユーザー名・パスワードを入力して送信
 パラメータ「key」にユーザー名、「password」にパスワードを平文で設定してPOSTしています。

・[はてな→ブラウザ] クッキーの設定、ユーザーの日記ページへ移動
 はてなからはCookieが渡されます。ユーザー名、パスワードを元に生成された暗号っぽいものです。ログインしなおしても同じ値です。
 また、Locationヘッダにより日記ページへ転送されます。

・[ブラウザ→はてな] クッキー付で日記ページのGETリクエスト
 ブラウザから日記ページへアクセスする際に、Cookieを送ればユーザーとして認識されるようです。

・ [はてな→ブラウザ] ユーザーの日記ページ内容

▼ 日記POST時

 Cookieでセッションキーを送りつつ、パラメータをデータ部としてPOSTします。
 例)Cookie: name=fslasht; rk=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 POSTデータ部は次回説明

● Cookieについて

 Cookieは、キー「rk」に対してセッションIDが入る。
 以下の例では「XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX」としている。
 単純にユーザー名+パスワード(もしくはパスワードのみ)を暗号化したもの。
 ログインしなおしても同じ内容が渡される。

▼ IE(6.0)の場合

・保存場所(ファイル名)
C:/Documents and Settings/USERNAME/Cookies/USERNAME@hatena.ne[1].txt

 「USERNAME」にはユーザー名が入る。
 「[1]」ないの数字が異なる(または「[]」自体無い)場合がある。

・Cookie内容例
rk
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
hatena.ne.jp/
1536
2109175808
30335102
3986410288
29600847
*

※「XXXXXXXX~」実際にはセッションキーが入る(暗号)

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • ● ログイン時

    ▼ [ブラウザ→はてな] ユーザー名・パスワードを入力して送信

    POST /login HTTP/1.1
    Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, application/x-gsarcade-launch, application/x-shockwave-flash, */*
    Referer: http://d.hatena.ne.jp/login
    Accept-Language: ja
    Content-Type: application/x-www-form-urlencoded
    Accept-Encoding: gzip, deflate
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322)
    Host: d.hatena.ne.jp
    Content-Length: 29
    Connection: Keep-Alive
    Cache-Control: no-cache
    Cookie: name=fslasht

    key=fslasht&password=ZZZZZZZZ

    ▼ [はてな→ブラウザ] クッキーの設定、ユーザーの日記ページへ移動

    HTTP/1.1 302 Moved
    Date: Sun, 16 Nov 2003 19:50:21 GMT
    Server: Apache/1.3.27 (Unix) (Vine/Linux) mod_perl/1.26
    Set-Cookie: rk=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX; domain=.hatena.ne.jp; path=/; expires=Wed, 13-Nov-2013 19:50:21 GMT
    Location: http://d.hatena.ne.jp/fslasht/
    Connection: close
    Transfer-Encoding: chunked
    Content-Type: text/plain

    ▼ [ブラウザ→はてな] クッキー付で日記ページのGETリクエスト

    GET /fslasht/ HTTP/1.1
    Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, application/x-gsarcade-launch, application/x-shockwave-flash, */*
    Referer: http://d.hatena.ne.jp/login
    Accept-Language: ja
    Accept-Encoding: gzip, deflate
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322)
    Host: d.hatena.ne.jp
    Connection: Keep-Alive
    Cache-Control: no-cache
    Cookie: name=fslasht; rk=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    ▼ [はてな→ブラウザ] ユーザーの日記ページ内容

    HTTP/1.1 200 OK
    Date: Sun, 16 Nov 2003 19:50:22 GMT
    Server: Apache/1.3.27 (Unix) (Vine/Linux) mod_perl/1.26
    Keep-Alive: timeout=15, max=100
    Connection: Keep-Alive
    Transfer-Encoding: chunked
    Content-Type: text/html; charset=euc-jp

    3ba7

    ※以下省略

    【補足】
    「ZZZZZZZZ」実際にはパスワードが入る(平分)
    「XXXXXXXX~」実際にはセッションキーが入る(暗号)
  • ● 投稿 (日本語の文字コードはEUC)

    POST /fslasht/edit HTTP/1.1
    Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, application/x-gsarcade-launch, application/x-shockwave-flash, */*
    Referer: http://d.hatena.ne.jp/fslasht/edit
    Accept-Language: ja
    Content-Type: multipart/form-data; boundary=----BOUNDARY----
    Accept-Encoding: gzip, deflate
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322)
    Host: d.hatena.ne.jp
    Content-Length: 1114
    Connection: Keep-Alive
    Cache-Control: no-cache
    Cookie: name=fslasht; rk=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    ----BOUNDARY----
    Content-Disposition: form-data; name="mode"

    enter
    ----BOUNDARY----
    Content-Disposition: form-data; name="timestamp"

    ----BOUNDARY----
    Content-Disposition: form-data; name="year"

    2003
    ----BOUNDARY----
    Content-Disposition: form-data; name="month"

    11
    ----BOUNDARY----
    Content-Disposition: form-data; name="day"

    17
    ----BOUNDARY----
    Content-Disposition: form-data; name="title"

    TestTitle
    ----BOUNDARY----
    Content-Disposition: form-data; name="body"

    テスト本文
    TEST POST
    ----BOUNDARY----
    Content-Disposition: form-data; name="image"; filename=""
    Content-Type: application/octet-stream

    ----BOUNDARY----
    Content-Disposition: form-data; name="imagetitle"

    ----BOUNDARY----
    Content-Disposition: form-data; name="edit"

    この内容を登録する
    ----BOUNDARY----

    【補足】
    「XXXXXXXX~」実際にはセッションキーが入る(暗号)
    POSTデータ部の区切り文字は実際には「--(省略)--7d333c183b00e6」だった(省略の部分も含め30文字の「-」)が、投稿制限に引っかかったので「----BOUNDARY----」に改変した。
    POST中の日本語文字コードはEUC。
  • ● 投稿 (日本語の文字コードはEUC) 2回目

    POST /fslasht/edit HTTP/1.1
    Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, application/x-gsarcade-launch, application/x-shockwave-flash, */*
    Referer: http://d.hatena.ne.jp/fslasht/edit?date=20031117
    Accept-Language: ja
    Content-Type: multipart/form-data; boundary=----BOUNDARY----
    Accept-Encoding: gzip, deflate
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322)
    Host: d.hatena.ne.jp
    Content-Length: 1242
    Connection: Keep-Alive
    Cache-Control: no-cache
    Cookie: name=fslasht; rk=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    ----BOUNDARY----
    Content-Disposition: form-data; name="mode"

    enter
    ----BOUNDARY----
    Content-Disposition: form-data; name="timestamp"

    20031117062456
    ----BOUNDARY----
    Content-Disposition: form-data; name="date"

    20031117
    ----BOUNDARY----
    Content-Disposition: form-data; name="year"

    2003
    ----BOUNDARY----
    Content-Disposition: form-data; name="month"

    11
    ----BOUNDARY----
    Content-Disposition: form-data; name="day"

    17
    ----BOUNDARY----
    Content-Disposition: form-data; name="title"

    TestTitle
    ----BOUNDARY----
    Content-Disposition: form-data; name="body"

    テスト本文
    TEST POST
    追加の1行
    ----BOUNDARY----
    Content-Disposition: form-data; name="image"; filename=""
    Content-Type: application/octet-stream

    ----BOUNDARY----
    Content-Disposition: form-data; name="imagetitle"

    ----BOUNDARY----
    Content-Disposition: form-data; name="edit"

    この内容を登録する
    ----BOUNDARY------
typodupeerror

ナニゲにアレゲなのは、ナニゲなアレゲ -- アレゲ研究家

読み込み中...