From 022a53904cf2848a5927ef7b6f484ac745758897 Mon Sep 17 00:00:00 2001 From: Ville Rantanen Date: Sat, 27 Jul 2019 20:16:57 +0300 Subject: [PATCH] request specific port --- src/ssh-backdoor | 17 +++++++++++++---- src/ssh-backdoor-open | 9 +++++---- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/ssh-backdoor b/src/ssh-backdoor index 01c4329..9037c39 100755 --- a/src/ssh-backdoor +++ b/src/ssh-backdoor @@ -85,6 +85,14 @@ def setup_options(): type = str, help="Id name for backdoor" ) + parser_open.add_argument( + action = 'store', + dest = 'port', + type = int, + default = None, + nargs = '?', + help="Request a port for backdoor" + ) parser_wait = subparsers.add_parser( "keep", @@ -206,11 +214,12 @@ class DataBase: self.conn_end() - def update(self, id): + def update(self, id, port = None): self.id = id - port = self.get_port(id) if port == None: - port = self.new_port() + port = self.get_port(id) + if port == None: + port = self.new_port() parent = self.get_pid() self.db = self.conn.cursor() self.db.execute("INSERT OR REPLACE INTO ports(id,port,date,pid,host,die) \ @@ -333,7 +342,7 @@ if __name__ == "__main__": db.connect_backdoor(opts.id) if opts.command == "open": - print(db.update(opts.id)) + print(db.update(opts.id, opts.port)) if opts.command == "keep": print(db.update(opts.id)) diff --git a/src/ssh-backdoor-open b/src/ssh-backdoor-open index f22baef..2ec2be0 100755 --- a/src/ssh-backdoor-open +++ b/src/ssh-backdoor-open @@ -13,6 +13,7 @@ if [[ "$1" = update ]]; then fi _ssh() { + trap 'kill -INT -$sshpid; exit;' INT timeout -k 10 3700 ssh \ -o UserKnownHostsFile=/dev/null \ -o StrictHostKeyChecking=no \ @@ -21,15 +22,16 @@ _ssh() { -o ServerAliveCountMax=3 \ -p ${BACKDOORPORT} \ ${BACKDOORHOST} \ - "$@" + "$@" & + sshpid=$! + wait $sshpid #~ -o "ExitOnForwardFailure yes" \ } BACKDOORHOST={{BACKDOORHOST}} BACKDOORPORT={{BACKDOORPORT}} USER=$( id -u -n ) -echo use of ssh-add is encouraged -( sleep 3; printf "%d\r" $SECONDS ) & +echo "Must use ssh agent (ssh-add)" while true; do port=$( _ssh bin/ssh-backdoor open $USER@$HOSTNAME ) [[ -z "$port" ]] && { sleep 2; continue; } @@ -47,4 +49,3 @@ while true; do printf " $i\r" done done -kill %1