Python скрипт для сканирования портов и получения информации о службах

Python для сканирования портов и получения информации о службах

Предыдущая статья о Python была посвящена удаленному сбору информации о системе, в этой статье я поделюсь с вами простым скриптом на Python, который сканирует порты, чтобы найти открытый порт и получить информацию о службах, работающих на этом порту.

Еще по теме: Анализ вредоносных программ на Python

Python для сканирования портов и получения информации о службах

Библиотека сокетов в Python используется для установления соединения [TCP или UDP].

Функция proghelp используется, чтобы показать использование, если есть какая-то ошибка при запуске программы.

sys.argv используется для получения аргумента командной строки из консоли. Требуется 2 аргумента с именем программы, то есть IP-адрес и порт для сканирования.

Функция Scan () принимает два параметра: IP-адрес и номер порта. socket.gethostbyname (ip) преобразует доменное имя в IP-адрес (поскольку машины работают с цифрами).

port1 = int (port) преобразует номер порта в целое число, потому что мы взяли значение порта из командной строки, и все, что мы вводим в командную строку в python, рассматривается как строка. Итак, нам нужно преобразовать его в int, чтобы это работало.

При использовании программирования сокетов в python могут возникать определенные исключения, которые могут быть вызваны неразрешенным именем хоста, ошибкой соединения и т. Д. Хорошая привычка для написания сценариев — помещать определенный код в блок try и except.

import socket
import sys
import string
def proghelp():
	'''***Printing Help
		A Simple socket script that is used to test if the port is open and grab its banner
		Usage: prog.py ipaddress port
	'''
if len(sys.argv) < 3:
	print("Not Enough Arguments.")
	print(proghelp.__doc__)
	print("Program Exiting...")
	exit()

ip=sys.argv[1]
port=sys.argv[2]

def scan(ip, port):
	ip1 = socket.gethostbyname(ip);
	port1=int(port)
	print("Scanning IP address: "+ip +" : "+ip1+":"+port)
	try:
                s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
		r= s.connect_ex((ip1,port1))
		if r == 0:
			print("IP Address: "+ip)
			print("Port "+ port+" is open.")
			bann= s.recv(1024)
			return bann.decode('utf-8').strip()			
		else:
			print("Port is Closed...")
			exit()
	except socket.error as err:
		return
	except socket.gaierror:
		return


print(scan(sys.argv[1],sys.argv[2]))

Python для сканирования портов и получения информации о службах

Я написал этот скрипт для сканирования только одного порта. Вы можете доработать скрипт и сканировать больше портов.

Еще по теме: Взлом WiFi-сетей используя Python

ВКонтакте
OK
Telegram
WhatsApp
Viber

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *