ff decrypt

Тема в разделе "WASM.BEGINNERS", создана пользователем e4key, 20 сен 2009.

  1. e4key

    e4key New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2009
    Сообщения:
    101
    Привет всем. Пробую расшифровать пароль от FF (3.5). Покопал разные сорцы декрипторов, что-то такое сделал, но ... не работает. Для примера возьмем логин (они с паролем расшифровываются одинаково):

    MDIEEPgAAAAAAAAAAAAAAAAAAAEwFAYIKoZIhvcNAwcECCZ75mS/2HwhBAj+/bq+5rbwnA==

    Я пока не стал подгружать все дллки, а попросту запускаю свой файл из директории FF :) Директорию с профилями я пока тоже не стал определять (через profiles.ini), а сделал ее фиксированной. Вот что я написал:

    Код (Text):
    1. format PE GUI 4.0
    2. entry main
    3.  
    4. include 'win32a.inc'
    5.  
    6. section '.data' data readable writeable
    7.   hello         db 'hello', 0
    8.   configDir     db 'C:\Documents and Settings\1nck\Application Data\Mozilla\Firefox\Profiles\7v7dud8r.default', 0
    9.   password      db 'MDIEEPgAAAAAAAAAAAAAAAAAAAEwFAYIKoZIhvcNAwcECCZ75mS/2HwhBAj+/bq+5rbwnA==', 0
    10.   keySlot       dd ?
    11.   hToken        dd ?
    12.  
    13.   struct TSECItem
    14.     SECItemType dd ?
    15.     SECItemData dd ?
    16.     SECItemLen  dd ?
    17.   ends
    18.  
    19.   eSECItem      TSECItem
    20.   dSECItem      TSECItem
    21.  
    22.   bufer         rb 100
    23.   mask          db 'Password: %s', 0
    24.  
    25. section '.code' code readable executable
    26.   main:
    27.         invoke  NSS_Init, configDir
    28.         invoke  PK11_GetInternalKeySlot
    29.         mov     [keySlot], eax
    30.         invoke  PK11_Authenticate, keySlot, 1, 0
    31.         invoke  lstrlen, password
    32.         invoke  NSSBase64_DecodeBuffer, 0, eSECItem, password, eax
    33.         invoke  PK11SDR_Decrypt, eSECItem, dSECItem, 0
    34.  
    35.         invoke  wsprintf, bufer, mask, dSECItem
    36.         invoke  MessageBox, 0, bufer, hello, MB_OK
    37.  
    38.         invoke  PK11_FreeSlot, keySlot
    39.         invoke  NSS_Shutdown
    40.         invoke  ExitProcess, 0
    41.  
    42. section '.idata' import data readable writeable
    43.   library kernel32, 'kernel32.dll',\
    44.           user32, 'user32.dll',\
    45.           advapi32, 'advapi32.dll',\
    46.           nss3, 'nss3.dll'
    47.  
    48.   import nss3,\
    49.         NSS_Init, 'NSS_Init',\
    50.         PK11_GetInternalKeySlot, 'PK11_GetInternalKeySlot',\
    51.         PK11_Authenticate, 'PK11_Authenticate',\
    52.         NSSBase64_DecodeBuffer, 'NSSBase64_DecodeBuffer',\
    53.         PK11SDR_Decrypt, 'PK11SDR_Decrypt',\
    54.         PK11_FreeSlot, 'PK11_FreeSlot',\
    55.         NSS_Shutdown, 'NSS_Shutdown'
    56.  
    57.   include 'api\kernel32.inc'
    58.   include 'api\user32.inc'
    59.   include 'api\advapi32.inc'
    Но в тех сорцах есть проверка, что возвращает NSS_Init и если это 0, то выполнение продолжается. У меня же возвращает -1 =/ Даже не пойму в чем тут дело. Вроде все делаю как надо. Вот описание параметра NSS_Init:

    Тоесть все указываю как надо. Не подскажите? :) Спасибо.
     
  2. e4key

    e4key New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2009
    Сообщения:
    101
    Ах да забыл, расшифрованный текст по идее должен содержаться в элементе SECItemData структуры dSECItem (здесь я поставил dSECItem только для экспериментов :))
     
  3. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    ну наверное надо оставить только имя директории, а не файла
     
  4. e4key

    e4key New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2009
    Сообщения:
    101
    max7C4, если ты о 7v7dud8r.default, то это и есть директория.
     
  5. e4key

    e4key New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2009
    Сообщения:
    101
    сори вопрос закрыт)
     
  6. e4key

    e4key New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2009
    Сообщения:
    101
    а вот во многих примерах делфи есть тип pchar. это указатель на строку. а как мне аналог такого же типа в структуре задать? или как сейчас dword нормально?
     
  7. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    e4key
    PCHAR это на символ, тоесть на один байт указатель. Указатель на Asciiz-строку(нуль в конце) это PSTR.
    В масме: PSTR typedef DWORD.
     
  8. e4key

    e4key New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2009
    Сообщения:
    101
    хм, но во всех примерах используется именно pchar =/ вот структура из тех самых примеров декрипторов:

    Код (Text):
    1.   TSECItem = packed record
    2.     SECItemType: dword;
    3.     SECItemData: pchar;
    4.     SECItemLen: dword;
    5.   end;
    я сделал следующую структуру:
    Код (Text):
    1.   struct PSECItem
    2.     SECItemType dd ?
    3.     SECItemData dd ?
    4.     SECItemLen  dd ?
    5.   ends
    в принципе все работает, но почему-то в конец строки добавляются разного рода символы. например я сохранил в фф пароль (с запасом :)):

    глянул в бд, получилось следующее:

    расшифровываю... получается:

    [​IMG]

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

    что-то я уже не понимаю =/
     
  9. dendi

    dendi New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2007
    Сообщения:
    233
    Нуля в конце не хватает скорее всего.
     
  10. e4key

    e4key New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2009
    Сообщения:
    101
    wsprintf же вставляет в конец нулл-байт. странно. вот пароль:

    ilikethisismypassword12345!@#$%haha

    его как ни странно обрабатывает нормально :)
     
  11. dendi

    dendi New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2007
    Сообщения:
    233
    Имелось ввиду нуля после PK11SDR_Decrypt.
     
  12. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    e4key
    PChar на делфе это указатель на байт, а за ним может быть еще байт и еще байт и так далее до нулевого байта. Но изначально это указатель на байт, хотя чаще используется как строка оканчивающаяся нулем.