среда, 27 апреля 2011 г.

Python. Пишем простенький сканер портов

Всем доброе время суток. Сегодня мы будем писать очень простенький сканер портов. Итак приступим.
# -*-coding: cp1251

#Импортируем модуль для работы с сокетами
import socket

#определяем хост, который мы будем сканировать
HOST = 'localhost'

# Создаем список портов, которые мы хотим просканирвать
ports = [21, 22, 23, 25, 38, 43, 80, 109, 110, 115, 118, 119, 143,
194, 220, 443, 540, 585, 591, 1112, 1433, 1443, 3128, 3197,
3306, 4000, 4333, 5100, 5432, 6669, 8000, 8080, 9014, 9200]
#Теперь в цикле перебераем все указаные порты
for port in ports:
    #Создаем новый сокет
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # Устанавливаем таймаут, чтоб скрипт не зависал если попал
    # на открытый порт
    sock.settimeout(1)
    try:
        # Пробуем подключится
        sock.connect((HOST, port))
    except:
        # Если возникло исключение -- порт закрыт
        print ("Port %s closed" % port)
        continue
    try:
        #Если порт открыт - пробуем прочитать с него порцию информации
        result = sock.recv(1024)
        # если что-то удалось прочитать, выводим это
        print ("Received: %s port: %s" %port,result)
    except:
        # Если ничего прочитать не удалось -- просто выводим
        # информацию что порт открыт
        print ("Порт %s открыт." % port)
# закрываем сокет.
sock.close()

Комментариев нет:

Отправить комментарий