# scanless
This is a Python command-line utility and library for using websites that can perform port scans on your behalf.
## Supported Online Port Scanners
* [ipfingerprints](http://www.ipfingerprints.com/portscan.php)
* [spiderip](https://spiderip.com/online-port-scan.php)
* [standingtech](https://portscanner.standingtech.com/)
* [viewdns](http://viewdns.info/)
* [yougetsignal](http://www.yougetsignal.com/tools/open-ports/)
## Install
Do it up:
```
$ pip install scanless --user
```
## CLI Usage
```
$ scanless --help
usage: scanless [-h] [-v] [-t TARGET] [-s SCANNER] [-r] [-l] [-a] [-d]
scanless, an online port scan scraper.
options:
-h, --help show this help message and exit
-v, --version display the current version
-t TARGET, --target TARGET
ip or domain to scan
-s SCANNER, --scanner SCANNER
scanner to use (default: yougetsignal)
-r, --random use a random scanner
-l, --list list scanners
-a, --all use all the scanners
-d, --debug debug mode (cli mode off & show network errors)
$ scanless --list
+----------------+--------------------------------------+
| Scanner Name | Website |
+----------------+--------------------------------------+
| ipfingerprints | https://www.ipfingerprints.com |
| spiderip | https://spiderip.com |
| standingtech | https://portscanner.standingtech.com |
| viewdns | https://viewdns.info |
| yougetsignal | https://www.yougetsignal.com |
+----------------+--------------------------------------+
$ scanless -t scanme.nmap.org -s spiderip
Running scanless v2.2.1 ...
spiderip:
PORT STATE SERVICE
21/tcp closed ftp
22/tcp open ssh
25/tcp closed smtp
80/tcp open http
110/tcp closed pop3
143/tcp closed imap
443/tcp closed https
465/tcp closed smtps
993/tcp closed imaps
995/tcp closed pop3s
1433/tcp closed ms-sql-s
3306/tcp closed mysql
3389/tcp closed ms-wbt-server
5900/tcp closed vnc
8080/tcp closed http-proxy
8443/tcp closed https-alt
```
## Library Usage
```
>>> import scanless
>>> sl = scanless.Scanless()
>>> output = sl.scan('scanme.nmap.org', scanner='yougetsignal')
>>> print(output['raw'])
PORT STATE SERVICE
21/tcp closed ftp
22/tcp open ssh
23/tcp closed telnet
25/tcp closed smtp
53/tcp closed domain
80/tcp open http
110/tcp closed pop3
115/tcp closed sftp
135/tcp closed msrpc
139/tcp closed netbios-ssn
143/tcp closed imap
194/tcp closed irc
443/tcp closed https
445/tcp closed microsoft-ds
1433/tcp closed ms-sql-s
3306/tcp closed mysql
3389/tcp closed ms-wbt-server
5632/tcp closed pcanywherestat
5900/tcp closed vnc
6112/tcp closed dtspc
>>> import json
>>> print(json.dumps(output['parsed'], indent=2))
[
{
"port": "21",
"state": "closed",
"service": "ftp",
"protocol": "tcp"
},
{
"port": "22",
"state": "open",
"service": "ssh",
"protocol": "tcp"
},
{
"port": "23",
"state": "closed",
"service": "telnet",
"protocol": "tcp"
},
{
"port": "25",
"state": "closed",
"service": "smtp",
"protocol": "tcp"
},
{
"port": "53",
"state": "closed",
"service": "domain",
"protocol": "tcp"
},
{
"port": "80",
"state": "open",
"service": "http",
"protocol": "tcp"
},
...
]
```
Raw data
{
"_id": null,
"home_page": "https://github.com/vesche/scanless",
"name": "scanless",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "",
"author": "Austin Jackson",
"author_email": "vesche@protonmail.com",
"download_url": "https://files.pythonhosted.org/packages/50/d0/89d4922f4f6f0faa3be4f6ae455a13d049068ae45a83ec70cf795cd7ae06/scanless-2.2.1.tar.gz",
"platform": null,
"description": "# scanless\n\nThis is a Python command-line utility and library for using websites that can perform port scans on your behalf.\n\n## Supported Online Port Scanners\n\n* [ipfingerprints](http://www.ipfingerprints.com/portscan.php)\n* [spiderip](https://spiderip.com/online-port-scan.php)\n* [standingtech](https://portscanner.standingtech.com/)\n* [viewdns](http://viewdns.info/)\n* [yougetsignal](http://www.yougetsignal.com/tools/open-ports/)\n\n## Install\n\nDo it up:\n```\n$ pip install scanless --user\n```\n\n## CLI Usage\n\n```\n$ scanless --help\nusage: scanless [-h] [-v] [-t TARGET] [-s SCANNER] [-r] [-l] [-a] [-d]\n\nscanless, an online port scan scraper.\n\noptions:\n -h, --help show this help message and exit\n -v, --version display the current version\n -t TARGET, --target TARGET\n ip or domain to scan\n -s SCANNER, --scanner SCANNER\n scanner to use (default: yougetsignal)\n -r, --random use a random scanner\n -l, --list list scanners\n -a, --all use all the scanners\n -d, --debug debug mode (cli mode off & show network errors)\n\n$ scanless --list\n+----------------+--------------------------------------+\n| Scanner Name | Website |\n+----------------+--------------------------------------+\n| ipfingerprints | https://www.ipfingerprints.com |\n| spiderip | https://spiderip.com |\n| standingtech | https://portscanner.standingtech.com |\n| viewdns | https://viewdns.info |\n| yougetsignal | https://www.yougetsignal.com |\n+----------------+--------------------------------------+\n\n$ scanless -t scanme.nmap.org -s spiderip\nRunning scanless v2.2.1 ...\n\nspiderip:\nPORT STATE SERVICE\n21/tcp closed ftp\n22/tcp open ssh\n25/tcp closed smtp\n80/tcp open http\n110/tcp closed pop3\n143/tcp closed imap\n443/tcp closed https\n465/tcp closed smtps\n993/tcp closed imaps\n995/tcp closed pop3s\n1433/tcp closed ms-sql-s\n3306/tcp closed mysql\n3389/tcp closed ms-wbt-server\n5900/tcp closed vnc\n8080/tcp closed http-proxy\n8443/tcp closed https-alt\n```\n\n## Library Usage\n\n```\n>>> import scanless\n>>> sl = scanless.Scanless()\n>>> output = sl.scan('scanme.nmap.org', scanner='yougetsignal')\n>>> print(output['raw'])\nPORT STATE SERVICE\n21/tcp closed ftp\n22/tcp open ssh\n23/tcp closed telnet\n25/tcp closed smtp\n53/tcp closed domain\n80/tcp open http\n110/tcp closed pop3\n115/tcp closed sftp\n135/tcp closed msrpc\n139/tcp closed netbios-ssn\n143/tcp closed imap\n194/tcp closed irc\n443/tcp closed https\n445/tcp closed microsoft-ds\n1433/tcp closed ms-sql-s\n3306/tcp closed mysql\n3389/tcp closed ms-wbt-server\n5632/tcp closed pcanywherestat\n5900/tcp closed vnc\n6112/tcp closed dtspc\n>>> import json\n>>> print(json.dumps(output['parsed'], indent=2))\n[\n {\n \"port\": \"21\",\n \"state\": \"closed\",\n \"service\": \"ftp\",\n \"protocol\": \"tcp\"\n },\n {\n \"port\": \"22\",\n \"state\": \"open\",\n \"service\": \"ssh\",\n \"protocol\": \"tcp\"\n },\n {\n \"port\": \"23\",\n \"state\": \"closed\",\n \"service\": \"telnet\",\n \"protocol\": \"tcp\"\n },\n {\n \"port\": \"25\",\n \"state\": \"closed\",\n \"service\": \"smtp\",\n \"protocol\": \"tcp\"\n },\n {\n \"port\": \"53\",\n \"state\": \"closed\",\n \"service\": \"domain\",\n \"protocol\": \"tcp\"\n },\n {\n \"port\": \"80\",\n \"state\": \"open\",\n \"service\": \"http\",\n \"protocol\": \"tcp\"\n },\n ...\n]\n```\n",
"bugtrack_url": null,
"license": "Unlicense",
"summary": "An online port scan scraper.",
"version": "2.2.1",
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "50d089d4922f4f6f0faa3be4f6ae455a13d049068ae45a83ec70cf795cd7ae06",
"md5": "f1e67d8fbe6aa278ad6b6e8d9a7546dc",
"sha256": "a9cb298ddea51f3c1d119db70f8420b05b0ededa958b8119181a801e3f50530a"
},
"downloads": -1,
"filename": "scanless-2.2.1.tar.gz",
"has_sig": false,
"md5_digest": "f1e67d8fbe6aa278ad6b6e8d9a7546dc",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 216458,
"upload_time": "2023-03-23T18:44:47",
"upload_time_iso_8601": "2023-03-23T18:44:47.990202Z",
"url": "https://files.pythonhosted.org/packages/50/d0/89d4922f4f6f0faa3be4f6ae455a13d049068ae45a83ec70cf795cd7ae06/scanless-2.2.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-03-23 18:44:47",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "vesche",
"github_project": "scanless",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "scanless"
}