Warning
This repository is my vibe code experiment and is not fully tested. Use at your own risk—features and behaviors may change or break unexpectedly.
QCat is a modern alternative to netcat with QUIC, TCP, and UDP support. The primary purpose is to learn about network programming in Go and analyze network packets via tools like Wireshark.
- Support for QUIC protocol (default)
- TCP protocol support
- UDP protocol support
- Listen and connect modes
- Simple, easy-to-understand codebase for educational purposes
- Go 1.18 or higher installed (https://golang.org/dl/)
- Git (for building from source)
go install github.com/zzdif/qcat@latestEnsure $GOPATH/bin or $HOME/go/bin is in your PATH to use the installed binary.
git clone https://github.com/zzdif/qcat.git
cd qcat
go build -o qcatOptionally, move the binary to a directory in your PATH:
mv qcat $HOME/go/bin/# Listen on port 8000 with QUIC protocol (default)
./qcat listen -l :8000
# Listen using TCP
./qcat listen -l :8000 -p tcp
# Listen using UDP
./qcat listen -l :8000 -p udpUse the --idle-timeout flag to specify a custom QUIC idle timeout (duration).
# Listen with custom QUIC idle timeout (e.g., 2 minutes)
./qcat listen -l :8000 --idle-timeout 2m# Connect to a QUIC server
./qcat connect -c example.com:8000
# Connect using TCP
./qcat connect -c example.com:8000 -p tcp
# Connect using UDP
./qcat connect -c example.com:8000 -p udpAdd -v flag for verbose output:
./qcat listen -l :8000 -vThis tool is primarily designed for learning purposes. You can use Wireshark to capture and analyze packets while QCat is running to learn about:
- QUIC protocol handshake and packet structure
- Differences between TCP and UDP packets
- Network packet analysis
- Connection establishment and termination
MIT