Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 7, 2018 12:53:44

LiamJonson
Зарегистрирован: 2018-11-05
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Не видит открытые порты

написал сканер портов,вроде все хорошо ,ошибок не выводит,работает и выводит что все порты закрыты.Но,прогоняю тот же диапазон в Nmap и там есть открытые порты.Почему мой код не видит открытые порты,что не правильно?

  import socket
#from termcolor import colored
import ipaddress
import threading
p =[]
def scan(host,port,orb):
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  # Создаем новый сокет
    sock.settimeout(4)  # Устанавливаем таймаут, чтоб скрипт не зависал если попал на открытый порт
    try:
        return sock.connect((HOST, port))  # Пробуем подключится
    except:
        return print("Port %s closed %s" %( port,host))  # Если возникло исключение -- порт закрыт
    else:
        with open (orb,'a') as jy:
            jy.write(host + port)
        return print("Порт %s открыт %s." % (port,host)) #выводим  информацию что порт открыт
    sock.close()# закрываем сокет.
spis =[]
with open ('111.txt','r') as gla:
    for i in gla:
        i = i.strip()
        try:
            n = ipaddress.ip_network(i)
            for ip in n:
                spis.append(ip)
        except   ValueError:
            print(' детектед ошибка -',ip)
ports = [524,61444,80] #Создаем список портов, которые мы хотим просканирвать
for i in spis:                #Теперь в цикле перебераем все указаные порты
    t1 = threading.Thread(target=scan, args=(spis.pop(),ports[0],'222.txt'))
    t2 = threading.Thread(target=scan, args=(spis.pop(), ports[1],'222.txt'))
    t3 = threading.Thread(target=scan, args=(spis.pop(), ports[2],'222.txt'))
    t1.start()
    t2.start()
    t3.start()
    t1.join()
    t2.join()
    t3.join()

Отредактировано LiamJonson (Ноя. 7, 2018 12:54:14)

Офлайн

#2 Ноя. 8, 2018 12:40:01

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Не видит открытые порты

LiamJonson
работает и выводит что все порты закрыты.Но,прогоняю тот же диапазон в Nmap и там есть открытые порты.
с чего такая увереность что нмап не врет?
LiamJonson
.Почему мой код не видит открытые порты,что не правильно?
вы уверены что порты открыты? а что говорит телнет?
Пподнимите виртуалку(или используйте реальный комп), поставте туда какойнить минимальный линукс, откройте потры, проверте своим скриптом и нмапом, потом закройте, проверте банальным телнетом что порты закрыты и повторите.
тогда будет понятно “где собака порылась”.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Ноя. 8, 2018 12:40:34)

Офлайн

#3 Ноя. 9, 2018 00:00:04

LiamJonson
Зарегистрирован: 2018-11-05
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Не видит открытые порты

PEHDOM
Пподнимите виртуалку(или используйте реальный комп), поставте туда какойнить минимальный линукс, откройте потры, проверте своим скриптом и нмапом, потом закройте, проверте банальным телнетом что порты закрыты и повторите.
тогда будет понятно “где собака порылась”.

действительно я забыл о простом телнет,и попробую с виртуалкой-посмотрим что по лучится

PEHDOM
с чего такая увереность что нмап не врет?

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

Офлайн

#4 Ноя. 9, 2018 10:14:19

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Не видит открытые порты

LiamJonson
но вы правы доверяй но проверяй
на самомо деле причина в алгоритме работы нмапа. Ваш алогритм очень прямолинейный, открываем сокет , пробуем подключиться, если получилось порт открыт, если нет - закрыт. нмап же работает на более низком уровне, использует tcp syn по умолчанию и не устанавливает до конца соединение.
SYN это используемый по умолчанию и наиболее популярный тип сканирования….. при таком сканировании TCP соединение никогда не устанавливается до конца….
источник https://nmap.org/man/ru/man-port-scanning-techniques.html
сотвевтенно если у вас порт отрыт но вы режете его с помощью ipfw, то нмап вполне может считать что порт таки открыт.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Ноя. 9, 2018 10:14:47)

Офлайн

#5 Янв. 15, 2019 22:57:34

LiamJonson
Зарегистрирован: 2018-11-05
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Не видит открытые порты

решил свою проблему,доработав функцию.Вычитал в книге что есть расширенный метод “connect”.От него и попробывал плясать-взлетело.Почему прошлый не работал так и не понял.Сижу за роутером-думал может он создает проблемы,ковырял его ковырял,вроде все в порядке.Но предыдущий код не видел открытых портов даже на моей машине.

 def connScan(host, port,tekst):
    s = socket(AF_INET, SOCK_STREAM)
    s.settimeout(2)
    result = s.connect_ex((str(host),int(port)))
    global w
    if result == 0:
        print(colored("Tcp {} - Port {} is open\n".format(host, port),'green'))
    else:
        print(colored("Tcp {} - Port {} is closed\n".format(host,port),'red'))
        s.close()


ну это так может кому пригодится

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version