Сейчас на форуме: rmn, exp50848 (+8 невидимых)

 eXeL@B —› Основной форум —› Шифр перестановкой
<< . 1 . 2 .
Посл.ответ Сообщение


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

Создано: 26 июля 2012 20:46 · Поправил: OnLyOnE
· Личное сообщение · #1

Пытаюсь разобрать алго преобразования большого числа.
Необходимо его реверснуть.
Как понял (на сколько мозгов хватило ) в него заложен принцип шифрования перестановкой... только все происходит на уровне бит.

Т.е. поэтапно ...

Этап "расшифровки" числа, в результате которого число [ 10 00 A2 00 63 0E CA 45 01 AA F7 F0 00 A6 F8 ] преобразуется в [ 18 06 28 E5 79 F2 F9 96 62 02 B3 03 00 00 08 ]
Шаги "расшифровки":

1. создается буфер размером в 120 байт (78h) и число [ 10 00 A2 00 63 0E CA 45 01 AA F7 F0 00 A6 F8 ] раскладывается в буфер на биты т.е. двоичная система исчисления

Code:
  1. 0033C050  00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00  ...Ђ............
  2. 0033C060  80 00 80 00 00 00 80 00 00 00 00 00 00 00 00 00  Ђ.Ђ...Ђ.........
  3. 0033C070  00 80 80 00 00 00 80 80 00 00 00 00 80 80 80 00  .ЂЂ...ЂЂ....ЂЂЂ.
  4. 0033C080  80 80 00 00 80 00 80 00 00 80 00 00 00 80 00 80  ЂЂ..Ђ.Ђ..Ђ...Ђ.Ђ
  5. 0033C090  00 00 00 00 00 00 00 80 80 00 80 00 80 00 80 00  .......ЂЂ.Ђ.Ђ.Ђ.
  6. 0033C0A0  80 80 80 80 00 80 80 80 80 80 80 80 00 00 00 00  ЂЂЂЂ.ЂЂЂЂЂЂЂ....
  7. 0033C0B0  00 00 00 00 00 00 00 00 80 00 80 00 00 80 80 00  ........Ђ.Ђ..ЂЂ.
  8. 0033C0C0  80 80 80 80 80 00 00 00                                          ЂЂЂЂЂ...


В данном случае вместо единичек ставиться 80h.

Затем создается на основе вышеуказанного массива "словарь" для "расшифровки" числа, причем "словарь" имеет такой вид

Code:
  1. 0033C150  00 00 00 00 01 00 00 00 02 00 00 00 4D 00 00 00  ..........M...
  2. 0033C160  03 00 00 00 04 00 00 00 05 00 00 00 06 00 00 00  ............
  3. 0033C170  07 00 00 00 08 00 00 00 09 00 00 00 0A 00 00 00  ..............
  4. 0033C180  0B 00 00 00 0C 00 00 00 0D 00 00 00 0E 00 00 00   ..............
  5. 0033C190  4E 00 00 00 0F 00 00 00 4F 00 00 00 10 00 00 00  N......O......
  6. 0033C1A0  11 00 00 00 12 00 00 00 50 00 00 00 13 00 00 00  ......P......
  7. 0033C1B0  14 00 00 00 15 00 00 00 16 00 00 00 17 00 00 00  ............
  8. 0033C1C0  18 00 00 00 19 00 00 00 1A 00 00 00 1B 00 00 00  ............
  9. 0033C1D0  1C 00 00 00 51 00 00 00 52 00 00 00 1D 00 00 00  ...Q...R......
  10. 0033C1E0  1E 00 00 00 1F 00 00 00 53 00 00 00 54 00 00 00  ......S...T...
  11. 0033C1F0  20 00 00 00 21 00 00 00 22 00 00 00 23 00 00 00   ...!..."...#...
  12. 0033C200  55 00 00 00 56 00 00 00 57 00 00 00 24 00 00 00  U...V...W...$...
  13. 0033C210  58 00 00 00 59 00 00 00 25 00 00 00 26 00 00 00  X...Y...%...&...
  14. 0033C220  5A 00 00 00 27 00 00 00 5B 00 00 00 28 00 00 00  Z...'...[...(...
  15. 0033C230  29 00 00 00 5C 00 00 00 2A 00 00 00 2B 00 00 00  )...\...*...+...
  16. 0033C240  2C 00 00 00 5D 00 00 00 2D 00 00 00 5E 00 00 00  ,...]...-...^...
  17. 0033C250  2E 00 00 00 2F 00 00 00 30 00 00 00 31 00 00 00  ..../...0...1...
  18. 0033C260  32 00 00 00 33 00 00 00 34 00 00 00 5F 00 00 00  2...3...4..._...
  19. 0033C270  60 00 00 00 35 00 00 00 61 00 00 00 36 00 00 00  `...5...a...6...
  20. 0033C280  62 00 00 00 37 00 00 00 63 00 00 00 38 00 00 00  b...7...c...8...
  21. 0033C290  64 00 00 00 65 00 00 00 66 00 00 00 67 00 00 00  d...e...f...g...
  22. 0033C2A0  39 00 00 00 68 00 00 00 69 00 00 00 6A 00 00 00  9...h...i...j...
  23. 0033C2B0  6B 00 00 00 6C 00 00 00 6D 00 00 00 6E 00 00 00  k...l...m...n...
  24. 0033C2C0  3A 00 00 00 3B 00 00 00 3C 00 00 00 3D 00 00 00  :...;...<...=...
  25. 0033C2D0  3E 00 00 00 3F 00 00 00 40 00 00 00 41 00 00 00  >...?...@...A...
  26. 0033C2E0  42 00 00 00 43 00 00 00 44 00 00 00 45 00 00 00  B...C...D...E...
  27. 0033C2F0  6F 00 00 00 46 00 00 00 70 00 00 00 47 00 00 00  o...F...p...G...
  28. 0033C300  48 00 00 00 71 00 00 00 72 00 00 00 49 00 00 00  H...q...r...I...
  29. 0033C310  73 00 00 00 74 00 00 00 75 00 00 00 76 00 00 00  s...t...u...v...
  30. 0033C320  77 00 00 00 4A 00 00 00 4B 00 00 00 4C 00 00 00  w...J...K...L...


и на основе этого "словаря" бинарный вид расшифровываемого числа превращается вот в такой вид

Code:
  1. 0033C0D0  00 00 00 80 80 00 00 00 00 00 00 00 00 80 80 00  ...ЂЂ........ЂЂ.
  2. 0033C0E0  00 00 80 00 80 00 00 00 80 80 80 00 00 80 00 80  ..Ђ.Ђ...ЂЂЂ..Ђ.Ђ
  3. 0033C0F0  00 80 80 80 80 00 00 80 80 80 80 80 00 00 80 00  .ЂЂЂЂ..ЂЂЂЂЂ..Ђ.
  4. 0033C100  80 80 80 80 80 00 00 80 80 00 00 80 00 80 80 00  ЂЂЂЂЂ..ЂЂ..Ђ.ЂЂ.
  5. 0033C110  00 80 80 00 00 00 80 00 00 00 00 00 00 00 80 00  .ЂЂ...Ђ.......Ђ.
  6. 0033C120  80 00 80 80 00 00 80 80 00 00 00 00 00 00 80 80  Ђ.ЂЂ..ЂЂ......ЂЂ
  7. 0033C130  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
  8. 0033C140  00 00 00 00 80 00 00 00                                          ....Ђ...


Т.е. после преобразования двоичных данных в хекс получаем [ 18 06 28 E5 79 F2 F9 96 62 02 B3 03 00 00 08 ]

Вот цикл преобразования

Code:
  1. mov esi, offset [Словарь]
  2. mov edi, offset [Выходной буфер]
  3. mov eax, offset [Число в бинарном виде]
  4. mov ebp,78h
  5.  
  6. xor ecx,ecx
  7. L001:
  8. cmp dword ptr ds:[esi+ecx*4h],0h
  9. jl L012
  10. mov ebx,ecx
  11. L004:
  12. movzx edx,byte ptr ds:[ebx+eax]
  13. mov byte ptr ss:[ebp+edi],dl
  14. dec ebp
  15. lea edx,dword ptr ds:[ebx*4h]
  16. mov ebx,dword ptr ds:[esi+edx]
  17. mov dword ptr ds:[esi+edx],-1h
  18. cmp dword ptr ds:[esi+ebx*4h],0h
  19. jge L004
  20. L012:
  21. inc ecx
  22. test ebp,ebp
  23. jge L001
  24. nop


Вроде просто на первый взгляд... но никогда не сталкивался с данным принципом.
Может кто уже сталкивался с аналогичным?
Подскажите как реверснуть?
И на каком этапе? Может надо обращать цикл создания "словаря"?
В общем ... вот так
Заранее благодарен за помощь!

-----
aLL rIGHTS rEVERSED!





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

Создано: 30 июля 2012 22:07
· Личное сообщение · #2

ZaZa
Ну а что даст брут? Решение только данной ситуации?
Если подать другое число на вход, сбрученный "словарь" работать не будет...
Просто я дал два числа .. они валидны друг для друга.. но это не значит что не будет других чисел
Смысл именно обратить функцию, чтобы потом использовать..

-----
aLL rIGHTS rEVERSED!





Ранг: 158.5 (ветеран), 219thx
Активность: 0.120.01
Статус: Участник

Создано: 30 июля 2012 22:23 · Поправил: ZaZa
· Личное сообщение · #3

OnLyOnE
Я предлагаю не словарь брутить, а входные данные (хотя словарь то тоже будет генерироваться)...
И все-таки, мне кажется, что обратить в данном случае невозможно... Возможно я и ошибаюсь, не спорю...
Причем, чем ближе выходные данные будут к FFh или 00h, тем меньше итераций получится...

И да! Так каждый раз брутить предлагаю ))) Я понимаю, что данное решение не есть гуд, но все же...
Ниже количество всех вариантов для брута (1 столбик - количество единичек (80h))
Code:
  1. 0        1
  2. 1        120
  3. 2        7140
  4. 3        280840
  5. 4        8214570
  6. 5        190578024
  7. 6        3652745460
  8. 7        59487568920
  9. 8        840261910995
  10. 9        10456592670160
  11. 10       116068178638776
  12. 11       1160681786387760
  13. 12       10542859559688820
  14. 13       87586833265107120
  15. 14       669413654240461560
  16. 15       4730523156632595024
  17. 16       31044058215401404845
  18. 17       189916591435396829640
  19. 18       1086744939880326302940
  20. 19       5834104414094383310520
  21. 20       29462227291176635718126
  22. 21       140296320434174455800600
  23. 22       631333441953785051102700
  24. 23       2690029448324823261220200
  25. 24       10872202353646160680764975
  26. 25       41749257038001257014137504
  27. 26       152545362254235362167040880
  28. 27       531083853774004594211179360
  29. 28       1763957085749372402201417160
  30. 29       5596001789273871069052771680
  31. 30       16974538760797408909460074096
  32. 31       49280918982960219414561505440
  33. 32       137062555921358110246749187005
  34. 33       365500149123621627324664498680
  35. 34       935250381581031811095465040740
  36. 35       2298043794741963878691714100104
  37. 36       5425936737585192491355436069690
  38. 37       12318342863706923493888017023080
  39. 38       26905854149675648684018563497780
  40. 39       56571283083933415181782620687640
  41. 40       114556848244965165743109806892471
  42. 41       223525557551151542913384989058480
  43. 42       420440929679546949765652717514760
  44. 43       762660291046620048412114231770960
  45. 44       1334655509331585084721199905599180
  46. 45       2254084860204454809751359840567504
  47. 46       3675138359029002407203304087881800
  48. 47       5786388054641408045383925585175600
  49. 48       8800131833100474735688053494121225
  50. 49       12930805958841513897337547991361800
  51. 50       18361744461554949734219318147733756
  52. 51       25202394358996989831281417065516920
  53. 52       33441638668669082660738803413858990
  54. 53       42906253386216936243966766644196440
  55. 54       53235536608824717191588395651132620
  56. 55       63882643930589660629906074781359144
  57. 56       74149497419434427516855265371220435
  58. 57       83255576049891287036469069890493120
  59. 58       90432780881778466953406058674156320
  60. 59       95031057875767202561206366742333760
  61. 60       96614908840363322603893139521372656
  62. 61       95031057875767202561206366742333760
  63. 62       90432780881778466953406058674156320
  64. 63       83255576049891287036469069890493120
  65. 64       74149497419434427516855265371220435
  66. 65       63882643930589660629906074781359144
  67. 66       53235536608824717191588395651132620
  68. 67       42906253386216936243966766644196440
  69. 68       33441638668669082660738803413858990
  70. 69       25202394358996989831281417065516920
  71. 70       18361744461554949734219318147733756
  72. 71       12930805958841513897337547991361800
  73. 72       8800131833100474735688053494121225
  74. 73       5786388054641408045383925585175600
  75. 74       3675138359029002407203304087881800
  76. 75       2254084860204454809751359840567504
  77. 76       1334655509331585084721199905599180
  78. 77       762660291046620048412114231770960
  79. 78       420440929679546949765652717514760
  80. 79       223525557551151542913384989058480
  81. 80       114556848244965165743109806892471
  82. 81       56571283083933415181782620687640
  83. 82       26905854149675648684018563497780
  84. 83       12318342863706923493888017023080
  85. 84       5425936737585192491355436069690
  86. 85       2298043794741963878691714100104
  87. 86       935250381581031811095465040740
  88. 87       365500149123621627324664498680
  89. 88       137062555921358110246749187005
  90. 89       49280918982960219414561505440
  91. 90       16974538760797408909460074096
  92. 91       5596001789273871069052771680
  93. 92       1763957085749372402201417160
  94. 93       531083853774004594211179360
  95. 94       152545362254235362167040880
  96. 95       41749257038001257014137504
  97. 96       10872202353646160680764975
  98. 97       2690029448324823261220200
  99. 98       631333441953785051102700
  100. 99       140296320434174455800600
  101. 100      29462227291176635718126
  102. 101      5834104414094383310520
  103. 102      1086744939880326302940
  104. 103      189916591435396829640
  105. 104      31044058215401404845
  106. 105      4730523156632595024
  107. 106      669413654240461560
  108. 107      87586833265107120
  109. 108      10542859559688820
  110. 109      1160681786387760
  111. 110      116068178638776
  112. 111      10456592670160
  113. 112      840261910995
  114. 113      59487568920
  115. 114      3652745460
  116. 115      190578024
  117. 116      8214570
  118. 117      280840
  119. 118      7140
  120. 119      120
  121. 120      1

Унывать не стоит, надо копать дальше...

-----
One death is a tragedy, one million is a statistic.



<< . 1 . 2 .
 eXeL@B —› Основной форум —› Шифр перестановкой
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати