Помогите расшифровать поля БД (mdb)

Тема в разделе "Поиск и эксплуатация уязвимостей", создана пользователем evggrig, 13 мар 2012.

  1. evggrig
    evggrig Новичок
    Симпатии:
    0
    Есть база, есть клиентская часть. В базе ключевые поля пошифрованы и выглядят отак.
    [​IMG]
    Естественно в клиентской части они вполне читабельны. При произвольной замене символов в этих полях клиент выдает ошибку.
    Можно ли как-то выяснить каким образом шифруются эти строки, расшифровать их, заменить на нужные мне значения и зашифровать обратно, чтобы програма их приняла?

    Вот как выдал процедуру дешифровки VB Decompiler
    Код:
    Public Sub Proc_105_0_559AE0
      loc_00559B09: var_14 = &H405B08
      loc_00559B10: var_10 = 0
      loc_00559B17: var_C = 0
      loc_00559B1E: var_4 = 1
      loc_00559B25: var_4 = 2
      loc_00559B2E: On Error Resume Next
      loc_00559B34: var_4 = 3
      loc_00559B55: var_74 = 0042BB14h
      loc_00559B98: Proc_00479FF0("t8", var_84, "f6")
      loc_00559BD7: var_54 = StrConv(var_84, 128, 0)
      loc_00559C0D: var_4 = 4
      loc_00559C2E: var_74 = 0042BB14h
      loc_00559C71: Proc_00479FF0(00447050h, "t2", var_84)
      loc_00559C95: var_58 = var_84
      loc_00559CBE: var_4 = 5
      loc_00559CDF: var_74 = 0042BB14h
      loc_00559CFB: var_6C = 00447064h
      loc_00559D22: Proc_00479FF0("t2", var_84, var_6C)
      loc_00559D46: var_28 = var_84
      loc_00559D6F: var_4 = 6
      loc_00559D89: ReDim var_50(0 To 31)
      loc_00559D92: var_4 = 7
      loc_00559D99: var_B4 = 15
      loc_00559DA3: var_B0 = 1
      loc_00559DAD: var_24 = 0
      loc_00559DB4: GoTo loc_00559DC8
      loc_00559DB6: 
      loc_00559DB9: 0 = 0 + 1
      loc_00559DC8: 
                    If 0 > 0 Then GoTo loc_00559EC4
      loc_00559DD7: var_4 = 8
      loc_00559DF3: 0 = 0 - edx+14h
                    If  Then GoTo loc_00559E16
      loc_00559E0A: var_D8 = 0
      loc_00559E14: GoTo loc_00559E22
      loc_00559E16: Err.Raise
      loc_00559E22: 
      loc_00559E28: var_DC = var_AC
      loc_00559E2E: GoTo loc_00559E3C
      loc_00559E30: Err.Raise
      loc_00559E51: 0 = 0 - edx+14h
                    If  Then GoTo loc_00559E74
      loc_00559E68: var_E0 = 0
      loc_00559E72: GoTo loc_00559E80
      loc_00559E74: Err.Raise
      loc_00559E80: 
      loc_00559E86: var_E4 = var_A8
      loc_00559E8C: GoTo loc_00559E9A
      loc_00559E8E: Err.Raise
      loc_00559E9A: 
      loc_00559EB8: var_4 = 9
      loc_00559EBF: GoTo loc_00559DB6
      loc_00559EC4: var_4 = 10
      loc_00559ED7: Proc_0050B2B0(var_28, var_50, var_58)
      loc_00559EDC: var_A4 = Proc_0050B2B0(var_28, var_50, var_58)
      loc_00559EED: var_2C = Proc_0050B2B0(var_28, var_50, var_58)
      loc_00559EF3: var_4 = 11
      loc_00559EFA: var_BC = 13
      loc_00559F04: var_B8 = 1
      loc_00559F0E: var_24 = 0
      loc_00559F15: GoTo loc_00559F29
      loc_00559F17: 
      loc_00559F1A: 0 = 0 + 1
      loc_00559F29: 
                    If 0 > 0 Then GoTo loc_00559FEC
      loc_00559F38: var_4 = 12
      loc_00559F54: 0 = 0 - edx+14h
                    If  Then GoTo loc_00559F77
      loc_00559F6B: var_E8 = 0
      loc_00559F75: GoTo loc_00559F83
      loc_00559F77: Err.Raise
      loc_00559F83: 
      loc_00559F89: var_EC = var_AC
      loc_00559F8F: GoTo loc_00559F9D
      loc_00559F91: Err.Raise
      loc_00559F9D: 
                    If var_A8 >= 0 Then GoTo loc_00559FBB
      loc_00559FAF: var_F0 = 0
      loc_00559FB9: GoTo loc_00559FC7
      loc_00559FBB: Err.Raise
      loc_00559FC7: 
      loc_00559FE0: var_4 = 13
      loc_00559FE7: GoTo loc_00559F17
      loc_00559FFD: call __vbaCopyBytes(0000000Eh, var_3C, var_4C, var_6C)
      loc_0055A00E: Proc_005097B0(__vbaCopyBytes(0000000Eh, var_3C, var_4C, var_6C), var_3C, var_4C)
                    If word ptr var_3C <> 0 Then GoTo loc_0055A06A
      loc_0055A017: var_4 = 16
      loc_0055A021: var_39 = var_39 + var_36
                    If Not Asm.b_flag Then GoTo loc_0055A12F
      loc_0055A02A: var_39 = var_39 + var_35
                    If Not Asm.b_flag Then GoTo loc_0055A12F
      loc_0055A033: var_39 = var_39 + var_3A
                    If Not Asm.b_flag Then GoTo loc_0055A12F
      loc_0055A03C: var_39 = var_39 + var_38
                    If Not Asm.b_flag Then GoTo loc_0055A12F
      loc_0055A045: var_39 = var_39 + var_37
                    If Not Asm.b_flag Then GoTo loc_0055A12F
                    If var_34 <> 0 Then GoTo loc_0055A06A
      loc_0055A053: var_4 = &H11
      loc_0055A064: call __vbaCopyBytes(0000000Eh, var_68, var_3C)
      loc_0055A06A: 
      loc_0055A06F: GoTo loc_0055A0B1
      loc_0055A0B0: Exit Sub
      loc_0055A0B1: 
      loc_0055A0FC: Exit Sub
    End Sub 
     
    13 мар 2012
  2. evggrig
    evggrig Новичок
    Симпатии:
    0
    Это настолько нереально или просто массовый лень?
     
    21 мар 2012
  3. chimatii
    chimatii Глобальный модератор
    Симпатии:
    73
    evggrig, скорее второе) было бы интересно увидеть саму программу (можно в личку)
    если это нереально, то коды процедур:

    Код:
    Proc_00479FF0
    Proc_0050B2B0
    Proc_005097B0
     
    21 мар 2012
  4. evggrig
    evggrig Новичок
    Симпатии:
    0
    chimatii,
    Proc_00479FF0
    Код:
    Public Sub Proc_5_6_479FF0
      Dim var_30 As Me
      Dim var_48 As Me
      Dim var_4C As Me
      loc_0047A015: var_10 = &H401548
      loc_0047A04D: On Error Resume Next
                    If arg_1C = 0 Then GoTo loc_0047A0C2
      loc_0047A0A7: var_34 = "SELECT  `" & arg_C & "` FROM `" & arg_10 & 4398268
                    If (arg_14 = 4373268) = 0 Then GoTo loc_0047A151
      loc_0047A146: var_34 = "SELECT" & arg_C & "FROM" & arg_10 & "WHERE" & arg_14
      loc_0047A151: 
      loc_0047A175: var_74 = 3
      loc_0047A178: var_70 = 3
      loc_0047A192: deClub.var_34 = Forms
      loc_0047A1B9: Set var_30 = vbEmpty
      loc_0047A1C9: Me.Caption = var_48
      loc_0047A1F3: var_6C = 2
      loc_0047A213: Me.var_4C = Forms
                    If var_48 >= 0 Then GoTo loc_0047A22F
      loc_0047A241: call Me.SaveProp(var_5C, var_48, 00431D60h, 00000028h, var_30, var_30, 00431BCCh, 00000054h)
      loc_0047A25B: var_2C = var_5C
      loc_0047A27A: Me.SaveProp(var_5C, var_48, 00431D60h, 00000028h, var_30, var_30, 00431BCCh, 00000054h) = Me.Width
                    If var_30 >= 0 Then GoTo loc_0047A2B7
      loc_0047A297: call Exit Sub(var_30, var_30, 00431BCCh, 00000080h, var_4C, 00431D70h, 00000034h)
      loc_0047A2A2: GoTo loc_0047A304
      loc_0047A2A4: var_6C = 1
      loc_0047A2B1: var_2C = vbNull
      loc_0047A2B7: call Exit Sub(0047A31Eh)
      loc_0047A2C2: GoTo loc_0047A304
      loc_0047A303: Exit Sub
      loc_0047A304: 
    End Sub
    Proc_0050B2B0
    Код:
    Public Sub Proc_77_7_50B2B0
      loc_0050B2D5: var_8 = &H404730
      loc_0050B31B: Proc_0050B0E0(arg_C, edx, ecx)
      loc_0050B333: ReDim var_24(ebx To Proc_0050B0E0(arg_C, edx, ecx))
      loc_0050B344: Proc_0050AD50(Me, arg_10, var_24)
      loc_0050B357: var_44 = Proc_0050AD50(Me, arg_10, var_24)
      loc_0050B35A: var_28 = vbEmpty
      loc_0050B364: var_38 = var_28
      loc_0050B367: var_40 = &H2011
                    If eax < 0 Then GoTo loc_0050B391
      loc_0050B385: Err.Raise
      loc_0050B391: shl eax, 04h
      loc_0050B394: GoTo loc_0050B39F
      loc_0050B396: Err.Raise
      loc_0050B39F: 
      loc_0050B3A5: Me.GetTypeInfoCount = Me.GetTypeInfoCount + Err.Raise
      loc_0050B3A7: ecx = var_28
      loc_0050B3AF: var_18 = 1
      loc_0050B3B6: Proc_0050B0E0(arg_C, edx, ecx) = Proc_0050B0E0(arg_C, edx, ecx) - 00000001h
      loc_0050B3BF: var_58 = Proc_0050B0E0(arg_C, edx, ecx)
                    If 1 > 0 Then GoTo loc_0050B495
      loc_0050B3D3: Proc_0050A720(Proc_0050B0E0(arg_C, edx, ecx), var_28, var_28)
      loc_0050B3D8: var_4C = Proc_0050A720(Proc_0050B0E0(arg_C, edx, ecx), var_28, var_28)
      loc_0050B3E3: var_74 = vbEmpty
      loc_0050B3EB: var_44 = var_74
      loc_0050B3F6: var_6C = vbEmpty
      loc_0050B400: Proc_0050AD50(var_6C, var_6C, arg_10)
      loc_0050B405: var_48 = Proc_0050AD50(var_6C, var_6C, arg_10)
      loc_0050B410: var_28 = vbEmpty
      loc_0050B417: call Erase(ebx, var_6C, var_6C, arg_10, var_28, var_28, Proc_0050B0E0(arg_C, edx, ecx), Proc_0050B0E0(arg_C, edx, ecx), Proc_0050B0E0(arg_C, edx, ecx))
      loc_0050B422: call Erase(ebx, var_74)
      loc_0050B42B: var_40 = &H2011
      loc_0050B432: var_38 = var_28
      loc_0050B44B: 1 = 1 - Me.%x1 = GetIDsOfNames(%x2) 'Ignore this
                    If 1 < 0 Then GoTo loc_0050B45A
      loc_0050B451: Err.Raise
      loc_0050B45A: shl ebx, 04h
      loc_0050B461: GoTo loc_0050B46C
      loc_0050B463: Err.Raise
      loc_0050B46C: 
      loc_0050B472: Me.GetTypeInfoCount = Me.GetTypeInfoCount + Err.Raise
      loc_0050B474: ecx = var_28
      loc_0050B482: 00000001h = 00000001h + 1
      loc_0050B48A: var_18 = 1
      loc_0050B490: GoTo loc_0050B3C2
      loc_0050B495: 
      loc_0050B4AA: Proc_0050B0E0(arg_C, edx, ecx) = Proc_0050B0E0(arg_C, edx, ecx) - 00000001h
      loc_0050B4B3: Proc_0050B0E0(arg_C, edx, ecx) = Proc_0050B0E0(arg_C, edx, ecx) - Me.%x1 = GetIDsOfNames(%x2) 'Ignore this
                    If Proc_0050B0E0(arg_C, edx, ecx) < 0 Then GoTo loc_0050B4C2
      loc_0050B4B9: Err.Raise
      loc_0050B4C2: shl ebx, 04h
      loc_0050B4C9: GoTo loc_0050B4D4
      loc_0050B4CB: Err.Raise
      loc_0050B4D4: 
      loc_0050B4D7: Me.GetTypeInfoCount = Me.GetTypeInfoCount + Err.Raise
      loc_0050B4EC: var_2C = Me.GetTypeInfoCount
      loc_0050B4EE: Proc_0050B0E0(arg_C, edx, ecx) = Proc_0050B0E0(arg_C, edx, ecx) - 00000002h
      loc_0050B4F7: var_18 = Proc_0050B0E0(arg_C, edx, ecx)
                    If Proc_0050B0E0(arg_C, edx, ecx) < 0 Then GoTo loc_0050B6BB
      loc_0050B516: edx = var_2C And 00000007h
      loc_0050B519: Proc_0050B0E0(arg_C, edx, ecx) = Proc_0050B0E0(arg_C, edx, ecx) + var_2C And 00000007h
      loc_0050B523: sar edi, 03h
      loc_0050B526: Proc_0050B0E0(arg_C, edx, ecx) = Proc_0050B0E0(arg_C, edx, ecx) - Me.%x1 = GetIDsOfNames(%x2) 'Ignore this
                    If Proc_0050B0E0(arg_C, edx, ecx) < 0 Then GoTo loc_0050B532
      loc_0050B52C: Err.Raise
      loc_0050B532: var_90 = Proc_0050B0E0(arg_C, edx, ecx)
      loc_0050B53B: GoTo loc_0050B549
      loc_0050B53D: Err.Raise
      loc_0050B549: 
      loc_0050B54B: eax = 1 And 80000007h
                    If Sign(1 And 80000007h - 0) Then GoTo loc_0050B557
      loc_0050B552: eax = 1 And 80000007h - 1
      loc_0050B553: eax = 1 And 80000007h - 1 Or FFFFFFF8h
      loc_0050B556: eax = 1 And 80000007h - 1 Or FFFFFFF8h + 1
      loc_0050B563: var_9C = var_94
      loc_0050B57D: call __vbaPowerR8(ebx, 40000000h, var_94, var_98)
      loc_0050B59C: eax = eax And ecx+edi
      loc_0050B5B6: var_B0 = var_94
      loc_0050B5D0: call __vbaPowerR8(ebx, 40000000h, var_94, var_AC)
      loc_0050B5DC: fcomp real8 ptr var_A0
                    If Err.Number = 0 Then GoTo loc_0050B6A3
      loc_0050B603: 1 = 1 - Me.%x1 = GetIDsOfNames(%x2) 'Ignore this
                    If 1 < 0 Then GoTo loc_0050B612
      loc_0050B609: Err.Raise
      loc_0050B612: shl edi, 04h
      loc_0050B617: GoTo loc_0050B622
      loc_0050B619: Err.Raise
      loc_0050B622: 
      loc_0050B625: Me.GetTypeInfoCount = Me.GetTypeInfoCount + Err.Raise
      loc_0050B63A: var_28 = Me.GetTypeInfoCount
      loc_0050B644: Proc_0050A720(var_28, var_28, var_2C)
      loc_0050B649: var_4C = Proc_0050A720(var_28, var_28, var_2C)
      loc_0050B657: var_84 = vbEmpty
      loc_0050B66D: var_44 = var_84
      loc_0050B670: var_7C = vbEmpty
      loc_0050B67A: Proc_0050AD50(arg_10, var_7C, var_7C)
      loc_0050B67F: var_48 = Proc_0050AD50(arg_10, var_7C, var_7C)
      loc_0050B68A: var_2C = vbEmpty
      loc_0050B697: call Erase(ebx, var_7C, var_7C, arg_10, var_2C, var_28)
      loc_0050B6A1: call Erase(ebx, var_84)
      loc_0050B6A3: 
      loc_0050B6A6: eax = Erase(ebx, var_84) Or FFFFFFFFh
      loc_0050B6A9: Erase(ebx, var_84) Or FFFFFFFFh = Erase(ebx, var_84) Or FFFFFFFFh + 1
      loc_0050B6B1: var_18 = Erase(ebx, var_84) Or FFFFFFFFh
      loc_0050B6BB: 
      loc_0050B6C3: var_20 = var_2C
      loc_0050B6CB: GoTo loc_0050B6EC
      loc_0050B6EB: Exit Sub
      loc_0050B6EC: 
      loc_0050B755: Exit Sub
    End Sub
    Proc_005097B0
    В листинге декомпилятора найти не могу... Странно

    PS Прогу без БД скинуть могу если это поможет.
     
    21 мар 2012
  5. iwamoto
    iwamoto Новичок
    Симпатии:
    1
    а поле, где зашифрованные данные не BLOB часом?
     
    22 мар 2012
  6. evggrig
    evggrig Новичок
    Симпатии:
    0
    iwamoto,
    F5 - двоичное
    F6 - текстовое
     
    22 мар 2012
Загрузка...