5、AutoImage ダウンローダーは、コンピュータビジョンプロジェクトにおいて、画像データを収集することが重要な課題です。Andrew Ng が言ったように、大量のデータセットを収集できれば、アルゴリズムは重要ではなくなります。データはモデルの性能と精度を向上させる上で重要な役割を果たします。
# 必要なモジュールと関数をインポート
from simple_image_download import simple_image_download as simp
# 画像ダウンロードを処理するためのレスポンスオブジェクトを作成
response = simp.simple_image_download
# キーワードを設定
keyword = "Dog" # ダウンロードする画像のキーワードを「Dog」に指定
# 画像をダウンロード
try:
response().download(keyword, 20) # ダウンロードメソッドを呼び出し、「Dog」というキーワードの画像を20枚ダウンロードしようとする
print("画像が正常にダウンロードされました。") # ダウンロードが成功した場合、成功メッセージを出力
except Exception as e:
print("エラーが発生しました:", e) # ダウンロード中に例外が発生した場合、エラー情報を出力
6、ポートスキャナー ネットワークセキュリティについて話しましょう!
コンピュータネットワークにおいて、ポートは異なるプロセスやサービスが接続し、ネットワークを介してデータを交換するための通信エンドポイントです。ポートは数値で識別され、特定のプロトコルに関連付けられています。
# ネットワーク接続のためにsocketライブラリをインポート
import socket
# 出力結果をより読みやすくするためにPrettyTableライブラリをインポート
from prettytable import PrettyTable
# よく使われるポートとその潜在的なセキュリティ脆弱性の説明を含む辞書を定義
vulnerabilities = {
80: "HTTP(ハイパーテキスト転送プロトコル) - 非暗号化のウェブトラフィック用",
443: "HTTPS(安全なHTTP) - 暗号化されたウェブトラフィック用",
22: "SSH(安全シェルプロトコル) - 安全なリモートアクセス用",
21: "FTP(ファイル転送プロトコル) - ファイル転送用",
25: "SMTP(シンプルメール転送プロトコル) - 電子メール転送用",
23: "Telnet - リモート端末アクセス用",
53: "DNS(ドメインネームシステム) - ドメイン名解決用",
110: "POP3(郵便局プロトコル第3版) - 電子メール取得用",
143: "IMAP(インターネットメッセージアクセスプロトコル) - 電子メール取得用",
3306: "MySQL - MySQLデータベースアクセス用",
3389: "RDP(リモートデスクトッププロトコル) - Windowsのリモートデスクトップ接続用",
8080: "HTTP代替ポート - HTTPの副ポートとして一般的に使用される",
8000: "HTTP代替ポート - HTTPの副ポートとして一般的に使用される",
8443: "HTTPS代替ポート - HTTPSの副ポートとして一般的に使用される",
5900: "VNC(バーチャルネットワークコンピューティング) - リモートデスクトップアクセス用",
# 必要に応じてさらにポートとそのセキュリティ脆弱性の説明を追加できます
}
# 開放ポートとその潜在的なセキュリティ問題を表示する関数を定義
def display_table(open_ports):
table = PrettyTable(["開放ポート", "潜在的セキュリティ問題"])
for port in open_ports:
vulnerability = vulnerabilities.get(port, "このポートには一般的なサービスに関連する既知の脆弱性はありません")
table.add_row([port, vulnerability])
print(table)
# 目標ホストの一般的なポートをスキャンする関数を定義
def scan_top_ports(target):
open_ports = [] # 開放ポートのリストを格納
top_ports = [21, 22, 23, 25, 53, 80, 110, 143, 443, 3306, 3389, 5900, 8000, 8080, 8443] # 一般的な15のポートを定義
for port in top_ports:
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(1) # 接続のタイムアウト時間を設定
result = sock.connect_ex((target, port))
if result == 0:
open_ports.append(port)
sock.close()
except KeyboardInterrupt:
sys.exit()
except socket.error:
pass
return open_ports
# メイン関数
def main():
target = input("スキャンするウェブサイトのURLまたはIPアドレスを入力してください:")
open_ports = scan_top_ports(target)
if not open_ports:
print("目標ホストには開放されたポートがありません。")
else:
print("開放されたポートとその関連する潜在的なセキュリティ問題:")
display_table(open_ports)
# このスクリプトが直接実行された場合
if __name__ == "__main__":
main()