script to encode a payload
This commit is contained in:
@@ -0,0 +1 @@
|
|||||||
|
payloads/
|
||||||
@@ -9,4 +9,10 @@ cat payload.duck | python encoder.py -p -l fr > payload.bin
|
|||||||
python3 duck2spark.py -i payload.bin -l 1 -f 1000 -o payload.ino
|
python3 duck2spark.py -i payload.bin -l 1 -f 1000 -o payload.ino
|
||||||
rm payload.bin
|
rm payload.bin
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Or with the script (replace payload with the name of the payload and fr with the layout):
|
||||||
|
```bash
|
||||||
|
./encode.sh payload fr
|
||||||
|
```
|
||||||
|
|
||||||
Then flash your Digispark Attiny85 using arduino IDE.
|
Then flash your Digispark Attiny85 using arduino IDE.
|
||||||
|
|||||||
@@ -0,0 +1,68 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
|
||||||
|
PYTHON="python3"
|
||||||
|
|
||||||
|
ENCODER="$SCRIPT_DIR/encoder.py"
|
||||||
|
DUCK2SPARK="$SCRIPT_DIR/duck2spark.py"
|
||||||
|
|
||||||
|
INPUT_DIR="$SCRIPT_DIR/ducky-payloads"
|
||||||
|
OUTPUT_DIR="$SCRIPT_DIR/payloads"
|
||||||
|
RESOURCE_DIR="$SCRIPT_DIR/resources"
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
echo "Usage: $0 <payload> <layout>"
|
||||||
|
echo
|
||||||
|
echo "Example:"
|
||||||
|
echo " $0 open-website fr"
|
||||||
|
}
|
||||||
|
|
||||||
|
if [[ $# -ne 2 ]]; then
|
||||||
|
usage
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
PAYLOAD="$1"
|
||||||
|
LAYOUT="$2"
|
||||||
|
|
||||||
|
INPUT="$INPUT_DIR/$PAYLOAD.duck"
|
||||||
|
OUTPUT="$OUTPUT_DIR/$PAYLOAD.ino"
|
||||||
|
TMP_BIN="$OUTPUT_DIR/$PAYLOAD.bin"
|
||||||
|
LANG_FILE="$RESOURCE_DIR/$LAYOUT.properties"
|
||||||
|
|
||||||
|
if [[ ! -f "$INPUT" ]]; then
|
||||||
|
echo "Error: payload not found: $INPUT" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -f "$LANG_FILE" ]]; then
|
||||||
|
echo "Error: keyboard layout not found: $LANG_FILE" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p "$OUTPUT_DIR"
|
||||||
|
|
||||||
|
echo "Payload : $PAYLOAD"
|
||||||
|
echo "Layout : $LAYOUT"
|
||||||
|
echo "Input : $INPUT"
|
||||||
|
echo "Output : $OUTPUT"
|
||||||
|
|
||||||
|
# DuckyScript to binary payload.
|
||||||
|
"$PYTHON" "$ENCODER" \
|
||||||
|
-i "$INPUT" \
|
||||||
|
-o "$TMP_BIN" \
|
||||||
|
-l "$LAYOUT"
|
||||||
|
|
||||||
|
# Binary payload to Arduino sketch.
|
||||||
|
"$PYTHON" "$DUCK2SPARK" \
|
||||||
|
-i "$TMP_BIN" \
|
||||||
|
-l 1 \
|
||||||
|
-f 1000 \
|
||||||
|
-o "$OUTPUT"
|
||||||
|
|
||||||
|
# Remove intermediate file.
|
||||||
|
rm -f "$TMP_BIN"
|
||||||
|
|
||||||
|
echo "Generated $OUTPUT"
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
#include "DigiKeyboard.h"
|
|
||||||
|
|
||||||
void setup() {
|
|
||||||
// Give Linux time to enumerate the Digispark as a keyboard.
|
|
||||||
DigiKeyboard.delay(1000);
|
|
||||||
|
|
||||||
// Open a terminal.
|
|
||||||
DigiKeyboard.sendKeyStroke(KEY_T, MOD_CONTROL_LEFT | MOD_ALT_LEFT);
|
|
||||||
DigiKeyboard.delay(1000);
|
|
||||||
|
|
||||||
// Launch Firefox.
|
|
||||||
DigiKeyboard.print("firefox https://hadow.fr");
|
|
||||||
DigiKeyboard.sendKeyStroke(KEY_ENTER);
|
|
||||||
}
|
|
||||||
|
|
||||||
void loop() {
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user