From 58a1590583f7c19df47fb183f4f7eb40a5d26ef4 Mon Sep 17 00:00:00 2001 From: z3rOR0ne Date: Fri, 16 Dec 2022 16:15:39 -0800 Subject: [PATCH] :memo: Scripts on nc and websockets --- scripts/netcat_tut.sh | 6 ----- scripts/nk | 9 +++++++ scripts/websock.sh | 61 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 70 insertions(+), 6 deletions(-) delete mode 100755 scripts/netcat_tut.sh create mode 100755 scripts/nk create mode 100755 scripts/websock.sh diff --git a/scripts/netcat_tut.sh b/scripts/netcat_tut.sh deleted file mode 100755 index 3b99f8f9..00000000 --- a/scripts/netcat_tut.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash - -while : -do - echo -e "HTTP/1.1 200 OK\n\n$(echo '

Hi there

')" | nc -l -k -p 8080 -q 1 -done diff --git a/scripts/nk b/scripts/nk new file mode 100755 index 00000000..018c8544 --- /dev/null +++ b/scripts/nk @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +servefile="$1" + +while : +do + # echo -e "HTTP/1.1 200 OK\n\n$(echo '

Hi there

')" | nc -l -k -p 8080 -q 1 + echo -e "HTTP/1.1 200 OK\n\n$(cat "$servefile")" | nc -l -k -p 8080 -q 1 +done diff --git a/scripts/websock.sh b/scripts/websock.sh new file mode 100755 index 00000000..f93a913f --- /dev/null +++ b/scripts/websock.sh @@ -0,0 +1,61 @@ +#!/bin/bash +# https://gist.github.com/apk/2414478 +# WebSocket shell, start & browse to http://:6655/ +# Requires bash 4.x, openssl. +# Author: rootshell@corelogics.de (which isn't me, apk) +coproc d { nc -l -p 6656 -q 0; } +nc -l -p 6655 -q 1 > /dev/null <<-ENDOFPAGE + HTTP/1.1 200 OK + +
+ +
+ENDOFPAGE + +until read line; line=`tr -d '\r\n'<<<$line`; test -z "$line"; do + test "${line:0:18}" = "Sec-WebSocket-Key:" && key=${line:19} + test "${line:0:22}" = "Sec-WebSocket-Version:" && ver=$line +done <&${d[0]} +rkey=`echo -n ${key}258EAFA5-E914-47DA-95CA-C5AB0DC85B11|openssl dgst -sha1 -binary|base64` +echo -ne "HTTP/1.1 101 Switching Protocols\r\n" >&${d[1]} +echo -ne "Upgrade: websocket\r\nConnection: Upgrade\r\n" >&${d[1]} +echo -ne "Sec-WebSocket-Accept: $rkey\r\n$ver\r\n\r\n" >&${d[1]} + +doasync() { + bash -c "$1" | while read line; do + while [ "${#line}" -gt 0 ]; do + l2=${line:0:80} + len=`echo -n "$l2" | wc -c | tr -d ' '` + echo -ne "\x81\x`printf '%02x' $len`$l2" + line=${line:80} + done + done & +} + +while true; do + reclen=$((`od -j 1 -N 1 -t dI -A n <&${d[0]}` - 128)) + for i in `seq 0 3`; do + mk[$i]=`od -N 1 -t dI -A n <&${d[0]}` + done + msg="" + for i in `seq 0 $(($reclen - 1))`; do + bt=`od -N 1 -t dI -A n <&${d[0]}` + bt=$(($bt ^ ${mk[$(($i % 4))]})) + msg="$msg$(echo -e "\x`printf '%02x' $bt`")" + done + test "$msg" = "exit" && break + doasync "$msg" >&${d[1]} +done +echo >&${d[1]}-