Home

Awesome

Port Scanner

A basic Port Scanner :mag_right: using Python with an Express Server to test!

GitHub license GitHub code size in bytes GitHub last commit

Note: Please follow this link if you're a GSSoC participant. Keep watching this repo, we'll be opening more beginner-friendly issues.

With this port scanner, I just attempt to connect<sup>This is a form of "reconnaissance" for hackers and penetration testers</sup> at various ports, and do nothing else. If I'm able to connect to open ports, then I know at least the port is open.

Pre-requisites :rotating_light:

node-current GitHub top language

How to run? :rocket:

To run Port Scanner: (Via Terminal)

Note: You can enter remote host if you want to scan the ports for any remote host. Check the DISCLAIMER.md before doing this.

To run Port Scanner: (Via UI)

Install flask

Make sure you have Python27\Scripts path added to your system's environment variables.

1. In PowerShell,

pip install flask

Install virtual environment

This step is required only if you are using Python2.7, skip this step when running Python3.X.

2. For Python 2, (via pip)

In PowerShell,

pip install virtualenv
virtualenv --help

Kindly check this if pip installation fails.

Create virtual environment

3. Create a venv folder inside src,

python -m virtualenv venv
\Python27\Scripts\virtualenv.exe venv

Activate the virtual environment

4. Activate venv,

venv\Scripts\activate

5. Run mainScanner.py,

pip install flask
python src/mainScanner.py

6. Go to the port url returned by your terminal.

To run IP Scanner:

Configuration :gear:

The servers are opened at multiple ports, you can change the low range and high range for the ports to be listened by the Express server.

{
    "range": {
        "low": "1",
        "high": "8888"
    },
    "ipRange": {
        "low": "0",
        "high": "255"
    },
    "count": "10",
    "thread": { 
        "count": 8
    }
}

Contributing :handshake:

PRs Welcome CodeFactor Open Source Love

Please read our Code of Conduct.

We're accepting PRs for our open and unassigned issues. Please check CONTRIBUTING.md. We'd love your contributions! Kindly follow the steps below to get started:

1. Fork this repository.

2. Clone the forked repository.

git clone https://github.com/<your-github-username>/PortScanner

3. Navigate to the project directory.

cd PortScanner

4. Create a new branch.

git checkout -b <your_branch_name>

5. Make changes in source code.

6. Stage your changes and commit

git add .

git commit -m "<your_commit_message>"

7. Push your local commits to the remote repo.

git push -u origin <your_branch_name>

8. Create a PR to develop !

9. Congratulations! :tada: Sit and relax, you've made your contribution to Port Scanner project. :v: :heart:

Branching :construction:

git checkout feature/python3.8

Need for Multithreading :white_check_mark:

The ability of a process to execute multiple threads parallelly is called multithreading. Ideally, multithreading can significantly improve the performance of any program.

Imagine scanning substantial number of ports(range.high = 8888) consecutively. The process would require quite a long time.

This calls for the need of concurrency in different parts of this range(1-8888). That is, running different parts(1-1111, 1112-2222, 2223-3333...) of the same process at the same time. This would reduce the time required for completion by significant amount. The reduction in time can be related to the number of concurrent ranges(threads) being scanned simultaneously. Checkout the Performance Analysis for a follow up.

Performance using threads :dart:

Range(low-high)src/single/scanner.py (in milliseconds)src/scanner.py (in milliseconds)
1-8014324330862

CONST_NUM_THREADS : 8

Performance on the basis of number of threads :chart_with_downwards_trend:

Range of ports: 1-80

Number of threadsExecution time (in milliseconds)Compared Performances
27162750 % faster
44080871.51 % faster
83700374.17 % faster
163687074.26 % faster
323267477.19 % faster

Performance Analysis

Performance Analysis

Blog

Medium Story

Open Source Programs

<a href="https://www.leapcode.io/"><img src="./assets/leapcode.png" width="40%" height="10%"/></a>

We're now a part of Leapcode. It helps you contribute to open-source projects right from your first PR to working on major projects. It's still under construction and hopeful to have their platform up pretty soon. Click here to get an early access.

Useful resources :books:

Contributors :trophy:

GitHub issues GitHub pull requests

Name :medal_military:Social Media :wave:GitHub :octocat:
Vinit Shahdeo:bird: Twitter <br>:mortar_board: LinkedIn@vinitshahdeo
Kashish:bird: Twitter <br>:mortar_board: LinkedIn@Kashish121
Ishika Dubey:bird: Twitter <br>:mortar_board: LinkedIn@ishika1727

See the contribution graph here.

Admin

<a href="https://www.eatmy.news/2020/06/code-like-you-eat-i-mean-code-daily-as.html"><img src="https://raw.githubusercontent.com/vinitshahdeo/Water-Monitoring-System/master/assets/vinit-shahdeo.jpg" width="150px " height="150px" /></a>
Vinit Shahdeo
<a href="https://twitter.com/Vinit_Shahdeo"><img src="https://raw.githubusercontent.com/vinitshahdeo/Water-Monitoring-System/master/assets/twitter.png" width="32px" height="32px"></a> <a href="https://www.facebook.com/vinit.shahdeo"><img src="https://raw.githubusercontent.com/vinitshahdeo/Water-Monitoring-System/master/assets/facebook.png" width="32px" height="32px"></a> <a href="https://www.linkedin.com/in/vinitshahdeo/"><img src="https://raw.githubusercontent.com/vinitshahdeo/Water-Monitoring-System/master/assets/linkedin.png" width="32px" height="32px"></a>

License

FOSSA Status

TL;DR

Check out this gist if you're only looking for a Python script for scanning ports.



if (_.isAwesome(thisRepo)) {
  thisRepo.star(); // thanks in advance :p
}


GitHub followers Twitter Follow

<sup>This repository is intended for individuals to test their own equipment for weak security, and the author(@vinitshahdeo) will take no responsibility if it is put to any other use. Check DISCLAIMER.md</sup>

Made with Python Built with love