reverse crypto

Тема в разделе "WASM.CRYPTO", создана пользователем seeQ, 6 фев 2008.

  1. seeQ

    seeQ New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2003
    Сообщения:
    71
    Код (Text):
    1. ;Key - указатель на ключ, длина 64 байта.
    2. ;Data - указатель на блок данных в 64 байта.
    3.  
    4. Decrypt proc Key:dword, Data:dword
    5. LOCAL tKey:dword
    6. LOCAL counter :dword
    7. LOCAL _ebp :dword
    8.                
    9.                 mov     edi, 10h
    10.  
    11. _nextdword:                            
    12.                 cmp     edi, 0
    13.                 jz      _end
    14.                 dec     edi
    15.                 mov     counter, edi
    16.                 mov     ebx, Data
    17.                 mov     eax, Key
    18.                 mov     eax, [eax+edi*4]
    19.                 mov     ecx, eax
    20.                 and     ecx, 0Fh
    21.                 push    [ebx+edi*4]
    22.                 pop     _ebp
    23.                 sub     _ebp, eax
    24.                 mov     edi, [ebx+ecx*4]
    25.                 sub     edi, eax
    26.                 mov     tKey, edi
    27.                 mov     esi, _ebp
    28.                 and     esi, eax
    29.                 mov     edx, eax
    30.                 not     edx
    31.                 and     edi, edx
    32.                 or      esi, edi
    33.                 mov     edi, counter
    34.                 mov     [ebx+edi*4], esi
    35.                 mov     esi, tKey
    36.                 and     esi, eax
    37.                 and     _ebp, edx
    38.                 or      esi, _ebp
    39.                 mov     [ebx+ecx*4], esi
    40.                 jmp     _nextdword
    41. _end:          
    42.  
    43.              
    44.                 ret
    45. Decrypt      endp
    Задача следующая:
    Известны входной и выходной блок данных (Data) необходимо получить ключ, но обратить аглоритм, что-то не получается. Может кто встречал такое, гляньте, в архиве исходники тестовой прогрммы которая криптует и раскриптвывает блок данных.
     
  2. RElf

    RElf New Member

    Публикаций:
    0
    Регистрация:
    25 дек 2004
    Сообщения:
    159
    Проверьте правильно ли я это транслировал в С:

    Код (Text):
    1. void encrypt(uint32_t* Data, const uint32_t* Key) {
    2.     for(int i=15;i>=0;--i) {
    3.     uint32_t k = Key[i];
    4.     uint32_t j = k & 0x0F;
    5.     uint32_t iKey = Data[i] - k;
    6.     uint32_t jKey = Data[j] - k;
    7.     Data[i] = (iKey & k) | (jKey & ~k);
    8.     Data[j] = (jKey & k) | (iKey & ~k);
    9.     }
    10. }
    Если так, то ключик должен вычисляться.
    Попробую расписать на досуге.
     
  3. RElf

    RElf New Member

    Публикаций:
    0
    Регистрация:
    25 дек 2004
    Сообщения:
    159
    Кстати, вам нужно определять ключи на периодической основе или же нужно решить одноразовую проблему?
    В общем виде я писать не буду - слишком муторно (много вариантов), но один какой-то ключик могу вычислить...
     
  4. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    RElf
    ИМХО, ето стоит денег.
     
  5. RElf

    RElf New Member

    Публикаций:
    0
    Регистрация:
    25 дек 2004
    Сообщения:
    159
    KeSqueer
    Что конкретно стоит денег?
     
  6. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    То, что Вы просите.
     
  7. RElf

    RElf New Member

    Публикаций:
    0
    Регистрация:
    25 дек 2004
    Сообщения:
    159
    Вообще-то, я ничего не прощу.
     
  8. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    RElf
    Ой, я в смысле что ТС просит.
     
  9. RElf

    RElf New Member

    Публикаций:
    0
    Регистрация:
    25 дек 2004
    Сообщения:
    159
    Ну один ключик я могу вычислить бесплатно. ;)
    Так сказать, для proof of the concept.
     
  10. Solo

    Solo New Member

    Публикаций:
    0
    Регистрация:
    11 июл 2003
    Сообщения:
    131
    по приведенному RElf-ом коду, вообще непонятно, на чем там сложность восстановления ключа держаться может?
    KeSqueer - стыдно за такое денег просить :)