Metadata-Version: 2.1
Name: findssh
Version: 1.4.0
Summary: find open servers on your IPv4 subnet, e.g. SSH
Home-page: https://github.com/scivision/findssh
Author: Michael Hirsch, Ph.D.
Author-email: scivision@users.noreply.github.com
License: UNKNOWN
Description: # Find SSH servers (without NMAP)
        
        [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.3336467.svg)](https://doi.org/10.5281/zenodo.3336467)
        [![Actions Status](https://github.com/scivision/findssh/workflows/ci_python/badge.svg)](https://github.com/scivision/findssh/actions)
        
        [![Language grade: Python](https://img.shields.io/lgtm/grade/python/g/scivision/findssh.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/scivision/findssh/context:python)
        [![PyPi versions](https://img.shields.io/pypi/pyversions/findssh.svg)](https://pypi.python.org/pypi/findssh)
        [![Maintainability](https://api.codeclimate.com/v1/badges/c7409d3c78d12c3df14b/maintainability)](https://codeclimate.com/github/scivision/findssh/maintainability)
        [![PyPi Download stats](http://pepy.tech/badge/findssh)](http://pepy.tech/project/findssh)
        
        Platform-independently find SSH servers (or other services with open ports) on an IPv4 subnet in pure Python WITHOUT NMAP.
        Scan entire IPv4 subnet in less than 1 second using Python standard library `asyncio`  coroutines and a single thread.
        
        The `asyncio` coroutine method uses ONE thread and is significantly *faster* than `concurrent.futures.ThreadPoolExecutor`, even (perhaps especially) with hundreds of threads in the ThreadPool.
        
        Although speed advantages weren't seen in our testing, `findssh` works with PyPy as well.
        
        ## Install
        
        ```sh
        pip install findssh
        ```
        
        or from this repo:
        
        ```sh
        git clone https://github.com/scivision/findssh
        
        pip install -e findssh
        ```
        
        ## Usage
        
        from command line:
        
        ```sh
        findssh
        ```
        
        or
        
        ```sh
        python -m findssh
        ```
        
        ### Command line options
        
        * `-s`  check the string from the server to attempt to verify the correct service has been found
        * `-t` timeout per server (seconds)  useful for high latency connection
        * `-b` baseip (check other subnet besides your own)
        * `-p` network port to scan (default 22)
        
        ## Benchmark
        
        These tests used 500 ms timeout on WiFi.
        
        Coroutine (single thread, fast, lean, recommended):
        
        ```ipython
        %timeit findssh.main()
        
        522 ms ± 1.26 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
        ```
        
        Thread pool (100 thread max, slow, heavy):
        
        ```ipython
        %timeit findssh.threadpool.main()
        
        1.39 s ± 213 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
        ```
        
Keywords: port-scan,ssh
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Framework :: AsyncIO
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Education
Classifier: Intended Audience :: End Users/Desktop
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: System Administrators
Classifier: Intended Audience :: Telecommunications Industry
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Topic :: Security
Classifier: Topic :: System :: Networking
Classifier: Topic :: Utilities
Requires-Python: >=3.5
Description-Content-Type: text/markdown
Provides-Extra: tests
Provides-Extra: lint
