Задать вопрос
@infirmitive

TCP Fingerprint TIMESTAMP не задается никакое значение, кроме 0, как исправить?

Через NFQUEUE перехватываю пакеты, чтобы изменить отпечаток системы, но никак не получается задать опцию TIMESTAMP, кроме как 0.

67861c977d750472451250.jpeg

Кусок кода максимально короткий, но вот так я устанавливаю 0 и он распознается и соединение не ломается. Если же задать какое-либо значение, то не получаю ответа.

void process_tcp_options(unsigned char *options, int options_size) {
    int offset = 0;
    size_t option_index = 0;
    while (offset < options_size && option_index < selected_signature.tcp_options_order.size()) {
        TcpOptionKind kind = selected_signature.tcp_options_order[option_index++];

        if (kind == EOL) { // EOL
            options[offset] = EOL;
            offset++;
            continue;
        }

        if (kind == NOP) { // NOP
            options[offset] = NOP;
            offset++;
            continue;
        }

        if (kind == MSS) { // Maximum Segment Size
            options[offset] = MSS;
            options[offset + 1] = 4;
            *reinterpret_cast<uint16_t *>(&options[offset + 2]) = htons(selected_signature.mss);
            offset += 4;
        } else if (kind == WINDOW) { // Window Scale
            options[offset] = WINDOW;
            options[offset + 1] = 3;
            options[offset + 2] = selected_signature.wscale;
            offset += 3;
        } else if (kind == TIMESTAMP) {
            options[offset] = TIMESTAMP;
            options[offset + 1] = 10;

            // Устанавливаем TSval на 0 (не получается установить любой другой)
            *reinterpret_cast<uint32_t *>(&options[offset + 2]) = htonl(0);

            // TSecr оставляем 0
            *reinterpret_cast<uint32_t *>(&options[offset + 6]) = 0;

            offset += 10;
        } else if (kind == SACKPERM) { // Selective Acknowledgment Permitted
            options[offset] = SACKPERM;
            options[offset + 1] = 2;
            offset += 2;
        }
    }
}


Хотелось бы все же передавать какое-то значение не равное 0, но никак не получается. Прошу помощи.
  • Вопрос задан
  • 50 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы