-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathmacDetect.sh
More file actions
executable file
·125 lines (98 loc) · 2.91 KB
/
macDetect.sh
File metadata and controls
executable file
·125 lines (98 loc) · 2.91 KB
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
#!/bin/bash
#Declare known Devices
declare -A knownDevices
knownDevices["00:00:00:00:00:00"]="Your Devicename"
#Get Arguments
device=$1
#Oberserve
function observe (){
sudo tshark -q -l -I -E separator=';' -i $1 -Tfields -e wlan.sa -e wlan.sa_resolved -e radiotap.dbm_antsignal -e wlan.ssid | awk 'BEGIN{FS=";";OFS=";"} {
print $1,$2,$3,$4 > "dump/"$1".dump";
close("dump/"$1".dump");
}' > /dev/null &
}
#Format Output
function getOutput() {
output="Devicename|Mac-Address|Mac-Resolved|Signal-Strength|SSID\n"
#Get Longest DeviceName
longestDeviceName=1
for K in "${!knownDevices[@]}";
do
keyLength=${#K}
if [ $keyLength -gt $longestDeviceName ]; then
longestDeviceName=$keyLength
fi
done
for (( c=1; c<=$longestDeviceName; c++ ))
do
output+="-"
done
output+="\n"
#remove empty files
rm -f -r dump/.dump > /dev/null
#get all dump files
declare -A outputValues
for file in dump/*.dump; do
if [ -f $file ]; then
line=$(head -n 1 $file)
values=(${line//;/ })
macAddress=${values[0]}
macAddressResolved=${values[1]}
signalStrength=${values[2]}
ssid=${values[3]}
deviceName="-"
#convert signalStrength
signals=(${signalStrength//,/ })
signalStrengthClean=${signals[0]}
#colourize signalstrength
#SIGNAL STRENGTH: -30 dBm Amazing | -67 dBm Very Good | -70 dBm Okay | -80 dBm Not Good | -90 dBm Unusable
NC='\033[0m' # No Color
RED='\033[0;31m'
ORANGE='\e[0;33m'
GREEN='\e[0;32m'
signalColor=""
if [ "$signalStrengthClean" -ge "-70" ]; then
signalColor=$GREEN
fi
if [ "$signalStrengthClean" -le "-70" ]; then
signalColor=$ORANGE
fi
if [ "$signalStrengthClean" -le "-80" ]; then
signalColor=$RED
fi
signalStrengthClean="${signalColor}${signalStrengthClean} dBm${NC}"
#Replace known Devicename
for K in "${!knownDevices[@]}";
do
if [ "$K" = "$macAddress" ]; then
deviceName=${knownDevices[$K]}
fi
done
output+="${deviceName}|${macAddress}|${macAddressResolved}|${signalStrengthClean}|${ssid}\n"
fi
done
printf "$output" | column -c10 -s"|" -t
}
#Clear all Dump-Files
function clearAllDumps (){
mkdir -p dump && rm -f -r dump/*.*
}
#Clear Dump-Files older than X
function clearOutdatedDumps(){
find "dump/" -type f -name '*.dump' -mmin +0,15 -exec rm {} \; > /dev/null
}
#Create dump folder and clear any old dumps
clearAllDumps
#Start the Observer
observe $device > /dev/null
#Clean up the View
sleep 2
clear
echo; while true
do
output=$(getOutput)
clear
echo "$output"
sleep 2
clearOutdatedDumps >/dev/null 2>/dev/null
done