calebstewart / pwncat

Fancy reverse and bind shell handler
https://pwncat.readthedocs.io
MIT License
2.63k stars 258 forks source link

Add pwncat to PyPI #137

Closed calebstewart closed 3 years ago

calebstewart commented 3 years ago

Is the feature related to a problem? Please describe.

No.

Feature Description

Package and deploy pwncat on pypi to enable installation with pip. Currently the cytopia's pwncat has claimed the name in pypi, but after some discussion with @JohnHammond and @trevorbryant, I think the name pwncat-cs could work.

This does not entail changing any of the internal structure of pwncat. Fundamentally, the cytopia pwncat package and the pwncat-cs would be in conflict. Installing both would guarantee problems, as they both install a console script named pwncat. However, the version and dependency situation in PyPI and with pip in general is already so bad that I don't think it would be a huge issue.

Alternatives

Continue instructing people to install from github repository tags. The downside here is that the act of upgrading is more difficult, and specifying pwncat as a dependency of another package is not straightforward. I think this could clear up the installation documentation, and clean up day-to-day usage as well.

Also, it's worth noting that the only real conflict with Cytopia's project is the console script. Cytopia does not implement any importable module, so the actual binary named pwncat is actually the only conflicting part of the installation. I'm open to suggestions on changing the entrypoint name, but I'm not sure what to do about it. There's not a lot of wiggle room to fudge with the name.

Poetry

I'm planning on moving the entire development orchestration and build system to Poetry. I think it will be very useful for isolated environment setup, dependency management, and eventually pushing to PyPI will be really simple. It also collapses requirements.txt and setup.py/setup.cfg into the now-standard pyproject.toml which is cleaner. Doing this while moving toward PyPI seems like a logical move.

What Needs to be Done

Timeline

I haven't decided if this should be done during a patch release or if I should wait for v0.5.0. I'll update the issue when I make a decision.