4.2 KiB
id | title | challengeType | forumTopicId | helpCategory | dashedName |
---|---|---|---|---|---|
5e46f979ac417301a38fb932 | ポートスキャナー | 10 | 462372 | Python | port-scanner |
--description--
You will be working on this project with our Replit starter code.
- Start by importing the project on Replit.
- Next, you will see a
.replit
window. - Select
Use run command
and click theDone
button.
Python カリキュラムの対話式教育コンテンツを引き続き開発中です。 現在、下記の freeCodeCamp.org YouTube チャンネルで、このプロジェクトの完了に必要なすべての知識について説明する動画をいくつか公開しています。
-
Python for Everybody Video Course (14 hours)
-
Learn Python Basics in Depth (4 hours)
-
Intermediate Python Course (6 hours)
--instructions--
Python を使用してポートスキャンプログラムを作成してください。
port_scanner.py
ファイルで、target
と port_range
を引数に取る get_open_ports
という関数を作成してください。 target
には URL または IP アドレスを指定できます。 port_range
は、チェック対象のポート範囲の最初と最後を示す 2 つの数値のリストです。
関数呼び出しの例を次に示します。
get_open_ports("209.216.230.240", [440, 445])
get_open_ports("www.stackoverflow.com", [79, 82])
この関数は、指定した範囲の中で開いているポートのリストを返す必要があります。
get_open_ports
関数はまた、オプションの 3 つ目の引数として、「詳細」モードであることを示す True
を受け取る必要があります。 これが true に設定されている場合、関数はポートのリストの代わりに説明的な文字列を返す必要があります。
詳細モードで返される文字列の形式は次のとおりです ({}
で囲まれたテキストは表示すべき情報を示しています)。
Open ports for {URL} ({IP address})
PORT SERVICE
{port} {service name}
{port} {service name}
common_ports.py
の辞書を使用して、各ポートの正しいサービス名を取得できます。
たとえば、関数を
port_scanner.get_open_ports("scanme.nmap.org", [20, 80], True)
ように呼び出した場合は、次を返す必要があります。
Open ports for scanme.nmap.org (45.33.32.156)
PORT SERVICE
22 ssh
80 http
必ず適切なスペースと改行文字を含めてください。
get_open_ports
関数に渡された URL が無効な場合、関数は文字列 "Error: Invalid hostname" を返す必要があります。
get_open_ports
関数に渡された IP アドレスが無効な場合、関数は文字列 "Error: Invalid IP address" を返す必要があります。
開発
port_scanner.py
にコードを記述してください。 開発には main.py
を使用してコードをテストすることができます。 「実行」ボタンをクリックすると main.py
が実行されます。
テスト
このプロジェクトの単体テストは test_module.py
にあります。 すでに test_module.py
から main.py
にテストをインポートしてあります。 「実行」ボタンを押すと自動的にテストが実行されます。
提出
プロジェクトの URL をコピーし、freeCodeCamp に提出してください。
--hints--
すべての Python テストが成功する必要があります。
--solutions--
# Python challenges don't need solutions,
# because they would need to be tested against a full working project.
# Please check our contributing guidelines to learn more.