{"id":20676518,"url":"https://github.com/ryosukedtomita/my_portscanner","last_synced_at":"2026-05-26T20:31:19.447Z","repository":{"id":252592613,"uuid":"839921981","full_name":"RyosukeDTomita/my_portscanner","owner":"RyosukeDTomita","description":"To study port scanner mechanism. I created tiny port scanner.","archived":false,"fork":false,"pushed_at":"2025-01-04T07:01:25.000Z","size":107,"stargazers_count":1,"open_issues_count":7,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-10T18:53:39.831Z","etag":null,"topics":["asyncio","devcontainer","nmap","portscanner","python3","rye","scapy"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RyosukeDTomita.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-08T15:40:13.000Z","updated_at":"2025-01-04T07:01:24.000Z","dependencies_parsed_at":"2025-01-17T14:51:08.102Z","dependency_job_id":"840d534c-2237-4e24-98d5-de2c4894381e","html_url":"https://github.com/RyosukeDTomita/my_portscanner","commit_stats":null,"previous_names":["ryosukedtomita/my_portscanner"],"tags_count":6,"template":false,"template_full_name":"RyosukeDTomita/template_repository_all","purl":"pkg:github/RyosukeDTomita/my_portscanner","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RyosukeDTomita%2Fmy_portscanner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RyosukeDTomita%2Fmy_portscanner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RyosukeDTomita%2Fmy_portscanner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RyosukeDTomita%2Fmy_portscanner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RyosukeDTomita","download_url":"https://codeload.github.com/RyosukeDTomita/my_portscanner/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RyosukeDTomita%2Fmy_portscanner/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33538659,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"ssl_error","status_checked_at":"2026-05-26T15:22:15.568Z","response_time":63,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["asyncio","devcontainer","nmap","portscanner","python3","rye","scapy"],"created_at":"2024-11-16T21:12:48.137Z","updated_at":"2026-05-26T20:31:19.430Z","avatar_url":"https://github.com/RyosukeDTomita.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MY PORT SCANNER like nmap\n\n![un license](https://img.shields.io/github/license/RyosukeDTomita/my_portscanner)\n[![pytest](https://github.com/RyosukeDTomita/my_portscanner/actions/workflows/pytest.yaml/badge.svg)](https://github.com/RyosukeDTomita/my_portscanner/actions/workflows/pytest.yaml)\n[![integration-test](https://github.com/RyosukeDTomita/my_portscanner/actions/workflows/integration-test.yaml/badge.svg)](https://github.com/RyosukeDTomita/my_portscanner/actions/workflows/integration-test.yaml)\n[![latest release](https://github.com/RyosukeDTomita/my_portscanner/actions/workflows/release.yaml/badge.svg)](https://github.com/RyosukeDTomita/my_portscanner/actions/workflows/release.yaml)\n[![GitHub Container Registry](https://github.com/RyosukeDTomita/my_portscanner/actions/workflows/packages.yaml/badge.svg)](https://github.com/RyosukeDTomita/my_portscanner/actions/workflows/packages.yaml)\n\n## INDEX\n\n- [ABOUT](#about)\n- [ENVIRONMENT](#environment)\n- [PREPARING](#preparing)\n- [INSTALL](#install)\n- [HOW TO USE](#how-to-use)\n- [DEVELOPER MEMO](#developer-memo)\n\n---\n\n## ABOUT\n\nFull scratch built [nmap](https://nmap.org/) respect port scanner.\n- EXAMPLE\n\n```shell\n# Connect Scan\ndocker run my_portscanner -p 23-445 192.168.150.58 --max-rtt-timeout 200\nStarting my_portscanner 0.1.3 ( https://github.com/RyosukeDTomita/my_portscanner ) at 2024-08-26 11:40 JST\nmy_portscanner scan report for 192.168.150.58 (192.168.150.58)\nPORT       STATE    SERVICE\n80/tcp     closed   unknown\n443/tcp    closed   unknown\n\n# SYN Scan\ndocker run my_portscanner -sS -p 22,80,443,8080 192.168.150.58 --max-rtt-timeout 200\nStarting my_portscanner 0.1.3 ( https://github.com/RyosukeDTomita/my_portscanner ) at 2024-08-26 11:40 JST\nmy_portscanner scan report for 192.168.150.58 (192.168.150.58)\nPORT       STATE    SERVICE\n22/tcp     filtered unknown\n80/tcp     closed   unknown\n443/tcp    closed   unknown\n8080/tcp   closed   unknown\n```\n\n- HELP\n\n```shell\ndocker run my_portscanner -h\nusage: my_portscanner [-h] [-sT] [-sS] [-p PORT]\n                      [--max-rtt-timeout MAX_RTT_TIMEOUT] [--version]\n                      [--max-parallelism MAX_PARALLELISM] [-d]\n                      target_ip\n\npositional arguments:\n  target_ip             set target IP address or FQDN.\n\noptions:\n  -h, --help            show this help message and exit\n  -sT, --connect_scan   TCP connect scan (default)\n  -sS, --stealth_scan   TCP SYN scan\n  -p PORT, --port PORT  port number, port number lists, port number range.\n                        e.g: -p 22 -p 22,80,443 -p 22-30 -p- (all port)\n  --max-rtt-timeout MAX_RTT_TIMEOUT\n                        set max rtt timeout (ms). default=1000\n  --version             display my_portscanner version and exit\n  --max-parallelism MAX_PARALLELISM\n                        set max parallelism\n  -d, --debug           display debug info\n```\n\n---\n\n## ENVIRONMENT\n\n- python 3.12.4\n\n---\n\n## INSTALL\n\n### pulling from GitHub Container Registry\n\n```shell\ndocker pull ghcr.io/ryosukedtomita/my_portscanner:latest\ndocker tag ghcr.io/ryosukedtomita/my_portscanner my_portscanner\ndocker image ls\nREPOSITORY                              TAG       IMAGE ID       CREATED          SIZE\nmy_portscanner                          latest    59ed4a2aff25   15 minutes ago   195MB\nghcr.io/ryosukedtomita/my_portscanner   latest    59ed4a2aff25   15 minutes ago   195MB\n```\n\n### install from Releases\n\n```shell\nwget https://github.com/RyosukeDTomita/my_portscanner/releases/download/0.1.1/default.dist.my_portscanner-0.1.1-py3-none-any.whl\npip install ./default.dist.my_portscanner-0.1.1-py3-none-any.whl\n```\n\n### Local install\n\n1. clone this repository\n2. docker build\n\n```shell\ngit clone https://github.com:RYosukeDTomita/my_portscanner.git\ndocekr buildx build -t my_portscanner .\n```\n\u003e [!NOTE]\n\u003e if you want to use docker compose, please try this.\n\u003e ```shell\n\u003e docker buildx bake\n\u003e ```\n\n---\n\n## HOW TO USE\n\n### running Docker\n\n```shell\n# example\ndocker run -it my_portscanner \u003cFQDN or IP\u003e\n```\n\n\u003e [!NOTE]\n\u003e if you want to use docker compose, please try this.\n\u003e ```shell\n\u003e docker compose run my_portscanner_app localhost\n\u003e ```\n\n### running on local\n\n```shell\nmy_portscanner \u003cFQDN or IP\u003e\nsudo my_portscanner \u003cFQDN or IP \u003e -sS\n```\n\n### local integration test\n\n```shell\ndocker buildx bake\ndocker compose up hacking_lab_app \u0026\ndocker compose run my_portscanner_app -sS -p 22,80,443,8080 172.18.0.3\n```\n\n\u003e [!CAUTION]\n\u003e test is running with docker network ip and the docker network is created in `compose.yaml`, so it must be run by `docker compose`.\n\n---\n\n## DEVELOPER MEMO\n\n### before creating version tag\n\nUpdate version info\n- Dockerfile\n- src/my_portscanner/version.py\n- ./pyproject.toml\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryosukedtomita%2Fmy_portscanner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fryosukedtomita%2Fmy_portscanner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryosukedtomita%2Fmy_portscanner/lists"}