cytat z pewnego forum odnosnie algorytmu generowania kodow w DCT4:
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
Code:
unsigned char tabla_1[] = { 0x00,0x03,0x06,0x01,0x04,0x07,0x02,0x05,0x00,0x03,0x06,0x01,0x04,0x07,0x02,0x05,0x00};
PHP
Code:
$tabla_1 = array(0x00,0x03,0x06,0x01,0x04,0x07,0x02,0x05,0x00,0x03,0x06,0x01,0x04,0x07,0x02,0x05,0x00);
function permutacion:
C
Code:
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 <

{
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
Code:
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 <

{
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
Code:
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
Code:
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
Code:
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
Code:
$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
Code:
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));
}
teraz juz jasniej??
