nexmon – Blame information for rev 1
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 1 | #!/bin/sh |
2 | |||
3 | |||
4 | |||
5 | if [ -n "$1" ] && [ -z "$2" ]; then |
||
6 | echo "Invalid command. Valid commands: [start|stop] INTERFACE." |
||
7 | exit 1 |
||
8 | fi |
||
9 | |||
10 | if [ -n "$1" ]; then |
||
11 | if [ "$1" != 'stop' ] && [ "$1" != 'start' ]; then |
||
12 | echo "Invalid command. Valid commands: [start|stop] INTERFACE." |
||
13 | exit 1 |
||
14 | fi |
||
15 | fi |
||
16 | |||
17 | if [ -n "$2" ]; then |
||
18 | ifconfig $2 >/dev/null 2>/dev/null |
||
19 | if [ $? -ne 0 ]; then |
||
20 | echo "Error: Interface $2 does not exist." |
||
21 | exit 1 |
||
22 | fi |
||
23 | fi |
||
24 | |||
25 | COMMAND=$1 |
||
26 | INTERFACE_TO_USE=$2 |
||
27 | |||
28 | CHIPSET="" |
||
29 | DRIVER="" |
||
30 | PARENT="" |
||
31 | |||
32 | get_interface_info() { |
||
33 | [ -z "$1" ] && return |
||
34 | if [ -n "$(echo $1 | grep -E '^(ath|otus|urtwn)[0-9]+$' )" ]; then |
||
35 | DRIVER="$(echo $1 | sed 's/[0-9]*//g')" |
||
36 | elif [ -n "$(echo $1 | grep -E ^wlan[0-9]+$)" ]; then |
||
37 | # It most likely is a monitor interface. |
||
38 | IFACE_IDX=$(echo $1 | sed 's/[^0-9]*//g') |
||
39 | PARENT=$(sysctl net.wlan.${IFACE_IDX}.%parent | awk '{print $2}') |
||
40 | if [ -n "${PARENT}" ]; then |
||
41 | get_interface_info ${PARENT} |
||
42 | return |
||
43 | fi |
||
44 | fi |
||
45 | |||
46 | if [ "${DRIVER}" = "ath" ]; then |
||
47 | CHIPSET=$(dmesg | grep -E "^$1: <" | tail -n 1 | awk -F\< '{print $2}' | awk -F\> '{print $1}' ) |
||
48 | elif [ "${DRIVER}" = "urtwn" ]; then |
||
49 | USB_INFO=$(dmesg | grep -E "^$1: <" | tail -n 1 | tr ',' '\n' | tail -n 1 | tr '>' ' ') |
||
50 | USB_ADDR=$(echo ${USB_INFO} | awk '{print $2}') |
||
51 | USB_BUS=$(echo ${USB_INFO} | awk '{print $4}' | sed 's/[^0-9]*//g') |
||
52 | VENDOR_ID=$(usbconfig -u ${USB_BUS} -a ${USB_ADDR} dump_device_desc | grep idVendor | awk '{print $3}') |
||
53 | PRODUCT_ID=$(usbconfig -u ${USB_BUS} -a ${USB_ADDR} dump_device_desc | grep idProduct | awk '{print $3}') |
||
54 | if [ "${VENDOR_ID}" = "0x0bda" ]; then |
||
55 | [ "${PRODUCT_ID}" = "0x8171" ] && CHIPSET="RTL8188SU" |
||
56 | [ "${PRODUCT_ID}" = "0x8172" ] && CHIPSET="RTL8191SU" |
||
57 | [ "${PRODUCT_ID}" = "0x8174" ] && CHIPSET="RTL8192SU" |
||
58 | [ "${PRODUCT_ID}" = "0x8176" ] && CHIPSET="RTL8188CUS" |
||
59 | [ "${PRODUCT_ID}" = "0x8178" ] && CHIPSET="RTL8192CU" |
||
60 | [ "${PRODUCT_ID}" = "0x8179" ] && CHIPSET="RTL8188EUS" |
||
61 | [ "${PRODUCT_ID}" = "0x817f" ] && CHIPSET="RTL8188RU" |
||
62 | [ "${PRODUCT_ID}" = "0x8192" ] && CHIPSET="RTL8191SU" |
||
63 | [ "${PRODUCT_ID}" = "0x8193" ] && CHIPSET="RTL8192DU" |
||
64 | [ "${PRODUCT_ID}" = "0x8199" ] && CHIPSET="RTL8187SU" |
||
65 | [ "${PRODUCT_ID}" = "0x8812" ] && CHIPSET="RTL8812AU" |
||
66 | elif [ "${VENDOR_ID}" = "0x06f8" ] && [ "${PRODUCT_ID}" = "0xe033" ]; then |
||
67 | CHIPSET="RTL8188CUS" |
||
68 | elif [ "${VENDOR_ID}" = "0x2001" ] && [ "${PRODUCT_ID}" = "0x3308" ]; then |
||
69 | CHIPSET="RTL8188CUS" |
||
70 | elif [ "${VENDOR_ID}" = "0x20f4" ] && [ "${PRODUCT_ID}" = "0x648b" ]; then |
||
71 | CHIPSET="RTL8188CUS" |
||
72 | elif [ "${VENDOR_ID}" = "0x7392" ] && [ "${PRODUCT_ID}" = "0x7811" ]; then |
||
73 | CHIPSET="RTL8188CUS" |
||
74 | elif [ "${VENDOR_ID}" = "0x2019" ]; then |
||
75 | [ "${PRODUCT_ID}" = "0xab2a" ] && CHIPSET="RTL8188CUS" |
||
76 | [ "${PRODUCT_ID}" = "0xed17" ] && CHIPSET="RTL8188CUS" |
||
77 | elif [ "${VENDOR_ID}" = "0x050d" ]; then |
||
78 | [ "${PRODUCT_ID}" = "0x1102" ] && CHIPSET="RTL8188CUS" |
||
79 | [ "${PRODUCT_ID}" = "0x11f2" ] && CHIPSET="RTL8188CUS" |
||
80 | elif [ "${VENDOR_ID}" = "0x0846" ]; then |
||
81 | [ "${PRODUCT_ID}" = "0x9041" ] && CHIPSET="RTL8188CUS" |
||
82 | [ "${PRODUCT_ID}" = "0x9042" ] && CHIPSET="RTL8188CUS" |
||
83 | [ "${PRODUCT_ID}" = "0x9043" ] && CHIPSET="RTL8188CUS" |
||
84 | fi |
||
85 | [ -z "${CHIPSET}" ] && CHIPSET="Report dmesg and usbconfig (dump commands) to http://trac.aircrack-ng.org" |
||
86 | elif [ -n "${DRIVER}" ]; then |
||
87 | CHIPSET="Report dmesg and usbconfig (dump commands) to http://trac.aircrack-ng.org" |
||
88 | else |
||
89 | CHIPSET="Unknown" |
||
90 | [ -z "${DRIVER}" ] && DRIVER="Unknown" |
||
91 | fi |
||
92 | } |
||
93 | |||
94 | printf "\nInterface\tDriver\t\tChipset\n\n" |
||
95 | |||
96 | for IFACE in $(ifconfig -a | grep -E '^(wlan|ath|otus|urtwn)[0-9]+' | awk -F: '{print $1}' ) |
||
97 | do |
||
98 | get_interface_info ${IFACE} |
||
99 | printf "${IFACE}\t\t${DRIVER}\t\t${CHIPSET}\n\n" |
||
100 | if [ -n "${PARENT}" ]; then |
||
101 | printf "\t(monitor mode interface. Parent: ${PARENT})\n" |
||
102 | fi |
||
103 | |||
104 | if [ "${INTERFACE_TO_USE}" = "${IFACE}" ]; then |
||
105 | if [ "${COMMAND}" = 'start' ]; then |
||
106 | if [ -n "${PARENT}" ]; then |
||
107 | printf "\t Interface is already in monitor mode, ignoring\n" |
||
108 | else |
||
109 | MONITOR_IFACE=$(ifconfig wlan create wlandev ${IFACE} wlanmode monitor) |
||
110 | if [ $? -eq 0 ]; then |
||
111 | printf "\tCreated monitor mode interface ${MONITOR_IFACE} from ${IFACE}\n" |
||
112 | else |
||
113 | printf "\tFailed creating monitor interface\n" |
||
114 | fi |
||
115 | fi |
||
116 | elif [ "${COMMAND}" = 'stop' ]; then |
||
117 | ifconfig ${IFACE} destroy 2>/dev/null |
||
118 | if [ $? -ne 0 ]; then |
||
119 | printf "\tFailed to remove monitor mode interface ${IFACE}\n" |
||
120 | else |
||
121 | printf "\tDestroyed monitor interface ${IFACE}\n" |
||
122 | fi |
||
123 | fi |
||
124 | fi |
||
125 | done |
||
126 | |||
127 | exit 0 |