Пакеты HTTP, что происходит? - PullRequest
       21

Пакеты HTTP, что происходит?

2 голосов
/ 26 февраля 2010

По сути, я просвечивал пакеты на моей PS3 при просмотре списков лидеров Motorstorm. Списки лидеров отправляются на мой PS3 в формате XML, но только после того, как я авторизован. Так может кто-нибудь сказать, пожалуйста, что происходит между этими тремя пакетами и как я могу воспроизвести его в браузере?

Пакет 1 С моей PS3 на серверы Sony

POST /ranking_view/func/get_player_rank HTTP/1.1
Host: ranking-view-a01.u0.np.community.playstation.net
Connection: Keep-Alive
Content-Length: 213
Authorization: Digest username="c7y-ranking01", realm="c7y-ranking", nonce="2SpsV4WABAA=47a2b36030cd94de1190f6b9f05db1bd5584bc2a", uri="/ranking_view/func/get_player_rank", qop="auth", nc="00000001", cnonce="d4eb1eb60ab4efaea1476869d83a6e0b", response="96b55c6e79f84dd41b46eb66bed1c167"
Accept-Encoding: identity
User-Agent: PS3Community-agent/1.0.0 libhttp/1.0.0

<?xml version="1.0" encoding="utf-8"?><ranking platform="ps3" sv="3.15"><titleid>NPWR00012_00</titleid><board>7</board><jid>Panzerborn@a5.gb.np.playstation.net</jid><option message="false" info="false"/></ranking>

Пакет 2 Ответ сервера Sony на мою PS3

Date: Fri, 26 Feb 2010 19:06:12 GMT
WWW-Authenticate: Digest realm="c7y-ranking", nonce="a3PFl4WABAA=6d375259676ec79641448a8032a795b8e12ccae4", algorithm=MD5, stale=true, qop="auth"
Content-Length: 401
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>401 Authorization Required</title>
</head><body>
<h1>Authorization Required</h1>
<p>This server could not verify that you
are authorized to access the document
requested.  Either you supplied the wrong
credentials (e.g., bad password), or your
browser doesn't understand how to supply
the credentials required.</p>
</body></html>

Пакет 3 PS3 ответ на последний пакет серверов Sony

POST /ranking_view/func/get_player_rank HTTP/1.1
Host: ranking-view-a01.u0.np.community.playstation.net
Connection: Keep-Alive
Authorization: Digest username="c7y-ranking01", realm="c7y-ranking", nonce="a3PFl4WABAA=6d375259676ec79641448a8032a795b8e12ccae4", uri="/ranking_view/func/get_player_rank", qop="auth", nc="00000001", cnonce="58869490a891002d8c56573496274a3a", response="ca3d6f252d4e398b8f751c201a3f8f08"
Accept-Encoding: identity
User-Agent: PS3Community-agent/1.0.0 libhttp/1.0.0

<?xml version="1.0" encoding="utf-8"?><ranking platform="ps3" sv="3.15"><titleid>NPWR00012_00</titleid><board>7</board><jid>Panzerborn@a5.gb.np.playstation.net</jid><option message="false" info="false"/></ranking>

Я пытался воспроизвести это в Firefox и тампере, а также в PHP cURL, но я ни к чему не привел. Я предполагаю, что это связано с переменными nonce, cnonce и response, которые постоянно меняются> <пожалуйста, помогите =) </p>

Ответы [ 2 ]

6 голосов
/ 26 февраля 2010

Nonce, cnonce и т. Д. Относятся к HTTP Digest Authentication , который представляет собой механизм аутентификации, который позволяет аутентификацию без отправки пароля в виде простого текста. Так что если вы хотите обмануть в своей игре для PS3, вам сначала придется взломать этот пароль из хеша MD5, я думаю.

И это не называется HTTP пакетов , на уровне 7 вы обычно говорите запрос / ответ или подобное.

3 голосов
/ 26 февраля 2010

Одноразовые номера nonce и cnonce выглядят как хэш-коды.

Один из возможных механизмов защиты от мошенников может быть таким:

def ps3client_send_score():
    score = "bazillion points"
    nonce = md5(score + "something you don't know about")
    send_to_server(score, nonce)

На стороне сервера:

def get_client_score(score, nonce):
    if md5(score+"something you don't know about")==nonce:
        accept_score(score)
    else:
        reject_score_and_ban_the_fool_if_he_continues_this()

Так что, если вы не хотите провести недели, пытаясь найти соль глубоко в вашей игре, забудьте об этом.

...