|
@@ -6,9 +6,11 @@ import android.app.ActivityManager;
|
|
|
import android.app.Fragment;
|
|
|
import android.app.FragmentManager;
|
|
|
import android.app.FragmentTransaction;
|
|
|
+import android.content.BroadcastReceiver;
|
|
|
import android.content.ComponentName;
|
|
|
import android.content.Context;
|
|
|
import android.content.Intent;
|
|
|
+import android.content.IntentFilter;
|
|
|
import android.content.ServiceConnection;
|
|
|
import android.content.pm.ActivityInfo;
|
|
|
import android.content.res.Configuration;
|
|
@@ -16,6 +18,7 @@ import android.content.res.TypedArray;
|
|
|
import android.os.Bundle;
|
|
|
import android.os.IBinder;
|
|
|
import android.support.v4.app.ActionBarDrawerToggle;
|
|
|
+import android.support.v4.content.LocalBroadcastManager;
|
|
|
import android.support.v4.widget.DrawerLayout;
|
|
|
import android.util.Log;
|
|
|
import android.view.MenuItem;
|
|
@@ -26,7 +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;
|
|
@@ -107,7 +113,9 @@ public class MainActivity extends Activity {
|
|
|
|
|
|
};
|
|
|
|
|
|
- private boolean mInvalidMenuItem;
|
|
|
+ private boolean mInvalidMenuItem = false;
|
|
|
+
|
|
|
+ private HashMap<String, Boolean> mAttacksOnProtocol = new HashMap<String, Boolean>();
|
|
|
|
|
|
/**
|
|
|
* Retrieve the singleton latest instance of the activity
|
|
@@ -126,6 +134,8 @@ public class MainActivity extends Activity {
|
|
|
public void onStart(){
|
|
|
super.onStart();
|
|
|
|
|
|
+ registerReceiver();
|
|
|
+
|
|
|
if(isServiceRunning()){
|
|
|
this.bindService();
|
|
|
}
|
|
@@ -208,6 +218,35 @@ public class MainActivity extends Activity {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private void registerReceiver() {
|
|
|
+ LocalBroadcastManager.getInstance(this).registerReceiver(mReceiver,
|
|
|
+ new IntentFilter(getString(R.string.broadcast)));
|
|
|
+ }
|
|
|
+
|
|
|
+ private void unregisterReceiver() {
|
|
|
+ LocalBroadcastManager.getInstance(this).unregisterReceiver(mReceiver);
|
|
|
+ }
|
|
|
+
|
|
|
+ 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());
|
|
@@ -225,17 +264,24 @@ public class MainActivity extends Activity {
|
|
|
}
|
|
|
|
|
|
public void unbindService() {
|
|
|
- unbindService(mConnection);
|
|
|
- //mServiceBound = false;
|
|
|
+ try {
|
|
|
+ unbindService(mConnection);
|
|
|
+ } catch(IllegalArgumentException ex){
|
|
|
+ // somehow already unbound.
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
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();
|
|
@@ -361,7 +407,8 @@ public class MainActivity extends Activity {
|
|
|
public void injectFragment(Fragment fragment, boolean enableBack){
|
|
|
injectFragment(fragment, enableBack, null);
|
|
|
}
|
|
|
- public void injectFragment(Fragment fragment, boolean enableBack, Object tagObj){
|
|
|
+
|
|
|
+ private void injectFragment(Fragment fragment, boolean enableBack, Object tagObj){
|
|
|
if(enableBack){
|
|
|
mDrawerToggle.setDrawerIndicatorEnabled(false);
|
|
|
}
|