Тема: Сниффер
Показать сообщение отдельно
Старый 17.07.2010, 19:25   #117
Йоха
Умный
 
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
Йоха Скоро придёт к известности
По умолчанию

Что-то я запутался немного с расшифровкой заголовков пакетов
за основу взял код из tiawps

Инициализация выглядит так:
Код:
BYTE digest[SHA_DIGEST_LENGTH];
ZeroMemory(&digest, SHA_DIGEST_LENGTH);

HMAC_CTX ctx;
HMAC_CTX_init(&ctx);
HMAC_Init_ex(&ctx, seed, SEED_KEY_SIZE, EVP_sha1(), NULL);
HMAC_Update(&ctx, m_sessionkey, SESSION_KEY_LENGTH);

uint32_t length = 0;
HMAC_Final(&ctx, digest, &length);
HMAC_CTX_cleanup(&ctx);

EVP_CIPHER_CTX_init(&m_key);
EVP_EncryptInit_ex(&m_key, EVP_rc4(), NULL, NULL, NULL);
EVP_CIPHER_CTX_set_key_length(&m_key, SHA_DIGEST_LENGTH);
EVP_EncryptInit_ex(&m_key, NULL, NULL, digest, NULL);

// drop first 1024 bytes
BYTE trash;
for(int i = 0; i < 1024; ++i)
{
    DecryptData(&trash, 1);
}
Сама функция расшифровки так
Код:
void CCrypt::DecryptData(BYTE *data, int len)
{
    int outlen = 0;
    EVP_EncryptUpdate(&m_key, data, &outlen, data, len);
    EVP_EncryptFinal_ex(&m_key, data, &outlen);
}
Расшифровываются нормально только первый серверный и первый клиентский пакет. Потом ерунда какая-то получается.
В самом tiawps разобраться по человечески не получается, там такой дикий код что можно его выставлять как пример к лозунгу "как не нужно писать программы на С"

Подскажите что я упустил ?
Йоха вне форума   Ответить с цитированием