Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
*.txt
idf_component.yml*
2 changes: 2 additions & 0 deletions TODO
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
make bluetooth challengest perform self checks like wifi challenges
divide instructions into removable fox vs not removable hunter instructions
17 changes: 17 additions & 0 deletions bluetooth/classic_discoverable/src/conferences/2026DEFCON-1.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#if defined(EASY)
// RFHS_CHALLENGE_NAME "Bluetooth Classic Easy Fox"
// FOX_KEYWORDS "Hunter should ask 'Are you the Bluetooth Classic Easy Fox?'"
#define NAME "Molly BTC Easy Fox"
#define MAC_ADDR {0xF2, 0x34, 0x10, 0xC4, 0x1B, 0xA8}
#define TIME_TO_WAKE 300
#define TIME_TO_SLEEP 0
#endif

#if defined(HARD)
// RFHS_CHALLENGE_NAME "Bluetooth Classic Hard Fox"
// FOX_KEYWORDS "Hunter should ask 'Are you the Bluetooth Classic Hard Fox?'"
#define NAME "Case BTC Hard Fox"
#define MAC_ADDR {0xF2, 0xBA, 0x05, 0x62, 0xFE, 0x49}
#define TIME_TO_WAKE 30
#define TIME_TO_SLEEP 30
#endif
17 changes: 17 additions & 0 deletions bluetooth/classic_discoverable/src/conferences/2026DEFCON-2.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#if defined(EASY)
// RFHS_CHALLENGE_NAME "Bluetooth Classic Easy Fox"
// FOX_KEYWORDS "Hunter should ask 'Are you the Bluetooth Classic Easy Fox?'"
#define NAME "Molly BTC Easy Fox"
#define MAC_ADDR {0xF2, 0xEB, 0x18, 0x3F, 0x70, 0x8E}
#define TIME_TO_WAKE 300
#define TIME_TO_SLEEP 0
#endif

#if defined(HARD)
// RFHS_CHALLENGE_NAME "Bluetooth Classic Hard Fox"
// FOX_KEYWORDS "Hunter should ask 'Are you the Bluetooth Classic Hard Fox?'"
#define NAME "Case BTC Hard Fox"
#define MAC_ADDR {0xF2, 0x5C, 0x95, 0x2D, 0x04, 0x78}
#define TIME_TO_WAKE 30
#define TIME_TO_SLEEP 30
#endif
17 changes: 17 additions & 0 deletions bluetooth/classic_discoverable/src/conferences/2026DEFCON-3.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#if defined(EASY)
// RFHS_CHALLENGE_NAME "Bluetooth Classic Easy Fox"
// FOX_KEYWORDS "Hunter should ask 'Are you the Bluetooth Classic Easy Fox?'"
#define NAME "Molly BTC Easy Fox"
#define MAC_ADDR {0xF2, 0x8B, 0x74, 0x9A, 0x59, 0x33}
#define TIME_TO_WAKE 300
#define TIME_TO_SLEEP 0
#endif

#if defined(HARD)
// RFHS_CHALLENGE_NAME "Bluetooth Classic Hard Fox"
// FOX_KEYWORDS "Hunter should ask 'Are you the Bluetooth Classic Hard Fox?'"
#define NAME "Case BTC Hard Fox"
#define MAC_ADDR {0xF2, 0x85, 0xA9, 0x94, 0xF2, 0x0B}
#define TIME_TO_WAKE 30
#define TIME_TO_SLEEP 30
#endif
34 changes: 34 additions & 0 deletions bluetooth/iBeacon/src/conferences/2026DEFCON-1.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#if defined(EASY)
// RFHS_CHALLENGE_NAME "BLE Easy Fox"
// FOX_KEYWORDS "Hunter should ask 'Are you the BLE Easy Fox?'"
#define DEVICE_NAME "Bruce BLE Easy Fox"
#define BEACON_UUID "B8DC4EB6-8136-453E-90FF-DBFBCC873DD7"
#define MANUFACTURER_ID 0x4c00
#define MAJOR 5
#define MINOR 88
#define SIGNAL_POWER 0xc5
#define MAC_ADDR {0xF2, 0x25, 0xD4, 0xE4, 0x19, 0x31}

#elif defined(MEDIUM)
// RFHS_CHALLENGE_NAME "BLE Medium Fox"
// FOX_KEYWORDS "Hunter should ask 'Are you the BLE Medium Fox?'"
#define DEVICE_NAME "Cath BLE Medium Fox"
#define BEACON_UUID "E8683B61-E810-4321-97FB-15B309687525"
#define MANUFACTURER_ID 0x4c00
#define MAJOR 5
#define MINOR 88
#define SIGNAL_POWER 0xc5
#define MAC_ADDR {0xF2, 0x21, 0x29, 0xA3, 0xE0, 0xAB}

#elif defined(HARD)
// RFHS_CHALLENGE_NAME "BLE Hard Fox"
// FOX_KEYWORDS "Hunter should ask 'Are you the BLE Hard Fox?'"
#define DEVICE_NAME "3Jane BLE Hard Fox"
#define BEACON_UUID "1A9CC285-39D5-43FF-858C-212F6C934852"
#define MANUFACTURER_ID 0x4c00
#define MAJOR 5
#define MINOR 88
#define SIGNAL_POWER 0xc5
#define MAC_ADDR {0xF2, 0x82, 0xCC, 0xDD, 0x6D, 0xF7}

#endif
34 changes: 34 additions & 0 deletions bluetooth/iBeacon/src/conferences/2026DEFCON-2.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#if defined(EASY)
// RFHS_CHALLENGE_NAME "BLE Easy Fox"
// FOX_KEYWORDS "Hunter should ask 'Are you the BLE Easy Fox?'"
#define DEVICE_NAME "Bruce BLE Easy Fox"
#define BEACON_UUID "4F3235EF-BD0D-4F60-99F3-379FFAE2906A"
#define MANUFACTURER_ID 0x4c00
#define MAJOR 5
#define MINOR 88
#define SIGNAL_POWER 0xc5
#define MAC_ADDR {0xF2, 0x34, 0x5C, 0x9C, 0xE8, 0xCD}

#elif defined(MEDIUM)
// RFHS_CHALLENGE_NAME "BLE Medium Fox"
// FOX_KEYWORDS "Hunter should ask 'Are you the BLE Medium Fox?'"
#define DEVICE_NAME "Cath BLE Medium Fox"
#define BEACON_UUID "8DA8BE9E-7E17-4CDE-BD99-2728A63EDB4D"
#define MANUFACTURER_ID 0x4c00
#define MAJOR 5
#define MINOR 88
#define SIGNAL_POWER 0xc5
#define MAC_ADDR {0xF2, 0xA8, 0x1D, 0x1C, 0x5E, 0x7D}

#elif defined(HARD)
// RFHS_CHALLENGE_NAME "BLE Hard Fox"
// FOX_KEYWORDS "Hunter should ask 'Are you the BLE Hard Fox?'"
#define DEVICE_NAME "3Jane BLE Hard Fox"
#define BEACON_UUID "4383AC60-0AA3-41B9-BF1A-08198E849B99"
#define MANUFACTURER_ID 0x4c00
#define MAJOR 5
#define MINOR 88
#define SIGNAL_POWER 0xc5
#define MAC_ADDR {0xF2, 0x9C, 0x48, 0xAB, 0x96, 0x9A}

#endif
34 changes: 34 additions & 0 deletions bluetooth/iBeacon/src/conferences/2026DEFCON-3.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#if defined(EASY)
// RFHS_CHALLENGE_NAME "BLE Easy Fox"
// FOX_KEYWORDS "Hunter should ask 'Are you the BLE Easy Fox?'"
#define DEVICE_NAME "Bruce BLE Easy Fox"
#define BEACON_UUID "61D2EA96-CE4B-4BFF-82DC-7CB56976148A"
#define MANUFACTURER_ID 0x4c00
#define MAJOR 5
#define MINOR 88
#define SIGNAL_POWER 0xc5
#define MAC_ADDR {0xF2, 0x38, 0x82, 0x8F, 0x35, 0xF2}

#elif defined(MEDIUM)
// RFHS_CHALLENGE_NAME "BLE Medium Fox"
// FOX_KEYWORDS "Hunter should ask 'Are you the BLE Medium Fox?'"
#define DEVICE_NAME "Cath BLE Medium Fox"
#define BEACON_UUID "94C3D1DE-F9E7-4A6E-9D34-8986FAC48039"
#define MANUFACTURER_ID 0x4c00
#define MAJOR 5
#define MINOR 88
#define SIGNAL_POWER 0xc5
#define MAC_ADDR {0xF2, 0xAA, 0xFF, 0xBD, 0x7F, 0x01}

#elif defined(HARD)
// RFHS_CHALLENGE_NAME "BLE Hard Fox"
// FOX_KEYWORDS "Hunter should ask 'Are you the BLE Hard Fox?'"
#define DEVICE_NAME "3Jane BLE Hard Fox"
#define BEACON_UUID "C8F41A28-8025-4ADA-AA75-A1B09A548502"
#define MANUFACTURER_ID 0x4c00
#define MAJOR 5
#define MINOR 88
#define SIGNAL_POWER 0xc5
#define MAC_ADDR {0xF2, 0x93, 0x8D, 0x24, 0x3C, 0x8E}

#endif
51 changes: 51 additions & 0 deletions create_report
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
#!/bin/bash
set -e
set -u

threewords() {
if [ ! -r '/usr/share/dict/cracklib-words' ]; then
printf 'Unable to find /usr/share/dict/cracklib-words\n'
exit 1
fi
dictionary='/usr/share/dict/cracklib-words'
shuf -n3 "${dictionary}" | tr '[:lower:]' '[:upper:]' | paste -sd ' ' | dos2unix
}
export -f threewords

create_report() {
printf "Formatting with conference name for %s... " "${conf}"
sed -i \
-e "/RFHS_CHALLENGE_NAME/{h; s/.*/printf -- '-\\n----------------------------------------------------------------\\nConference: %s\\n' \"${conf}\"/e; G;}" \
"${conf}.txt"
printf "complete\n"

printf "Adding instructions..."
sed -i -e "/FOX_KEYWORDS/{h; s/.*/printf -- '\n%s\n\n' \"\$(cat foxhunt_instructions.txt)\"/e; G;}" "${conf}.txt"
printf "complete\n"

printf "Seeding keys for %s... " "${conf}"
#this works despite shell check thinking it does not
#shellcheck disable=2016
sed -i -e 's/\(.*\)[F]OXFLAG\(.*\)/printf "%s%s%s\\n" \x22\1\x22 "\$(threewords)" \x22\2\x22/e' "${conf}.txt"
printf "complete\n"

sed -i '1iSet font to "Roboto Mono"' "${conf}.txt"

printf "Generation Complete\n"
}

# Ensure we have a conference name
if [ -n "${1:-}" ]; then
conf="${1}"
else
printf "Please provide conference name\n"
exit 1
fi
for challenge in bluetooth/iBeacon bluetooth/classic_discoverable wifi/wifi_ap_client non-kitsune-foxes/fm_fox; do
pushd "${challenge}" > /dev/null 2>&1
grep -e 'RFHS_CHALLENGE_NAME\|FOX_KEYWORDS\|NAME\|UUID\|MAC_ADDR\|FSSID\|CHANNEL' "src/conferences/${conf}.h" | \
sed -e 's#{##' -e 's#}##' -e 's#0x##g' -e 's#, #:#g' -e 's#// ##' -e "s/#define //" | tee -a "${OLDPWD}/${conf}.txt" > /dev/null 2>&1
printf "complete\n"
popd > /dev/null 2>&1
done
create_report
3 changes: 2 additions & 1 deletion foxhunt_instructions.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
Fox Instructions
----------------
DO NOT REMOVE THIS PAPER
Take the "I was the fox" patch, it is yours for agreeing to be our fox.
Keep the Fox powered on and in the kit as you recieved it.
Keep the Fox powered on and in the kit as you received it.
For most of the foxes all steady leds means working correctly.
Rapid blinking or alternating color is bad, contact your fox handler.
When a hunter says the keyphrase in FOX_KEYWORDS, give them the whole kit.
Expand Down
140 changes: 140 additions & 0 deletions wifi/wifi_ap_client/src/conferences/2026DEFCON-1.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
// Bash to generate MAC address
// Note: least significant bit of first byte must be zero, here it's fixed to 0xF2
// printf '0xF2, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X\n' $[RANDOM%256] $[RANDOM%256] $[RANDOM%256] $[RANDOM%256] $[RANDOM%256]

//WIFI_POWER_19_5dBm 78
//WIFI_POWER_19dBm 76
//WIFI_POWER_18_5dBm 74
//WIFI_POWER_17dBm 68
//WIFI_POWER_15dBm 60
//WIFI_POWER_13dBm 52
//WIFI_POWER_11dBm 44
//WIFI_POWER_8_5dBm 34
//WIFI_POWER_7dBm 28
//WIFI_POWER_5dBm 20
//WIFI_POWER_2dBm 8
//WIFI_POWER_MINUS_1dBm -4

#if defined(AP)
#if defined(EASY)
// RFHS_CHALLENGE_NAME "WiFi AP Easy Fox"
// FOX_KEYWORDS "Hunter should ask 'Are you the WiFi AP Easy Fox?'"
// Network config
#define FSSID "Hiro WiFi AP Easy Fox"
#define PSK "0123456789"
// set mac address
#define MAC_ADDR {0xF2, 0xEE, 0xCB, 0x62, 0xE8, 0x77}
// 1-13 permitted 0 means random
#define CHANNEL 1
// 0 broadcast 1 hidden
#define SSID_HIDDEN 0
// 1-4 permitted
#define MAX_CLIENTS 1
#define TIME_TO_WAKE 15
#define TIME_TO_SLEEP 5
// checks run during startup so we want to stay
// running no longer than a few minutes to force
// checks to run and led to update
#define TXPOWER WIFI_POWER_17dBm
#endif

#if defined(HARD)
// RFHS_CHALLENGE_NAME "WiFi AP Hard Fox"
// FOX_KEYWORDS "Hunter should ask 'Are you the WiFi AP Hard Fox?'"
// Network config
#define FSSID "YT WiFi AP Hard Fox"
#define PSK "0123456789"
// set mac address
#define MAC_ADDR {0xF2, 0x22, 0x28, 0x43, 0x1E, 0x7C}
// 1-13 permitted 0 means random
#define CHANNEL 0
// 0 broadcast 1 hidden
#define SSID_HIDDEN 0
// 1-4 permitted
#define MAX_CLIENTS 1
// checks run during startup so we want to stay
// running no longer than a few minutes to force
// checks to run and led to update
#define TIME_TO_WAKE 30
#define TIME_TO_SLEEP 45
#define TXPOWER WIFI_POWER_7dBm
#endif

#if defined(FIVEEASY)
// RFHS_CHALLENGE_NAME "WiFi 5GHz AP Easy Fox"
// FOX_KEYWORDS "Hunter should ask 'Are you the WiFi 5GHz AP Easy Fox?'"
// Network config
#define FSSID "Enzo WiFi 5GHz AP Easy Fox"
#define PSK "0123456789"
// set mac address
#define MAC_ADDR {0xF2, 0x1D, 0xD5, 0xEA, 0x5D, 0x16}
// 1-13 permitted 0 means random
#define CHANNEL 36
// 0 broadcast 1 hidden
#define SSID_HIDDEN 0
// 1-4 permitted
#define MAX_CLIENTS 1
#define TIME_TO_WAKE 15
#define TIME_TO_SLEEP 5
// checks run during startup so we want to stay
// running no longer than a few minutes to force
// checks to run and led to update
#define TXPOWER WIFI_POWER_17dBm
#endif

#if defined(FIVEHARD)
// RFHS_CHALLENGE_NAME "WiFi 5GHz AP Hard Fox"
// FOX_KEYWORDS "Hunter should ask 'Are you the WiFi 5GHz AP Hard Fox?'"
// Network config
#define FSSID "Lagos WiFi 5GHz AP Hard Fox"
#define PSK "0123456789"
// set mac address
#define MAC_ADDR {0xF2, 0x2F, 0xE4, 0x6B, 0xD2, 0x9E}
// 1-13 permitted 0 means random
#define CHANNEL 0
// 0 broadcast 1 hidden
#define SSID_HIDDEN 0
// 1-4 permitted
#define MAX_CLIENTS 1
// checks run during startup so we want to stay
// running no longer than a few minutes to force
// checks to run and led to update
#define TIME_TO_WAKE 30
#define TIME_TO_SLEEP 45
#define TXPOWER WIFI_POWER_7dBm
#endif
#endif

#if defined(CLIENT)
#if defined(EASY)
// RFHS_CHALLENGE_NAME "WiFi Client Easy Fox"
// FOX_KEYWORDS "Hunter should ask 'Are you the WiFi Client Easy Fox?'"
// set mac address
#define FSSID "Ng WiFi Client Easy Fox"
#define PSK "0123456789"
#define MAC_ADDR {0xF2, 0x76, 0xCD, 0xE9, 0xE0, 0x03}
// Network config
// checks run during startup so we want to stay
// running no longer than a few minutes to force
// checks to run and led to update
#define TIME_TO_WAKE 300
#define TIME_TO_SLEEP 1
#define TXPOWER WIFI_POWER_17dBm
#endif

#if defined(HARD)
// RFHS_CHALLENGE_NAME "WiFi Client Hard Fox"
// FOX_KEYWORDS "Hunter should ask 'Are you the WiFi Client Hard Fox?'"
// Network config
#define FSSID "Mr Lee WiFi Client Hard Fox"
#define PSK "0123456789"
// set mac address
#define MAC_ADDR {0xF2, 0x0D, 0x18, 0x39, 0x70, 0xD3}
// checks run during startup so we want to stay
// running no longer than a few minutes to force
// checks to run and led to update
#define TIME_TO_WAKE 300
#define TIME_TO_SLEEP 0
#define TXPOWER WIFI_POWER_17dBm
#endif
#endif
Loading