How to Build a Basic Port Scanner using Python and Node.js

Dec 10, 2022 | Programming

If you’re looking to dip your toes into the world of network security, a port scanner is an essential tool to understand. This guide will walk you through creating a basic Port Scanner using Python with an Express Server, perfect for testing the security of your own network. Let’s get started!

What is a Port Scanner?

A port scanner is akin to a fisherman checking the waters for fish. In network security, it helps determine which ports on a machine are open and listening for connections, informing you about potential vulnerabilities. This makes it an excellent tool for both network administrators and security professionals.

Pre-requisites

  • Python (v2.7.0 or higher): Install from here.
  • Node.js (v0.10.0 or higher): Install from here.
  • Pip (v9.0.1 or higher): Install from here.

How to Run the Port Scanner

Via Terminal

  • Open your terminal and type npm install. This installs the dependencies for Express.
  • Next, type npm start to initiate multiple servers within the given port range.
  • In another terminal, execute python src/scanner.py and enter localhost or 127.0.0.1. This will scan all ports and display any open ones.
  • Note: If you want to scan remote hosts, please refer to the DISCLAIMER.md before proceeding.

Via UI

Follow these steps:

  1. Install Flask using PowerShell: pip install flask.
  2. If using Python 2.7, install virtual environment:
    • pip install virtualenv
    • To create a virtual environment: python -m virtualenv venv
  3. Activate the virtual environment: venv/Scripts/activate.
  4. Run the scanner: python src/mainScanner.py.
  5. Visit the port URL displayed in the terminal.

Running IP Scanner

  • Execute python src/ipscanner.py in your terminal and provide an IP address in the format XXX.XXX.XXX.YYY. This scans the addresses in the specified range and lists live addresses.

Configuration Options

The Express server configuration allows you to customize your scan:

  • range.low: Lowest port number (inclusive)
  • range.high: Highest port number (exclusive)
  • ipRange.low: Lowest IP address (inclusive)
  • ipRange.high: Highest IP address (inclusive)
  • count: Total number of ports
  • thread.count: Total concurrent threads.

Understanding the Code – An Analogy

Imagine you are a librarian tasked with cataloging every book in a vast library. Instead of searching for each book one after the other (which would be incredibly slow), you decide to employ a team of librarians (threads). Each librarian searches a different section of the library simultaneously. This is exactly what the port scanner does with multithreading, where it can check multiple ports and IP addresses at once, speeding up the scanning process significantly.

Troubleshooting

  • If you encounter problems, ensure all paths and variables are correctly set up in your system environment.
  • Make sure Python and Node.js are installed properly on your machine.
  • For more insights, updates, or to collaborate on AI development projects, stay connected with fxis.ai.

Conclusion

By following these steps, you’ve set up a basic port scanner capable of identifying open ports and potentially vulnerable services in your network or specified remote hosts. Be ethical in your usage of such tools and always perform scans on networks you own or have explicit permission to test.

At fxis.ai, we believe that such advancements are crucial for the future of AI, as they enable more comprehensive and effective solutions. Our team is continually exploring new methodologies to push the envelope in artificial intelligence, ensuring that our clients benefit from the latest technological innovations.

Stay Informed with the Newest F(x) Insights and Blogs

Tech News and Blog Highlights, Straight to Your Inbox