adrianpopa
28-05-2004, 04:29 PM
HI ! Can anybody explain how the DCT3/4 unlock code generator works? I found some C source code but i'm not a C programmer. I want to make a PHP script for online unlock codes .
Thanks!
GsmCyber
28-05-2004, 06:46 PM
http://nokiafree.org/forums/showthread.php?p=309162#post309162 :sad:
indear
28-05-2004, 08:51 PM
The code is only operations logics and permutations nothing else.
you need know C and PHP for make a script, the rest is easy
example using dct4_new.c
create arrays:
C
unsigned char tabla_1[] = { 0x00,0x03,0x06,0x01,0x04,0x07,0x02,0x05,0x00,0x03,0x06,0x01,0x04,0x07,0x02,0x05,0x00};
PHP
$tabla_1 = array(0x00,0x03,0x06,0x01,0x04,0x07,0x02,0x05,0x00,0x03,0x06,0x01,0x04,0x07,0x02,0x05,0x00);
function permutacion:
C
void permutacion(unsigned char *cadena1, unsigned char *cadena2)
{
unsigned char valor1, valor2, valor3;
unsigned char aux1;
int i, j;
aux1=0;
i=0;
while (i < 8) {
for (j = 0; j < 8; j++) {
if (tabla_operaciones[j] == 1)
cadena2[j] = cadena2[j] ^ calculo (&aux1, cadena1); // xor
else
cadena2[j] = cadena2[j] + calculo (&aux1, cadena1); // suma
}
PHP
function permutacion($cadena1, $cadena2)
{
global $tabla_1;
global $tabla_2;
global $tabla_3;
global $tabla_4;
global $tabla_op;
global $tabla_cambio;
global $tabla_cambio2;
$aux1=0;
$i=0;
while ($i < 8) {
for ($j = 0; $j < 8; $j++) {
if ($tabla_op[$j] == 1)
$cadena2[$j] = $cadena2[$j] ^ calculo ($aux1, $cadena1); // xor
else
$cadena2[$j] = ($cadena2[$j] + calculo ($aux1, $cadena1)) & 0xFF; // suma
$aux1++;
}
function obtener_codigo_liberacion:
C
void obtener_codigo_liberacion(unsigned char codigo_a_sacar, unsigned char asic, char *IMEI_ASCII,
char *network_code_ASCII, char *box_serial,
char *destino_codigo_liberacion)
{
unsigned char network_code[17];
char *tabla_asic, *tabla_asic_a;
char *tabla_permutacion1_HEX, *tabla_permutacion2_HEX;
unsigned char permu1[9], permu2[9], permu3[9], permu4[9], permu5[9], permu6[9];
unsigned char network_code_HEX[17];
unsigned char codigo_liberacion_HEX[27];
unsigned char IMEI_HEX[17];
unsigned char box_serial_HEX[4];
unsigned char aux[6];
int i;
memset(network_code, 48, sizeof(network_code));
strcpy(network_code, network_code_ASCII);
network_code[strlen(network_code_ASCII)]='0';
destino_codigo_liberacion[0]=0;
PHP
function obtener_codigo($codigo_a_sacar, $asic, $IMEI_ASCII, $network_code_ASCII, $box_serial)
{
global $tabla_asic2;
global $tabla_asic2a;
global $tabla_asic5;
global $tabla_asic5a;
global $tabla_asic7;
global $tabla_asic7a;
global $tabla_1;
global $tabla_2;
global $tabla_3;
global $tabla_4;
global $tp1;
global $tp2;
global $tp3;
global $tp4;
global $tp5;
global $tp6;
global $tp7;
global $tp_a1;
global $tp_a2;
global $tp_a3;
global $tp_a4;
global $tp_a5;
global $tp_a6;
global $tp_a7;
for ($i = 0; $i < strlen($network_code_ASCII); $i++) {
$network_code[$i] = char_of($network_code_ASCII, $i);
}
using ASCII2HEX:
C
ASCII2HEX(IMEI_ASCII, IMEI_HEX, 14);
IMEI_HEX[7]=0;
ASCII2HEX(network_code, network_code_HEX, 16);
ASCII2HEX(box_serial, box_serial_HEX, 6);
PHP
$IMEI_HEX = ASCII2HEX(string_to_array($IMEI_ASCII), 14);
$IMEI_HEX[7]=0;
$network_code_HEX = ASCII2HEX($network_code, 16);
$box_serial_HEX = ASCII2HEX(string_to_array($box_serial), 6);
a little help for PHP
function string_to_array($cadena)
{
for ($i = 0; $i < strlen($cadena); $i++)
$nueva[$i] = ord(substr($cadena, $i, 1));
return $nueva;
}
function char_of($cadena, $pos)
{
return ord(substr($cadena, $pos, 1));
}
and fix the size of vars.. if original var is a unsigned char use:
$var & 0xFF;
for limit from 0 to 255 (size of unsigned char), use in + and << operations ;)
CaShY
20-06-2004, 01:51 PM
very nice now u jus gotta be arsed to convert the other ones
Powered by vBulletin® Version 4.2.0 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.