Задать вопрос
@ed_milson
Я

Как изменить TCP пакет на лету?

Всем привет.
Есть программа которая устанавливает tcp сокет с сервером и отправляет незашифрованные данные. Нужно изменять данные перед отправкой на сервер.
Я пробовал делать прокси на С # но программа замечает что прокси на локальном IP и перестает работать, поэтому единственный выход это подмена пакетов. Как это сделать? Это что-то типа спуфунга? Кто-то знает примеры с открытым кодом (желательно на С # или Java ну или С ++)? Или в какую искать?
  • Вопрос задан
  • 5086 просмотров
Подписаться 1 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 4
Rou1997
@Rou1997
но программа замечает что прокси на локальном IP и перестает работать

Вот пожалуй проще "сломать" систему защиты, если освоить реверс-инжиниринг, чем модифицировать трафик.
Второй вариант - если действительно проблема в локальном IP, то VPS арендуйте и пусть будет не на локальном.

Кто-то знает примеры с открытым кодом (желательно на С # или Java ну или С ++)?

Судя по вопросу пример с открытым исходным кодом вам не поможет, особенно на C++, его еще подите скомпилируйте, а так - тот же Wireshark (Pcap) и прочие подобные драйвера NT, еще вариант подменить системные DLL "оберткой" (паттерн hook, proxy), в частности wsock32.dll, готовых решений с таким принципом не видел - не развито почему-то, но можно попытаться написать самому.
Ответ написан
Комментировать
TrueBers
@TrueBers
Гуглю за еду
Ставьте хуки на функции работы с сокетами, типа send/sendto/recv/recvfrom. И в них можно изменять что угодно.
Ответ написан
@ajiekceu4
Если между сервером, на который отправляются данные и самой программой, есть шлюз на ОС Linux, то по идее можно установить nfqsed и при отправке с шлюза на сервер программы - менять интересующие значения в реальном времени.

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

https://sysadmin.ru/articles/izmenyaem-soderzhimoe...
Ответ написан
Комментировать
@Rawsock
Тестировал на linux, а именно подстановка точки в конце демена в HTTP:
https://hastebin.com/quloxoxuhe.cpp
Компиляция: gcc http_inject.c -o http_inject -lnetfilter_queue;
Ставим правило iptables на OUTPUT и запускаем: iptables -A OUTPUT -j NFQUEUE --queue-num 0; ./http_inject
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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