2017-02-12 13 views
-1

ユーザーがホスト上でスキャンするポートの範囲を入力できるポートスキャナを作成しようとしています。それはまだそれがstrだと言います。ここに私のコードは次のとおりです。私はstrをintに変換しても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() 

そして、私のエラーは、次のとおりです。

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

は ' ""'整数でありません。 – user2357112

+1

'ポートの範囲(portRange1 +"、 "+ portRange2):' '"、 "'はあなたと一緒にいると思っています – Nullman

+1

また、投稿したコードが投稿したエラーメッセージと一致しません。 – user2357112

答えて

2

あなたは、文字列、", "にint型を追加すると、あなたは文字列を取得します。 range()メソッドは整数の引数をとります。

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

コードの断片を試してPythonの対話インタプリタで遊んでみてください。

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

助けてくれてありがとう。 –

関連する問題