@@ -43,11 +43,17 @@ Deauthentication wlan.fc.type_subtype eq 12
43
43
#include "cAssert.h"
44
44
45
45
46
+ static int sqlCallback (void * NotUsed , int argc , char * * argv , char * * azColName ){
47
+ return 0 ;
48
+ }
49
+
46
50
int main ( int argc , char * * argv ) {
47
51
//SQL vars
48
52
char * sqlCmd ;
49
53
char * sqlErr ;
50
54
sqlite3 * requestDB ;
55
+ int rc = sqlite3_open ("observations.db" , & requestDB );
56
+ cAssertMsg ((rc <= 0 ), "Failed to open observations.db\n" );
51
57
// Buffer for received 80211 frames
52
58
uint8_t pktBuff [PKT_BUFF_SZ ];
53
59
// Setup a scoket for *any* protocol
@@ -64,13 +70,29 @@ int main( int argc, char **argv ) {
64
70
Request request = parseRaw (pktBuff , recvDataSize );
65
71
// Print it if it's not null
66
72
if ( request != NULL ){
67
- printf ("%s \"%s\" %s\t \t%ddBm %umHz Dist: %.02fm\n" ,
73
+ printf ("%s %s \" %s\" \t%ddBm %umHz Dist: %.02fm\n" ,
68
74
request -> timeStamp ,
69
75
request -> clientMAC ,
70
76
request -> SSID ,
71
77
request -> RSSI ,
72
78
request -> frequency ,
73
79
request -> distance );
80
+ // Add a new entry to the db
81
+ sqlCmd = sqlite3_mprintf ("INSERT INTO obs "
82
+ "(TIMESTAMP, MAC, SSID, RSSI, FREQ, DIST)"
83
+ " VALUES ('%q', '%q', '%q', %d, %u, %.02f);" ,
84
+ request -> timeStamp ,
85
+ request -> clientMAC ,
86
+ request -> SSID ,
87
+ request -> RSSI ,
88
+ request -> frequency ,
89
+ request -> distance );
90
+ /* Execute SQL statement */
91
+ rc = sqlite3_exec (requestDB , sqlCmd , sqlCallback , 0 , & sqlErr );
92
+ if ( rc != SQLITE_OK ){
93
+ // printf(stderr, "SQL error: %s\n", sqlErr);
94
+ sqlite3_free (sqlErr );
95
+ }
74
96
}
75
97
free (request );
76
98
}
@@ -133,7 +155,7 @@ Request parseRaw( uint8_t *buff, uint16_t buffSize ) {
133
155
request -> SSID [i + 2 ] = hexByte [2 ];
134
156
request -> SSID [i + 3 ] = hexByte [3 ];
135
157
// Kick i fwd a few spots
136
- i += 4 ;
158
+ i += 3 ;
137
159
validSSID = FALSE;
138
160
}
139
161
}
@@ -240,10 +262,9 @@ uint64_t macU8ToU64( uint8_t *mac ) {
240
262
https://en.wikipedia.org/wiki/Free-space_path_loss
241
263
for MHz / meters,
242
264
243
- FSPL(dB) = 20*log10( dist ) + 20*log10( freq ) - 27.55
244
-
265
+ RSSI = FSPL(dB) = 20*log10( dist ) + 20*log10( freq ) - 27.55
245
266
*/
246
267
float signalToDistance ( int8_t RSSI , uint16_t frequency ) {
247
- float distance = (27.55 - (20 * log10 (frequency ))+ abs ( RSSI )) /20 ;
268
+ float distance = (27.55 - RSSI - (20 * log10 (frequency ))) /20.00 ;
248
269
return (float )pow (10 , distance );
249
270
}
0 commit comments