Python 2.7 portScanner - PullRequest
       11

Python 2.7 portScanner

0 голосов
/ 05 мая 2018

Мне интересно, почему мой модуль portScanner работает и утверждает, что все мои порты закрыты?

Я использую Python 2.7, потому что именно это использует Violent Python (книга).

Единственное решение, которое я до сих пор пробовал, - это установить DNS на 8.8.8.8, а в качестве вторичного на 8.8.4.4, потому что мой сокет использует "www.google.com" в качестве Ip.

Код:

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serverIp = socket.gethostbyname('www.google.com')

def pscan(port):
    try:
        s.connect((serverIp,port))
        return True
    except:
        return False

for x in range(1,101):  
    if pscan(x):
        print("Port %d is open!!!" % (x))
    else:
        print("Port %d is closed" % (x))

1 Ответ

0 голосов
/ 05 мая 2018

Вы создаете только один сокет и пытаетесь использовать его в нескольких соединениях. Это невозможно. Если вы посмотрите подробности исключения, вы заметите, что первый (порт 1) медленно выходит из строя из-за истечения времени ожидания соединения, но все следующие быстро выходят из строя из-за «Операция уже выполняется» .

Исправление заключается в создании нового сокета перед каждым connect. Кроме того, может быть полезно сократить время, когда он пытается соединиться с s.settimeout(1).

...