logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Ktoś da rade to odszyfrować??? W języku C chyba napisane

pinout 25 Sie 2006 18:23 1718 8
REKLAMA
  • #1 2952778
    pinout
    Poziom 16  
    Posty: 243
    Pomógł: 8
    Ocena: 5
    to jest kod programu który wylicza 15-sto cyfrowy kod na podstwie innego 15-sto cyfrowego kodu, i jeśli ktoś by dał rade to przetłumaczyć jak zrobić to samo przy pomocy kartki i długopisu co ten program :)


    Cytat:

    //
    // indear
    //

    #include <stdio.h>
    #include <string.h>

    unsigned char tabla_1[] = { // 17 bytes
    0x00,0x03,0x06,0x01,0x04,0x07,0x02,0x05,0x00,0x03,0x06,0x01,0x04,0x07,0x02,0x05,0x00};

    unsigned char tabla_2[] = { // 136 bytes
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x16,0x73,0x3B,0x1E,0x8E,0x70,0xBD,0x86, \
    0x47,0x7E,0x24,0x56,0xF1,0x77,0x88,0x46,0xB1,0xBA,0xA3,0xB7,0x10,0x0A,0xC5,0x37, \
    0xC9,0x5A,0x28,0xAC,0x64,0xA5,0xEC,0xAB,0xC6,0x67,0x95,0x58,0x0D,0xF8,0x9A,0xF6, \
    0x66,0xDC,0x05,0x3D,0xD3,0x8A,0xC3,0xD8,0x6A,0xE9,0x36,0x49,0x43,0xBF,0xEB,0xD4, \
    0x9B,0x68,0xA0,0x65,0x5D,0x57,0x92,0x1F,0x71,0x5C,0xBB,0x22,0xC1,0xBE,0x7B,0xBC, \
    0x63,0x94,0x5F,0x2A,0x61,0xB8,0x34,0x32,0xFD,0xFB,0x17,0x40,0xE6,0x51,0x1D,0x41, \
    0x8F,0x29,0xDD,0x04,0x80,0xDE,0xE7,0x31,0x7F,0x01,0xA2,0xF7,0x39,0xDA,0x6F,0x23, \
    0xFE,0x3A,0xD0,0x1C,0xD1,0x30,0x3E,0x12,0xCD,0x0F,0xE0,0xA8,0xAF,0x82,0x59,0x2C, \
    0x7D,0xAD,0xB2,0xEF,0xC2,0x87,0xCE,0x75 };

    unsigned char tabla_3[] = { // 256 bytes
    0x01,0x2D,0xE2,0x93,0xBE,0x45,0x15,0xAE,0x78,0x03,0x87,0xA4,0xB8,0x38,0xCF,0x3F, \
    0x08,0x67,0x09,0x94,0xEB,0x26,0xA8,0x6B,0xBD,0x18,0x34,0x1B,0xBB,0xBF,0x72,0xF7, \
    0x40,0x35,0x48,0x9C,0x51,0x2F,0x3B,0x55,0xE3,0xC0,0x9F,0xD8,0xD3,0xF3,0x8D,0xB1, \
    0xFF,0xA7,0x3E,0xDC,0x86,0x77,0xD7,0xA6,0x11,0xFB,0xF4,0xBA,0x92,0x91,0x64,0x83, \
    0xF1,0x33,0xEF,0xDA,0x2C,0xB5,0xB2,0x2B,0x88,0xD1,0x99,0xCB,0x8C,0x84,0x1D,0x14, \
    0x81,0x97,0x71,0xCA,0x5F,0xA3,0x8B,0x57,0x3C,0x82,0xC4,0x52,0x5C,0x1C,0xE8,0xA0, \
    0x04,0xB4,0x85,0x4A,0xF6,0x13,0x54,0xB6,0xDF,0x0C,0x1A,0x8E,0xDE,0xE0,0x39,0xFC, \
    0x20,0x9B,0x24,0x4E,0xA9,0x98,0x9E,0xAB,0xF2,0x60,0xD0,0x6C,0xEA,0xFA,0xC7,0xD9, \
    0x00,0xD4,0x1F,0x6E,0x43,0xBC,0xEC,0x53,0x89,0xFE,0x7A,0x5D,0x49,0xC9,0x32,0xC2, \
    0xF9,0x9A,0xF8,0x6D,0x16,0xDB,0x59,0x96,0x44,0xE9,0xCD,0xE6,0x46,0x42,0x8F,0x0A, \
    0xC1,0xCC,0xB9,0x65,0xB0,0xD2,0xC6,0xAC,0x1E,0x41,0x62,0x29,0x2E,0x0E,0x74,0x50, \
    0x02,0x5A,0xC3,0x25,0x7B,0x8A,0x2A,0x5B,0xF0,0x06,0x0D,0x47,0x6F,0x70,0x9D,0x7E, \
    0x10,0xCE,0x12,0x27,0xD5,0x4C,0x4F,0xD6,0x79,0x30,0x68,0x36,0x75,0x7D,0xE4,0xED, \
    0x80,0x6A,0x90,0x37,0xA2,0x5E,0x76,0xAA,0xC5,0x7F,0x3D,0xAF,0xA5,0xE5,0x19,0x61, \
    0xFD,0x4D,0x7C,0xB7,0x0B,0xEE,0xAD,0x4B,0x22,0xF5,0xE7,0x73,0x23,0x21,0xC8,0x05, \
    0xE1,0x66,0xDD,0xB3,0x58,0x69,0x63,0x56,0x0F,0xA1,0x31,0x95,0x17,0x07,0x3A,0x28 };

    unsigned char tabla_4[] = { // 256 bytes
    0x80,0x00,0xB0,0x09,0x60,0xEF,0xB9,0xFD,0x10,0x12,0x9F,0xE4,0x69,0xBA,0xAD,0xF8, \
    0xC0,0x38,0xC2,0x65,0x4F,0x06,0x94,0xFC,0x19,0xDE,0x6A,0x1B,0x5D,0x4E,0xA8,0x82, \
    0x70,0xED,0xE8,0xEC,0x72,0xB3,0x15,0xC3,0xFF,0xAB,0xB6,0x47,0x44,0x01,0xAC,0x25, \
    0xC9,0xFA,0x8E,0x41,0x1A,0x21,0xCB,0xD3,0x0D,0x6E,0xFE,0x26,0x58,0xDA,0x32,0x0F, \
    0x20,0xA9,0x9D,0x84,0x98,0x05,0x9C,0xBB,0x22,0x8C,0x63,0xE7,0xC5,0xE1,0x73,0xC6, \
    0xAF,0x24,0x5B,0x87,0x66,0x27,0xF7,0x57,0xF4,0x96,0xB1,0xB7,0x5C,0x8B,0xD5,0x54, \
    0x79,0xDF,0xAA,0xF6,0x3E,0xA3,0xF1,0x11,0xCA,0xF5,0xD1,0x17,0x7B,0x93,0x83,0xBC, \
    0xBD,0x52,0x1E,0xEB,0xAE,0xCC,0xD6,0x35,0x08,0xC8,0x8A,0xB4,0xE2,0xCD,0xBF,0xD9, \
    0xD0,0x50,0x59,0x3F,0x4D,0x62,0x34,0x0A,0x48,0x88,0xB5,0x56,0x4C,0x2E,0x6B,0x9E, \
    0xD2,0x3D,0x3C,0x03,0x13,0xFB,0x97,0x51,0x75,0x4A,0x91,0x71,0x23,0xBE,0x76,0x2A, \
    0x5F,0xF9,0xD4,0x55,0x0B,0xDC,0x37,0x31,0x16,0x74,0xD7,0x77,0xA7,0xE6,0x07,0xDB, \
    0xA4,0x2F,0x46,0xF3,0x61,0x45,0x67,0xE3,0x0C,0xA2,0x3B,0x1C,0x85,0x18,0x04,0x1D, \
    0x29,0xA0,0x8F,0xB2,0x5A,0xD8,0xA6,0x7E,0xEE,0x8D,0x53,0x4B,0xA1,0x9A,0xC1,0x0E, \
    0x7A,0x49,0xA5,0x2C,0x81,0xC4,0xC7,0x36,0x2B,0x7F,0x43,0x95,0x33,0xF2,0x6C,0x68, \
    0x6D,0xF0,0x02,0x28,0xCE,0xDD,0x9B,0xEA,0x5E,0x99,0x7C,0x14,0x86,0xCF,0xE5,0x42, \
    0xB8,0x40,0x78,0x2D,0x3A,0xE9,0x64,0x1F,0x92,0x90,0x7D,0x39,0x6F,0xE0,0x89,0x30 };


    unsigned char tabla_asic2[] = {0x4a,0x33,0x78,0x90,0x11,0xaf,0xf2,0x3c};
    unsigned char tabla_asic2a[] = {0x30,0x49,0x02,0xea,0x6b,0xd5,0x88,0x46}; //xor con 0x7A
    unsigned char tabla_asic5[] = {0x54,0xa1,0x3b,0x22,0x9d,0xa8,0x11,0x77};
    unsigned char tabla_asic5a[] = {0xc5,0x30,0xaa,0xb3,0x0c,0x39,0x80,0xe6}; //xor con 0x91
    unsigned char tabla_asic7[] = {0x9c,0xd7,0xe4,0xa9,0xa4,0x36,0x72,0x92};
    unsigned char tabla_asic7a[] = {0xfd,0xb6,0x85,0xc8,0xc5,0x57,0x13,0xf3}; //xor con 0x61

    unsigned char tp1[] = "3F007F206F07FFFF\0";
    unsigned char tp2[] = "3F007F206F3EFFFF\0";
    unsigned char tp3[] = "3F007F206F3FFFFF\0";
    unsigned char tp4[] = "3F007F206F07FFFF\0";
    unsigned char tp5[] = "AAAAAAAAAAAAAAAA\0";
    unsigned char tp6[] = "AAAAAAAAAAAAAAAA\0";
    unsigned char tp7[] = "AAAAAAAAAAAAAAAA\0";

    unsigned char tp_a1[] = "FC00010000000000\0";
    unsigned char tp_a2[] = "0000010000000000\0";
    unsigned char tp_a3[] = "0000010000000000\0";
    unsigned char tp_a4[] = "03FF010000000000\0";
    unsigned char tp_a5[] = "0000020000000000\0";
    unsigned char tp_a6[] = "0000030000000000\0";
    unsigned char tp_a7[] = "0000000000000000\0";

    void obtener_codigo_liberacion(unsigned char codigo_a_sacar, unsigned char asic, unsigned char *IMEI_ASCII,
    unsigned char *network_code_ASCII, unsigned char *box_serial,
    unsigned char *destino_codigo_liberacion);
    void ASCII2HEX (unsigned char *origen, unsigned char *destino, int caracteres);
    void xor_de_8_bytes (unsigned char *cadena1, unsigned char *cadena2, unsigned char *destino);
    unsigned char convertir_byte_a_hex (unsigned char byte);
    void permutacion(unsigned char *cadena1, unsigned char *cadena2);
    unsigned char calculo (unsigned char *cadena1, unsigned char *cadena2);
    unsigned char movimiento_bytes (unsigned char byte1, unsigned char byte2);
    unsigned char movimiento2_bytes (unsigned char byte1, unsigned char byte2);

    void obtener_codigo_liberacion(unsigned char codigo_a_sacar, unsigned char asic, unsigned char *IMEI_ASCII,
    unsigned char *network_code_ASCII, unsigned char *box_serial,
    unsigned char *destino_codigo_liberacion)
    {
    unsigned char network_code[17];
    unsigned char *tabla_asic, *tabla_asic_a;
    unsigned char *tabla_permutacion1, *tabla_permutacion2;
    unsigned char permu1[9], permu2[9], permu3[9], permu4[9], permu5[9], permu6[9];
    unsigned char tabla_permutacion1_HEX[9], tabla_permutacion2_HEX[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, j;

    memset(network_code, 48, sizeof(network_code)); // '0'
    strcpy(network_code, network_code_ASCII);
    network_code[strlen(network_code_ASCII)]='0';

    destino_codigo_liberacion[0]=0;
    if ((codigo_a_sacar<1) & (codigo_a_sacar>8))
    return;

    switch (asic)
    {
    case 2:
    tabla_asic=tabla_asic2;
    tabla_asic_a=tabla_asic2a;
    break;
    case 5:
    tabla_asic=tabla_asic5;
    tabla_asic_a=tabla_asic5a;
    break;
    case 7:
    tabla_asic=tabla_asic7;
    tabla_asic_a=tabla_asic7a;
    break;
    }

    switch (codigo_a_sacar)
    {
    case 1:
    tabla_permutacion1=tp1;
    break;
    case 2:
    tabla_permutacion1=tp2;
    break;
    case 3:
    tabla_permutacion1=tp3;
    break;
    case 4:
    tabla_permutacion1=tp4;
    break;
    case 5:
    tabla_permutacion1=tp5;
    break;
    case 6:
    tabla_permutacion1=tp6;
    break;
    case 7:
    tabla_permutacion1=tp7;
    break;
    }

    switch (codigo_a_sacar)
    {
    case 1:
    tabla_permutacion2=tp_a1;
    break;
    case 2:
    tabla_permutacion2=tp_a2;
    break;
    case 3:
    tabla_permutacion2=tp_a3;
    break;
    case 4:
    tabla_permutacion2=tp_a4;
    break;
    case 5:
    tabla_permutacion2=tp_a5;
    break;
    case 6:
    tabla_permutacion2=tp_a6;
    break;
    case 7:
    tabla_permutacion2=tp_a7;
    break;
    }

    ASCII2HEX(IMEI_ASCII, IMEI_HEX, 14);
    IMEI_HEX[7]=0;
    ASCII2HEX(network_code, network_code_HEX, 16);
    ASCII2HEX(tabla_permutacion1, tabla_permutacion1_HEX, 16);
    ASCII2HEX(tabla_permutacion2, tabla_permutacion2_HEX, 16);
    ASCII2HEX(box_serial, box_serial_HEX, 6);

    tabla_permutacion2_HEX[7]=tabla_permutacion2_HEX[2];
    tabla_permutacion2_HEX[2]=0;

    xor_de_8_bytes (tabla_asic_a, IMEI_HEX, permu1);

    memcpy(permu2, tabla_permutacion1_HEX, 8);

    permutacion(permu1, permu2);

    memcpy(permu3, permu2, 8);

    xor_de_8_bytes(tabla_asic, IMEI_HEX, permu1);

    memcpy(permu2, tabla_permutacion2_HEX, 8);

    permutacion(permu1, permu2);

    memcpy(permu4, permu2, 8);

    xor_de_8_bytes (permu3, permu4, permu5);

    xor_de_8_bytes (tabla_asic, network_code_HEX, permu1);

    memcpy(permu2, permu5, 8);

    permutacion(permu1, permu2);

    memcpy(permu6, permu2, 8);

    codigo_liberacion_HEX[0] = box_serial_HEX[0];

    codigo_liberacion_HEX[1] = box_serial_HEX[1];

    codigo_liberacion_HEX[2] = box_serial_HEX[2];

    codigo_liberacion_HEX[3] = (permu6[5] & 0x77);

    codigo_liberacion_HEX[4] = (permu6[1] & 0x77);

    codigo_liberacion_HEX[5] = (permu6[6] & 0x77);

    codigo_liberacion_HEX[6] = (permu6[3] & 0x77);

    codigo_liberacion_HEX[7] = (permu6[7] & 0x77);

    // --------

    for (i=3; i<8; i++)
    codigo_liberacion_HEX[5+i] = ((codigo_liberacion_HEX[i] & 0xF0) >> 4);

    aux[0] = codigo_liberacion_HEX[0] & 0x0F;
    aux[1] = (codigo_liberacion_HEX[1] & 0xF0) >> 4;
    aux[2] = codigo_liberacion_HEX[1] & 0x0F;
    aux[3] = (codigo_liberacion_HEX[2] & 0xF0) >> 4;
    aux[4] = codigo_liberacion_HEX[2] & 0x0F;

    for (i=0; i<5; i++) {
    if (aux[i] <= codigo_liberacion_HEX[8+i])
    codigo_liberacion_HEX[8+i]=codigo_liberacion_HEX[8+i]-aux[i];
    else
    codigo_liberacion_HEX[8+i]=(10-aux[i])+codigo_liberacion_HEX[8+i];
    }
    codigo_liberacion_HEX[0]=(codigo_liberacion_HEX[0] & 0xF0) | codigo_liberacion_HEX[8];
    codigo_liberacion_HEX[1]=(codigo_liberacion_HEX[9] << 4) | codigo_liberacion_HEX[10];
    codigo_liberacion_HEX[2]=(codigo_liberacion_HEX[11] << 4) | codigo_liberacion_HEX[12];

    destino_codigo_liberacion[0]=(codigo_liberacion_HEX[0] & 0x0F) + 0x30;
    j=1;
    for (i=1; i<=7; i++) {
    destino_codigo_liberacion[j]=(codigo_liberacion_HEX[i] >> 4) + 0x30;
    j++;
    destino_codigo_liberacion[j]=(codigo_liberacion_HEX[i] & 0x0F) + 0x30;
    j++;
    }
    destino_codigo_liberacion[j]=0;
    }

    void ASCII2HEX (unsigned char *origen, unsigned char *destino, int caracteres)
    {
    int i, j;
    unsigned char aux1, aux2;

    j=0;
    for(i=0; i<caracteres; i+=2)
    {
    aux1 = convertir_byte_a_hex(origen[i])<<4;
    if (i+1 < caracteres)
    aux2 = convertir_byte_a_hex(origen[i+1]);
    else
    aux2 = 0;
    destino[j] = aux1 | aux2;
    j++;
    }
    }

    void xor_de_8_bytes (unsigned char *cadena1, unsigned char *cadena2, unsigned char *destino)
    {
    int i;

    for(i=0; i<8; i++)
    destino[i]=cadena1[i] ^ cadena2[i];
    }

    unsigned char convertir_byte_a_hex (unsigned char byte)
    {
    if ((byte > 57) || (byte < 48)) // '0' a '9'
    return (byte-55);
    else
    return (byte-48); // 'A' a 'F' o otro caracter
    }

    void permutacion(unsigned char *cadena1, unsigned char *cadena2)
    {
    unsigned char valor1, valor2, valor3;
    unsigned char aux1;
    int i;

    aux1=0;
    i=0;

    while (i < 8) {
    cadena2[0] = cadena2[0] ^ calculo (&aux1, cadena1); // xor
    cadena2[1] = cadena2[1] + calculo (&aux1, cadena1); // suma
    cadena2[2] = cadena2[2] + calculo (&aux1, cadena1); // suma
    cadena2[3] = cadena2[3] ^ calculo (&aux1, cadena1); // xor
    cadena2[4] = cadena2[4] ^ calculo (&aux1, cadena1); // xor
    cadena2[5] = cadena2[5] + calculo (&aux1, cadena1); // suma
    cadena2[6] = cadena2[6] + calculo (&aux1, cadena1); // suma
    cadena2[7] = cadena2[7] ^ calculo (&aux1, cadena1); // xor

    cadena2[0] = tabla_3[cadena2[0]] + calculo (&aux1, cadena1); // suma
    cadena2[1] = tabla_4[cadena2[1]] ^ calculo (&aux1, cadena1); // xor
    cadena2[2] = tabla_4[cadena2[2]] ^ calculo (&aux1, cadena1); // xor
    cadena2[3] = tabla_3[cadena2[3]] + calculo (&aux1, cadena1); // suma
    cadena2[4] = tabla_3[cadena2[4]] + calculo (&aux1, cadena1); // suma
    cadena2[5] = tabla_4[cadena2[5]] ^ calculo (&aux1, cadena1); // xor
    cadena2[6] = tabla_4[cadena2[6]] ^ calculo (&aux1, cadena1); // xor
    cadena2[7] = tabla_3[cadena2[7]] + calculo (&aux1, cadena1); // suma

    // ******************************************************** //

    cadena2[1]=cadena2[0]+cadena2[1];
    cadena2[0]=cadena2[1]+cadena2[0];

    cadena2[3]=cadena2[2]+cadena2[3];
    cadena2[2]=cadena2[3]+cadena2[2];

    cadena2[5]=cadena2[4]+cadena2[5];
    cadena2[4]=cadena2[5]+cadena2[4];

    cadena2[7]=cadena2[6]+cadena2[7];
    cadena2[6]=cadena2[7]+cadena2[6];

    // ******************************************************** //

    cadena2[2]=cadena2[0]+cadena2[2];
    cadena2[0]=cadena2[2]+cadena2[0];

    cadena2[6]=cadena2[4]+cadena2[6];
    cadena2[4]=cadena2[6]+cadena2[4];

    cadena2[3]=cadena2[1]+cadena2[3];
    cadena2[1]=cadena2[3]+cadena2[1];

    cadena2[7]=cadena2[5]+cadena2[7];
    cadena2[5]=cadena2[7]+cadena2[5];

    // ******************************************************** //

    cadena2[4]=cadena2[0]+cadena2[4];
    cadena2[0]=cadena2[4]+cadena2[0];

    cadena2[5]=cadena2[1]+cadena2[5];
    cadena2[1]=cadena2[5]+cadena2[1];

    cadena2[6]=cadena2[2]+cadena2[6];
    cadena2[2]=cadena2[6]+cadena2[2];

    cadena2[7]=cadena2[3]+cadena2[7];
    cadena2[3]=cadena2[7]+cadena2[3];

    // ******************************************************** //

    valor1=cadena2[1];
    valor2=cadena2[2];
    valor3=cadena2[4];
    cadena2[1]=valor3;
    cadena2[2]=valor1;
    cadena2[4]=valor2;

    valor1=cadena2[3];
    valor2=cadena2[5];
    valor3=cadena2[6];
    cadena2[3]=valor2;
    cadena2[5]=valor3;
    cadena2[6]=valor1;

    i++;
    }

    valor1=calculo (&aux1, cadena1);
    cadena2[0]=cadena2[0] ^ valor1;

    valor1=calculo (&aux1, cadena1);
    cadena2[1]=cadena2[1] + valor1;

    valor1=calculo (&aux1, cadena1);
    cadena2[2]=cadena2[2] + valor1;

    valor1=calculo (&aux1, cadena1);
    cadena2[3]=cadena2[3] ^ valor1;

    valor1=calculo (&aux1, cadena1);
    cadena2[4]=cadena2[4] ^ valor1;

    valor1=calculo (&aux1, cadena1);
    cadena2[5]=cadena2[5] + valor1;

    valor1=calculo (&aux1, cadena1);
    cadena2[6]=cadena2[6] + valor1;

    valor1=calculo (&aux1, cadena1);
    cadena2[7]=cadena2[7] ^ valor1;

    }

    unsigned char calculo (unsigned char *cadena1, unsigned char *cadena2)
    {
    unsigned char temp1, temp2, temp3;
    unsigned char valor1, valor2;
    int i;

    if (cadena1[0] < 0x88) {
    temp2=cadena1[0];
    (*cadena1)++;
    temp3=cadena2[temp2&0x07];
    valor1=movimiento_bytes(temp2, 3);
    temp1=tabla_1[valor1&0x1F];
    valor2=temp3;

    for (i=0; i<temp1; i++)
    valor2 = movimiento2_bytes (valor2, 1);
    temp3=valor2;
    temp3=temp3+tabla_2[temp2];

    return temp3;
    }
    else {
    return 0;
    }
    }

    unsigned char movimiento_bytes (unsigned char byte1, unsigned char byte2)
    {
    unsigned char temp1, temp2;

    temp1 = (byte1 << (8-byte2));
    temp2 = (byte1 >> byte2);
    return (temp1 | temp2);
    }

    unsigned char movimiento2_bytes (unsigned char byte1, unsigned char byte2)
    {
    unsigned char temp1, temp2;

    temp1 = (byte1 >> (8-byte2));
    temp2 = (byte1 << byte2);
    return (temp1 | temp2);
    }

    void main()
    {
    // examples - ejemplos

    char destino[20];
    int i;

    for (i=1; i<8; i++)
    {
    obtener_codigo_liberacion (i, 2, "111111111111119", "22222", "034144", destino);
    printf("#pw+%s+%u#\n", destino, i);
    }

    printf("\n\n");

    for (i=1; i<8; i++)
    {
    obtener_codigo_liberacion (i, 7, "111111111111119", "22222", "034144", destino);
    printf("#pw+%s+%u#\n", destino, i);
    }
    }



    pozdrawiam
  • REKLAMA
  • #2 2952829
    ed-ek
    Poziom 34  
    Posty: 1814
    Pomógł: 275
    Ocena: 42
    Po pierwsze nie ma instrukcji main,czyli głównego ciała programu,
    po drugie jeżeli chciałbyś to rozwiązać na kartce,to życia by ci nie starczyło. Komp też pewnie miałby co liczyć.
  • REKLAMA
  • #3 2952841
    krzychoocpp
    VIP Zasłużony dla elektroda
    Posty: 1866
    Pomógł: 387
    Ocena: 58
    Witam, jest funkcja main, niech się kolega dokładnie przyjrzy. A co do problemu, radziłbym prześledzić program debuggerem lub przepuścić kod przez program tworzący schematy blokowe (choć taki schemat też będzie pewnie zamotany)

    Pozdrawiam, Krzysztof.
  • REKLAMA
  • #4 2952957
    pinout
    Poziom 16  
    Posty: 243
    Pomógł: 8
    Ocena: 5
    to sie da na 100% obliczyć na papierze i wcale to nie jest takie podobno trudne, widziałem gościa który to obliczał ale nie chciał zdradzić szczególów
    (kilka minut, naprawde)
    :wink:
  • REKLAMA
  • #5 2953364
    sheeeep
    Poziom 25  
    Posty: 944
    Pomógł: 46
    Ocena: 19
    krzychoocpp napisał:
    ...program tworzący schematy blokowe (choć taki schemat też będzie pewnie zamotany)


    Możesz dać przykład takiego programu, bo żadnego nie znam.
    A czy ten ktoś miał dostęp do tych tablic na początku programu?
    Pozdrawiam
  • #6 2953396
    krzychoocpp
    VIP Zasłużony dla elektroda
    Posty: 1866
    Pomógł: 387
    Ocena: 58
    sheeeep napisał:
    Możesz dać przykład takiego programu, bo żadnego nie znam


    Witam, wystarczy wpisać w google "source flowchart", jeden z pierwszych wyników: http://www.fatesoft.com/s2f/

    A ten algorytm służy do generowania kodów odblokowujących nokii DCT4 i raczej mało prawdopodobne żeby ktoś to liczył w pamięci / na kartce.

    Pozdrawiam, Krzysztof.
  • #7 2953612
    pinout
    Poziom 16  
    Posty: 243
    Pomógł: 8
    Ocena: 5
    tak, dokładnie do DCT4 ale mam też do DTC3,
    naprawde gościu liczył kody na kartce i ściagał tak smoki a widziałem to na giełdzie nie chciał powiedzieć jak sie liczy - sam w to nie wierzyłem ale to prawda
  • #8 2959781
    Grzesiek1711
    Poziom 16  
    Posty: 169
    Pomógł: 10
    Ocena: 7
    bzdura...bo żeby to policzyć musisz wykonać setki obliczeń...aha i znać wszystkie te
    x11,0xFB,0xF4,0xBA,0x92,0x91,0x64,0x83, \
    0xF1,0x33,0xEF,0xDA,0x2C,0xB5,0xB2,0x2B,0x88,0xD1,0x99,0xCB,0x8C,0x84,0x1D,0x14, \
    0x81,0x97,0x71,0xCA,0x5F,0xA3,0x8B,0x57,0x3C,0x82,0xC4,0x52,0x5C,0x1C,0xE8,0xA0, \
    0x04,0xB4,0x85,0x4A,0xF6,0x13,0x54,0xB6,0xDF,0x0C,0x1A,0x8E,0xDE,0xE0,0x39,0xFC, \
    0x20,0x9B,0x24,0x4E,0xA9,0x98,0x9E,0xAB,0xF2,0x60,0xD0,0x6C,0xEA,0xFA,0xC7,0xD9, \
    0x00,0xD4,0x1F,0x6E,0x43,0xBC,0xEC,0x53,0x89,0xFE,0x7A,0x5D,0x49,0xC9,0....

    nie ma szans...tzn są...jeśli jesteś geniuszem, ale gdybyś nim był to nauczyłbyś sie C w kilkanaście minut i później tego algo w godzine...
  • #9 2980064
    pinout
    Poziom 16  
    Posty: 243
    Pomógł: 8
    Ocena: 5
    jak można mieć takie podejście do sprawy, heh.... wszystko sie da zrobić tylko że trzeba chcieć.....
    Temat zamykam na kłódke i obkręcam łańcuchem 40 razy

Podsumowanie tematu

✨ Dyskusja dotyczy analizy programu w języku C, który generuje 15-cyfrowy kod na podstawie innego 15-cyfrowego kodu, prawdopodobnie służącego do odblokowywania telefonów Nokia. Program wykorzystuje dwie tablice bajtów (tabla_1 i tabla_2) oraz skomplikowane obliczenia, co powoduje, że ręczne przeliczenie kodu na kartce jest bardzo trudne i czasochłonne. Jeden z uczestników twierdzi, że zna osobę potrafiącą obliczyć taki kod ręcznie w kilka minut, jednak szczegóły metody nie zostały ujawnione. Inni podkreślają, że algorytm wymaga setek operacji i znajomości wszystkich danych tablic, co czyni ręczne obliczenia praktycznie niemożliwymi bez pomocy komputera. Wskazano również, że program służy do generowania kodów odblokowujących modele Nokia DCT3 i DCT4. Zalecane jest użycie debuggera lub narzędzi do tworzenia schematów blokowych w celu lepszego zrozumienia algorytmu.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA