2017-02-12 12 views
-1

Ich versuche, einen Port-Scanner zu machen, wo der Benutzer eine Reihe von Ports zum Scannen auf einem Host eingeben kann, konvertiere ich die Eingabe von str zu int für den Bereich aber es sagt immer noch, dass es eine str ist. Hier ist mein Code:Selbst wenn ich ein Str zu int konvertiere, sagt es immer noch ein Str

os.system('cls') 
host = raw_input('Enter hostname or IP address: ') 
target = socket.gethostbyname(host) 
# converts hostname to IP address 

portRange1 = raw_input("Please enter the first number (x) in your range (x, y): ") 
portRange2 = raw_input("Please enter the second number (y) in your range (" + portRange1 + ", y): ") 
# asks user for range of ports to scan 

portRange1 = int(portRange1) 
portRange2 = int(portRange2) 
# converts variables from str to int 

os.system('cls') 
# clears console screen 

print 'Starting scan on host ' + target 
for port in range(portRange1 + ", " + portRange2): 
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
    result = sock.connect_ex((target, port)) 
    if result == 0: 
     print "Port {}:  Open".format(port) 
sock.close() 
choice() 
# scans for ports 0-1025 on host 

choice() 

Und mein Fehler ist:

File "swisshack_W2.py", line 61, in portScanner 
for port in range(portRange1, ", ", portRange2): 
TypeError: range() integer end argument expected, got str. 
+2

' ""' keine ganze Zahl ist. – user2357112

+1

'für Port im Bereich (portRange1 +", "+ portRange2):' '", "' ist was mit dir irrende ich denke – Nullman

+1

Auch der Code, den Sie gepostet werden, stimmt nicht mit der Fehlermeldung überein, die Sie gepostet haben. – user2357112

Antwort

2

Wenn Sie Ints in einen String hinzufügen, ", " Sie eine Zeichenfolge erhalten. Die range() Methode verwendet Ganzzahlargumente.

for port in range(portRange1, portRange2 + 1):

Spielen Sie mit dem interaktiven Python-Interpreter um Teile des Codes auszuprobieren.

help(range)

class range(object) 
| range(stop) -> range object 
| range(start, stop[, step]) -> range object 
| 
| Return an object that produces a sequence of integers from start (inclusive) 
| to stop (exclusive) by step. range(i, j) produces i, i+1, i+2, ..., j-1. 
| start defaults to 0, and stop is omitted! range(4) produces 0, 1, 2, 3. 
| These are exactly the valid indices for a list of 4 elements. 
| When step is given, it specifies the increment (or decrement). 
+0

Danke für die Hilfe :). –

Verwandte Themen