#!/usr/bin/env bash{l_output=""l_output2=""module_chk(){# Check how module will be loadedl_loadable="$(modprobe-n-v"$l_mname")"ifgrep-Pq--'^\h*install \/bin\/(true|false)'<<<"$l_loadable";thenl_output="$l_output\n - module: \"$l_mname\" is not loadable: \"$l_loadable\""elsel_output2="$l_output2\n - module: \"$l_mname\" is loadable: \"$l_loadable\""fi# Check is the module currently loadedif!lsmod|grep"$l_mname">/dev/null2>&1;thenl_output="$l_output\n - module: \"$l_mname\" is not loaded"elsel_output2="$l_output2\n - module: \"$l_mname\" is loaded"fi# Check if the module is deny listedifmodprobe--showconfig|grep-Pq--"^\h*blacklist\h+$l_mname\b";thenl_output="$l_output\n - module: \"$l_mname\" is deny listed in: \"$(grep-Pl--"^\h*blacklist\h+$l_mname\b"/etc/modprobe.d/*)\""elsel_output2="$l_output2\n - module: \"$l_mname\" is not deny listed"fi}if[-n"$(find/sys/class/net/*/-typed-namewireless)"];thenl_dname=$(fordriverdirin$(find/sys/class/net/*/-typed-namewireless|xargs-0dirname);dobasename"$(readlink-f"$driverdir"/device/driver/module)";done|sort-u)forl_mnamein$l_dname;domodule_chk
donefi# Report results. If no failures output in l_output2, we passif[-z"$l_output2"];thenecho-e"\n- Audit Result:\n ** PASS **"if[-z"$l_output"];thenecho-e"\n - System has no wireless NICs installed"elseecho-e"\n$l_output\n"fielseecho-e"\n- Audit Result:\n ** FAIL **\n - Reason(s) for audit failure:\n$l_output2\n"[-n"$l_output"]&&echo-e"\n- Correctly set:\n$l_output\n"fi}