- CI: Fixed test frameworks for error checking
- Feature: IPv6 support (
-6
)
- Changed
--rebind
to allow omitting an argument for endless connect retries
- Added self-injecting unbreakable pwncat reverse shell
- Fixed broken pipe with
tail -F
- CI: Retry with different port on test failure
- Added feature: Made
PSEStore
instance available to all PSE scripts to persist data, interacti with sockets, stop signal and logger - Added chat-bot PSE
- Added documentation for PSE API
- Feature: Client port hopping (
--reconn-robin
): #43
- Feature: Adedd PSE: Pwncat Scripting Engine (
--script-send
and--script-recv
): #62
- Fixed various bugs with
--reconn
,--keep-open
,--local
and--remote
- Fixed various bugs with threads
- Fixed shutdown behaviour with Ctrl+c for --keep-open
- Fixed shutdown behaviour with Ctrl+c for --reconn
- Feature: Custom ping word (
--ping-word
): #49 - Python type coverage report
- CI: Added ca. 13,000 LoC integration tests and fixed findings accordingly
- CI: Added dockerized interactive tests to simulate Ctrl+c
- Code: really heavy heavy code refactoring
- Option:
-C
/--crlf
now takes an argument to either force LF, CRLF or CR or even remove line feeds altogether on input AND output (or keep as it is, if not specified) - Modularized code for better plugin integration
- Fixes #47 Change
--udp-*
options to--*
to allow both, UDP and TCP
- CI: pylinyt
- CI: mypy
- Code: heavy refactoring
- CI: separate jobs
- API: switched from pdoc to pdoc3
- Feature: colorized logging (
-c
/--color
): #56
- Feature: implemented remote port forwarding mode:
-R
/--remote
- Fixed
-L
/--local
mode to now persist multiple requests - Fixed
-C
/--crlf
Only replace\n
with\r\n
if\n
exists and don't blindly add.
- Integration tests for
L
/--local
mode
- Plugin architecture has been heavily refactored to make it easier to add new plugins
- Improved logging
- Fixed
-n
/--nodns
to actually not resolve DNS - Fixed various threading issues
- Check for unimplemented options
- Feature: Made socket receive non-blocking
- Feature: Made stdin non-blocking (except for Windows)
- Documentation: man page
- Documentation: updated readme and contribution guidelines
- CI: lots of integration tests for Linux, MacOS and Windows
- Changed daemon threads to non-daemon threads
- Use Python's
logging
module instead of self-written one - Usage options have changed drastically
- Changed
--reconn
and--reconn-wait
to keep open (-k
/--keep
)
- Removed
builtins
import for cross-os base install compatibility
- Feature: Local port forward (
-L
)
- Feature: UDP connect mode interval ping (
--udp-ping-intvl
) for unbreakable UDP reverse shells
- Hardened Python 2/3 string compatibility
- Checking against mutually exclusive arguments
- Fix crash while checking for Mac newlines
\r
- Editorconfig
- Feature: Re-connect/Re-listen on connection abort (
--reconn
) - Feature: Re-connect/Re-listen on connection abort (
--reconn-wait
)
- Feature: Execute shell commands (
-e/--exec
) - Feature: Skip DNS resolution (
-n/--nodns
) - Documentation: API docs
- Renamed project from netcat to pwncat
- Feature: Listen
- Feature: Connect
- Feature: UDP mode
- Feature: Change linefeeds (LF vs CRLF)
- Feature: Verbosity