nexmon – Blame information for rev 1

Subversion Repositories:
Rev:
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