|
@@ -1,14 +1,15 @@
|
|
|
package de.tudarmstadt.informatik.hostage.logging;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.HashMap;
|
|
|
-
|
|
|
import android.content.ContentValues;
|
|
|
import android.content.Context;
|
|
|
import android.database.Cursor;
|
|
|
import android.database.sqlite.SQLiteDatabase;
|
|
|
import android.database.sqlite.SQLiteOpenHelper;
|
|
|
import android.util.Log;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.HashMap;
|
|
|
+
|
|
|
import de.tudarmstadt.informatik.hostage.logging.Record.TYPE;
|
|
|
import de.tudarmstadt.informatik.hostage.ui.LogFilter;
|
|
|
|
|
@@ -35,9 +36,9 @@ public class UglyDbHelper extends SQLiteOpenHelper {
|
|
|
private static final String DATABASE_NAME = "recordManager";
|
|
|
|
|
|
// Contacts table names
|
|
|
- private static final String TABLE_ATTACK_INFO = "attack_info";
|
|
|
- private static final String TABLE_RECORDS = "records";
|
|
|
- private static final String TABLE_BSSIDS = "bssids";
|
|
|
+ public static final String TABLE_ATTACK_INFO = "attack_info";
|
|
|
+ public static final String TABLE_RECORDS = "records";
|
|
|
+ public static final String TABLE_BSSIDS = "bssids";
|
|
|
|
|
|
// Contacts Table Columns names
|
|
|
public static final String KEY_ID = "_id";
|
|
@@ -61,26 +62,40 @@ public class UglyDbHelper extends SQLiteOpenHelper {
|
|
|
|
|
|
// Database sql create statements
|
|
|
private static final String CREATE_RECORD_TABLE = "CREATE TABLE "
|
|
|
- + TABLE_RECORDS + "(" + KEY_ID + " INTEGER NOT NULL,"
|
|
|
- + KEY_ATTACK_ID + " INTEGER NOT NULL," + KEY_TYPE + " TEXT,"
|
|
|
- + KEY_TIME + " INTEGER," + KEY_PACKET + " TEXT," + "FOREIGN KEY("
|
|
|
+ + TABLE_RECORDS + "("
|
|
|
+ + KEY_ID + " INTEGER NOT NULL,"
|
|
|
+ + KEY_ATTACK_ID + " INTEGER NOT NULL,"
|
|
|
+ + KEY_TYPE + " TEXT,"
|
|
|
+ + KEY_TIME + " INTEGER,"
|
|
|
+ + KEY_PACKET + " TEXT,"
|
|
|
+ + "FOREIGN KEY("
|
|
|
+ KEY_ATTACK_ID + ") REFERENCES " + TABLE_ATTACK_INFO + "("
|
|
|
+ KEY_ATTACK_ID + ")," + "PRIMARY KEY(" + KEY_ID + ", "
|
|
|
+ KEY_ATTACK_ID + ")" + ")";
|
|
|
|
|
|
private static final String CREATE_ATTACK_INFO_TABLE = "CREATE TABLE "
|
|
|
- + TABLE_ATTACK_INFO + "(" + KEY_ATTACK_ID + " INTEGER PRIMARY KEY,"
|
|
|
- + KEY_PROTOCOL + " TEXT," + KEY_EXTERNAL_IP + " TEXT,"
|
|
|
- + KEY_LOCAL_IP + " BLOB," + KEY_LOCAL_HOSTNAME + " TEXT,"
|
|
|
- + KEY_LOCAL_PORT + " INTEGER," + KEY_REMOTE_IP + " BLOB,"
|
|
|
- + KEY_REMOTE_HOSTNAME + " TEXT," + KEY_REMOTE_PORT + " INTEGER,"
|
|
|
- + KEY_BSSID + " TEXT," + "FOREIGN KEY(" + KEY_BSSID
|
|
|
+ + TABLE_ATTACK_INFO + "("
|
|
|
+ + KEY_ATTACK_ID + " INTEGER PRIMARY KEY,"
|
|
|
+ + KEY_PROTOCOL + " TEXT,"
|
|
|
+ + KEY_EXTERNAL_IP + " TEXT,"
|
|
|
+ + KEY_LOCAL_IP + " BLOB,"
|
|
|
+ + KEY_LOCAL_HOSTNAME + " TEXT,"
|
|
|
+ + KEY_LOCAL_PORT + " INTEGER,"
|
|
|
+ + KEY_REMOTE_IP + " BLOB,"
|
|
|
+ + KEY_REMOTE_HOSTNAME + " TEXT,"
|
|
|
+ + KEY_REMOTE_PORT + " INTEGER,"
|
|
|
+ + KEY_BSSID + " TEXT,"
|
|
|
+ + "FOREIGN KEY(" + KEY_BSSID
|
|
|
+ ") REFERENCES " + TABLE_BSSIDS + "(" + KEY_BSSID + ")" + ")";
|
|
|
|
|
|
private static final String CREATE_BSSID_TABLE = "CREATE TABLE "
|
|
|
- + TABLE_BSSIDS + "(" + KEY_BSSID + " TEXT PRIMARY KEY," + KEY_SSID
|
|
|
- + " TEXT," + KEY_LATITUDE + " INTEGER," + KEY_LONGITUDE
|
|
|
- + " INTEGER," + KEY_ACCURACY + " INTEGER," + KEY_TIME + " INTEGER"
|
|
|
+ + TABLE_BSSIDS + "("
|
|
|
+ + KEY_BSSID + " TEXT PRIMARY KEY,"
|
|
|
+ + KEY_SSID + " TEXT,"
|
|
|
+ + KEY_LATITUDE + " INTEGER,"
|
|
|
+ + KEY_LONGITUDE + " INTEGER,"
|
|
|
+ + KEY_ACCURACY + " INTEGER,"
|
|
|
+ + KEY_TIME + " INTEGER"
|
|
|
+ ")";
|
|
|
|
|
|
public UglyDbHelper(Context context) {
|
|
@@ -115,12 +130,12 @@ public class UglyDbHelper extends SQLiteOpenHelper {
|
|
|
*/
|
|
|
public ArrayList<Record> getRecordsForFilter(LogFilter filter) {
|
|
|
ArrayList<Record> recordList = new ArrayList<Record>();
|
|
|
- String selectQuery = "SELECT * FROM " + TABLE_RECORDS + " NATURAL JOIN " + TABLE_ATTACK_INFO + " NATURAL JOIN " + TABLE_BSSIDS;
|
|
|
+ String selectQuery = "SELECT * FROM " + TABLE_RECORDS + " NATURAL JOIN " + TABLE_ATTACK_INFO + " JOIN " + TABLE_BSSIDS + " USING "+ "(" + KEY_BSSID + ")";
|
|
|
|
|
|
// TIMESTAMPS
|
|
|
- selectQuery = selectQuery + " WHERE " + KEY_TIME;
|
|
|
+ selectQuery = selectQuery + " WHERE " + TABLE_RECORDS +"."+KEY_TIME;
|
|
|
selectQuery = selectQuery + " < " + filter.getBelowTimestamp();
|
|
|
- selectQuery = selectQuery + " AND " + KEY_TIME;
|
|
|
+ selectQuery = selectQuery + " AND " + TABLE_RECORDS +"."+KEY_TIME;
|
|
|
selectQuery = selectQuery + " > " + filter.getAboveTimestamp();
|
|
|
|
|
|
if (filter.getBSSIDs() != null && filter.getBSSIDs().size() > 0) {
|
|
@@ -283,7 +298,7 @@ public class UglyDbHelper extends SQLiteOpenHelper {
|
|
|
*/
|
|
|
public boolean bssidSeen(String protocol, String BSSID) {
|
|
|
String countQuery = "SELECT * FROM " + TABLE_ATTACK_INFO
|
|
|
- + " NATURAL JOIN " + TABLE_BSSIDS + " WHERE " + KEY_PROTOCOL
|
|
|
+ + " JOIN " + TABLE_BSSIDS + " USING " + "(" + KEY_BSSID + ")" + " WHERE " + KEY_PROTOCOL
|
|
|
+ " = " + "'" + protocol + "'" + " AND " + KEY_BSSID + " = "
|
|
|
+ "'" + BSSID + "'";
|
|
|
SQLiteDatabase db = this.getReadableDatabase();
|
|
@@ -368,8 +383,8 @@ public class UglyDbHelper extends SQLiteOpenHelper {
|
|
|
public ArrayList<Record> getAllReceivedRecordsOfEachAttack() {
|
|
|
ArrayList<Record> recordList = new ArrayList<Record>();
|
|
|
String selectQuery = "SELECT * FROM " + TABLE_RECORDS
|
|
|
- + " NATURAL JOIN " + TABLE_ATTACK_INFO + " NATURAL JOIN "
|
|
|
- + TABLE_BSSIDS + " WHERE " + KEY_TYPE + "='RECEIVE'"
|
|
|
+ + " NATURAL JOIN " + TABLE_ATTACK_INFO + " JOIN "
|
|
|
+ + TABLE_BSSIDS + " USING " + "(" + KEY_BSSID + ")" + " WHERE " + KEY_TYPE + "='RECEIVE'"
|
|
|
+ " ORDER BY " + KEY_TIME;
|
|
|
SQLiteDatabase db = this.getReadableDatabase();
|
|
|
Cursor cursor = db.rawQuery(selectQuery, null);
|
|
@@ -399,7 +414,7 @@ public class UglyDbHelper extends SQLiteOpenHelper {
|
|
|
// Select All Query
|
|
|
String selectQuery = "SELECT * FROM " + TABLE_RECORDS
|
|
|
+ " NATURAL JOIN " + TABLE_ATTACK_INFO + " JOIN "
|
|
|
- + TABLE_BSSIDS + " USING (_bssid)";
|
|
|
+ + TABLE_BSSIDS + " USING " + "(" + KEY_BSSID + ")";
|
|
|
|
|
|
SQLiteDatabase db = this.getWritableDatabase();
|
|
|
Cursor cursor = db.rawQuery(selectQuery, null);
|
|
@@ -519,8 +534,8 @@ public class UglyDbHelper extends SQLiteOpenHelper {
|
|
|
*/
|
|
|
public Record getRecord(int id) {
|
|
|
String selectQuery = "SELECT * FROM " + TABLE_RECORDS
|
|
|
- + " NATURAL JOIN " + TABLE_ATTACK_INFO + " NATURAL JOIN "
|
|
|
- + TABLE_BSSIDS + " WHERE " + KEY_ID + " = " + id;
|
|
|
+ + " NATURAL JOIN " + TABLE_ATTACK_INFO + " JOIN "
|
|
|
+ + TABLE_BSSIDS + " USING " + "(" + KEY_BSSID + ")" + " WHERE " + KEY_ID + " = " + id;
|
|
|
SQLiteDatabase db = this.getReadableDatabase();
|
|
|
|
|
|
Cursor cursor = db.rawQuery(selectQuery, null);
|
|
@@ -561,8 +576,8 @@ public class UglyDbHelper extends SQLiteOpenHelper {
|
|
|
*/
|
|
|
public Record getRecordOfAttackId(long attack_id) {
|
|
|
String selectQuery = "SELECT * FROM " + TABLE_RECORDS
|
|
|
- + " NATURAL JOIN " + TABLE_ATTACK_INFO + " NATURAL JOIN "
|
|
|
- + TABLE_BSSIDS + " WHERE " + KEY_ATTACK_ID + " = " + attack_id
|
|
|
+ + " NATURAL JOIN " + TABLE_ATTACK_INFO + " JOIN "
|
|
|
+ + TABLE_BSSIDS + " USING " + "(" + KEY_BSSID + ")" + " WHERE " + KEY_ATTACK_ID + " = " + attack_id
|
|
|
+ " GROUP BY " + KEY_ATTACK_ID;
|
|
|
SQLiteDatabase db = this.getReadableDatabase();
|
|
|
Cursor cursor = db.rawQuery(selectQuery, null);
|
|
@@ -588,8 +603,8 @@ public class UglyDbHelper extends SQLiteOpenHelper {
|
|
|
public ArrayList<Record> getRecordOfEachAttack() {
|
|
|
ArrayList<Record> recordList = new ArrayList<Record>();
|
|
|
String selectQuery = "SELECT * FROM " + TABLE_RECORDS
|
|
|
- + " NATURAL JOIN " + TABLE_ATTACK_INFO + " NATURAL JOIN "
|
|
|
- + TABLE_BSSIDS + " GROUP BY " + KEY_ATTACK_ID;
|
|
|
+ + " NATURAL JOIN " + TABLE_ATTACK_INFO + " JOIN "
|
|
|
+ + TABLE_BSSIDS + " USING " + "(" + KEY_BSSID + ")" + " GROUP BY " + KEY_ATTACK_ID;
|
|
|
SQLiteDatabase db = this.getReadableDatabase();
|
|
|
Cursor cursor = db.rawQuery(selectQuery, null);
|
|
|
|
|
@@ -620,8 +635,8 @@ public class UglyDbHelper extends SQLiteOpenHelper {
|
|
|
public ArrayList<Record> getRecordOfEachAttack(long attack_id) {
|
|
|
ArrayList<Record> recordList = new ArrayList<Record>();
|
|
|
String selectQuery = "SELECT * FROM " + TABLE_RECORDS
|
|
|
- + " NATURAL JOIN " + TABLE_ATTACK_INFO + " NATURAL JOIN "
|
|
|
- + TABLE_BSSIDS + " WHERE " + KEY_ATTACK_ID + " > " + attack_id
|
|
|
+ + " NATURAL JOIN " + TABLE_ATTACK_INFO + " JOIN "
|
|
|
+ + TABLE_BSSIDS + " USING " + "(" + KEY_BSSID + ")" + " WHERE " + KEY_ATTACK_ID + " > " + attack_id
|
|
|
+ " GROUP BY " + KEY_ATTACK_ID;
|
|
|
SQLiteDatabase db = this.getReadableDatabase();
|
|
|
Cursor cursor = db.rawQuery(selectQuery, null);
|