Проблема с расшифровкой пакетов из файла PCAP в C++C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Проблема с расшифровкой пакетов из файла PCAP в C++

Сообщение Anonymous »

У меня есть файл PCAP, созданный на основе нашего производственного проекта. У нас есть и ключ шифрования, и вектор инициализации (IV). Раньше мы обрабатывали все входящие и исходящие данные для хранения активности перед применением логики шифрования и дешифрования.
Однако после недавнего изменения я могу читать только незашифрованную часть данных (первую часть). байт полезной нагрузки, который определяет длину пакета). Остальная часть полезных данных остается зашифрованной. При попытке расшифровать пакет с помощью EVP_DecryptUpdate зашифрованный и расшифрованный буферы кажутся идентичными, а сопоставление со структурой приводит к появлению мусорных значений.
Для этой реализации мы используем C++. Будем очень признательны за любые предложения по решению этой проблемы.
Ниже приведен код расшифровки OpenSSL, используемый в проекте.

Код: Выделить всё

EVP_CIPHER_CTX *decrypt_ctx;

void handleErrors()
{
printf("ENC-DEC error");
ERR_print_errors_fp(stderr);
abort();
}

void decrypt_EVP_aes_256_gcm_init(EVP_CIPHER_CTX **ctx, unsigned char *key, unsigned char *iv)
{
if (!(*ctx = EVP_CIPHER_CTX_new()))
handleErrors();
if (1 != EVP_DecryptInit_ex(*ctx, EVP_aes_256_gcm(), NULL, key, iv))
handleErrors();
}

int decrypt(EVP_CIPHER_CTX *ctx, unsigned char *ciphertext, int ciphertext_len, unsigned char *plaintext, int *plaintext_len)
{
int len;
int ErrorCode = EVP_DecryptUpdate(ctx, plaintext, &len, ciphertext, ciphertext_len);
if (1 != ErrorCode)
handleErrors();
*plaintext_len = len;

return ErrorCode;
}
Ниже приведен код PCap:

Код: Выделить всё

        struct bpf_program filter;
std::string filter_exp = "ip and tcp"; // Filter expression
if (pcap_compile(descr, &filter, filter_exp.c_str(), 0, PCAP_NETMASK_UNKNOWN) == -1)
{
std::cerr 

Подробнее здесь: [url]https://stackoverflow.com/questions/78351335/issue-with-decrypting-packets-from-pcap-file-in-c[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»