Обратите внимание, что это решение является теоретическим, и я не проверял его самостоятельно. Я не испытывал это раньше (или не осознавал), и, надеюсь, я не буду испытывать это больше.
Я предполагаю, что вы не можете редактировать ни исходный код клиента, ни исходный код сервера. Кроме того, я предполагаю, что настоящая проблема - это сервер, который не может запуститься.
Запустите сервер со стартовым приложением. Если целевой порт, который будет привязан сервером, используется каким-либо процессом, создайте RST (пакет сброса) с помощью необработанных сокетов.
В приведенном ниже сообщении кратко описывается, что такое пакет RST (взято из http://forum.soft32.com/linux/killing-socket-connection-cmdline-ftopict473059.html)
Вы должны взглянуть на генератор пакетов "raw socket".
И ты должен быть суперпользователем.
Возможно, вам также нужен сетевой анализатор.
http://en.wikipedia.org/wiki/Raw_socket
http://kerneltrap.org/node/3072 - TCP RST атаки
http://search.cpan.org/dist/Net-RawIP/lib/Net/RawIP.pm - модуль Perl
http://mixter.void.ru/rawip.html - необработанный IP в C
В версии C вам нужен пакет TH_RST.
RST предназначен для обработки следующего случая.
A и B устанавливают соединение.
B перезагружается и забывает об этом.
A отправляет пакет B на порт X с порта Y.
B отправляет обратно пакет RST, говоря: "о чем ты говоришь? Я не
иметь связь с вами. Пожалуйста, закройте это соединение. "
Таким образом, вы должны знать / подделывать IP-адрес B и знать оба порта X
и Y. Один из портов будет хорошо известным номером порта. Другой
Вы должны это выяснить. Я думаю, вам также нужно знать последовательность
число.
Обычно люди делают это с помощью анализатора. Вы можете использовать переключатель с
функция зеркалирования пакетов или запуск сниффера на хосте A или B.
Как примечание, Comcast сделал это, чтобы отключить P2P-трафик.
http://www.eff.org/wp/packet-forgery-isps-report-comcast-affair
В нашем случае нам не нужно использовать анализатор, поскольку мы знаем следующую информацию:
Итак, вы должны знать / подделывать IP-адрес B и знать оба порта X
и Y
X = Y и IP-адрес B - localhost
В учебнике по http://mixter.void.ru/rawip.html описано, как использовать необработанные сокеты.
ПРИМЕЧАНИЕ о том, что любой другой процесс в системе может также украсть наш целевой порт из временного пула. (например, Mozilla Firefox) Это решение не будет работать на соединениях такого типа, поскольку IP-адрес X! = Y B - не localhost, а что-то вроде 192.168.1.43 для eth0. В этом случае вы можете использовать netstat для получения IP-адреса X, Y и B, а затем создать соответствующий пакет RST.