CryptBinaryToString

Тема в разделе "WASM.BEGINNERS", создана пользователем 2FED, 10 янв 2010.

  1. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    Как заставить генерировать Base64 строку без символов перевода строки 13,10 ?
     
  2. cornolio

    cornolio New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2009
    Сообщения:
    50
    CRYPT_STRING_NOCRLF и CRYPT_STRING_NOCR
    но вот перв флаг на ХР не работает чета(
     
  3. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    с CRYPT_STRING_NOCR ещё хуже

    Код (Text):
    1. 0040322B  2D 2D 2D 2D 2D 42 45 47 49 4E 20 43 45 52 54 49  -----BEGIN CERTI
    2. 0040323B  46 49 43 41 54 45 2D 2D 2D 2D 2D 0A 41 41 41 41  FICATE-----.AAAA
    3. 0040324B  41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
    4. 0040325B  41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
    5. 0040326B  41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
    6. 0040327B  41 41 41 41 41 41 41 41 41 41 41 41 0A 41 41 41  AAAAAAAAAAAA.AAA
    7. 0040328B  41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
    8. 0040329B  41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
    9. 004032AB  41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
    10. 004032BB  41 41 41 41 41 41 41 41 41 41 41 41 41 0A 41 41  AAAAAAAAAAAAA.AA
    11. 004032CB  41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
    12. 004032DB  41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
    13. 004032EB  41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
    14. 004032FB  41 41 41 41 41 41 41 41 41 41 41 41 41 41 0A 41  AAAAAAAAAAAAAA.A
    15. 0040330B  41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
    16. 0040331B  41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
    17. 0040332B  41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
    18. 0040333B  41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 0A  AAAAAAAAAAAAAAA.
    19. 0040334B  41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
    20. 0040335B  41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
    21. 0040336B  41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
    22. 0040337B  41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
    23. 0040338B  0A 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  .AAAAAAAAAAAAAAA
    24. 0040339B  41 41 41 41 41 41 41 3D 3D 0A 2D 2D 2D 2D 2D 45  AAAAAAA==.-----E
    25. 004033AB  4E 44 20 43 45 52 54 49 46 49 43 41 54 45 2D 2D  ND CERTIFICATE--
    26. 004033BB  2D 2D 2D 0A 00                                   ---..
     
  4. cornolio

    cornolio New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2009
    Сообщения:
    50
    ну их складывать же надо))
    CRYPT_STRING_BASE64 + CRYPT_STRING_NOCR
    тогда будет тока 0Ah
     
  5. cornolio

    cornolio New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2009
    Сообщения:
    50
    вот есть просто функция для кодирования в баз64
    Код (Text):
    1. ; Encodes data to base64 format
    2. Base64Encode proc uses esi edi ebx lpSrc, lpDst, dwSrcLen: DWORD
    3.         mov     esi, lpSrc
    4.         mov     edi, lpDst
    5.         mov     ecx, dwSrcLen
    6.  
    7.         xor     ebx, ebx
    8.  
    9. @l:
    10.         jecxz   @b64_ret
    11.  
    12.         lodsb
    13.         shl     eax, 16
    14.         cmp     ecx, 1
    15.         jz      @work
    16.         lodsb
    17.         shl     ax, 8
    18.         cmp     ecx, 2
    19.         jz      @work
    20.         lodsb
    21.  
    22. @work:
    23.         ; Output b64 quad
    24.         mov     edx, eax
    25.         ror     edx, 24
    26.  
    27.         push    ecx
    28.         push    4
    29.         pop     ecx
    30. @l2:
    31.         call    @b64_write
    32.         loop    @l2
    33.         pop     ecx
    34.  
    35.         inc     ebx
    36.         .IF     ebx == 18
    37.                 xor     ebx, ebx
    38.                 mov     ax, 0a0dh
    39.                 stosw
    40.         .ENDIF
    41.  
    42.         sub     ecx, 3
    43.         jns     @l
    44.  
    45.         ; Pad
    46.         neg     ecx
    47.         sub     edi, ecx
    48.         mov     al, '='
    49.         rep stosb
    50.  
    51. @b64_ret:
    52.         ret
    53.  
    54. @b64_write:
    55.         rol     edx, 6
    56.         mov     eax, edx
    57.         and     al, 00111111b
    58.         cmp     al, 62
    59.         jae     @write_spec
    60.  
    61.         cmp     al, 52
    62.         jae     @write_number
    63.  
    64.         ; Uppercase
    65.         add     al, 'A'
    66.         cmp     al, 'A'+26
    67.         jb      @write
    68.         ; Lowercase
    69.         add     al, 6
    70.         jmp     @write
    71.         ; Number
    72. @write_number:
    73.         add     al, '0'-52
    74.         jmp     @write
    75.         ; Special: +/
    76. @write_spec:
    77.         sub     al, 62
    78.         shl     al, 2
    79.         add     al, 43        
    80. @write:
    81.         stosb
    82.                
    83.         retn
    84. Base64Encode endp
     
  6. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    это я уже понял, но надо чтобы было вовсе без этого "мусора"

    а насщёт функции сам юзаю сейчас подобное, в сторону CryptBinaryToString смотрю для с целью уменьшения размера кода.
     
  7. ptr

    ptr New Member

    Публикаций:
    0
    Регистрация:
    14 мар 2009
    Сообщения:
    130
    парсить буфер?убрать лишний мусор.сам так делаю)
     
  8. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    это конечно можно, но это как то через Ж... получается. Просто написал сдесь думал что можно её заставить работать нормально, ну рас нельзя будем извращятся.
     
  9. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    Написал маленький парсер, мож кому пригодится.
    Код (Text):
    1.     mov     edi,pOut     ;указатель на base64 строку
    2.     mov     esi,edi
    3.     mov     ecx,OutLen ;Длина строки
    4.     cld
    5. @@:
    6.     lodsb
    7.     cmp     al,0Ah
    8.     je      @b
    9.     stosb
    10.     test    al,al
    11.     jnz     @b
     
  10. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    2FED А еще проще было не кодировать сразу всю кучу, а сделать цикл по маленьким порциям. Дешево и сердито.
     
  11. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    valterg мой способ кошерней ;)