Application to comfortably monitor your Internet traffic
Multithreaded, cross-platform, reliable
🌐 www.sniffnet.net

Graphical interface translated in:
🇬🇧  🇩🇪  🇬🇷  🇪🇦  🇮🇷  🇫🇷  🇮🇹  🇰🇷  🇵🇱  🇵🇹  🇷🇴  🇷🇺  🇸🇪  🇹🇷  🇺🇦  🇨🇳

## _Help fund Sniffnet's development_ 💖 Sniffnet is **completely free, open-source software** which needs lots of effort and time to develop and maintain. If you appreciate Sniffnet, [**consider sponsoring**](https://github.com/sponsors/GyulyVGC): ***your support will allow me to dedicate more and more time to this project***, constantly expanding it including **new features and functionalities**.
A special mention goes to these awesome organizations and folks who are sponsoring Sniffnet:

github   tiansheng li

## Installation You can install Sniffnet in one of the following ways:
from GitHub releases  You can install Sniffnet through the installers available in the [latest release](https://github.com/GyulyVGC/sniffnet/releases/latest).
Choose from a Windows installer, a macOS disk image, a DEB package, or an RPM package (depending on your operating system).
Below, for your convenience, you can find the direct links to the downloads. > **Note** > > If you are unsure which package to download, you should probably choose the first from your operating system list. ### Windows - [64-bit](https://github.com/GyulyVGC/sniffnet/releases/latest/download/Sniffnet_Windows_64-bit.msi) | [32-bit](https://github.com/GyulyVGC/sniffnet/releases/latest/download/Sniffnet_Windows_32-bit.msi) ### macOS - [Intel](https://github.com/GyulyVGC/sniffnet/releases/latest/download/Sniffnet_macOS_Intel.dmg) | [Apple silicon](https://github.com/GyulyVGC/sniffnet/releases/latest/download/Sniffnet_macOS_AppleSilicon.dmg) ### Linux - deb: [amd64](https://github.com/GyulyVGC/sniffnet/releases/latest/download/Sniffnet_LinuxDEB_amd64.deb) | [arm64](https://github.com/GyulyVGC/sniffnet/releases/latest/download/Sniffnet_LinuxDEB_arm64.deb) | [i386](https://github.com/GyulyVGC/sniffnet/releases/latest/download/Sniffnet_LinuxDEB_i386.deb) | [armhf](https://github.com/GyulyVGC/sniffnet/releases/latest/download/Sniffnet_LinuxDEB_armhf.deb) - rpm: [x86_64](https://github.com/GyulyVGC/sniffnet/releases/latest/download/Sniffnet_LinuxRPM_x86_64.rpm) | [aarch64](https://github.com/GyulyVGC/sniffnet/releases/latest/download/Sniffnet_LinuxRPM_aarch64.rpm)
from Crates.io  Follow this method only if you have [Rust installed](https://www.rust-lang.org/tools/install) on your machine.
In this case, the application binary can be built and installed with: ```sh cargo install sniffnet ```
from Homebrew You can install [Sniffnet Homebrew package](https://github.com/Homebrew/homebrew-core/pkgs/container/core%2Fsniffnet) with: ```sh brew install sniffnet ```
on Arch Linux You can install Sniffnet community package via [pacman](https://wiki.archlinux.org/title/Pacman): ```sh pacman -S sniffnet ```
on NetBSD You can install Sniffnet from the official repositories via [pkgin](https://pkgin.net): ```sh pkgin install sniffnet ```
## Required dependencies Depending on your operating system, you may need to install some dependencies to run Sniffnet:
Windows dependencies  In order to correctly build and run Sniffnet on Windows systems you need to: - Install [Npcap](https://npcap.com/#download), making sure to check the box `Install Npcap in WinPcap API-compatible Mode` during the installation. - Download the [Npcap SDK](https://npcap.com/#download). - Add the SDK's ```/Lib/x64``` (or ```/Lib```) folder to your ```LIB``` environment variable. > **Note** > > If you just need to run the app, perform only the first step (second and third steps are required only for the build).
Linux dependencies  - On [Debian-based](https://en.wikipedia.org/wiki/List_of_Linux_distributions#Debian-based) distributions: - `libpcap-dev` - `libasound2-dev` - `libfontconfig1-dev` - On [RPM-based](https://en.wikipedia.org/wiki/List_of_Linux_distributions#RPM-based) distributions: - `libpcap-devel` - `alsa-lib-devel` - `fontconfig-devel` > **Note** > > If you just need to run the app, the `-dev` / `-devel` part of the dependencies is not needed (it's required only for the build). Note that if you are not running as root, you need to set capabilities to inspect a network adapter: ```sh sudo setcap cap_net_raw,cap_net_admin=eip ``` Alternatively you can run the app with sudo privileges: ```sh sudo sniffnet ```
MacOS dependencies  MacOS natively has all the dependencies you need to build and run Sniffnet!
## Features - 💻 choose a network adapter of your PC to inspect - 🏷️ select a set of filters to apply to the observed traffic - 📖 view overall statistics about your Internet traffic - 📈 view real-time charts about traffic intensity (bytes and packets per second, incoming and outgoing) - 🌐 get details about domain names and network providers of the hosts you are exchanging traffic with - 🏠 identify connections in your local network - 🌍 get information about the country of the remote hosts (IP geolocation) - ⭐ save your favorite network hosts - 🔉 set custom notifications to inform you when defined network events occur - 🎨 choose the style that fits you the most from 4 different available themes - 🕵️ inspect each of your network connections in real time - 📁 save complete textual reports with detailed information for each network connection: * source and destination IP addresses * source and destination ports * carried protocols * amount of exchanged packets and bytes * initial and final timestamp of information exchange - ... and more! ## IP geolocation and network providers (ASN)
See details
Geolocation and network providers (ASN) refer to the remote IP address of each connection. They are retrieved performing lookups against [MMDB files](https://maxmind.github.io/MaxMind-DB/): > **Note** > > The MMDB (MaxMind database) format has been developed especially for IP lookup.
> It is optimized to perform lookups on data indexed by IP network ranges quickly and efficiently.
> It permits the best performance on IP lookups, and it's suitable for use in a production environment. > > This product includes GeoLite2 data created by MaxMind, available from https://www.maxmind.com This file format potentially allows Sniffnet to execute hundreds of different IP lookups in a matter of a few milliseconds.
## Supported application layer protocols
See details
Application layer protocols are inferred from the transport port numbers, following the convention maintained by [IANA](https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml). Please, remember that this is just a convention: > **Warning** > > The Internet Assigned Numbers Authority (IANA) is responsible for maintaining > the official assignments of port numbers for specific uses.
> However, many unofficial uses of well-known port numbers occur in practice. The following table reports the port-to-service mappings used by Sniffnet, chosen from the most common assignments by IANA.
|Port number(s)|Application protocol | Description | |--|--|--| | 20, 21 | FTP |File Transfer Protocol | |22|SSH |Secure Shell | |23|Telnet |Telnet | |25|SMTP |Simple Mail Transfer Protocol | |49|TACACS |Terminal Access Controller Access-Control System | |53|DNS |Domain Name System | |67, 68|DHCP |Dynamic Host Configuration Protocol | |69|TFTP |Trivial File Transfer Protocol | |80, 8080|HTTP |Hypertext Transfer Protocol | |109, 110|POP |Post Office Protocol | |123|NTP |Network Time Protocol | |137, 138, 139|NetBIOS |NetBIOS | |143, 220|IMAP |Internet Message Access Protocol | |161, 162, 199|SNMP |Simple Network Management Protocol | |179|BGP |Border Gateway Protocol | |389|LDAP |Lightweight Directory Access Protocol | |443|HTTPS |Hypertext Transfer Protocol over SSL/TLS | |636|LDAPS |Lightweight Directory Access Protocol over TLS/SSL | |989, 990|FTPS |File Transfer Protocol over TLS/SSL | |993|IMAPS |Internet Message Access Protocol over TLS/SSL | |995|POP3S |Post Office Protocol 3 over TLS/SSL | |1900|SSDP |Simple Service Discovery Protocol | |5222|XMPP |Extensible Messaging and Presence Protocol | |5353|mDNS |Multicast DNS |
## Keyboard shortcuts
See details
Some keyboard shortcuts are available to improve the efficiency of use and the overall user experience. If you want to suggest a different key combination for one of the existing shortcuts or if you want to propose a new shortcut, have a look at [this](https://github.com/GyulyVGC/sniffnet/issues/97) issue. The currently usable hotkeys are reported in the following. > **Note** > > On macOS, use the `cmd` key instead of `ctrl`
| Event | Shortcut keys | |--|--| | Quit the application | `ctrl+Q` | | Open full report | `ctrl+O` | | Open settings | `ctrl+,` | | Clear all notifications | `ctrl+D` | | Interrupt the ongoing analysis | `ctrl+backspace` | | Start the analysis and confirm modal actions | `enter` | | Close settings and modal popups | `esc` | | Switch from a tab to the next (or previous) one | `tab` (or `shift+tab`) | | Change inspect connections page to the next (or previous) one | `ctrl+rightArrow` (or `ctrl+leftArrow`) |
## Troubleshooting
See details ### Missing dependencies Most of the errors that can occur are likely due to your system missing required `pcap` dependencies, necessary to correctly analyze a network adapter.
Check the [required dependencies](#required-dependencies) section for instructions on how to proceed. Note that most Linux system also need this dependency (required to build the library used to play sounds): ```sh sudo apt-get install libasound2-dev ``` Some Linux systems also need `libfontconfig`, see issue [#18](https://github.com/GyulyVGC/sniffnet/issues/18) for a reference. > **Note** > > View issues labeled with [`missing-dependencies`](https://github.com/GyulyVGC/sniffnet/issues?q=is%3Aissue+label%3A%22missing+dependency%22+) to see how those problems have been solved by others. ### Installers incompatibilities If you have problems after having installed Sniffnet through the provided installers, it could be due to your OS not being compatible with the pre-built binaries I generated for you.
Reach out to me, and I'll try to generate an installer for your specific operating system. > **Warning** > > The DEB package for Linux is built on the latest version of Ubuntu and in some cases may not be compatible with Debian.
> See issue [#199](https://github.com/GyulyVGC/sniffnet/issues/199) for a reference. ### Rendering problems In some cases, especially if you are running on an old architecture, the `wgpu` default renderer used by [iced](https://github.com/iced-rs/iced) may cause some problems that could prevent you from running Sniffnet.
In this case, you can try building the application from the [`glow-renderer`](https://github.com/GyulyVGC/sniffnet/tree/glow-renderer) branch, which uses the `glow` renderer. > **Note** > > View issues labeled with [`renderer`](https://github.com/GyulyVGC/sniffnet/issues?q=is%3Aissue+label%3Arenderer) to see how those problems have been solved by others. ### ***In any case don't hesitate to [open an issue](https://github.com/GyulyVGC/sniffnet/issues), and I will do my best to help you!***
## Acknowledgements - A big shout-out to [all the contributors](https://github.com/GyulyVGC/sniffnet/blob/main/CONTRIBUTORS.md) of Sniffnet! - The graphical user interface has been realized with [iced](https://github.com/iced-rs/iced), a cross-platform GUI library for Rust focused on simplicity and type-safety

- Last but not least, thanks to [every single stargazer](https://github.com/GyulyVGC/sniffnet/stargazers): all forms of support made it possible to keep improving Sniffnet!