Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
tcpcopy — Инструмент для онлайн-репликации запросов и повторной передачи TCP-потоков, идеально подходящий для реального тестирования, тестирования производительности, стабильности, стресс-тестирования, нагрузочного тестирования, дымового тестирования и многого другого. | Kitploit
Инструменты/GitHubGitHub/session-replay-tools/tcpcopy
Скриптинг и автоматизацияСетевая безопасностьТестирование на ПроникновениеУтилиты и фреймворки
GitHubsession-replay-tools/tcpcopy

tcpcopy

Инструмент для онлайн-репликации запросов и повторной передачи TCP-потоков, идеально подходящий для реального тестирования, тестирования производительности, стабильности, стресс-тестирования, нагрузочного тестирования, дымового тестирования и многого другого.

Репозиторий
Сайт
4.7k1.0k201 год назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

TCPCopy - Инструмент для воспроизведения TCP-потоков

TCPCopy — это инструмент для воспроизведения TCP-потоков, предназначенный для реалистичного тестирования интернет-серверных приложений.

Знакомство с TCPCopy

Обзор TCPCopy для начинающих

Общая архитектура TCPCopy

Сценарии тестирования TCPCopy

Примеры предварительного прогрева TCPCopy

Описание

Хотя реальный живой трафик крайне важен для тестирования интернет-серверных приложений, точная его симуляция затруднена из-за сложности онлайн-сред. Для более реалистичного тестирования был разработан TCPCopy — инструмент воспроизведения живого трафика, который генерирует тестовые нагрузки, максимально приближенные к производственным. TCPCopy широко используется компаниями в Китае.

TCPCopy минимально влияет на рабочую систему, потребляя лишь дополнительный процессор, память и пропускную способность. Воспроизведённая нагрузка отражает производственную среду по разнообразию запросов, задержкам в сети и использованию ресурсов.

Сценарии использования

  • Распределённое нагрузочное тестирование
    • Используйте TCPCopy для репликации реального трафика при нагрузочном тестировании серверного ПО, выявляя ошибки, проявляющиеся только в условиях высокой нагрузки.
  • Живое тестирование
    • Проверяйте стабильность новых систем и находите ошибки, проявляющиеся только в реальных условиях.
  • Регрессионное тестирование
    • Убедитесь, что недавние изменения не внесли новых проблем.
  • Сравнение производительности
    • Сравните производительность системы на разных версиях или конфигурациях.

Архитектура

tcpcopy

Рисунок 1. Обзор архитектуры TCPCopy.

Как показано на рисунке 1, TCPCopy состоит из двух компонентов: tcpcopy и intercept. Компонент tcpcopy работает на онлайн-сервере, захватывая живые запросы, в то время как intercept работает на вспомогательном сервере, выполняя такие задачи, как передача информации об ответах обратно в tcpcopy. Само тестовое приложение работает на целевом сервере.

По умолчанию tcpcopy использует raw-сокеты для захвата пакетов на сетевом уровне (изображены оранжевыми стрелками на рисунке). Он обрабатывает такие процессы, как симуляция TCP-взаимодействия, управление задержками в сети и симуляция взаимодействия на верхних уровнях. Затем он отправляет пакеты на целевой сервер с помощью raw-сокетов (показаны светло-красными стрелками на рисунке).

Единственная необходимая задача на целевом сервере — настройка правил маршрутизации для направления ответных пакетов (показаны светло-зелёными стрелками на рисунке) на вспомогательный сервер.

Роль компонента intercept заключается в пересылке заголовка ответа (по умолчанию) обратно в tcpcopy. Он захватывает ответные пакеты, извлекает информацию заголовка ответа и отправляет эту информацию в tcpcopy через выделенный канал (обозначен голубыми стрелками на рисунке). Получив заголовок ответа, tcpcopy использует эту информацию для изменения атрибутов онлайн-пакетов и продолжает отправлять последующие пакеты.

Важно отметить, что ответы с целевого сервера направляются на вспомогательный сервер, который работает как чёрная дыра.

Быстрый старт

Для intercept у вас есть два варианта:

  • Загрузите последний релиз intercept.
  • Клонируйте репозиторий: git clone git://github.com/session-replay-tools/intercept.git.

Для tcpcopy у вас также есть два варианта:

  • Загрузите последний релиз tcpcopy.
  • Клонируйте репозиторий: git clone git://github.com/session-replay-tools/tcpcopy.git.

Установка intercept на вспомогательном сервере

  1. Перейдите в каталог intercept:
    cd intercept
  2. Запустите скрипт конфигурации:
    ./configure
    При необходимости укажите любые нужные параметры конфигурации.
  3. Скомпилируйте исходный код:
    make
  4. Установите инструмент intercept:
    make install

Параметры конфигурации для intercept

  • --single
    Запустить intercept в нераспределённом режиме.

  • --with-pfring=PATH
    Укажите путь к исходникам библиотеки PF_RING.

  • --with-debug
    Скомпилировать intercept с поддержкой отладки, логи сохраняются в файл.

Установка tcpcopy на онлайн-сервере

  1. Перейдите в каталог tcpcopy:
    cd tcpcopy
  2. Запустите скрипт конфигурации:
    ./configure
    При необходимости укажите нужные параметры конфигурации.
  3. Скомпилируйте исходный код:
    make
  4. Установите инструмент tcpcopy:
    make install

Параметры конфигурации для tcpcopy

  • --offline
    Воспроизвести TCP-потоки из pcap-файла.

  • --pcap-capture
    Захватывать пакеты на канальном уровне.

  • --pcap-send
    Отправлять пакеты на канальном уровне вместо IP-уровня.

  • --with-pfring=PATH
    Укажите путь к исходникам библиотеки PF_RING.

  • --set-protocol-module=PATH
    Настроить tcpcopy на работу с внешним модулем протокола.

  • --single
    Если и intercept, и tcpcopy сконфигурированы с опцией --single, только один экземпляр tcpcopy будет работать с intercept, что повышает производительность.

  • --with-tcmalloc
    Использовать tcmalloc вместо malloc.

  • --with-debug
    Скомпилировать tcpcopy с поддержкой отладки, логи сохраняются в файл.

Запуск TCPCopy

Предположим, что и tcpcopy, и intercept сконфигурированы с помощью ./configure.

  1. На целевом сервере, где работают серверные приложения:

    Настройте правила маршрутизации, чтобы направлять ответные пакеты на вспомогательный сервер. Например, если 61.135.233.161 — это IP-адрес вспомогательного сервера, используйте следующую команду маршрутизации, чтобы направить все ответы от клиентов из диапазона 62.135.200.x на вспомогательный сервер:

    route add -net 62.135.200.0 netmask 255.255.255.0 gw 61.135.233.161

  2. На вспомогательном сервере, где запущен intercept (требуется root-права или возможность CAP_NET_RAW):

    ./intercept -F <filter> -i <device>

    Обратите внимание, что формат фильтра такой же, как у pcap-фильтра. Например:

    ./intercept -i eth0 -F 'tcp and src port 8080' -d

    В этом примере intercept будет захватывать ответные пакеты от TCP-приложения, слушающего порт 8080, используя сетевое устройство eth0.

    Пожалуйста, учтите, что ip_forward не включён на вспомогательном сервере.

  3. На исходном онлайн-сервере (требуется root-права или возможность CAP_NET_RAW):

    ./tcpcopy -x localServerPort-targetServerIP:targetServerPort -s <intercept server> [-c <ip range>]

    Например (предположим, что 61.135.233.160 — это IP-адрес целевого сервера):

    ./tcpcopy -x 80-61.135.233.160:8080 -s 61.135.233.161 -c 62.135.200.x

    В этом примере tcpcopy захватывает пакеты на порту 80 с текущего сервера, изменяет IP-адрес клиента на один из диапазона 62.135.200.x и отправляет эти пакеты на порт 8080 целевого сервера (61.135.233.160). Он также подключается к 61.135.233.161, чтобы запросить intercept пересылать ответные пакеты. Параметр -c необязателен, но здесь используется для упрощения правил маршрутизации.

Примечание

Скачать инструмент