From 900c92cfe0bd888fe835c3c78657a4b4159211ca Mon Sep 17 00:00:00 2001 From: Ethan Date: Wed, 21 Aug 2024 10:40:49 +0800 Subject: [PATCH 1/2] Add port scanning script. --- .../Port Scanner/Images/output.png | Bin 0 -> 64114 bytes BasicPythonScripts/Port Scanner/README.md | 28 +++++++++++ .../Port Scanner/port_scanner.py | 46 ++++++++++++++++++ .../Port Scanner/requirements.txt | 1 + 4 files changed, 75 insertions(+) create mode 100644 BasicPythonScripts/Port Scanner/Images/output.png create mode 100644 BasicPythonScripts/Port Scanner/README.md create mode 100644 BasicPythonScripts/Port Scanner/port_scanner.py create mode 100644 BasicPythonScripts/Port Scanner/requirements.txt diff --git a/BasicPythonScripts/Port Scanner/Images/output.png b/BasicPythonScripts/Port Scanner/Images/output.png new file mode 100644 index 0000000000000000000000000000000000000000..9435f42fd46ab6e325d0d2bf1b7602c75f1bf92f GIT binary patch literal 64114 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 literal 0 HcmV?d00001 diff --git a/BasicPythonScripts/Port Scanner/README.md b/BasicPythonScripts/Port Scanner/README.md new file mode 100644 index 000000000..5a3e1fdf6 --- /dev/null +++ b/BasicPythonScripts/Port Scanner/README.md @@ -0,0 +1,28 @@ +# Package/Script Name +Port Scanner +## Short description of package/script + +- Use nmap to scan and detect the specified server port +- You can also use this script to customize it to achieve the effect you want. + +## Setup instructions +1. First you need to install nmap, centos as an example. + +``` +yum install nmap +``` + +2. Installing NAMP's Python library + +``` +pip3 install python-nmap +``` + +## Output +images link : +Images/output.png +![preview]() + + +## Author(s) +Ethan diff --git a/BasicPythonScripts/Port Scanner/port_scanner.py b/BasicPythonScripts/Port Scanner/port_scanner.py new file mode 100644 index 000000000..33ab51234 --- /dev/null +++ b/BasicPythonScripts/Port Scanner/port_scanner.py @@ -0,0 +1,46 @@ +import sys +import nmap + +def main(): + input_data = input("Please input hosts and ports (e.g., '192.168.1.1 80,443'): ") + scan_row = input_data.strip().split() + + if len(scan_row) != 2: + print("Error! Please provide both hosts and ports.") + sys.exit(1) + + hosts = scan_row[0] + ports = scan_row[1] + + try: + nm = nmap.PortScanner() + except nmap.PortScannerError as e: + print(e) + print("Nmap not found! Ensure that Nmap is installed.") + sys.exit(1) + except Exception as e: + print(f"Unexpected error: {str(e)}") + sys.exit(1) + + try: + print(f"Scanning {hosts} on ports {ports}...") + nm.scan(hosts=hosts, arguments=f'-v -sS -p {ports}') + except Exception as e: + print(f"Scan error: {str(e)}") + sys.exit(1) + + for host in nm.all_hosts(): + print('-------------------------------------------') + print(f'Host : {host} ({nm[host].hostname()})') + print(f'State : {nm[host].state()}') + + for proto in nm[host].all_protocols(): + print('-------------------') + print(f'Protocol : {proto}') + ports = sorted(nm[host][proto].keys()) + for port in ports: + state = nm[host][proto][port]['state'] + print(f'Port : {port}\tState : {state}') + +if __name__ == "__main__": + main() diff --git a/BasicPythonScripts/Port Scanner/requirements.txt b/BasicPythonScripts/Port Scanner/requirements.txt new file mode 100644 index 000000000..16798c6a1 --- /dev/null +++ b/BasicPythonScripts/Port Scanner/requirements.txt @@ -0,0 +1 @@ +python-nmap=>0.7.1 \ No newline at end of file From 4d1e362b29f31eedd141f7a70cdb83f7025db5d3 Mon Sep 17 00:00:00 2001 From: Ethan Date: Wed, 21 Aug 2024 10:43:31 +0800 Subject: [PATCH 2/2] Update README.md --- BasicPythonScripts/Port Scanner/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/BasicPythonScripts/Port Scanner/README.md b/BasicPythonScripts/Port Scanner/README.md index 5a3e1fdf6..600dcc9f2 100644 --- a/BasicPythonScripts/Port Scanner/README.md +++ b/BasicPythonScripts/Port Scanner/README.md @@ -21,7 +21,8 @@ pip3 install python-nmap ## Output images link : Images/output.png -![preview]() + +![preview](https://github.com/Ethan-622/Awesome_Python_Scripts/blob/main/BasicPythonScripts/Port%20Scanner/Images/output.png) ## Author(s)