› Foros › PlayStation 3 › Scene
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
// SCEkrit.c (v1.0): Compute Sony's Private Keys
// Based on Sven's sceverify.c
// -------------------------------------------------------------
// Compile by copying to fail0verflow's ps3tools and add
// SCEkrit.c to TOOLS in the Makefile.
// Depends on libgmp; add -lgmp to LDFLAGS
// - Aaron Lindsay / @AerialX
// And thanks gbcft!
// Copyright 2010 Sven Peter <svenpeter@gmail.com>
// Licensed under the terms of the GNU GPL, version 2
// http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
#include "tools.h"
#include "types.h"
#include <stdio.h>
#include <string.h>
#include <assert.h>
#include <stdlib.h>
#include <gmp.h>
static int keyid = -1;
static u8 *ptr1 = NULL;
static u8 *ptr2 = NULL;
static u16 type;
typedef struct {
u16 flags;
u32 meta_offset;
u64 info_offset;
u32 app_type;
u64 filesize;
u64 header_len;
} fileinfo;
static fileinfo info1;
static fileinfo info2;
static struct keylist *klist = NULL;
static struct keylist *self_load_keys(fileinfo* info)
{
enum sce_key id;
switch (info->app_type) {
case 1:
id = KEY_LV0;
break;
case 2:
id = KEY_LV1;
break;
case 3:
id = KEY_LV2;
break;
case 4:
id = KEY_APP;
break;
case 5:
id = KEY_ISO;
break;
case 6:
id = KEY_LDR;
break;
default:
fail("invalid type: %08x", info->app_type);
}
return keys_get(id);
}
static void read_self_header(u8* ptr, fileinfo* info)
{
info->flags = be16(ptr + 0x08);
info->meta_offset = be32(ptr + 0x0c);
info->header_len = be64(ptr + 0x10);
info->filesize = be64(ptr + 0x18);
info->info_offset = be64(ptr + 0x28);
info->app_type = be32(ptr + info->info_offset + 0x0c);
klist = self_load_keys(info);
}
static void read_pkg_header(u8* ptr, fileinfo* info)
{
info->flags = be16(ptr + 0x08);
info->meta_offset = be32(ptr + 0x0c);
info->header_len = be64(ptr + 0x10);
info->filesize = be64(ptr + 0x18);
klist = keys_get(KEY_PKG);
}
static void decrypt(u8* ptr)
{
if (keyid < 0)
keyid = sce_decrypt_header(ptr, klist);
else if (keyid != sce_decrypt_header(ptr, klist))
fail("Both files must have the same key id");
if (keyid < 0)
fail("sce_decrypt_header failed");
if (sce_decrypt_data(ptr) < 0)
fail("sce_decrypt_data failed");
if (klist->keys[keyid].pub_avail < 0)
fail("no public key available");
if (ecdsa_set_curve(klist->keys[keyid].ctype) < 0)
fail("ecdsa_set_curve failed");
ecdsa_set_pub(klist->keys[keyid].pub);
}
static void verify_signature(u8* ptr, fileinfo* info, u8* hash, u8** s, u8** r)
{
u64 sig_len;
sig_len = be64(ptr + info->meta_offset + 0x60);
*r = ptr + sig_len;
*s = *r + 21;
sha1(ptr, sig_len, hash);
printf("Signature\n");
if (ecdsa_verify(hash, *r, *s))
printf(" Status: OK\n");
else
printf(" Status: FAIL\n");
}
static void load_num(mpz_t n, u8* un)
{
char buffer[0x100];
char* ptr = buffer;
int i;
for (i = 0; i < 21; i++) {
sprintf(ptr, "%02x", un[i]);
ptr += 2;
}
mpz_set_str(n, buffer, 16);
}
static char* calculate_private_key(u8* us1, u8* us2, u8* uz1, u8* uz2, u8* un, u8* ur)
{
mpz_t s1, s2, z1, z2, n, r, k, dA;
mpz_inits(s1, s2, z1, z2, n, r, k, dA, NULL);
load_num(s1, us1); load_num(s2, us2); load_num(z1, uz1); load_num(z2, uz2); load_num(n, un); load_num(r, ur);
mpz_sub(z2, z1, z2);
mpz_sub(s2, s1, s2);
mpz_invert(s2, s2, n);
mpz_mul(k, z2, s2);
mpz_mod(k, k, n);
mpz_mul(s2, s1, k);
mpz_sub(s2, s2, z1);
mpz_invert(r, r, n);
mpz_mul(dA, s2, r);
mpz_mod(dA, dA, n);
// printf("k: %s\n", mpz_get_str(NULL, 16, k));
return mpz_get_str(NULL, 16, dA);
}
int main(int argc, char *argv[])
{
if (argc != 3)
fail("usage: scesekrit filename1 filename2");
ptr1 = mmap_file(argv[1]);
ptr2 = mmap_file(argv[2]);
type = be16(ptr1 + 0x0a);
if (type != be16(ptr2 + 0x0a))
fail("Files must be the same type");
if (type == 1) {
read_self_header(ptr1, &info1);
} else if(type == 3) {
read_pkg_header(ptr1, &info1);
} else
fail("Unknown type: %d", type);
if ((info1.flags) & 0x8000)
fail("devkit file; nothing to verify");
if (klist == NULL)
fail("no key found");
decrypt(ptr1);
if (type == 1) {
read_self_header(ptr2, &info2);
} else if(type == 3) {
read_pkg_header(ptr2, &info2);
} else
fail("Unknown type: %d", type);
if ((info2.flags) & 0x8000)
fail("devkit file; nothing to verify");
if (klist == NULL)
fail("no key found");
decrypt(ptr2);
u8* s1;
u8* s2;
u8 z1[21];
u8 z2[21];
u8* r1;
u8* r2;
u8 ec[21];
u8 n[21];
z1[0] = 0;
z2[0] = 0;
ecdsa_get_params(klist->keys[keyid].ctype, ec, ec, ec, n, ec, ec);
printf("%s ", argv[1]);
verify_signature(ptr1, &info1, z1 + 1, &s1, &r1);
printf("%s ", argv[2]);
verify_signature(ptr2, &info2, z2 + 1, &s2, &r2);
if (memcmp(r1, r2, 21))
fail("Both files must share the same r signature value.");
const char* dA = calculate_private_key(s1, s2, z1, z2, n, r1);
int len = strlen(dA);
int i;
printf("Private Key: ");
for (i = len / 2; i < 21; i++)
printf("00");
printf("%s\n", dA);
return 0;
}
pereo10 escribió:y con esto se podra conectar a psn y jugar online?
GRACIAS
Naruse escribió:pereo10 escribió:y con esto se podra conectar a psn y jugar online?
GRACIAS
¿Y para qué lo quieres? Acabo de poner el Modern Warfare 2 para echar unas partidillas online y por obra y gracia del hack ahora es imposible: ya no se puede jugar... bueno, sólo con tus amigos y si estos deciden no utilizar las trampas que ahora están a disposición de cualquiera.
Gracias a este Epic Fail y a los graciosos que lo han explotado el juego online de la consola se ha terminado. Bueno, y la consola también, de facto... Gracias por nada a los hackers que lo han hecho posible.
Y yo que pensaba que me iba ahorrar del online de pago en esta generación... pero el Live Gold, mal que me pese, va a ser el único recurso. Eso sí, podré utilizar linux en mi PS3... puf, que desastre.
Natsu escribió:Naruse escribió:pereo10 escribió:y con esto se podra conectar a psn y jugar online?
GRACIAS
¿Y para qué lo quieres? Acabo de poner el Modern Warfare 2 para echar unas partidillas online y por obra y gracia del hack ahora es imposible: ya no se puede jugar... bueno, sólo con tus amigos y si estos deciden no utilizar las trampas que ahora están a disposición de cualquiera.
Gracias a este Epic Fail y a los graciosos que lo han explotado el juego online de la consola se ha terminado. Bueno, y la consola también, de facto... Gracias por nada a los hackers que lo han hecho posible.
Y yo que pensaba que me iba ahorrar del online de pago en esta generación... pero el Live Gold, mal que me pese, va a ser el único recurso. Eso sí, podré utilizar linux en mi PS3... puf, que desastre.
Perdona que te corrija, pero la culpa no es de los hackers si no de los usuarios irresponsables que no saben jugar de una manera "sana", no se que gracia le encuentra la gente a hacer trampas contra otros que no las están haciendo, supongo que la inutilidad y poca competencia ( de competente no de competir) es reultado de ello, no de los hackers.
Naruse escribió:Yo no veo nada positivo en todo esto. Es un grave error y será la tumba del sistema. Repito: maldigo a los responsables.
jolly roger escribió:Naruse escribió:Yo no veo nada positivo en todo esto. Es un grave error y será la tumba del sistema. Repito: maldigo a los responsables.
Totalmente de acuerdo
Naruse escribió:¿Y para qué lo quieres? Acabo de poner el Modern Warfare 2 para echar unas partidillas online y por obra y gracia del hack ahora es imposible: ya no se puede jugar... bueno, sólo con tus amigos y si estos deciden no utilizar las trampas que ahora están a disposición de cualquiera.
Gracias a este Epic Fail y a los graciosos que lo han explotado el juego online de la consola se ha terminado. Bueno, y la consola también, de facto... Gracias por nada a los hackers que lo han hecho posible.
Y yo que pensaba que me iba ahorrar del online de pago en esta generación... pero el Live Gold, mal que me pese, va a ser el único recurso. Eso sí, podré utilizar linux en mi PS3... puf, que desastre.
Bueno, era de cajón, ¿no te parece? El resultado práctico, y sería muy inocente pensar que no era previsible, es que el juego online libre (o público) ha muerto en PS3. De hecho, la consola tiene fecha de defunción gracias a esas "herramientas". Sí, señalo como culpables a los hackers; ellos han matado la PS3. Y yo los maldigo por ello.
Sobre el juego online: si en Pc necesitan de supervisión total (punkbuster, etc) porque los usuarios, por sí mismos, son del todo irresponsables, imagina lo que va a suceder en un dispositivo o soporte en el que no existen las herramientas necesarias para dicha supervisión; Ya no. Un desastre total.
Yo no veo nada positivo en todo esto. Es un grave error y será la tumba del sistema. Repito: maldigo a los responsables.
pabloc escribió:jolly roger escribió:Naruse escribió:Yo no veo nada positivo en todo esto. Es un grave error y será la tumba del sistema. Repito: maldigo a los responsables.
Totalmente de acuerdo
Guau que fuerte!!
Menuda mentalidad teneis en los tiempos que corren...
Y que sony nos vendiese su consola con posibilidad de
instalar linux y luego quitase dicha opcion esta correcto??
No apoyo en absoluto las trampas en el online pero me
parece muy negativa vuestra particular forma de
maldecir a la gente que no tienen la culpa de lo que los
demas hagan con sus maquinas.
La culpa de todo esto la tiene solo y unicamente sony
por su torpeza y es deber de ellos el encontrar una solucion para que sus usuarios esten protegidos.
Quizas deberian de actuar como cuando cortaron por
lo sano quitando linux y no gastarse un duro en buscar
otras alternativas.Menudos sinverguenzas y caraduras
son los de sony.
Un saludo.
Africa escribió:Pero si es que tu razonamiento (y el de muchos) no es cierto, por más que intentéis justificaros. Ahora sales con la facilidad de hacerlo. Mira la nds y dime si hay que abrirla.
Y si quieres que miremos dentro de la misma sony, actualmente la ps2 se puede con una memory oficial, tampoco hay que abrirla (y siguen sacando juegos para ella) y la psx se pirateaba con un trozo de celo.
Naruse escribió:Por favor... la realidad del asunto es que dispondremos que una plataforma totalmente manipulable a la que fabricante y, especialmente, desarrolladoras, han puesto la cruz desde ya.
¿Para que quiero una consola "libre" si en un año estará completamente enterrada por parte de la industria? Porque hay que ser inocente y bienpensado para suponer esta violación del sistema en toda regla no va a suponer el punto y final del mismo.
La actuación de los hackers no puede ser calificada de otro modo sino de lamentable. Y no me refiero al posicionamiento moral, sino a las consecuencias puramente prácticas a las que nos enfrentamos en un futuro inmediato: en mi opinión el juego online de PS3 está desde ya finiquitado tal y como lo conocemos; la consola no tiene más futuro que el de los desarrollos que están lo suficientemente avanzados como para abandonarlos ahora y, muy probablemente, este movimiento sea el principio del fin del mundo del videojuego en su forma actual; es decir la existencia de sistemas de juego independiente (consolas) y la distribución física de los mismos.
En mi opinión el futuro que nos espera tras la publicación de los códigos internos de la consola es negrísimo.
Naruse escribió:Mmmhhh... no soy un experto, pero diría que la magnitud del hackeo de la consola de Sony es mucho mayor que el que en su momento sufrieron las otras consolas. Para empezar, no va a hacer falta abrir la consola, siquiera. Cualquier lerdo con un pendrive y conocimientos básicos será capaz de cargar juegos, programas o lo que sea, sin más complicación que la de entrar en esta u otra página por el estilo donde generosos compañeros nos ofrecerán autoinstaladores de CFs.