Skip to content

Commit abec68b

Browse files
authored
Merge pull request #39 from r4ulcl/dev
Minor fix nzyme WLAN UP and AP fingerprints updated
2 parents 3761257 + 3ff4180 commit abec68b

5 files changed

Lines changed: 245 additions & 31 deletions

File tree

APs/config/ns-inet.sh

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,17 @@ if [[ $(iw dev | grep -c wlan) -lt 20 ]] ; then
9898
sudo modprobe mac80211_hwsim_WiFiChallenge radios=71
9999
fi
100100

101+
# wlan70 is reserved for nzyme and remains in the host network namespace. The
102+
# PCAP monitor cannot initialize while this device is down, so make its link
103+
# state explicit after every hwsim setup/reload.
104+
NZYME_WLAN="${WLAN:-wlan70}"
105+
if [ -e "/sys/class/net/${NZYME_WLAN}" ]; then
106+
ip link set dev "${NZYME_WLAN}" up
107+
echo "Nzyme monitor interface ${NZYME_WLAN} is up"
108+
else
109+
echo "ERROR: nzyme monitor interface ${NZYME_WLAN} is missing" >&2
110+
fi
111+
101112
# Rename interfaces APwlan, ClientWlan, wlan0 wlan5
102113
#TODO?
103114

nzyme/nzyme.conf.tmp

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,18 @@ uplinks: []
207207
}
208208
]
209209
},
210+
{
211+
# EAP-SIM / EAP-AKA / EAP-AKA' network.
212+
ssid: $ESSID_MGT_SIM
213+
channels: [$CHANNEL_MGT_SIM]
214+
security: [WPA2-EAM-CCMP]
215+
bssids: [
216+
{
217+
address: "$MAC_MGT_SIM",
218+
fingerprints: [ $NZYME_FINGERPRINT_MGT_SIM ]
219+
}
220+
]
221+
},
210222
{
211223
ssid: $ESSID_MGT_RELAY
212224
channels: [$CHANNEL_MGT_RELAY]
@@ -282,7 +294,7 @@ uplinks: []
282294
{
283295
ssid: $ESSID_ROAM
284296
channels: [$CHANNEL_ROAM1]
285-
security: [WPA2-PSK-CCMP, WPA2-PSK-FT-CCMP]
297+
security: [WPA2-PSK-CCMP]
286298
beacon_rate: 4760
287299
bssids: [
288300
{

utils/prepare_aws_guest.sh

Lines changed: 189 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,189 @@
1+
#!/usr/bin/env bash
2+
#
3+
# Prepare a running WiFiChallenge Lab VirtualBox VM for manual export and
4+
# import into AWS EC2. Run this INSIDE the guest, then shut it down and export
5+
# it as an OVA from VirtualBox. No host-side conversion tooling is required.
6+
7+
set -Eeuo pipefail
8+
9+
SCRIPT_NAME="$(basename "$0")"
10+
DRY_RUN=0
11+
SKIP_VBOX_REMOVAL=0
12+
ORIGINAL_ARGS=("$@")
13+
14+
usage() {
15+
cat <<EOF
16+
Usage: $SCRIPT_NAME [options]
17+
18+
Run inside the powered-on VirtualBox guest, before manually exporting it as an
19+
OVA for AWS VM Import/Export.
20+
21+
Options:
22+
--dry-run Show the actions without changing the guest.
23+
--skip-vbox-removal Retain VirtualBox Guest Additions (not recommended).
24+
-h, --help Show this help.
25+
26+
The script must run as root. When started as a regular user, it re-runs itself
27+
through sudo. It does not shut down or export the VM.
28+
EOF
29+
}
30+
31+
log() { printf '%s\n' "$*"; }
32+
die() { printf '%s: %s\n' "$SCRIPT_NAME" "$*" >&2; exit 1; }
33+
34+
run() {
35+
if (( DRY_RUN )); then
36+
printf '+ '
37+
printf '%q ' "$@"
38+
printf '\n'
39+
else
40+
"$@"
41+
fi
42+
}
43+
44+
while (( $# )); do
45+
case "$1" in
46+
--dry-run) DRY_RUN=1 ;;
47+
--skip-vbox-removal) SKIP_VBOX_REMOVAL=1 ;;
48+
-h|--help) usage; exit 0 ;;
49+
*) die "unknown option: $1" ;;
50+
esac
51+
shift
52+
done
53+
54+
if (( EUID != 0 )); then
55+
command -v sudo >/dev/null 2>&1 || die "run this script as root"
56+
exec sudo -- "$0" "${ORIGINAL_ARGS[@]}"
57+
fi
58+
59+
[[ -r /etc/os-release ]] || die "this does not appear to be a Linux guest"
60+
. /etc/os-release
61+
log "Preparing ${PRETTY_NAME:-Linux} for AWS EC2 import..."
62+
63+
if (( ! SKIP_VBOX_REMOVAL )); then
64+
log 'Removing VirtualBox Guest Additions and VirtualBox-only configuration...'
65+
if command -v systemctl >/dev/null 2>&1; then
66+
run systemctl disable vboxadd.service vboxadd-service.service vboxservice.service 2>/dev/null || true
67+
fi
68+
69+
# Covers both Debian packages and Guest Additions installed from the Oracle
70+
# ISO by the Vagrant build.
71+
if command -v dpkg-query >/dev/null 2>&1 && command -v apt-get >/dev/null 2>&1; then
72+
packages=()
73+
for package in virtualbox-guest-utils virtualbox-guest-x11 virtualbox-guest-dkms virtualbox-guest-source; do
74+
if dpkg-query -W -f='${db:Status-Status}' "$package" 2>/dev/null | grep -qx installed; then
75+
packages+=("$package")
76+
fi
77+
done
78+
if (( ${#packages[@]} )); then
79+
run apt-get purge -y "${packages[@]}"
80+
run apt-get autoremove -y
81+
fi
82+
fi
83+
84+
shopt -s nullglob
85+
uninstallers=(/opt/VBoxGuestAdditions-*/uninstall.sh)
86+
shopt -u nullglob
87+
for uninstaller in "${uninstallers[@]}"; do
88+
[[ -x "$uninstaller" ]] || continue
89+
run "$uninstaller" || true
90+
done
91+
92+
run rm -rf -- /opt/VBoxGuestAdditions-* /var/log/vboxadd-* /var/lib/VBoxGuestAdditions
93+
run rm -f -- /etc/init.d/vboxadd /etc/init.d/vboxadd-service /etc/init.d/vboxadd-x11
94+
run rm -f -- /etc/modules-load.d/*vbox*.conf /etc/modprobe.d/*vbox*.conf
95+
run rm -f -- /etc/X11/xorg.conf /etc/X11/xorg.conf.d/*vbox*.conf
96+
97+
# A vboxsf mount or this lab's static host-only network cannot work in EC2.
98+
if [[ -f /etc/fstab ]]; then
99+
run sed -i '\|[[:space:]]vboxsf[[:space:]]|d; \|/media/WiFiWorkshop[[:space:]]|d; \|/media/WiFiChallengeLab[[:space:]]|d' /etc/fstab
100+
fi
101+
run rm -f -- /etc/NetworkManager/system-connections/eth1-hostonly.nmconnection
102+
fi
103+
104+
log 'Configuring an EC2-compatible DHCP uplink...'
105+
run install -d -m 700 /etc/NetworkManager/system-connections
106+
if (( DRY_RUN )); then
107+
log '+ write /etc/NetworkManager/system-connections/eth0-nat.nmconnection (DHCP on eth0)'
108+
else
109+
cat > /etc/NetworkManager/system-connections/eth0-nat.nmconnection <<'EOF'
110+
[connection]
111+
id=eth0-nat
112+
type=ethernet
113+
interface-name=eth0
114+
autoconnect=true
115+
autoconnect-priority=100
116+
117+
[ipv4]
118+
method=auto
119+
120+
[ipv6]
121+
method=auto
122+
EOF
123+
chmod 600 /etc/NetworkManager/system-connections/eth0-nat.nmconnection
124+
fi
125+
126+
# VM Import/Export does not support predictable interface names. This gives the
127+
# NetworkManager DHCP profile a stable eth0 target when EC2 presents its NIC.
128+
if [[ -f /etc/default/grub ]] && ! grep -q 'net.ifnames=0' /etc/default/grub; then
129+
if (( DRY_RUN )); then
130+
log '+ add net.ifnames=0 biosdevname=0 to GRUB_CMDLINE_LINUX_DEFAULT'
131+
else
132+
if grep -q '^GRUB_CMDLINE_LINUX_DEFAULT=' /etc/default/grub; then
133+
sed -i 's/^GRUB_CMDLINE_LINUX_DEFAULT="\(.*\)"/GRUB_CMDLINE_LINUX_DEFAULT="\1 net.ifnames=0 biosdevname=0"/' /etc/default/grub
134+
else
135+
printf '%s\n' 'GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0 biosdevname=0"' >> /etc/default/grub
136+
fi
137+
fi
138+
fi
139+
140+
# Nitro EC2 exposes EBS as NVMe and uses ENA networking. The Debian 12 kernel
141+
# already provides these modules; listing them makes them available early in the
142+
# initramfs without replacing the lab's patched kernel.
143+
if [[ -d /etc/initramfs-tools ]]; then
144+
if (( DRY_RUN )); then
145+
log '+ ensure nvme, ena, virtio_pci, and virtio_blk are included in initramfs'
146+
else
147+
modules_file=/etc/initramfs-tools/modules
148+
touch "$modules_file"
149+
for module in nvme ena virtio_pci virtio_blk; do
150+
grep -qxF "$module" "$modules_file" || printf '%s\n' "$module" >> "$modules_file"
151+
done
152+
update-initramfs -u -k all
153+
fi
154+
fi
155+
156+
if command -v update-grub >/dev/null 2>&1; then
157+
run update-grub
158+
fi
159+
if command -v systemctl >/dev/null 2>&1; then
160+
run systemctl enable NetworkManager.service 2>/dev/null || true
161+
run systemctl enable ssh.service 2>/dev/null || true
162+
fi
163+
164+
missing_drivers=()
165+
for driver in nvme ena; do
166+
if ! find /lib/modules -type f -name "${driver}.ko*" -print -quit 2>/dev/null | grep -q .; then
167+
missing_drivers+=("$driver")
168+
fi
169+
done
170+
171+
if (( ${#missing_drivers[@]} )); then
172+
log "WARNING: kernel module(s) not found: ${missing_drivers[*]}"
173+
log 'Do not import to a Nitro instance until the installed kernel has the required AWS drivers.'
174+
else
175+
log 'AWS Nitro drivers found: ENA and NVMe.'
176+
fi
177+
178+
cat <<'EOF'
179+
180+
Preparation complete.
181+
182+
Next steps:
183+
1. Shut down cleanly: sudo poweroff
184+
2. In VirtualBox, export the powered-off VM as an OVA.
185+
3. Upload that OVA to S3 and import it with: aws ec2 import-image ...
186+
187+
Do not export a saved-state VM. Test the imported AMI in an isolated VPC and
188+
limit its security group to the ports you intentionally need.
189+
EOF

wlan_config

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ ESSID_OPN='wifi-guest'
1313
WLAN_OPN='wlan10'
1414
IP_OPN='192.168.10'
1515
MAC_OPN='F0:9F:C2:71:22:10'
16-
NZYME_FINGERPRINT_OPN='4db0e3114b3db19c2b3fae7a69a692e1edcf7ec718a4a6bf43311dc31185d132'
16+
NZYME_FINGERPRINT_OPN='4db0e3114b3db19c2b3fae7a69a692e1edcf7ec718a4a6bf43311dc31185d132, 868c328fc17087705ba63743055010bf8cff45b542131d94fc22159ec17adb5a'
1717
CHANNEL_OPN='6'
1818

1919
USER_WEB_OPN1='free1'
@@ -50,7 +50,7 @@ IP_WEP='192.168.1'
5050
MAC_WEP='F0:9F:C2:71:22:11'
5151
USER_WEP='wep'
5252
PASS_WEP='ewIGV1ZHDCpHTA=='
53-
NZYME_FINGERPRINT_WEP='4db0e3114b3db19c2b3fae7a69a692e1edcf7ec718a4a6bf43311dc31185d132'
53+
NZYME_FINGERPRINT_WEP='4db0e3114b3db19c2b3fae7a69a692e1edcf7ec718a4a6bf43311dc31185d132, 868c328fc17087705ba63743055010bf8cff45b542131d94fc22159ec17adb5a'
5454
CHANNEL_WEP='3'
5555

5656
FLAG_WEP='LF8FUh4XXHpAHxJveGZSbWdjfkEnUDBJfAcCB1VDWihGTUBse2UMPjNiL0IiHA=='
@@ -70,7 +70,7 @@ WLAN_PSK='wlan12'
7070
IP_PSK='192.168.2'
7171
MAC_PSK='F0:9F:C2:71:22:12'
7272
PASS_PSK='OUcFRxIVHT1D'
73-
NZYME_FINGERPRINT_PSK='7303e2cb387b7367923cf58574b7e0e7edf58dc541a9714d117d16384bd00613'
73+
NZYME_FINGERPRINT_PSK='7303e2cb387b7367923cf58574b7e0e7edf58dc541a9714d117d16384bd00613, fd6c892b165f62640b0125f8f1c5139f153530c5481c51c1ae3ffe1fe199372f'
7474
CHANNEL_PSK='6'
7575

7676
USER_PSK1='test1'
@@ -119,7 +119,7 @@ WLAN_WPS='wlan13'
119119
IP_WPS='192.168.3'
120120
MAC_WPS='F0:9F:C2:71:22:13'
121121
PASS_WPS='Cn4BUgQkPAUiOQQqOj4YPnYT'
122-
NZYME_FINGERPRINT_WPS='f781167e44699b94952eadfd22401ad540eb8a5316b8c46365575d6ac533ce72'
122+
NZYME_FINGERPRINT_WPS='f781167e44699b94952eadfd22401ad540eb8a5316b8c46365575d6ac533ce72, c4f19e38016f5e7f03f660af7475647e1348f70db4124abb84c54309c4713a63'
123123
CHANNEL_WPS='8'
124124

125125
FLAG_WPS='LF8FUh5MWn4XT0Q_fGIMbDRmKUgnVWBLfARUA1JFDn5KG05ofzJdYjEyKBJ_HA=='
@@ -156,7 +156,7 @@ ESSID_MGT='wifi-corp'
156156
WLAN_MGT='wlan15'
157157
IP_MGT='192.168.5'
158158
MAC_MGT='F0:9F:C2:71:22:15'
159-
NZYME_FINGERPRINT_MGT='296531dde9d53691e52c6a32406f5d811ee13af864df740fad53fc1238e8fc13'
159+
NZYME_FINGERPRINT_MGT='296531dde9d53691e52c6a32406f5d811ee13af864df740fad53fc1238e8fc13, 86681fb744015f936f6f0ba68bb9fafcae658b18ec19942e16e415f46ebe798d'
160160
CHANNEL_MGT='44'
161161

162162
IDENTITY_MGT_MSCHAP='CONTOSO\juan.tr'
@@ -181,7 +181,7 @@ ESSID_MGT2='wifi-corp'
181181
WLAN_MGT2='wlan16'
182182
IP_MGT2='192.168.6'
183183
MAC_MGT2='F0:9F:C2:71:22:1A'
184-
NZYME_FINGERPRINT_MGT2='296531dde9d53691e52c6a32406f5d811ee13af864df740fad53fc1238e8fc13'
184+
NZYME_FINGERPRINT_MGT2='296531dde9d53691e52c6a32406f5d811ee13af864df740fad53fc1238e8fc13, 86681fb744015f936f6f0ba68bb9fafcae658b18ec19942e16e415f46ebe798d'
185185
CHANNEL_MGT2='44'
186186
FLAG_MGT2='LF8FUh5EX3oQShY8K2gIODU1fkUlBTZNf1JQUFRHCn1KTRZtfTUJY25ldEV-HA=='
187187

@@ -208,7 +208,7 @@ ESSID_MGT_RELAY='wifi-regional'
208208
WLAN_MGT_RELAY='wlan17'
209209
IP_MGT_RELAY='192.168.7'
210210
MAC_MGT_RELAY='F0:9F:C2:71:22:16'
211-
NZYME_FINGERPRINT_MGT_RELAY='2d5d13288a250894738458150d9c884351b18f11f0abfdab3717a42a8e763592'
211+
NZYME_FINGERPRINT_MGT_RELAY='2d5d13288a250894738458150d9c884351b18f11f0abfdab3717a42a8e763592, 7095d7c5526fc6c0032fcf2a7aa757d325652f13a625ce6471ebdeb2c5727bf7'
212212
CHANNEL_MGT_RELAY='44'
213213

214214
IDENTITY_MGT_RELAY='CONTOSOREG\luis.da'
@@ -234,7 +234,7 @@ ESSID_MGT_RELAY_TABLETS='wifi-regional-tablets'
234234
WLAN_MGT_RELAY_TABLETS='wlan28'
235235
IP_MGT_RELAY_TABLETS='192.168.18'
236236
MAC_MGT_RELAY_TABLETS='F0:9F:C2:7A:33:28'
237-
NZYME_FINGERPRINT_MGT_RELAY_TABLETS='2d5d13288a250894738458150d9c884351b18f11f0abfdab3717a42a8e763592'
237+
NZYME_FINGERPRINT_MGT_RELAY_TABLETS='2d5d13288a250894738458150d9c884351b18f11f0abfdab3717a42a8e763592, 7095d7c5526fc6c0032fcf2a7aa757d325652f13a625ce6471ebdeb2c5727bf7'
238238
CHANNEL_MGT_RELAY_TABLETS='44'
239239
FLAG_MGT_RELAY_TABLETS='LF8FUh4QCncWThU8f2FfPjFgLUhyU2AafVUBBVBAVndHGBY6eGYJbmYxKBMkHA=='
240240

@@ -254,7 +254,7 @@ ESSID_MGT_TLS='wifi-global'
254254
WLAN_MGT_TLS='wlan18'
255255
IP_MGT_TLS='192.168.8'
256256
MAC_MGT_TLS='F0:9F:C2:71:22:17'
257-
NZYME_FINGERPRINT_MGT_TLS='2d5d13288a250894738458150d9c884351b18f11f0abfdab3717a42a8e763592'
257+
NZYME_FINGERPRINT_MGT_TLS='2d5d13288a250894738458150d9c884351b18f11f0abfdab3717a42a8e763592, 7095d7c5526fc6c0032fcf2a7aa757d325652f13a625ce6471ebdeb2c5727bf7'
258258
CHANNEL_MGT_TLS='44'
259259

260260
IDENTITY_MGT_TLS='GLOBAL\GlobalAdmin'
@@ -298,7 +298,7 @@ WLAN_DOWNGRADE='wlan25'
298298
IP_DOWNGRADE='192.168.15'
299299
MAC_DOWNGRADE='F0:9F:C2:1A:CA:25'
300300
PASS_DOWNGRADE='KEYGVwkRCDsf'
301-
NZYME_FINGERPRINT_DOWNGRADE='0d8c1f599eedc365bafbe63fb7c7c8f5592f01c3059a619d79035902fa5d781a'
301+
NZYME_FINGERPRINT_DOWNGRADE='0d8c1f599eedc365bafbe63fb7c7c8f5592f01c3059a619d79035902fa5d781a, fbc1677ccd7e3f446403f9b5ef8daaa3f6dd8dc4b996671c0a8df2a730fe05c9'
302302
CHANNEL_DOWNGRADE='11'
303303
FLAG_DOWNGRADE='LF8FUh4SW3hAQBVtLmNYbGRlKhB2ADdPeFYGAAFFDChLGhY_dWkIbjIwLhQjHA=='
304304

@@ -320,7 +320,7 @@ WLAN_BRUTEFORCE='wlan24'
320320
IP_BRUTEFORCE='192.168.14'
321321
MAC_BRUTEFORCE='F0:9F:C2:11:0A:24'
322322
PASS_BRUTEFORCE='KVsLVgoYDjoXSA=='
323-
NZYME_FINGERPRINT_BRUTEFORCE='df5b5f9eec31df5ec9e9e020d00abacde6fd7acd3e4cce45675510b72bbb107b'
323+
NZYME_FINGERPRINT_BRUTEFORCE='df5b5f9eec31df5ec9e9e020d00abacde6fd7acd3e4cce45675510b72bbb107b, 2a835cd35138ec1ef5fbef1e4fd0a225b00ffc80ba7753cf6d468fcba3026f28'
324324
CHANNEL_BRUTEFORCE='11'
325325
FLAG_BRUTEFORCE='LF8FUh4VXndAHEBgfWheb2IwLkAgBzZJLgFXAFARWH4XSxI_fTdeOTQwdEB3HA=='
326326

@@ -414,7 +414,7 @@ CHANNEL_OTHER3='6'
414414
# OWE
415415
############################################################
416416
WLAN_OWE='wlan30'
417-
NZYME_FINGERPRINT_OWE='725e4328157da4044fcd67ef6062588a3e1caf41571fcdb02b968ae6bb4236e4'
417+
NZYME_FINGERPRINT_OWE='725e4328157da4044fcd67ef6062588a3e1caf41571fcdb02b968ae6bb4236e4, c13421872148bf3ee0e8f703781a50b2f1c4c84b0e04f307b10157d002a20a24'
418418
CHANNEL_OWE='44'
419419
ESSID_OWE='wifi-gratis'
420420
IP_OWE='192.168.20'
@@ -468,6 +468,7 @@ WLAN_MGT_SIM='wlan19'
468468
IP_MGT_SIM='192.168.9'
469469
MAC_MGT_SIM='F0:9F:C2:71:22:19'
470470
CHANNEL_MGT_SIM='48'
471+
NZYME_FINGERPRINT_MGT_SIM='86681fb744015f936f6f0ba68bb9fafcae658b18ec19942e16e415f46ebe798d'
471472

472473
# Software Milenage subscribers (WiFiChallenge realm wlan.mnc007.mcc214.wifichallenge.com; IMSI MCC 214 ES, MNC 07). AMF/SQN shared.
473474
SIM_MGT_AMF='8000'
@@ -503,7 +504,7 @@ IDENTITY_MGT_SIM_LEAK='6214070936554128@wlan.mnc007.mcc214.wifichallenge.com'
503504
# hcxpcapngtool), cracks the PSK, then associates and reads the flag from the
504505
# router portal.
505506
ESSID_ROAM='wifi-campus'
506-
NZYME_FINGERPRINT_ROAM=''
507+
NZYME_FINGERPRINT_ROAM='94957867cb8b04bf3d7a6f6c677a8308b9d2bfe8b4790edee8bdb8311a1a83e1'
507508
PASS_ROAM='KFIXXgAADS8eFQ==' # basketball
508509
FLAG_ROAM='LF8FUh5DCX0RQBZoKGcIaDNreEFzAmMdc1VTBQRHDXgWSxRhKGULbzFjfUh0HA=='
509510

0 commit comments

Comments
 (0)