File: airmon-ng.freebsd

package info (click to toggle)
aircrack-ng 1%3A1.6%2Bgit20210130.91820bc-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 19,056 kB
  • sloc: ansic: 67,045; cs: 5,392; sh: 3,773; python: 2,565; pascal: 1,074; asm: 570; makefile: 253; cpp: 46
file content (130 lines) | stat: -rw-r--r-- 4,590 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#!/bin/sh



if [ -n "$1" ] && [ -z "$2" ]; then
	echo "Invalid command. Valid commands: [start|stop] INTERFACE."
	exit 1
fi

if [ -n "$1" ]; then
	if [ "$1" != 'stop' ] && [ "$1" != 'start' ]; then
		echo "Invalid command. Valid commands: [start|stop] INTERFACE."
		exit 1
	fi
fi

if [ -n "$2" ]; then
	ifconfig $2 >/dev/null 2>/dev/null
	if [ $? -ne 0 ]; then
		echo "Error: Interface $2 does not exist."
		exit 1
	fi
fi

COMMAND=$1
INTERFACE_TO_USE=$2

CHIPSET=""
DRIVER=""
PARENT=""

get_interface_info() {
	[ -z "$1" ] && return
	if [ -n "$(echo $1 | grep -E '^(ath|otus|urtwn)[0-9]+$' )" ]; then
		DRIVER="$(echo $1 | sed 's/[0-9]*//g')"
	elif [ -n "$(echo $1 | grep -E ^wlan[0-9]+$)" ]; then
		# It most likely is a monitor interface.
		IFACE_IDX=$(echo $1 | sed 's/[^0-9]*//g')
		PARENT=$(sysctl net.wlan.${IFACE_IDX}.%parent | awk '{print $2}')
		if [ -n "${PARENT}" ]; then
			get_interface_info ${PARENT}
			return
		fi
	fi	

	if [ "${DRIVER}" = "ath" ]; then
		CHIPSET=$(dmesg | grep -E "^$1: <" | tail -n 1 | awk -F\< '{print $2}' | awk -F\> '{print $1}' )
	elif [ "${DRIVER}" = "urtwn" ]; then
		USB_INFO=$(dmesg | grep -E "^$1: <" | tail -n 1 | tr ',' '\n' | tail -n 1 | tr '>' ' ')
		USB_ADDR=$(echo ${USB_INFO} | awk '{print $2}')
		USB_BUS=$(echo ${USB_INFO} | awk '{print $4}' | sed 's/[^0-9]*//g')
		VENDOR_ID=$(usbconfig -u ${USB_BUS} -a ${USB_ADDR} dump_device_desc | grep idVendor | awk '{print $3}')
		PRODUCT_ID=$(usbconfig -u ${USB_BUS} -a ${USB_ADDR} dump_device_desc | grep idProduct | awk '{print $3}')
		if [ "${VENDOR_ID}" = "0x0bda" ]; then
			[ "${PRODUCT_ID}" = "0x8171" ] && CHIPSET="RTL8188SU"
			[ "${PRODUCT_ID}" = "0x8172" ] && CHIPSET="RTL8191SU"
			[ "${PRODUCT_ID}" = "0x8174" ] && CHIPSET="RTL8192SU"
			[ "${PRODUCT_ID}" = "0x8176" ] && CHIPSET="RTL8188CUS"
			[ "${PRODUCT_ID}" = "0x8178" ] && CHIPSET="RTL8192CU"
			[ "${PRODUCT_ID}" = "0x8179" ] && CHIPSET="RTL8188EUS"
			[ "${PRODUCT_ID}" = "0x817f" ] && CHIPSET="RTL8188RU"
			[ "${PRODUCT_ID}" = "0x8192" ] && CHIPSET="RTL8191SU"
			[ "${PRODUCT_ID}" = "0x8193" ] && CHIPSET="RTL8192DU"
			[ "${PRODUCT_ID}" = "0x8199" ] && CHIPSET="RTL8187SU"
			[ "${PRODUCT_ID}" = "0x8812" ] && CHIPSET="RTL8812AU"
			[ "${PRODUCT_ID}" = "0x8187" ] && CHIPSET="RTL8187L"
		elif [ "${VENDOR_ID}" = "0x06f8" ] && [ "${PRODUCT_ID}" = "0xe033" ]; then
			CHIPSET="RTL8188CUS"
		elif [ "${VENDOR_ID}" = "0x2001" ] && [ "${PRODUCT_ID}" = "0x3308" ]; then
			CHIPSET="RTL8188CUS"
		elif [ "${VENDOR_ID}" = "0x20f4" ] && [ "${PRODUCT_ID}" = "0x648b" ]; then
			CHIPSET="RTL8188CUS"
		elif [ "${VENDOR_ID}" = "0x7392" ] && [ "${PRODUCT_ID}" = "0x7811" ]; then
			CHIPSET="RTL8188CUS"
		elif [ "${VENDOR_ID}" = "0x2019" ]; then
			[ "${PRODUCT_ID}" = "0xab2a" ] && CHIPSET="RTL8188CUS"
			[ "${PRODUCT_ID}" = "0xed17" ] && CHIPSET="RTL8188CUS"
		elif [ "${VENDOR_ID}" = "0x050d" ]; then
			[ "${PRODUCT_ID}" = "0x1102" ] && CHIPSET="RTL8188CUS"
			[ "${PRODUCT_ID}" = "0x11f2" ] && CHIPSET="RTL8188CUS"
		elif [ "${VENDOR_ID}" = "0x0846" ]; then
			[ "${PRODUCT_ID}" = "0x9041" ] && CHIPSET="RTL8188CUS"
			[ "${PRODUCT_ID}" = "0x9042" ] && CHIPSET="RTL8188CUS"
			[ "${PRODUCT_ID}" = "0x9043" ] && CHIPSET="RTL8188CUS"
		fi
		[ -z "${CHIPSET}" ] && CHIPSET="Report dmesg and usbconfig (dump commands) to http://trac.aircrack-ng.org" 
	elif [ "${DRIVER}" = "run" ]; then
		CHIPSET="Ralink/Mediatek"
	elif [ -n "${DRIVER}" ]; then
		CHIPSET="Report dmesg and usbconfig (dump commands) to http://trac.aircrack-ng.org"
	else
		CHIPSET="Unknown"
		[ -z "${DRIVER}" ] && DRIVER="Unknown"
	fi
}

printf "\nInterface\tDriver\t\tChipset\n\n"

for IFACE in $(ifconfig -a | grep -E '^(wlan|ath|otus|urtwn)[0-9]+' | awk -F: '{print $1}' )
do
	get_interface_info ${IFACE}
	printf "${IFACE}\t\t${DRIVER}\t\t${CHIPSET}\n\n"
	if [ -n "${PARENT}" ]; then
		printf "\t(monitor mode interface. Parent: ${PARENT})\n"
	fi

	if [ "${INTERFACE_TO_USE}" = "${IFACE}" ]; then
		if [ "${COMMAND}" = 'start' ]; then
			if [ -n "${PARENT}" ]; then
				printf "\t Interface is already in monitor mode, ignoring\n"
			else
				MONITOR_IFACE=$(ifconfig wlan create wlandev ${IFACE} wlanmode monitor)
				if [ $? -eq 0 ]; then
					 printf "\tCreated monitor mode interface ${MONITOR_IFACE} from ${IFACE}\n"
				else
					printf "\tFailed creating monitor interface\n"
				fi
			fi
		elif [ "${COMMAND}" = 'stop' ]; then
			ifconfig ${IFACE} destroy 2>/dev/null
			if [ $? -ne 0 ]; then
				printf "\tFailed to remove monitor mode interface ${IFACE}\n"
			else
				printf "\tDestroyed monitor interface ${IFACE}\n"
			fi
		fi
	fi 
done

exit 0