Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Katılım
3 Aralık 2023
Mesajlar
15.077
Makaleler
104
Çözümler
1.590
Beğeniler
45.768
Yer
İstanbul
Şu anda şifreleme anahtarını bulma aşamasına geldim.

C:
undefined4
rsl_sys_decryptCfg(void *param_1,int param_2,int param_3,undefined4 *param_4,int *param_5)

{
  bool bVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  undefined1 *puVar5;
  char *pcVar6;
  uint uVar7;
  size_t __n;
  uint uVar8;
  void *pvVar9;
  undefined4 local_30;
  undefined4 local_2c;
 
  pvVar9 = (void *)((int)param_1 + param_2);
  local_30 = 0;
  local_2c = 0;
  memset(pvVar9,0,param_3 - param_2);
  FUN_0042ae84(&local_30);
  iVar2 = cen_desMinDo(param_1,param_2,pvVar9,param_3 - param_2,&local_30,0);
  if (iVar2 == 0) {
    cdbg_printf(8,"rsl_sys_decryptCfg",0x78f,"DES decrypt error\n");
    uVar3 = 1;
  }
  else {
    iVar4 = (int)pvVar9 + iVar2;
    for (uVar8 = 0;
        ((pcVar6 = (char *)(iVar4 + -1), iVar4 = iVar4 + -1, *pcVar6 == '\0' && (iVar2 != 0)) &&
        (uVar8 != 8)); uVar8 = uVar8 + 1) {
      iVar2 = iVar2 + -1;
    }
    puVar5 = (undefined1 *)((int)pvVar9 + iVar2);
    *puVar5 = 0;
    if (iVar2 + 1U < 0x11) {
      cdbg_printf(8,"rsl_sys_decryptCfg",0x7a9,"File size %d is too small\n",iVar2 + 1U);
    }
    else {
      __n = iVar2 - 0xf;
      if (param_3 - 0x41830U < __n) {
        cdbg_printf(8,"rsl_sys_decryptCfg",0x7b3,
                    "Compress data is too long, available size is %d bytes, now is %d bytes",
                    param_3 - 0x41830U,__n);
        return 0x1194;
      }
      uVar7 = 0;
      while (bVar1 = uVar7 < uVar8, uVar7 = uVar7 + 1, bVar1) {
        puVar5 = puVar5 + 1;
        iVar2 = cen_md5VerifyDigest(pvVar9,(void *)((int)pvVar9 + 0x10),__n);
        if (iVar2 != 0) {
          memcpy(param_1,(void *)((int)pvVar9 + 0x10),__n);
          pvVar9 = (void *)((int)param_1 + __n);
          memset(pvVar9,0,param_3 - __n);
          iVar2 = cen_uncompressBuff(param_1,pvVar9,param_3 - __n);
          if (iVar2 != 0) {
            *param_4 = pvVar9;
            *param_5 = iVar2;
            return 0;
          }
          pcVar6 = "uncompress data error!\n";
          uVar3 = 0x7e8;
          goto LAB_0042b1c4;
        }
        *puVar5 = 0;
        __n = __n + 1;
      }
      pcVar6 = "Config file MD5 check fail\n";
      uVar3 = 0x7c9;
LAB_0042b1c4:
      cdbg_printf(8,"rsl_sys_decryptCfg",uVar3,pcVar6);
    }
    uVar3 = 0x1195;
  }
  return uVar3;
}

C:
void FUN_0042ae84(byte *param_1)

{
  byte bVar1;
  int iVar2;
  byte *__s;
  undefined4 local_9c0;
  undefined4 local_9bc;
  undefined1 auStack_9b8 [16];
  byte local_9a8 [2184];
  undefined4 local_120;
 
  local_9bc = 0xf93e2dcf;
  local_9c0 = 0x748da50b;
  local_9a8[0] = 0;
  local_9a8[1] = 0;
  local_9a8[2] = 0;
  local_9a8[3] = 0;
  local_9a8[4] = 0;
  local_9a8[5] = 0;
  local_9a8[6] = 0;
  local_9a8[7] = 0;
  local_9a8[8] = 0;
  local_9a8[9] = 0;
  local_9a8[10] = 0;
  local_9a8[0xb] = 0;
  local_9a8[0xc] = 0;
  local_9a8[0xd] = 0;
  local_9a8[0xe] = 0;
  local_9a8[0xf] = 0;
  memcpy(auStack_9b8,&DAT_0053498c,0xe);
  iVar2 = dm_getObj(2,auStack_9b8,0x988,local_9a8 + 0x10);
  if (iVar2 == 0) {
    memcpy(param_1,&local_9c0,8);
    __s = local_9a8;
    snprintf((char *)__s,0x10,"%08x",local_120);
    do {
      bVar1 = *__s;
      __s = __s + 1;
      *param_1 = bVar1 ^ *param_1;
      param_1 = param_1 + 1;
    } while (__s != local_9a8 + 8);
  }
  else {
    cdbg_printf(8,"getBackNRestoreK",0x136,"Get dev info for BNR key failed");
  }
  return;
}

C:
undefined4 dm_getObj(undefined2 param_1,ushort *param_2,uint param_3,void *param_4)

{
  undefined2 *puVar1;
  int iVar2;
  undefined4 uVar3;
  void *__src;
  uint __n;
 
  puVar1 = (undefined2 *)dm_getObjNode(param_1);
  if (puVar1 == (undefined2 *)0x0) {
    cdbg_printf(8,"dm_getObj",0x294,"Get object information failed. object oid = %d",param_1);
    uVar3 = 0x264c;
  }
  else {
    __n = (uint)(ushort)puVar1[3];
    if (param_3 < __n) {
      cdbg_printf(8,"dm_getObj",0x29d,
                  "Object buffer may exceed, object(%s) size is %u, object buf size is %u",
                  *(undefined4 *)(puVar1 + 4),__n,param_3);
      uVar3 = 0x2650;
    }
    else {
      uVar3 = 0x2653;
      if ((*(byte *)(puVar1 + 1) & 0x10) == 0) {
        if (*param_2 == (ushort)*(byte *)((int)puVar1 + 3)) {
          memset(param_4,0,__n);
          if (*(byte *)((int)puVar1 + 3) == 0) {
            __src = *(void **)(puVar1 + 0x10);
            if (__src == (void *)0x0) {
              cdbg_printf(8,"dm_getObj",0x2b3,"error!, object(%s oid = %d) data is NULL!",
                          *(undefined4 *)(puVar1 + 4),*puVar1);
              return 0x232a;
            }
          }
          else {
            if (((*(byte *)(puVar1 + 1) & 1) != 0) &&
               (*param_2 != (ushort)*(byte *)((int)puVar1 + 3))) {
              cdbg_printf(8,"dm_getObj",0x2cb,
                          "Error object infomation or error numStack information. object name = %s",
                          *(undefined4 *)(puVar1 + 4));
              return 1;
            }
            iVar2 = dm_getInstDesc(puVar1,param_2,0);
            if (iVar2 == 0) {
              cdbg_printf(8,"dm_getObj",0x2bd,"Get instance description failed. object name = %s",
                          *(undefined4 *)(puVar1 + 4));
              return 0x264d;
            }
            __src = *(void **)(iVar2 + 0x18);
            if (__src == (void *)0x0) {
              return 0x264d;
            }
          }
          memcpy(param_4,__src,(uint)(ushort)puVar1[3]);
          uVar3 = 0;
        }
        else {
          cdbg_printf(8,"dm_getObj",0x2aa,
                      "numStack.currDepth(%u) != object\'s instance depth(%u). object name = %s, oid  = %u"
                      ,*param_2,(ushort)*(byte *)((int)puVar1 + 3),*(undefined4 *)(puVar1 + 4),
                      param_1);
          uVar3 = 0x232b;
        }
      }
    }
  }
  return uVar3;
}
 
Son düzenleme:
Çözüm
Bana arayüzden alınmış bir config dosyasını ÖM'den gönderebilir misiniz?
Şifreli mi?

Güncelleme: Şifre kırıldı.​


Şifre, Kanadalı Foulab tarafından kırıldı. Kendilerine 100$ CAD bağış yaptık Techolay olarak.


Anahtar (Bytes)Hex DeğeriDES Anahtar UzunluğuCihaz Modeli
b'\x40\xec\xc4\x3a\xca\x0a\x1d\xfe'40ECC43ACA0A1DFE8 Bayt (64 bit)vc220-g3u
Bana arayüzden alınmış bir config dosyasını ÖM'den gönderebilir misiniz?
Şifreli mi?

Güncelleme: Şifre kırıldı.​


Şifre, Kanadalı Foulab tarafından kırıldı. Kendilerine 100$ CAD bağış yaptık Techolay olarak.


Anahtar (Bytes)Hex DeğeriDES Anahtar UzunluğuCihaz Modeli
b'\x40\xec\xc4\x3a\xca\x0a\x1d\xfe'40ECC43ACA0A1DFE8 Bayt (64 bit)vc220-g3u
 
Son düzenleyen: Moderatör:
Çözüm