{"id":24995023,"url":"https://github.com/ryzeon-dev/rns","last_synced_at":"2026-02-03T11:05:22.842Z","repository":{"id":231569899,"uuid":"780827195","full_name":"ryzeon-dev/rns","owner":"ryzeon-dev","description":"Rust Network Scan","archived":false,"fork":false,"pushed_at":"2025-11-04T09:41:03.000Z","size":36083,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-11-04T11:27:17.018Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ryzeon-dev.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":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-04-02T08:30:15.000Z","updated_at":"2025-11-04T09:41:07.000Z","dependencies_parsed_at":"2024-06-24T06:34:04.482Z","dependency_job_id":"af0f8e50-7d2f-4a8f-82fe-f840a723b552","html_url":"https://github.com/ryzeon-dev/rns","commit_stats":null,"previous_names":["ryzeon-dev/rns"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ryzeon-dev/rns","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryzeon-dev%2Frns","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryzeon-dev%2Frns/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryzeon-dev%2Frns/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryzeon-dev%2Frns/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ryzeon-dev","download_url":"https://codeload.github.com/ryzeon-dev/rns/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryzeon-dev%2Frns/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29043777,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-03T10:09:22.136Z","status":"ssl_error","status_checked_at":"2026-02-03T10:09:16.814Z","response_time":96,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":[],"created_at":"2025-02-04T15:33:49.287Z","updated_at":"2026-02-03T11:05:22.778Z","avatar_url":"https://github.com/ryzeon-dev.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv style=\"display: flex; flex-direction: row; justify-content: start\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/rust-16a085?style=for-the-badge\u0026logo=rust\" href=\"\" style=\"margin: 10px\" /\u003e\n    \u003cimg src=\"https://img.shields.io/badge/python3-16a085?style=for-the-badge\u0026logo=python\" href=\"\" style=\"margin: 10px\" /\u003e\n    \u003cimg src=\"https://img.shields.io/badge/tcp/ip-16a085?style=for-the-badge\" href=\"\" style=\"margin: 10px\" /\u003e\n    \u003cimg src=\"https://img.shields.io/badge/mac%20address-16a085?style=for-the-badge\" href=\"\" style=\"margin: 10px\"/\u003e\n    \u003cimg src=\"https://img.shields.io/badge/network%20interfaces-16a085?style=for-the-badge\" href=\"\" style=\"margin: 10px\"/\u003e\n    \u003cimg src=\"https://img.shields.io/badge/open%20ports-16a085?style=for-the-badge\" href=\"\" style=\"margin: 10px\"/\u003e\n\u003c/div\u003e\n\n# rns - Rust Network Scan\n\n- Network scanning tool written in rust \n\n## Installation\n- precompiled binaries are available for linux\\_amd64 and linux\\_arm64 architectures, inside the `bin` folder, otherwise you have to compile from source\n- package pre-requisites for local compilation:\n```\ngit\ncargo\nmake\n```\n\n## Install from Cargo\n```\ncargo install rns\n```\n\n## Compile and install\n### One-liner\n```\ngit clone https://github.com/ryzeon-dev/rns \u0026\u0026 cd rns \u0026\u0026 make \u0026\u0026 sudo make install\n```\n\n### Step by step\n- clone the repo\n```\ngit clone https://github.com/ryzeon-dev/rns\n```\n\n- enter the `rns` directory\n\n```\ncd rns\n```\n\n- build the executable\n\n```\nmake\n```\n\n- install (requires root)\n\n```\nsudo make install\n```\n\n## Install precompiled\n### `amd64`\n```\nsudo make install-amd64\n```\n\n### `arm64`\n```\nsudo make install-arm64\n```\n\n## GUI\n- a GUI application written in Python3 is available\n- the gui allows to execute `scan` and `list` actions\n  - after inserting the required parameters, the relative `rns` command will be displayed\n  - pressing the `run` button, the command will be executed, and its result displayed\n\n### Compile\n- from the `rns` directory, run\n```\nmake compile-gui\n```\n\n### Install\n- if you just compiled it, run\n```\nsudo make install-gui\n```\n- if you want to install a precompiled binary, run\n```\nsudo make install-gui-amd64\n```\nor \n```\nsudo make install-gui-arm64\n```\n\n### Run\n- run the command \n```\nrns-gui\n```\n\n## Usage\n### Scanning\n- `scan` verb can be called by its initial too\n```\nrns s 192.168.1.0 mask 24 ports all\n```\n\n#### Network Scanning\n- when scanning for IP addresses, `rns` will try to resolve the ip address into the host name, using the NetBIOS protocol\n- you must provide an IP address, a network mask (ip address or CIDR form) and some ports to scan\n```\nrns scan 192.168.1.0 mask 24 ports std\n```\n\n- it is possible to set the timeout (in milliseconds) for both host scanning (checking if the host is up) and port scanning (checking if the ports is open), using the `host-timeout` and `ports-timeout` verbs\n```\nrns scan 192.168.1.0 mask 255.255.255.0 ports std host-timeout 1500 ports-timeout 500\n```\n\n- to scan certain ports, write them comma separated after the `ports` verb\n```\nrns scan 192.168.1.0 mask 24 ports 80,8080,8088,8808,8888 \n```\n\n- to scan a port range (e.g. from 0 to 999), write the starting port and the ending port (plus one) separated by `-`\n  - remember that the ending port is a limit, and therefore excluded \n```\nrns scan 192.168.1.0 mask 24 ports 0-1000\n```\n\n- to scan the standard ports (you can get a description for them running `rns explain`) use `std` as argument for `ports` verb \n```\nrns scan 192.168.1.0 mask 24 ports std\n```\n\n- to scan both open ports and mac addresses add `scan-mac` verb at the end\n```\nrns scan 192.168.1.0 mask 24 ports std scan-mac\n```\n\n- only scan for mac addresses use `mac-only` verb instead of `ports`\n```\nrns scan 192.168.1.0 mask 24 mac-only\n```\n\n- to scan the nmap's standard 1000 ports, use `nmap` as argument for `ports` verb\n```\nrns scan 192.168.1.0 mask 24 ports nmap\n```\n\n- to export the scan into a Json file, use the `--json` or `-j` flag\n  - by doing so, all the stdout-communications are suppressed\n```\nrns scan 192.168.1.0 mask 24 ports std -j \u003e report.json\n```\n\n- to have a quiet execution, use the `--quiet` or `-q` flag, this will output only the final report\n```\nrns scan 192.168.1.0 mask 24 ports std -q\n```\n\n#### Single address scanning\n- to scan only one IP address, use the `single` verb before the IP address\n  - note that network mask is not required (and must not be provided)\n```\nrns scan single 192.168.1.16 ports std\n```\n\n- all the verbs shown above are valid for single-address scanning \n\n### Listing\n- `list` verb can be called by its initial too\n```\nrns l interfaces\n```\n\n- to export the listing into a Json file, use the `--json` or `-j` flag\n```\nrns list ports -j \u003e report.json\n```\n\n#### Locally open ports\n- to list the ports openend on local machine, use the `list ports` verb, and both TCP and UDP open ports will be shown\n```\nrns list ports\n```\n\n- to only view TCP or UDP, pass `tcp` or `udp` after `ports` verb\n```\nrns list ports tcp\n```\n\n#### Local IP Addresses\n- to list local machine's IP addresses use `list addresses` verb\n```\nrns list addresses\n```\n\n#### Local Network Interfaces\n- to list local machine's network interfaces use `list interfaces` verb\n```\nrns list interfaces\n```\n\n### All Local Machine Network Data\n- lists network interface, and for each displays mac address, ipv4 and route(s)\n```\nrns list local\n```\n\n### Monitoring \n- to monitor an interface's activity use `monitor` verb, followed by the interface's name\n```\nrns monitor eth0\n```\n- activity is displayed in bytes by default, but using `-b` or `--bit` flag, activity gets displayed in bits\n```\nrns monitor eth0 -b\n```\n\n### Setting\n- to set an interface's status (such as `up` or `down`), use `set` verb\n  - this operation requires root privilegies, and in some cases running with `sudo` might not be enough\n```\nrns set interface eth0 status up\n```\n\n### Help \n- run `rns help` to get help\n\n### Version\n- version can be checked running `rns version` or `rns v`","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryzeon-dev%2Frns","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fryzeon-dev%2Frns","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryzeon-dev%2Frns/lists"}