NoirCast is a powerful TUI for network security professionals, penetration testers, and security researchers. It provides an intuitive vim-like interface for crafting and sending custom network packets with real-time response tracking.
?)Space+n to create new sessions):flood command)git clone https://github.com/0x00nier/NoirCast.git
cd NoirCast
cargo build --release
# Standard mode (connect scans, UDP)
./target/release/noircast
# With raw socket support (Linux)
sudo ./target/release/noircast
# Or set capabilities once
sudo setcap cap_net_raw+ep ./target/release/noircast
./target/release/noircast
./target/release/noircasti to enter insert mode and type target: 192.168.1.1:80Esc to return to normal mode1 for TCP or P to open protocol pickers to send packetsFor raw socket scans (SYN, ICMP), run with sudo or set capabilities.
noircast [OPTIONS]
Options:
-d, --debug Enable debug logging
-l, --log-file <PATH> Log file path [default: noircast.log]
-w, --workers <N> Number of worker threads [default: CPU count]
-b, --batch-size <N> Batch size for concurrent sending [default: 1000]
-t, --timeout <MS> Connection timeout in milliseconds [default: 3000]
-H, --host <HOST> Target host (optional, can be set in TUI)
-p, --port <PORT> Target port (optional, can be set in TUI)
-h, --help Print help
-V, --version Print version
| Key | Action |
|---|---|
j / k |
Scroll down/up in current pane |
h / l |
Switch to previous/next pane |
Ctrl+h/j/k/l |
Directional pane navigation |
Tab / Shift+Tab |
Cycle through panes |
Enter |
Select/toggle current item |
s |
Send packet(s) |
r |
Retry last failed |
c |
Clear logs |
e |
Open packet editor popup |
P |
Open protocol picker popup |
i |
Enter Insert mode (edit target) |
: |
Enter Command mode |
/ |
Enter Search mode |
? |
Toggle help popup |
q |
Quit |
| Key | Protocol |
|---|---|
1 |
TCP |
2 |
UDP |
3 |
ICMP |
4 |
HTTP |
5 |
HTTPS |
6 |
DNS |
7 |
NTP |
P |
Open protocol picker (for SNMP, SSDP, SMB, LDAP, NetBIOS, DHCP, Kerberos, ARP) |
The protocol picker supports fuzzy search - just type to filter protocols.
| Key | Scan Type |
|---|---|
F1 |
SYN Scan |
F2 |
Connect Scan |
F3 |
FIN Scan |
F4 |
NULL Scan |
F5 |
XMAS Scan |
F6 |
ACK Scan |
F7 |
UDP Scan |
| Key Sequence | Action |
|---|---|
Space n |
Create new session |
Space ] |
Next session |
Space [ |
Previous session |
Space x |
Close current session |
Enter command mode with : and type:
| Command | Description |
|---|---|
:target <host> |
Set target host |
:port <port> |
Set target port(s) (e.g., 80, 80-443, 80,443,8080) |
:count <n> |
Set packet count |
:scan <type> |
Set scan type (syn, connect, fin, null, xmas, ack, udp) |
:send |
Send packets |
:ports top20 |
Set top 20 common ports |
:ports top100 |
Set top 100 common ports |
| Command | Description |
|---|---|
:packet / :edit |
Open packet editor popup |
:srcport <n> |
Set source port |
:dstport <n> |
Set destination port |
:ttl <n> |
Set TTL (0-255) |
:seq <n> |
Set TCP sequence number |
:ack <n> |
Set TCP acknowledgment number |
:window <n> |
Set TCP window size |
:payload <hex> |
Set payload (hex bytes, e.g., 48656C6C6F) |
:randseq |
Randomize sequence number |
:randport |
Randomize source port |
| Command | Description |
|---|---|
:dns |
Build DNS query packet |
:http |
Build HTTP request packet |
:snmp |
Send SNMP request |
:ntp |
Send NTP request |
:ssdp |
Send SSDP discovery |
| Command | Description |
|---|---|
:flood [rate] |
Start flood mode (optionally limit rate) |
:stop |
Stop flood mode |
| Command | Description |
|---|---|
:stats |
Show statistics |
:clear |
Clear logs and captures |
:debug |
Toggle debug mode |
:help |
Show help |
:quit |
Exit |
Key external dependencies:
This tool is designed for authorized security testing and educational purposes:
Contributions are welcome. Please ensure:
cargo build should be clean) unless there are special exceptions.cargo test)cargo fmtcargo clippy)GPL v3 License - See LICENSE file for details.
0x00nier
For bug reports and feature requests, please open an issue on the GitHub repository.
$ claude mcp add noircast \
-- python -m otcore.mcp_server <graph>