Pregunta

Básicamente, estaba transformando paquetes en mi PS3 mientras veía las tablas de clasificación de MotorStorm. Las tablas de clasificación se envían a mi PS3 en formato XML, pero solo después de haber sido autorizado. Entonces, ¿alguien puede decirme qué está sucediendo entre estos tres paquetes y cómo podría replicarlo en un navegador?

Paquete 1 de mi PS3 a los servidores 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>

PACKET 2 Respuesta del servidor Sony a mi 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>

PACKET 3 PS3 Respuesta al último paquete de los servidores 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>

Traté de replicar esto en los encabezados de Firefox y Tamper, así como en PHP Curl, pero no estoy llegando a ninguna parte. Supongo que tiene que ver con las variables Nonce, Cnonce y Responce que siguen cambiando> <por favor ayuda =)

¿Fue útil?

Solución

Nonce, cnonce, etc., están relacionados con Autenticación de resumen http, que es un mecanismo de autenticación que permite la autenticación sin enviar una contraseña en texto plano. Entonces, si quieres hacer trampa en tu juego de PS3, primero tendrás que piratear esa contraseña del hash MD5, supongo.

Y no se llama http paquetes, en la capa 7, generalmente diría solicitud/respuesta o similar.

Otros consejos

El nonce an nonce y cnonce Parece códigos hash.

Un posible mecanismo de defensa contra los tramposos podría ser este:

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

En el lado del servidor:

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()

Entonces, a menos que quieras pasar semanas tratando de encontrar el sal En lo profundo de tu juego, olvídalo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top