私は、さまざまなPythonのドキュメント、フォーラム、およびその他の人々の質問を通してオンラインで調べてみましたが、私はこの同じ質問を誰も見つけられませんでした。なぜLinux上のPythonソケットでのポートスキャンがWindows上で遅くなるのですか?
私のスクリプトは、通常、ポート1〜9999に接続しようとするソケット接続を作成し、ポートが開いているときにのみ通知します。 Windowsでこれを実行すると、次のポートに移動する前にポートをスキャンするのに1秒かかります(1000ポートの場合は60ポート/ m〜16.5m)。私はLinux上で同じスクリプトを実行すると、9999のすべてのポートを非常に迅速に循環させ、同じ結果を返すでしょう。
私はクロスコンパチブルツールを構築できることを望んでいましたが、Linuxのように見えます は、ネットワーキングの必要性に関しては、より良いオペレーティングシステムですか?私は私の処分で両方を持っているので、私はもう一方を使っても構いません。私は両方のオペレーティングシステムでほぼ同じ速度でポートスキャンを行うために行うことができることがあるかどうかを知りたいだけです。それ以外の場合は、Windows上/ Windows用に多くの時間を費やすことはありません。
速度の違いは、現在のネットワークに関係なく同じです。
私の質問は次のとおりです:
•同じ機能が与えられていると、なぜLinuxと比較してパフォーマンスが異なるのですか?
•linux上のように、ポートのスキャンを高速にするためにできることはありますか?ここ
--edit--
は、私は、ポート
をチェックするために使用する作品だdef whole_scan(Host_):
service = ''
host = Host_
max_port = 9999
min_port = 1
def scan_host(host, port, r_code = 1):
try:
s = socket(AF_INET, SOCK_STREAM)
code = s.connect_ex((host, port))
if code == 0:
r_code = code
s.close()
except Exception, e:
pass
return r_code
hostip = gethostbyname(host)
for port in range(min_port, max_port):
try:
response = scan_host(host,port)
if response == 0:
try:
service = getservbyport(port)
except Exception, e:
service = 'n/a'
print(" |--port: %d\t%s" % (port,service.upper()))
except Exception, e:
pass
私も自分のファイアウォールが無効になっていると、私のレジストリに値を追加すると、接続の制限を無効にするには確認しましたパフォーマンスに変化はありませんでした。私は窓口にいます。
unixのために建てられた選択する際に、Linuxベースのシステムを含むUNIXのいずれかのブランドが、間違いなくエッジを持っている:あなたは、ホスト名の代わりにIPアドレスを使用していることを排除することができますネットワーキングプラットフォーム。それは言われている、それは他の何かがここで働いている可能性が高いです。あなたの窓にファイアウォールを有効にしていますか? RST、(フィルタリングされていない)閉じたポートを通知するACKパケットをブロックする可能性があります。 – spectras
@spectras私のラップトップのAVは無効になっており、netsh advfirewall show allprofilesはすべてのファイアウォールがオフであることを示しています。私は何かが必要だと思っていますが、私はそれを見つけるのが苦労しています – saniboy
あなたは両方のOSのための数字で簡素化された自己完結型のベンチマークを提供できますか?ポートスキャン(ブロッキング対ノンブロッキング、パラレル対シーケンシャル、接続対シン)をブロックする方法は数多くありますので、具体的な例と実際の数を組み合わせると良いでしょう。 –