Переглянути джерело

Added attacks notify map in mainactivity

Alexander Brakowski 10 роки тому
батько
коміт
2f7722e6cb

+ 6 - 4
src/de/tudarmstadt/informatik/hostage/logging/UglyDbHelper.java

@@ -339,24 +339,26 @@ public class UglyDbHelper extends SQLiteOpenHelper {
 	}
 
 	public int numBssidSeen(String BSSID){
-		String countQuery = "SELECT  * FROM " + TABLE_BSSIDS + " WHERE "
+		String countQuery = "SELECT  COUNT(*) FROM " + TABLE_BSSIDS + " WHERE "
 				+ KEY_BSSID + " = " + "'" + BSSID + "'";
 		SQLiteDatabase db = this.getReadableDatabase();
 		Cursor cursor = db.rawQuery(countQuery, null);
-		int result = cursor.getCount();
+		cursor.moveToFirst();
+		int result = cursor.getInt(0);
 		cursor.close();
 		db.close();
 		return result;
 	}
 
 	public int numBssidSeen(String protocol, String BSSID) {
-		String countQuery = "SELECT  * FROM " + TABLE_ATTACK_INFO
+		String countQuery = "SELECT  COUNT(*) FROM " + TABLE_ATTACK_INFO
 				+ " JOIN " + TABLE_BSSIDS + " USING " + "(" + KEY_BSSID + ")" + " WHERE " + TABLE_ATTACK_INFO + "." +  KEY_PROTOCOL
 				+ " = " + "'" + protocol + "'" + " AND " + TABLE_BSSIDS+ "."+ KEY_BSSID + " = "
 				+ "'" + BSSID + "'";
 		SQLiteDatabase db = this.getReadableDatabase();
 		Cursor cursor = db.rawQuery(countQuery, null);
-		int result = cursor.getCount();
+		cursor.moveToFirst();
+		int result = cursor.getInt(0);
 		cursor.close();
 		db.close();
 		return result;

+ 20 - 13
src/de/tudarmstadt/informatik/hostage/ui2/activity/MainActivity.java

@@ -29,8 +29,10 @@ import android.widget.ListView;
 import java.io.BufferedReader;
 import java.io.InputStreamReader;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
 
+import de.tudarmstadt.informatik.hostage.HoneyHandler;
 import de.tudarmstadt.informatik.hostage.HoneyService;
 import de.tudarmstadt.informatik.hostage.R;
 import de.tudarmstadt.informatik.hostage.ui.LogFilter;
@@ -96,8 +98,6 @@ public class MainActivity extends Activity {
 		public void onServiceConnected(ComponentName name, IBinder service) {
 			mHoneyService = ((HoneyService.LocalBinder) service).getService();
 			mServiceBound = true;
-
-			System.out.println(" ------------------- BOUND");
 		}
 
 		/**
@@ -109,15 +109,13 @@ public class MainActivity extends Activity {
 		public void onServiceDisconnected(ComponentName name) {
 			mHoneyService = null;
 			mServiceBound = false;
-
-			System.out.println(" ------------------------ UNBOUND");
 		}
 
 	};
 
 	private boolean mInvalidMenuItem = false;
 
-	private HashMap<String, Boolean> mAttacksOnProtocol;
+	private HashMap<String, Boolean> mAttacksOnProtocol = new HashMap<String, Boolean>();
 
 	/**
 	 * Retrieve the singleton latest instance of the activity
@@ -143,14 +141,6 @@ public class MainActivity extends Activity {
 		}
 	}
 
-	@Override
-	protected void onStop() {
-		// Unregister Broadcast Receiver
-		unregisterReceiver();
-
-		super.onStop();
-	}
-
 	@Override
 	protected void onCreate(Bundle savedInstanceState) {
 		super.onCreate(savedInstanceState);
@@ -240,10 +230,23 @@ public class MainActivity extends Activity {
 	private BroadcastReceiver mReceiver = new BroadcastReceiver() {
 		@Override
 		public void onReceive(Context context, Intent intent) {
+			Bundle extras = intent.getExtras();
 
+			String sender = extras.getString("SENDER");
+			String[] values = extras.getStringArray("VALUES");
+
+			if(sender.equals(HoneyHandler.class.getName()) && values[0].equals(getString(R.string.broadcast_started))) {
+				mAttacksOnProtocol.put(values[1], true);
+			}
 		}
 	};
 
+	public boolean hasProtocolAttacks(String protocol){
+		if(!mAttacksOnProtocol.containsKey(protocol)) return false;
+
+		return mAttacksOnProtocol.get(protocol);
+	}
+
 	public void startAndBind() {
 		if(!isServiceRunning()){
 			startService(getServiceIntent());
@@ -269,12 +272,16 @@ public class MainActivity extends Activity {
 	}
 
 	public void bindService() {
+		mAttacksOnProtocol.clear();
 		bindService(getServiceIntent(), mConnection, BIND_AUTO_CREATE);
 		//mServiceBound = true;
 	}
 
 	@Override
 	protected void onDestroy() {
+		// Unregister Broadcast Receiver
+		unregisterReceiver();
+
 		// Unbind running service
 		if(!mHoneyService.hasRunningListeners()){
 			stopAndUnbind();

+ 5 - 8
src/de/tudarmstadt/informatik/hostage/ui2/fragment/HomeFragment.java

@@ -152,21 +152,18 @@ public class HomeFragment extends Fragment {
 		}
 
 		boolean hasActiveListeners = false;
-		int totalAttacks = 0;
+		int totalAttacks = dbh.numBssidSeen(mConnectionInfo.getString(getString(R.string.connection_info_bssid), null));
 		int totalLogged = 0;
 
 		if(MainActivity.getInstance().isServiceBound()){
 			for(String protocol: getResources().getStringArray(R.array.protocols)){
 				if(MainActivity.getInstance().getHoneyService().isRunning(protocol)){
 					hasActiveListeners = true;
-					int attacks = MainActivity.getInstance().getHoneyService().getNumberOfActiveConnections(protocol);
-					totalAttacks += attacks;
 
-					if(attacks == 0){
-						int log_attacks = dbh.numBssidSeen(protocol, mConnectionInfo.getString(getString(R.string.connection_info_bssid), null));
-						totalLogged += log_attacks;
+					boolean attackRegistered = MainActivity.getInstance().hasProtocolAttacks(protocol);
 
-						if(log_attacks > 0){
+					if(!attackRegistered){
+						if(totalAttacks > 0){
 							if(THREAT_LEVEL != ThreatIndicatorGLRenderer.ThreatLevel.LIVE_THREAT){
 								THREAT_LEVEL = ThreatIndicatorGLRenderer.ThreatLevel.PAST_THREAT;
 							}
@@ -195,7 +192,7 @@ public class HomeFragment extends Fragment {
 					mHomeTextSecurity.setTextColor(getResources().getColor(R.color.holo_dark_green));
 					break;
 				case PAST_THREAT:
-					mHomeTextAttacks.setText(totalLogged + (totalLogged == 1 ? " attack" : " attacks") +  " logged");
+					mHomeTextAttacks.setText(totalAttacks + (totalAttacks == 1 ? " attack" : " attacks") +  " logged");
 					mHomeTextSecurity.setText("Insecure");
 					mHomeTextAttacks.setTextColor(getResources().getColor(R.color.holo_yellow));
 					mHomeTextSecurity.setTextColor(getResources().getColor(R.color.holo_yellow));