# sniffnet
**Repository Path**: xp-admin/sniffnet
## Basic Information
- **Project Name**: sniffnet
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-01-03
- **Last Updated**: 2024-05-29
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README

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**](https://github.com/GyulyVGC/sniffnet/blob/main/ROADMAP.md).
A special mention goes to these awesome organizations and folks who are sponsoring Sniffnet:
## Installation
You can install Sniffnet in one of the following ways:
from GitHub releases 
You can download the latest version of Sniffnet through the installers available **below**.
_Choose from a Windows Installer, an Apple Disk Image, a DEB package, or an RPM package (depending on your operating system)._
> **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
```
from Nixpkgs
You can install [Sniffnet Nix package](https://search.nixos.org/packages?channel=23.05&show=sniffnet&from=0&size=50&sort=relevance&type=packages&query=sniffnet) adding the following Nix code to your NixOS Configuration, usually located in `/etc/nixos/configuration.nix`:
```nix
environment.systemPackages = [
pkgs.sniffnet
];
```
Alternatively, you can install it in your home using [Home Manager](https://github.com/nix-community/home-manager) with:
```nix
home.packages = [
pkgs.sniffnet
];
```
Alternatively, you can try it in a shell with:
```sh
nix-shell -p sniffnet
```
on Arch Linux
You can install Sniffnet community package via [pacman](https://wiki.archlinux.org/title/Pacman):
```sh
pacman -S sniffnet
```
on FreeBSD
You can install Sniffnet port with:
```sh
pkg install sniffnet
```
on NetBSD
You can install Sniffnet from the official repositories via [pkgin](https://pkgin.net):
```sh
pkgin install sniffnet
```
on Tiny Core Linux
You can install Sniffnet from the official repository with:
```
tce-load -wi 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!
However, remember to run the app with administrator privileges: this is needed to analyse the activity of your network device.
## 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 12 different available themes, plus custom theme support
- 🕵️ 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`) |
## Custom themes
See details
Custom themes are specified as a TOML file.
The TOML must follow this format:
```toml
# all colors are in RGB/RGBA hexadecimal.
primary = "#303446" # background color
secondary = "#a6d189" # header, footer, and incoming connections color
outgoing = "#f4b8e4" # outgoing connections color
text_body = "#c6d0f5" # body text color
text_headers = "#232634" # header and footer text color
starred = "#e5c890aa" # favorites' star color
```
The example theme above uses colors from [Catppuccin](https://github.com/catppuccin/catppuccin).
You can also check the [`resources/themes`](https://github.com/GyulyVGC/sniffnet/tree/main/resources/themes) folder,
which contains sample TOML files with additional themes.
To use a custom theme for your instance of Sniffnet, specify the path of your TOML file in the application's
settings (at the bottom of the style tab).
## 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, depending on your operating system.
### Rendering problems
In some circumstances, especially if you are running on an old architecture or your graphical drivers are not up-to-date,
the `wgpu` default renderer used by [iced](https://github.com/iced-rs/iced)
may cause problems (country icons are completely black, or the interface glitches).
In these cases you can download an alternative version of the application,
which is based on `tiny-skia`, a CPU-only software renderer that should work properly on every environment:
[Windows](https://github.com/GyulyVGC/sniffnet/suites/18338999542/artifacts/1061225849) |
[macOS](https://github.com/GyulyVGC/sniffnet/suites/18338999542/artifacts/1061225848) |
[Linux DEB](https://github.com/GyulyVGC/sniffnet/suites/18338999542/artifacts/1061225847) |
[Linux RPM](https://github.com/GyulyVGC/sniffnet/suites/18338999542/artifacts/1061225850)
### ***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!