Сейчас на форуме: asfa, bartolomeo (+7 невидимых)

 eXeL@B —› Вопросы новичков —› Помогите расшифровать поля БД (mdb)
Посл.ответ Сообщение

Ранг: 19.9 (новичок), 31thx
Активность: 0.030.01
Статус: Участник

Создано: 04 марта 2012 01:27
· Личное сообщение · #1

Есть база, есть клиентская часть написанная на VB6. В базе ключевые поля пошифрованы и выглядят отак.

Естественно в клиентской части они вполне читабельны. При произвольной замене символов в этих полях клиент выдает ошибку.

В P32Dasm нашел процедуру считывания этих ячеек.
Code:
  1. 00559AE6: push     __vbaExceptHandler
  2. 00559AFE: call     __vbaChkstk
  3. 00559B2E: call     __vbaOnError ; On Error ...
  4. 00559B55: call     __vbaStrCopy
  5. 00559B5B: mov edx, "t8"
  6. 00559B63: call     __vbaStrCopy
  7. 00559B69: mov edx, "f6"
  8. 00559B71: call     __vbaStrCopy
  9. 00559B98: call     ctlDepartments.Sub_20
  10. 00559BB2: call     rtcStrConvVar2
  11. 00559BC6: call     __vbaVar2Vec
  12. 00559BD7: call     __vbaAryMove
  13. 00559BEB: call     __vbaFreeStrList
  14. 00559C04: call     __vbaFreeVarList


Из этого кода нагуглил только что функция rtcStrConvVar2 используется для преобразования ANSI строки в Unicode или обратно Можно ли как-то выяснить каким образом шифруются эти строки, расшифровать их, заменить на нужные мне значения и зашифровать обратно, чтобы програма их приняла?




Ранг: 127.3 (ветеран), 44thx
Активность: 0.090
Статус: Участник

Создано: 04 марта 2012 12:26
· Личное сообщение · #2

evggrig пишет:
Можно ли как-то выяснить каким образом шифруются эти строки, расшифровать их, заменить на нужные мне значения и зашифровать обратно, чтобы програма их приняла?

да

-----
zzz




Ранг: 19.9 (новичок), 31thx
Активность: 0.030.01
Статус: Участник

Создано: 04 марта 2012 12:36
· Личное сообщение · #3

Встречный вопрос - как?




Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 04 марта 2012 12:47 · Поправил: OnLyOnE
· Личное сообщение · #4

evggrig пишет:
Встречный вопрос - как?

Молча, скрепя зубами
Исследуй программу которая работает с данной базой.. выясняй какой алго используется для шифровки.
Все в принципе банально...
P.S. Можешь раскинуть карты таро они подскажут

-----
aLL rIGHTS rEVERSED!




Ранг: 19.9 (новичок), 31thx
Активность: 0.030.01
Статус: Участник

Создано: 04 марта 2012 13:36
· Личное сообщение · #5

Что я только не раскидывал. Подскажите хоть порядок действий пожалуйста



Ранг: 72.1 (постоянный), 30thx
Активность: 0.050
Статус: Участник

Создано: 04 марта 2012 16:09
· Личное сообщение · #6

evggrig пишет:
00559B98: call     ctlDepartments.Sub_20

вот туда и смотри
и выложи саму программу, тут с телепатией напряженка.



Ранг: 19.9 (новичок), 31thx
Активность: 0.030.01
Статус: Участник

Создано: 04 марта 2012 20:26
· Личное сообщение · #7

00559B98: call ctlDepartments.Sub_20
Code:
  1. 00479FF0: Sub_20
  2. 00479FF6: push     __vbaExceptHandler
  3. 0047A04D: call     __vbaOnError ; On Error ...
  4. 0047A05B: push     "SELECT `"
  5. 0047A066: mov esi, __vbaStrCat ; &
  6. 0047A073: mov edi, __vbaStrMove
  7. 0047A07C: push     "` FROM `"
  8. 0047A09B: push     "`"
  9. 0047A0B7: call     __vbaFreeStrList
  10. 0047A0C2: push     "SELECT "
  11. 0047A0CD: mov esi, __vbaStrCat ; &
  12. 0047A0DA: mov edi, __vbaStrMove
  13. 0047A0E3: push     " FROM "
  14. 0047A10B: call     __vbaFreeStrList
  15. 0047A11F: call     __vbaStrCmp
  16. 0047A12D: push     " WHERE "
  17. 0047A14B: call     __vbaFreeStr
  18. 0047A164: call     __vbaNew2
  19. 0047A1A4: call     __vbaHresultCheckObj
  20. 0047A1B9: call     __vbaObjSet ; Set (object)
  21. 0047A1D4: push     "?"
  22. 0047A1DE: call     __vbaHresultCheckObj
  23. 0047A21E: push     "?"
  24. 0047A225: mov edi, __vbaHresultCheckObj
  25. 0047A22F: mov edi, __vbaHresultCheckObj
  26. 0047A25B: call     __vbaVarMove
  27. 0047A26B: call     __vbaFreeObjList
  28. 0047A28B: push     "?"
  29. 0047A297: call     __vbaExitProc
  30. 0047A2B1: call     __vbaVarMove
  31. 0047A2B7: call     __vbaExitProc
  32. 0047A2CD: call     __vbaFreeVar
  33. 0047A2E1: call     __vbaFreeStrList
  34. 0047A2F1: call     __vbaFreeObjList
  35. 0047A2FD: call     __vbaFreeVar
  36. 0047A307: call     __vbaFreeObj
  37. 0047A310: mov esi, __vbaFreeStr




Ранг: 0.0 (гость)
Активность: 0.250
Статус: Участник

Создано: 04 марта 2012 20:48
· Личное сообщение · #8

evggrig
Скорее всего или RC4 или XOR. Выкладывай программу ибо смотреть SQL запросы бесполезно.



Ранг: 72.1 (постоянный), 30thx
Активность: 0.050
Статус: Участник

Создано: 04 марта 2012 20:49
· Личное сообщение · #9

Похоже на формирование SQL запроса. Значит, расшифровка где-то дальше по коду.



Ранг: 19.9 (новичок), 31thx
Активность: 0.030.01
Статус: Участник

Создано: 04 марта 2012 22:30
· Личное сообщение · #10

Вот как выдал эту процедуру VB Decompiler
Code:
  1. Public Sub Proc_105_0_559AE0
  2.   loc_00559B09: var_14 = &H405B08
  3.   loc_00559B10: var_10 = 0
  4.   loc_00559B17: var_C = 0
  5.   loc_00559B1E: var_4 = 1
  6.   loc_00559B25: var_4 = 2
  7.   loc_00559B2E: On Error Resume Next
  8.   loc_00559B34: var_4 = 3
  9.   loc_00559B55: var_74 = 0042BB14h
  10.   loc_00559B98: Proc_00479FF0("t8", var_84, "f6")
  11.   loc_00559BD7: var_54 = StrConv(var_84, 128, 0)
  12.   loc_00559C0D: var_4 = 4
  13.   loc_00559C2E: var_74 = 0042BB14h
  14.   loc_00559C71: Proc_00479FF0(00447050h, "t2", var_84)
  15.   loc_00559C95: var_58 = var_84
  16.   loc_00559CBE: var_4 = 5
  17.   loc_00559CDF: var_74 = 0042BB14h
  18.   loc_00559CFB: var_6C = 00447064h
  19.   loc_00559D22: Proc_00479FF0("t2", var_84, var_6C)
  20.   loc_00559D46: var_28 = var_84
  21.   loc_00559D6F: var_4 = 6
  22.   loc_00559D89: ReDim var_50(0 To 31)
  23.   loc_00559D92: var_4 = 7
  24.   loc_00559D99: var_B4 = 15
  25.   loc_00559DA3: var_B0 = 1
  26.   loc_00559DAD: var_24 = 0
  27.   loc_00559DB4: GoTo loc_00559DC8
  28.   loc_00559DB6: 
  29.   loc_00559DB9: 0 = 0 + 1
  30.   loc_00559DC8: 
  31.                 If 0 > 0 Then GoTo loc_00559EC4
  32.   loc_00559DD7: var_4 = 8
  33.   loc_00559DF3: 0 = 0 - edx+14h
  34.                 If  Then GoTo loc_00559E16
  35.   loc_00559E0A: var_D8 = 0
  36.   loc_00559E14: GoTo loc_00559E22
  37.   loc_00559E16: Err.Raise
  38.   loc_00559E22: 
  39.   loc_00559E28: var_DC = var_AC
  40.   loc_00559E2E: GoTo loc_00559E3C
  41.   loc_00559E30: Err.Raise
  42.   loc_00559E51: 0 = 0 - edx+14h
  43.                 If  Then GoTo loc_00559E74
  44.   loc_00559E68: var_E0 = 0
  45.   loc_00559E72: GoTo loc_00559E80
  46.   loc_00559E74: Err.Raise
  47.   loc_00559E80: 
  48.   loc_00559E86: var_E4 = var_A8
  49.   loc_00559E8C: GoTo loc_00559E9A
  50.   loc_00559E8E: Err.Raise
  51.   loc_00559E9A: 
  52.   loc_00559EB8: var_4 = 9
  53.   loc_00559EBF: GoTo loc_00559DB6
  54.   loc_00559EC4: var_4 = 10
  55.   loc_00559ED7: Proc_0050B2B0(var_28, var_50, var_58)
  56.   loc_00559EDC: var_A4 = Proc_0050B2B0(var_28, var_50, var_58)
  57.   loc_00559EED: var_2C = Proc_0050B2B0(var_28, var_50, var_58)
  58.   loc_00559EF3: var_4 = 11
  59.   loc_00559EFA: var_BC = 13
  60.   loc_00559F04: var_B8 = 1
  61.   loc_00559F0E: var_24 = 0
  62.   loc_00559F15: GoTo loc_00559F29
  63.   loc_00559F17: 
  64.   loc_00559F1A: 0 = 0 + 1
  65.   loc_00559F29: 
  66.                 If 0 > 0 Then GoTo loc_00559FEC
  67.   loc_00559F38: var_4 = 12
  68.   loc_00559F54: 0 = 0 - edx+14h
  69.                 If  Then GoTo loc_00559F77
  70.   loc_00559F6B: var_E8 = 0
  71.   loc_00559F75: GoTo loc_00559F83
  72.   loc_00559F77: Err.Raise
  73.   loc_00559F83: 
  74.   loc_00559F89: var_EC = var_AC
  75.   loc_00559F8F: GoTo loc_00559F9D
  76.   loc_00559F91: Err.Raise
  77.   loc_00559F9D: 
  78.                 If var_A8 >= 0 Then GoTo loc_00559FBB
  79.   loc_00559FAF: var_F0 = 0
  80.   loc_00559FB9: GoTo loc_00559FC7
  81.   loc_00559FBB: Err.Raise
  82.   loc_00559FC7: 
  83.   loc_00559FE0: var_4 = 13
  84.   loc_00559FE7: GoTo loc_00559F17
  85.   loc_00559FFD: call __vbaCopyBytes(0000000Eh, var_3C, var_4C, var_6C)
  86.   loc_0055A00E: Proc_005097B0(__vbaCopyBytes(0000000Eh, var_3C, var_4C, var_6C), var_3C, var_4C)
  87.                 If word ptr var_3C <> 0 Then GoTo loc_0055A06A
  88.   loc_0055A017: var_4 = 16
  89.   loc_0055A021: var_39 = var_39 + var_36
  90.                 If Not Asm.b_flag Then GoTo loc_0055A12F
  91.   loc_0055A02A: var_39 = var_39 + var_35
  92.                 If Not Asm.b_flag Then GoTo loc_0055A12F
  93.   loc_0055A033: var_39 = var_39 + var_3A
  94.                 If Not Asm.b_flag Then GoTo loc_0055A12F
  95.   loc_0055A03C: var_39 = var_39 + var_38
  96.                 If Not Asm.b_flag Then GoTo loc_0055A12F
  97.   loc_0055A045: var_39 = var_39 + var_37
  98.                 If Not Asm.b_flag Then GoTo loc_0055A12F
  99.                 If var_34 <> 0 Then GoTo loc_0055A06A
  100.   loc_0055A053: var_4 = &H11
  101.   loc_0055A064: call __vbaCopyBytes(0000000Eh, var_68, var_3C)
  102.   loc_0055A06A: 
  103.   loc_0055A06F: GoTo loc_0055A0B1
  104.   loc_0055A0B0: Exit Sub
  105.   loc_0055A0B1: 
  106.   loc_0055A0FC: Exit Sub
  107. End Sub




Ранг: 85.4 (постоянный), 51thx
Активность: 0.090
Статус: Участник

Создано: 05 марта 2012 08:49
· Личное сообщение · #11

чушь какая-то, гадание на кофейной гуще



Ранг: 19.9 (новичок), 31thx
Активность: 0.030.01
Статус: Участник

Создано: 05 марта 2012 23:32
· Личное сообщение · #12

Шансы есть?




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 05 марта 2012 23:34
· Личное сообщение · #13

Нет шансов. 3 раза сказали-выкладывай программу. Ну не хочешь-как хочешь, разбирайся сам или иди в запросы, закрыто.

| Сообщение посчитали полезным: SReg
 eXeL@B —› Вопросы новичков —› Помогите расшифровать поля БД (mdb)
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати