#!/bin/bash #ip=$1 ip=localhost port=1337 n=3 test -p fifo || mkfifo fifo echo -e "0\n0\n0" > clientvariables.txt function myrecv() { read input status=$(echo $input | cut -d ' ' -f 1) c=$(echo $input | cut -d ' ' -f 2) expstatus=$(echo $input | cut -d ' ' -f 3) if [[ "$status" == "USERACCEPTED" ]]; then sed -i "1s/.*/$c/" clientvariables.txt if [[ "$expstatus" == "no" ]]; then sed -i "3s/.*/expired/" clientvariables.txt else sed -i "3s/.*/notexpired/" clientvariables.txt fi elif [[ "$status" == "PASSWORDACCEPTED" ]]; then sed -i "2s/.*/yes/" clientvariables.txt else echo $input fi } function createpw() { pw=$1 for ((i=1;i<=n;i++)); do tmp=$(echo $pw | shasum | cut -d ' ' -f 1) pw=$tmp done mysend "$pw $n" } function mysend() { if [ -z "$1" ]; then echo "No parameter passed to send" else echo $1 | nc -w 1 $ip $port | myrecv fi } while true; do echo "====== Lab: Shell Programming (BS) ======" echo -e "\n\n\tr\tRegister\n\tl\tLogin\n\tq\tQuit\n" read -p "your choice: " input if [ $input = "r" ]; then clear echo "====== Lab: Shell Programming (BS) ======" echo -e "\n\n" echo "----- R E G I S T E R -----" mysend "REGISTER" read -p "login: " newlogin mysend $newlogin read -p "password: " newpassword createpw $newpassword elif [ $input = "l" ]; then clear echo "====== Lab: Shell Programming (BS) ======" echo -e "\n\n" echo "----- L O G I N -----" mysend "LOGIN" read -p "login: " login mysend $login pwstatus=$(sed -n 3p clientvariables.txt) #read -p "password: " userpassword cnt=$(sed -n 1p clientvariables.txt) if [[ "$pwstatus" == "expired" ]]; then exec 4<&0 read -u 4 -p "password expired, please enter a new one: " newpassword createpw $newpassword else exec 3<&0 read -u 3 -p "password: " userpassword k=$(expr $n - $cnt) for ((i=1;i<=k;i++)); do tmp=$(echo $userpassword | shasum | cut -d ' ' -f 1) userpassword=$tmp done mysend $userpassword fi read -p "file name: " filename mysend $filename elif [ $input = "q" ]; then echo "Quitting..." exit 0 else echo "Invalid option. Exiting..." fi done