Этичный Хакинг На Python: Сканер Портов

Этичный Хакинг На Python: Сканер Портов

foxy

Всем привет, в этой статье мы напишем собственную утилиту для сканирования открытых портов. Писать мы будем на нашем любимом Питоне ;3 Он будет многопоточным, поэтому в скорости не уступит даже nmap-у.

______________________________________

Теория

Работать мы будем с сокетами, поэтому давайте разберемся, что это такое. Если говорить по научному, то сокет (socket) - это программный интерфейс, для обеспечения информационного обмена между процессами. Сокеты бывают клиентскими и серверными. Думаю из названия все понятно. Как же работает наша программа;

  1. Создаем сокет
s = socket.socket()

2. Посылаем его по нужному айпи и порту

3. Соответственно, если сокет дошел - порт открыт, если нет - закрыт

_______________________________________________

Кодинг

Для начала импортируем библиотеки:

import threading
import socket
from colorama import Fore, Back, Style, init

colorama нам нужна для более менее красивого интерфейса программы.

print(rf"{Fore.RED}Enter IP:")
ip = input()

Здесь мы берем на ввод ip нашей цели (вы можете сделать сразу input, но тогда colorama будет работать некорректно)

Так как сканер многопоточным - давайте введем функцию:

def portscan(port): 

Создаем сокет и выставляем Тайм Аут:

  s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  s.settimeout(1)

Пытаемся подключиться к жертве:

  try:
   conn = s.connect((ip, port))
   print(rf"{Fore.GREEN}Port: {port} is open")
   conn.close()
  except:
   pass

Зададим список портов, по которым будем подключаться:

ports = [20, 21, 22, 23, 25, 38, 43, 80, 109, 110, 115, 118, 119, 143,
194, 220, 443, 445, 540, 585, 591, 1112, 1433, 1443, 3128, 3197, 3306, 3389, 4000, 
4333, 5100, 5432, 6669, 8000, 8080, 8443, 9014, 9200]

Запускаем потоки:

for port in ports:
  t = threading.Thread(target=portscan, kwargs={'port': port}).start()

Вот мы и написали сканер портов, как видите - ничего сложного.

Вот такой будет вывод (кстати, порт 3389 служит для удаленного подключения😉)

____________________________________________


Это мощная утилита предназначена для сканирования узлов, определения уязвимостей


Report Page