"Сканер Портов" на Python. 1 часть.

"Сканер Портов" на Python. 1 часть.

BLACK CODE

Пишем свой аналог NMAP на Python. Часть 1.

Предупреждение! Я не профессионал, так что в теории могу ошибиться!

Всем привет! Это канал BLACK CODE. Сегодня мы начнём серию из 3-х статьей по созданию своего сканера портов на Python.


Установка Python

Если у вас нет Питона, то скачать вы его можете на официальном сайте.

Официальный сайт Python

В установке нет ничего сложного. Думаю, что вы разберётесь, а если появятся какие-то вопросы, то просто гуглите, ведь любой хороший программист должен уметь хорошо гуглить :).

Выбор среды разработки

В данном вопросе все очень индивидуально.

Кому-то нравится писать во встроенной IDLE(не советую её использовать).

Я могу порекомендовать очень классную IDE для Python, которая идеально подходить для новичков(и не только, я сам ей пользуюсь) - Wing 101, вы можете скачать её на официальном сайте.

Wing 101

Конечно, вы можете пользоваться и обычными редакторами кода - Sublime Text, Vim, VS Code и т.д. Ведь всё это - вкусовщина.

Библиотека Socket

Практически все современные ЯПы имеют библиотеки, а питон не исключение. Сегодня я расскажу о библиотеке Socket, с помощью неё мы и напишем сканер портов.

Если говорить простым языком, то Socket создана для сетевого программирования на Python, в основном это используется для обмена какими-либо данными.

Библиотека Socket уже изначально встроена в стандартный пакет Python'а.

Импорт socket в Python:

import socket

Чтобы создать сам сокет:

s = socket.socket()

У socket есть много функций, но сегодня мы будем рассматривать только две:

Подключение к серверу:

s = socket.socket()
s.connect(('адрес', порт))

Пример:

s = socket.socket()
s.connect(('google.com', 80))

Таймаут для подключения:

s = socket.socket()
s.settimeout(время)

Пример:

s = socket.socket()
s.settimeout(0.5)

Главная функция программы

Давайте теперь напишем главную функцию программы, где и будут происходить все основные действия:

def main(): # Главная функция

host = input('[*] Enter Host: ') # ввод сайта для сканирования

port = int(input('[*] Enter Port: ')) # ввод порта для сканирования

try: # пробуем сделать следующе е...

s = socket.socket() # создания сокета

s.settimeout(0.5) # задаём таймаут для подключения

scan = s.connect((host, port)) # пробуем подключится к данным, которые ввёл пользователь

print('[+] Host: ' + host + ' Port: ' + str(port) + ' - OPENED') # Если всё прошло без ошибкок, то выводим, что порт открыт

except socket.error: # если при выполнение произошла socket ошибка, то...

print('[-] Host: ' + host + ' Port: ' + str(port) + ' - CLOSED') # Выводим, что порт закрыт

Полный код программы

# -*- coding: utf-8 -*-



import socket # импорт библиотеки socket



def main(): # Главная функция

host = input('[*] Enter Host: ') # ввод сайта для сканирования

port = int(input('[*] Enter Port: ')) # ввод порта для сканирования


try: # пробуем сделать следующе е...

s = socket.socket() # создания сокета

s.settimeout(0.5) # задаём таймаут для подключения 

scan = s.connect((host, port)) # пробуем подключится к данным, которые ввёл пользователь

print('[+] Host: ' + host + ' Port: ' + str(port) + ' - OPENED') # Если всё прошло без ошибкок, то выводим, что порт открыт

except socket.error: # если при выполнение произошла socket ошибка, то...

print('[-] Host: ' + host + ' Port: ' + str(port) + ' - CLOSED') # Выводим, что порт закрыт



main() # Вызов главной функции


Полный код программы(кликабельно)

Тестируем программу

Чтобы запустить программу на Python через Терминал(cmd) нужно переместиться в папку с программой при помощи "cd". (cd папка).

А после вводите python3 названиефайла.py(если не сработает, то пишите просто python).

Давайте протестируем программу, которую мы сегодня написали:

Тестирование сканера портов

Всё отлично, работает! Порт 80 отвечает за HTTP соединение, так что он открыт на всех сайтах.

Чтобы запустить python файл в IDE (Wing 101) нужно просто нажать на кнопку "Run".


На этом всё, в первой части мы написали самый простейший сканер портов, который только можно себе представить, в следующих статьях будет что-то более серьёзное :). Подписывайтесь на BLACK CODE, чтобы не пропустить следующие статьи.

Надеюсь, что вы узнали что-то новое для себя.

Вся информация предоставлена исключительно с целью ознакомления. Мы не несём ответственности за ваши действия.


Канал: BLACK CODE

Админ: @blackcode_admin

Report Page