{"id":17469809,"url":"https://github.com/shellrow/nrev","last_synced_at":"2026-04-04T11:12:23.000Z","repository":{"id":116022729,"uuid":"607698207","full_name":"shellrow/nrev","owner":"shellrow","description":"Simple and Fast Network Scanner/Mapper. Written in Rust.","archived":false,"fork":false,"pushed_at":"2024-07-21T11:05:24.000Z","size":966,"stargazers_count":11,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-20T00:55:25.640Z","etag":null,"topics":["network","rust","scanner","security"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shellrow.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":"2023-02-28T13:57:37.000Z","updated_at":"2024-12-21T00:48:05.000Z","dependencies_parsed_at":"2023-10-02T17:01:23.627Z","dependency_job_id":"83710ebe-6eb0-4c41-9f56-43389a1d3501","html_url":"https://github.com/shellrow/nrev","commit_stats":null,"previous_names":["shellrow/enmap","shellrow/netprobe","shellrow/rushmap","shellrow/nemio","shellrow/nrev","shellrow/nerum"],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shellrow%2Fnrev","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shellrow%2Fnrev/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shellrow%2Fnrev/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shellrow%2Fnrev/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shellrow","download_url":"https://codeload.github.com/shellrow/nrev/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249834786,"owners_count":21331988,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["network","rust","scanner","security"],"created_at":"2024-10-18T15:43:50.945Z","updated_at":"2026-04-04T11:12:22.990Z","avatar_url":"https://github.com/shellrow.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# nrev\n\nAn observation-first, cross-platform network mapper for discovery and probing.\n\n`nrev` focuses on:\n\n- Port scanning with TCP, UDP, TCP-SYN, and QUIC transports\n- Host discovery with ICMP, UDP, and TCP probes\n- Active ping with ICMP, UDP, TCP, and QUIC methods\n- Traceroute with UDP and ICMP probes\n- Neighbor discovery with ARP and NDP\n- Built-in service observation for common protocols\n- Structured JSON output for automation\n- External data packs for probes, fingerprint rules, profiles, and recipes\n- Task files for repeatable target lists and scan executions\n\n## Supported platforms\n- Linux\n- macOS\n- Windows\n\n## Installation\n### Install prebuilt binaries via shell script\n\n```sh\ncurl --proto '=https' --tlsv1.2 -LsSf https://github.com/shellrow/nrev/releases/latest/download/nrev-installer.sh | sh\n```\n\n### Install prebuilt binaries via powershell script\n\n```sh\nirm https://github.com/shellrow/nrev/releases/latest/download/nrev-installer.ps1 | iex\n```\n\n### From Releases\nYou can download archives of precompiled binaries from the [releases](https://github.com/shellrow/nrev/releases) .\n\n### Cargo\nIf you have Rust and the Cargo package manager installed on your system, you can install (download and build) `nrev` with the following command:\n```\ncargo install nrev\n```\n\nOr you can use [binstall](https://github.com/cargo-bins/cargo-binstall) for install nrev from github release.\n```\ncargo binstall nrev\n```\n\n## Commands\n\n```text\nUsage: nrev \u003cCOMMAND\u003e\n\nCommands:\n  port    Scan ports and collect structured observations\n  task    Run a port-scan task from a JSON or TOML file\n  host    Discover reachable hosts with ICMP, UDP, or TCP probes\n  ping    Send repeated probes to a target with ICMP, UDP, TCP, or QUIC\n  trace   Trace the path to a target with UDP or ICMP probes\n  nei     Discover a neighbor with ARP or NDP\n  probe   Show the built-in and externally loaded probe catalog\n  recipe  Show externally loaded scan recipes\n```\n\n## Output\n\n`nrev` provides:\n\n- Compact human-readable reports for interactive use\n- Stable JSON reports for downstream tooling\n- Phase timings for resolution, discovery, scanning, and follow-up probes\n\n## External Data\n\n`--data` accepts:\n\n- A single `.json` file\n- A single `.toml` file\n- A directory containing multiple `.json` and `.toml` files\n\nEach file may contain any combination of:\n\n- `probes`\n- `fingerprint_rules`\n- `recipes`\n\n## Samples\n\nThe repository includes sample data under [samples/](samples):\n\n- [samples/recipes/](samples/recipes) for recipe-only examples\n- [samples/data-pack/](samples/data-pack) for mixed external data pack examples\n- [samples/tasks/](samples/tasks) for runnable task-file examples\n\n## Documentation\n\n- [Usage Guide](docs/USAGE.md)\n\n## Privileges\n`nrev` uses a raw socket which require elevated privileges. Execute with administrator privileges.\n\n### Note for Linux Users\n`nrev` requires elevated privileges to send/receive raw-packet. On Linux, you can configure these privileges using two main methods:\n\n#### 1. Using `setcap`\n\nGranting capabilities to the `nrev` binary allows it to operate with the necessary privileges without requiring `sudo` for each execution.  \nThis method is recommended for single-user machines or in environments where all users are trusted.\n\nAssign necessary capabilities to the nrev binary\n```sh\nsudo setcap 'cap_sys_ptrace,cap_dac_read_search,cap_net_raw,cap_net_admin+ep' $(command -v nrev)\n```\n\nRun nrev as an unprivileged user:\n```sh\nnrev\n```\n\n#### Capabilities Explained:\n- `cap_sys_ptrace,cap_dac_read_search`: Allows `nrev` to access `/proc/\u003cpid\u003e/fd/` to identify which open port belongs to which process.\n- `cap_net_raw,cap_net_admin`: Enables packet capturing capabilities.\n\n#### 2. Using `sudo` (for multi-user environments)\nFor environments with multiple users, requiring privilege escalation each time nrev is run can enhance security.\n```\nsudo nrev\n```\n\n### Note for macOS Users\nOn macOS, managing access to the Berkeley Packet Filter (BPF) devices is necessary for `nrev` to send/receive raw-packet\nAlternatively, of course, you can also use `sudo` to temporarily grant the necessary permissions.\n#### Install `chmod-bpf` to automatically manage permissions for BPF devices:\n\nInstall prebuilt binaries via shell script\n```\ncurl --proto '=https' --tlsv1.2 -LsSf https://github.com/shellrow/chmod-bpf/releases/latest/download/chmod-bpf-installer.sh | sh\n```\n\n#### Check BPF device permissions\n```\nchmod-bpf check\n```\n\n#### Install the chmod-bpf daemon to automatically manage BPF device permissions\n```\nsudo chmod-bpf install\n```\n\n### Note for Windows Users\n- Ensure that you have [Npcap](https://npcap.com/#download) installed, which is necessary for `nrev` to send/receive raw-packet on Windows\n- Download and install Npcap from [Npcap](https://npcap.com/#download). Choose the \"Install Npcap in WinPcap API-compatible Mode\" during installation.\n- Build Dependencies:\n    - Place the Packet.lib file from the [Npcap SDK](https://npcap.com/#download) or WinPcap Developers pack in a directory named lib at the root of this repository.\n    - You can use any of the locations listed in the %LIB% or $Env:LIB environment variables.\n    - For the 64-bit toolchain, the Packet.lib is located in \u003cSDK\u003e/Lib/x64/Packet.lib.\n    - For the 32-bit toolchain, the Packet.lib is located in \u003cSDK\u003e/Lib/Packet.lib.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshellrow%2Fnrev","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshellrow%2Fnrev","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshellrow%2Fnrev/lists"}