Если по каким то причинам отсутствует возможность использовать Nmap или любой другой сканер сети, то в стандартном наборе ОС Linux есть программы и утилиты которые можно заставить работать на наши цели. В целом, почти все в Linux можно использовать как технологии двойного назначения.
Netcat
Telnet
Perl или Python
Raw sockets (через /dev/tcp)
Hping3 (не входит в стандартный набор ОС)
// Я написал простой BASH скрипт для демонстрации
#!/bin/bash
# Функция для сканирования с использованием netcat
scan_with_netcat() {
local target_ip=$1
local port=$2
nc -vz "$target_ip" "$port"
}
# Функция для сканирования с использованием telnet
scan_with_telnet() {
local target_ip=$1
local port=$2
telnet "$target_ip" "$port"
}
# Функция для сканирования с использованием hping3
scan_with_hping3() {
local target_ip=$1
local port=$2
hping3 -c 1 -S -p "$port" "$target_ip"
}
# Функция для сканирования с использованием Perl
scan_with_perl() {
local target_ip=$1
local start_port=$2
local end_port=$3
for port in $(seq "$start_port" "$end_port"); do
perl -MIO::Socket::INET -e '
$target_ip = $ARGV[0];
$port = $ARGV[1];
$socket = IO::Socket::INET->new(
PeerAddr => $target_ip,
PeerPort => $port,
Proto => "tcp",
Timeout => 1
);
if ($socket) {
print "Port $port is open\n";
close($socket);
}
' "$target_ip" "$port"
done
}
# bash scan (raw sockets /dev/tcp)
scan_with_bash_raw_socket() {
local target_ip=$1
local start_port=$2
local end_port=$3
for ((port = start_port; port <= end_port; port++)); do
(echo >/dev/tcp/"$target_ip"/"$port") >/dev/null 2>&1 && echo "Port $port is open"
done
}
# Запрос пользовательского ввода
echo "Выберите метод сканирования:"
echo "1. Netcat"
echo "2. Telnet"
echo "3. hping3 ---need apt install hping3"
echo "4. Perl ---need install - cpan install IO::Socket::INET"
echo "5. bash scan (raw sockets /dev/tcp)"
read -p "Введите номер метода сканирования: " scan_method
read -p "Введите IP-адрес для сканирования: " target_ip
# Проверка выбора метода сканирования и выполнение соответствующей функции
case $scan_method in
1)
read -p "Введите порт для сканирования: " port
scan_with_netcat "$target_ip" "$port"
;;
2)
read -p "Введите порт для сканирования: " port
scan_with_telnet "$target_ip" "$port"
;;
3)
read -p "Введите порт для сканирования: " port
scan_with_hping3 "$target_ip" "$port"
;;
4)
read -p "Введите начальный порт: " start_port
read -p "Введите конечный порт: " end_port
scan_with_perl "$target_ip" "$start_port" "$end_port"
;;
5)
read -p "Введите начальный порт: " start_port
read -p "Введите конечный порт: " end_port
scan_with_bash_raw_socket "$target_ip" "$start_port" "$end_port"
;;
*)
echo "Неверный выбор метода сканирования."
;;
esac
Создайте файл, скопируйте в него скрипт и дайте скрипту права на исполнение
// создать файл
touch scan_os.sh
//скируйте скрипт и дайте права
chmod +x scan_os.sh
//и запустите
./scan_os.sh