
Легковесная утилита для обмана сканеров портов
Этот скрипт предназначен для открытия любого количества сокетов (от 1024 до 65535).
Значения ниже 1024 тоже работают, но для этого нужно быть root-пользователем.
Это может быть полезно, когда вы не хотите, чтобы кто-то картографировал ваше устройство
чтобы увидеть, что у вас запущено, так что это небольшой шаг для противодействия разведке.
Portforge.cr использует встроенную в компилятор Crystal технику под названием Fibers.
Они очень похожи на системные потоки, но Fibers гораздо легче
а выполнение управляется через процесс 1.
Чем больше диапазон вы выберете, тем дольше скрипту потребуется
загрузить каждый сокет, но я постарался максимально оптимизировать скрипт
так что это должно занять всего пару минут (конечно, в зависимости от системы).
Скрипт работает в 2 этапа.
Сначала он выполняет собственное сканирование системы, чтобы узнать, какой порт уже открыт.
Затем открытые порты помещаются в один список, а закрытые порты — в другой список.
Следующий шаг — открытие закрытых портов, поэтому скрипт выбирает список со всеми закрытыми
портами и открывает сокет на каждом из них.
Пока основной fiber открывает сокет на каждом порту,
другой fiber вызывается под основным, который ожидает входящие соединения и сразу закрывает их.
Этот процесс повторяется бесконечно, или пока вы не прервёте скрипт.
crystal build portforge.cr
./portforge IP startport endport
Первое изображение — portforge.cr в работе, второе — результат сканирования Nmap.
Как видите, Nmap считает, что я запускаю все эти службы, хотя на самом деле работает только portforge.cr.
