TCPBUG(1)

πŸ“¦
version 0.6.2+git20120127.c28952d Β· 2 versions
  • 0.6.2+git20120127.c28952d Β· debian bookworm, debian trixie, ubuntu jammy, ubuntu noble, ubuntu questing, ubuntu resolute, ubuntu stonking (latest)
  • 0.6.2 Β· fedora 43, fedora 44
, in debian bookworm, debian trixie, ubuntu jammy, ubuntu noble, ubuntu questing, ubuntu resolute, ubuntu stonking

πŸ’– TCPBUG(1) β€” the tcpbug manual, but make it cute πŸ’–

okay bestie so this is the manual page for tcpbug, from the General Commands Manual (section 1, the commands section, iykyk). it's giving "networking but make it nosy" and honestly? iconic. let's get into it πŸ¦‹


✨ NAME ✨

tcpbug β€” TCP/IP connection bugging device πŸ”

like. it bugs connections. on purpose. legally. that's the whole vibe.


🌸 SYNOPSIS 🌸

tcpbug [-cx] [-btT] local-port remote-host remote-port

that's it, that's the whole summoning circle ✨ give it a local port, a remote host, and a remote port, and sprinkle in some flags to taste.


πŸŽ€ DESCRIPTION πŸŽ€

so here's the tea, bestie πŸ“ tcpbug takes a TCP/IP connection that comes in on port local-port on the local machine and forwards it to port remote-port on remote-host β€” but the whole time it's spying on the connection πŸ‘€ and writing every single byte that passes through to standard output. no cap.

and the way it labels stuff is so cute and readable:

  • everything coming from the client gets printed with a greater than sign (>) first on each line
  • everything coming from the server gets printed with a less than sign (<) first on each line

and if you've got any byte offsets and timestamps turned on, they get printed before the > or < sign, and they're separated from each other by a colon (:). very demure, very organized πŸ’…


πŸ’… OPTIONS πŸ’…

  • -b β€” prints the offset of the first byte in the stream for each line. so you always know exactly where you are in the byte-verse πŸ”’
  • -c β€” displays bytes as individual characters 🫢 printable characters get shown directly, some control characters show up as C-language escapes (\n, \r, \t et.c), and the rest show up as 3-digit octal numbers. supposedly this should be similar to the -c switch of od(1). periodt.
  • -t β€” prints the time the data was received, for each line ⏰ that time is the number of seconds and microseconds, separated by a decimal point (.), since 00:00 UTC, January 1, 1970, as reported by gettimeofday(). yes that's the epoch, yes it's a whole thing, we love her.
  • -T β€” also prints the time the data was received for each line ⏱️ but this one is the number of seconds and microseconds, separated by a decimal point (.), since the connections were established. so it's relative time, not epoch time. main character energy but make it a stopwatch.
  • -x β€” displays each byte as a two digit hexadecimal number πŸ”₯ hex girlies rise up.

🌈 SEE ALSO 🌈

go read those too, bestie, they're all in the same friend group πŸ’œ


πŸ’€ BUGS πŸ’€

the names of the options are not yet finalized, and may change at a future release. so like. don't get too attached to your muscle memory. πŸ™ˆ

πŸ‘‘ and finally, the sign-off πŸ‘‘

this page is dated 1997 April 13 and it's from the General Commands Manual β€” yes, a genuine 90s artifact, and she's still serving. no notes, honestly. πŸ’–βœ¨

k bye, go bug some connections responsibly πŸ¦‹πŸŒΈ