Network Scanner
1.1.11 · GitHub
More about this app
Offline, privacy-focused scanner that discovers devices on your local network with hostnames, open ports and device types, using Shizuku or root to read the ARP table so MAC addresses and vendors show on Android 10+
Find every device on your local network, with its IP address, hostname, open ports, and device type. No ads, no tracking, no root required, and it works fully offline.
Download the latest APK from the Releases page.
Screenshots
Features
Discovery
- Ping sweep - Parallel ICMP sweep with TCP fallback for devices that block ICMP
- ARP cache - Picks up devices without sending any traffic
- mDNS / Bonjour - Finds AirPlay, Chromecast, printers, SSH, SMB, HomeKit, and more
- SSDP / UPnP - Fetches friendly name, manufacturer, and model number
- NetBIOS - Resolves hostnames and workgroups for Windows and Samba devices
- Port heuristics - Identifies Cast-enabled TVs and similar devices when other methods come up empty
- Shizuku / root - Optionally reads the ARP table with shell or root privileges, so MAC addresses also show on Android 10+
Device details
- MAC address & vendor - OUI vendor lookup, with detection of randomized MAC addresses (see Known limitations)
- OS fingerprinting - Detects Windows, Linux, macOS, router firmware, and printer OS from open ports and banners
- Device type icons - Smartphones, laptops, TVs, routers, printers, NAS, and more
- Port scanning - Deep scan of common ports with banner grabbing and version detection, or a full sweep of all 65,535 ports
- Copy & open - Long press any detail to copy it, or tap an open web port to open it in your browser
- Customization - Rename devices, assign icons, choose the network interface (Wi-Fi, Ethernet, VPN), and configure probed ports
Requirements
- Android 8.0 (Oreo) or higher
- A local network connection (Wi-Fi, Ethernet, or VPN)
Verification
Builds from this repository, Google Play and F-Droid are all signed with the same key. Verify the signing certificate rather than the APK file hash — each store repackages the APK, so file hashes differ while the certificate stays the same.
- Package:
com.networkscanner.app - Certificate SHA-256:
CF:89:91:3C:18:DC:8E:F3:0C:88:F0:95:7C:C4:92:EA:EA:04:20:20:44:FD:D4:26:0D:9C:CB:CA:97:9E:0F:FA
Check it with an on-device verifier app, or apksigner verify --print-certs <apk>, which prints the same value in lower case without colons.
Permissions
- INTERNET - Required by Android to open any network socket, including local-network scans; the app never contacts the internet
- ACCESS_NETWORK_STATE - To check network connectivity
- ACCESS_WIFI_STATE - To get Wi-Fi information
- CHANGE_WIFI_MULTICAST_STATE - For network device discovery
- NEARBY_WIFI_DEVICES (Android 13+) - To discover nearby Wi-Fi devices. On Android 16+ this permission also gates local network access (sockets to local addresses, mDNS, SSDP), so scanning cannot work without it
- ACCESS_FINE_LOCATION / ACCESS_COARSE_LOCATION - Optional. Used only to read Wi-Fi network details such as the SSID, and never for location tracking; scanning works without it
Building
Requires JDK 17 and the Android SDK (API 36).
git clone https://github.com/usamaiqb/network-scanner.git
cd network-scanner
./gradlew assembleDebug
The APK is written to app/build/outputs/apk/debug/. See CONTRIBUTING.md for the full development setup.
Translations
| Language | Progress |
|---|---|
| English | ████████████ 100% (source) |
| العربية | ████████████ 99% |
| Deutsch | ████████████ 100% |
| Español | ████████████ 100% |
| فارسی | ████████████ 100% |
| Italiano | ████████████ 100% |
| Română | ████████████ 100% |
| Русский | ████████████ 100% |
| Türkçe | ████████████ 100% |
| Українська | ████████████ 100% |
| 中文 (中国) | ████████████ 100% |
Translations are welcome! To add or improve one, edit app/src/main/res/values-<locale>/strings.xml, run bash scripts/translation-status.sh to update the language list and the table above, and open a pull request.
Known limitations
Since Android 10, apps can't read other devices' entries from the system ARP table, so MAC address and vendor only appear for your own device and sometimes the router. This affects every network scanner app. The MAC address access setting works around it through Shizuku or root.
Contributing
Contributions are welcome. Read CONTRIBUTING.md first, and use Issues or Discussions for bugs and questions.
License
GNU General Public License v3.0. See the Privacy Policy for how the app handles data.
How Shizuku is used
Can show device MAC addresses, vendors and hidden hosts via `ip -4 neigh show` through Shizuku.
This is an AI-assisted analysis of Shizuku-related usages in the app's public source code. It is best effort, so it may not catch every single usage.
How this app uses Shizuku
Shizuku is used to read the complete local network neighbor table that Android 10 and later normally hides from apps.
- Reveal MAC addresses: Devices found during a scan are filled in with their hardware addresses taken from the privileged
ip -4 neigh showoutput through Shizuku. - Identify vendors and types: Those hardware addresses are used to show the maker name and to improve the guessed device type for each host.
- Find silent devices: Hosts that ignore ping but appear in the neighbor table are added to the results from the same privileged output, so firewalled machines still appear.
Android APIs or commands used
ip -4 neigh show
Notable details
Without Shizuku, scans still run with normal discovery, but MAC addresses and vendor names may stay empty on Android 10 and later.
Changelog
What's new for version 1.1.11
What's Changed
🚀 Features
- feat(i18n): add German translation by @eruedin in https://github.com/usamaiqb/network-scanner/pull/91
- feat(scan): read the ARP table through Shizuku or root by @martinellimarco in https://github.com/usamaiqb/network-scanner/pull/84
- feat(settings): pick the MAC address source from a bottom sheet by @usamaiqb in https://github.com/usamaiqb/network-scanner/pull/97
🐛 Bug Fixes
- fix(home): show Unknown when the network name cannot be read by @usamaiqb in https://github.com/usamaiqb/network-scanner/pull/92
- fix(i18n): add missing German string for unknown network name by @usamaiqb in https://github.com/usamaiqb/network-scanner/pull/93
- fix(scan): use privileged MACs for late-found hosts and the gateway by @martinellimarco in https://github.com/usamaiqb/network-scanner/pull/94
- fix(i18n): add missing Italian and Spanish strings for the local network permission by @martinellimarco in https://github.com/usamaiqb/network-scanner/pull/96
🧹 Maintenance
- chore(vendor): update the OUI database and add a sync script by @martinellimarco in https://github.com/usamaiqb/network-scanner/pull/95
- chore(branding): add a GitHub social preview image by @usamaiqb in https://github.com/usamaiqb/network-scanner/pull/98
- chore(release): v1.1.11 by @usamaiqb in https://github.com/usamaiqb/network-scanner/pull/99
New Contributors
- @eruedin made their first contribution in https://github.com/usamaiqb/network-scanner/pull/91
- @martinellimarco made their first contribution in https://github.com/usamaiqb/network-scanner/pull/84
Full Changelog: https://github.com/usamaiqb/network-scanner/compare/v1.1.10...v1.1.11
Permissions
9 permissions requested

