Browse by type
Packet monster, or Packémon for short! (っ‘-’)╮=͟͟͞͞◒ ヽ( '-'ヽ)
https://github.com/user-attachments/assets/08f96575-7aca-47e7-bdeb-6705ce2bbaba
TUI tool for generating packets of arbitrary input and monitoring packets on any network interfaces (default: eth0). The list of interfaces to be specified is output when packemon interfaces is run.
This tool works on Windows, macOS, and Linux.
This TUI tool is now available on macOS because of cluster2600 support. Thanks🎉!
I intend to develop it patiently🌴
The images of Packemon on REDME should be used as reference only, as they may look different from the actual Packemon.
[!WARNING] This tool is implemented with protocol stacks from scratch and utilizes raw socket.
There may be many bugs. If you find a bug, I would be glad if you raise an issue or give me a pull request!
This TUI tool has two major functions: packet generation and packet monitoring.
|Generated DNS query
| and Recieved response | Displayed DNS response detail | Filtered packets |
|---|---|---|
![]() |
![]() |
![]() |
This image shows packemon running in Generator / Monitor mode.
DNS query packet generated by Generator on the left is shown in 56 line of the Monitor. DNS query response packet is shown as 57 line, and a more detailed view of it is shown in the middle image.
See here for detailed instructions.
Packemon's Monitor allows user to select each packet by pressing Enter key. Then, select any line and press Enter key to see the details of the desired packet. Pressing Esc key in the packet detail screen will return you to the original packet list screen.
The rightmost image shows how the packet list is filtered.
--interface flag. Default is eth0.details
Implementation using Go standard package (The following are valid fields;)
Source IP Addr, Destination IP AddrSource IP Addr, Destination IP AddrSource Port, Destination Port, Do TCP 3way handshake ?(Check required)Experimental implementation (full scratch)
TLS_RSA_WITH_AES_128_GCM_SHA256nmap --script ssl-enum-ciphers -p 443 <server ip>Implementation using Go standard package (The following are valid fields;)
Source IP Addr, Destination IP AddrSource Port, Destination Port, Do TCP 3way handshake ?(Check required)Experimental implementation (full scratch)
TLS_CHACHA20_POLY1305_SHA256Source IP Addr, Destination IP AddrSource IP Addr, Destination IP AddrSource Port, Destination Port (UDP selection required)HTTP: All fields
[x] DNS (WIP)
[!WARNING] While using Generator mode, TCP RST packets automatically sent out by the kernel are dropped. When this mode is stopped, the original state is restored. Probably😅. Incidentally, dropping RST packets is done by running the eBPF program. The background note incorporating the eBPF is the POST of X around here.
[!TIP] While in Generator mode, output of
bpf_printkof eBPF program can be checked by executing the following command.$ sudo mount -t debugfs none /sys/kernel/debug (only once)
$ sudo cat /sys/kernel/debug/tracing/trace_pipe
--interface flag. Default is eth0.--parse-full flag.Dst, Proto, SrcIP...etc.) displayed in the listed packets.details
[!WARNING] If packet parsing fails, it is indicated by “Proto:ETHER” as shown in the following image.
If you want to check the details of the packet, you can select the line, save it to a pcapng file, and import it into Wireshark or other software🙏
[!IMPORTANT] For Linux, require 'Dependencies' section of https://ebpf-go.dev/guides/getting-started/#ebpf-c-program
For Windows, require Npcap. Check the following
Support raw 802.11 traffic (and monitor mode) for wireless adaptersInstall Npcap in WinPcap API-compatible Mode
$ git clone git@github.com:ddddddO/packemon.git $ cd packemon (For Linux) $ cd tc_program/ && go generate && cd - (For Linux or macOS) $ go build -o packemon cmd/packemon/*.go $ ls | grep packemon $ mv packemon /usr/local/bin/ (For Windows) $ go build -o packemon.exe .\cmd\packemon\
[!IMPORTANT] It might be that the generation of the executable file is failing. At that time, install it in another way!
For arm64, convert “amd64” to “arm64” in the following commands and execute them.
deb $ export PACKEMON_VERSION=X.X.X $ curl -o packemon.deb -L https://github.com/ddddddO/packemon/releases/download/v$PACKEMON_VERSION/packemon_$PACKEMON_VERSION-1_amd64.deb $ dpkg -i packemon.deb rpm $ export PACKEMON_VERSION=X.X.X $ (Ubuntu) yum install https://github.com/ddddddO/packemon/releases/download/v$PACKEMON_VERSION/packemon_$PACKEMON_VERSION-1_amd64.rpm or $ (Fedora) dnf install https://github.com/ddddddO/packemon/releases/download/v$PACKEMON_VERSION/packemon_$PACKEMON_VERSION-1_amd64.rpm apk $ export PACKEMON_VERSION=X.X.X $ curl -o packemon.apk -L https://github.com/ddddddO/packemon/releases/download/v$PACKEMON_VERSION/packemon_$PACKEMON_VERSION-1_amd64.apk $ apk add --allow-untrusted packemon.apk Homebrew $ brew install ddddddO/tap/packemon AUR https://aur.archlinux.org/packages?K=packemon
Confirmed executable in the following environments
console
PS > $defaultGateway = (Get-NetRoute -DestinationPrefix "0.0.0.0/0" | Sort-Object -Property InterfaceMetric | Select-Object -First 1).NextHop
PS > echo $defaultGateway
192.168.10.1
PS > Get-NetNeighbor -IPAddress $defaultGateway | Select-Object -ExpandProperty LinkLayerAddresscmd
cat /etc/os-releaseuname -runame -m For macOS, besides Homebrew, this is also easy.
[!IMPORTANT] For Windows, require Npcap. Check the following
Support raw 802.11 traffic (and monitor mode) for wireless adaptersInstall Npcap in WinPcap API-compatible Mode
$ go install github.com/ddddddO/packemon/cmd/packemon@latest
```console $ packemon --help NAME: packemon - Packet monster (っ‘-’)╮=͟͟͞͞◒ ヽ( '-'ヽ) TUI tool for sending packets of arbitrary input and monitoring packets on any network interfaces (default: eth0). Windows/macOS/Linux
⌒丶、_ノ⌒丶、_ノ⌒丶、_ノ⌒丶、_ノ⌒丶、_ノ⌒丶、_ノ
○
о
。
,、-、_ __
,、-―、_,、'´  ̄ `ヽ,
/ ・ . l、
l, ヾニニつ `ヽ、
| `ヽ,
ノ ノ
/:::: /
/::::::: ..::l、
/::::::::::::::::::......:::::::. ............::::::::::`l,
l::::::::::::::::::::::::::::::::::::...... ....:::::::::::::::::::::::::::::`l,
ヽ,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ノ
 ̄ ̄``ヽ、_:::::::::::::::::::::::,、-―´ ̄`ヽ、,、-'
`ヽ―-―'´
USAGE: packemon [global options] [command [command options]]
VERSION: 1.X.Y / revision zzzzzzz
COMMANDS: monitor, m, mon Monitor mode. You can monitor packets received and sent on the specified interface. Default is 'eth0' interface. generator, g, gen Generator mode. Arbitrary packets can be generated and sent. interfaces, i, intfs Check the list of interfaces. debugging, d, debug Debugging mode. version, v Prints the version. help, h Shows a list of
$ claude mcp add packemon \
-- python -m otcore.mcp_server <graph>