Browse Source

display internal/external attack for records

Fabio Arnold 9 years ago
parent
commit
b1c201468a

+ 1 - 1
build.gradle

@@ -3,7 +3,7 @@ buildscript {
         mavenCentral()
     }
     dependencies {
-        classpath 'com.android.tools.build:gradle:0.13.2'
+        classpath 'com.android.tools.build:gradle:0.14.2'
     }
 }
 apply plugin: 'com.android.application'

+ 18 - 0
res/layout/fragment_connectioninfo_dialog.xml

@@ -63,6 +63,24 @@
 					android:id="@+id/connectioninfo_internalip_value" android:layout_column="1"
 					android:layout_margin="4dp" android:gravity="right"/>
 		</TableRow>
+		<TableRow
+				android:layout_width="fill_parent"
+				android:layout_height="fill_parent">
+			<TextView
+					android:layout_width="wrap_content"
+					android:layout_height="wrap_content"
+					android:textAppearance="?android:attr/textAppearanceMedium"
+					android:text="@string/subnet_mask"
+					android:id="@+id/textView8" android:layout_column="0"
+					android:layout_margin="4dp"
+					android:textStyle="bold"/>
+			<TextView
+					android:layout_width="wrap_content"
+					android:layout_height="wrap_content"
+					android:textAppearance="?android:attr/textAppearanceMedium"
+					android:id="@+id/connectioninfo_subnetmask_value" android:layout_column="1"
+					android:layout_margin="4dp" android:gravity="right"/>
+		</TableRow>
 		<TableRow
 				android:layout_width="fill_parent"
 				android:layout_height="fill_parent">

+ 27 - 5
res/layout/fragment_record_detail.xml

@@ -33,26 +33,48 @@
 				android:paddingRight="10dp"
 				>
 
+			<TextView
+					android:layout_width="wrap_content"
+					android:layout_height="wrap_content"
+					android:textAppearance="?android:attr/textAppearanceSmall"
+					android:text="@string/RecordAttackType"
+					android:textAllCaps="true"
+					android:id="@+id/textView4"
+					android:gravity="center"
+					android:layout_alignParentTop="true"
+					android:layout_alignParentLeft="true"
+					android:layout_alignParentStart="true"
+					android:layout_alignBottom="@+id/record_details_text_attack_type"/>
+
 			<TextView
 					android:layout_width="wrap_content"
 					android:layout_height="wrap_content"
 					android:textAppearance="?android:attr/textAppearanceMedium"
-					android:id="@+id/record_details_text_ssid"
+					android:id="@+id/record_details_text_attack_type"
 					android:layout_toRightOf="@+id/textView7"
 					android:layout_marginLeft="27dp"/>
 
 			<TextView
 					android:layout_width="wrap_content"
-					android:layout_height="match_parent"
+					android:layout_height="wrap_content"
 					android:textAppearance="?android:attr/textAppearanceSmall"
 					android:text="@string/RecordSSID"
 					android:textAllCaps="true"
 					android:id="@+id/textView2"
-					android:gravity="center"
-					android:layout_alignParentTop="true"
+					android:layout_alignTop="@+id/record_details_text_ssid"
 					android:layout_alignParentLeft="true"
 					android:layout_alignParentStart="true"
-					android:layout_alignBottom="@+id/record_details_text_ssid"/>
+					android:layout_alignBottom="@+id/record_details_text_ssid"
+					android:gravity="center"/>
+
+			<TextView
+					android:id="@+id/record_details_text_ssid"
+					android:layout_width="wrap_content"
+					android:layout_height="wrap_content"
+					android:textAppearance="?android:attr/textAppearanceMedium"
+					android:layout_below="@+id/record_details_text_attack_type"
+					android:layout_alignLeft="@+id/record_details_text_attack_type"
+					android:layout_alignStart="@+id/record_details_text_attack_type"/>
 
 			<TextView
 					android:layout_width="wrap_content"

+ 3 - 0
res/values-de/strings.xml

@@ -60,6 +60,9 @@
 
     <string name="threatmap_show_records"><u>Zeige Aufzeichnungen</u></string>
 
+	<string name="RecordAttackType">Typ</string>
+	<string name="RecordInternalAttack">Interner Angriff</string>
+	<string name="RecordExternalAttack">Externer Angriff</string>
     <string name="RecordBSSID">BSSID</string>
     <string name="RecordSSID">SSID</string>
     <string name="RecordTimestamp">Zeitstempel</string>

+ 1 - 0
res/values/connection_info.xml

@@ -7,6 +7,7 @@
     <string name="connection_info_bssid">de.tudarmstadt.informatik.hostage.CONNECTION_INFO.BSSID</string>
     <string name="connection_info_ssid">de.tudarmstadt.informatik.hostage.CONNECTION_INFO.SSID</string>
     <string name="connection_info_internal_ip">de.tudarmstadt.informatik.hostage.CONNECTION_INFO.INTERNAL_IP</string>
+	<string name="connection_info_subnet_mask">de.tudarmstadt.informatik.hostage.CONNECTION_INFO.SUBNET_MASK</string>
  	<string name="connection_info_external_ip">de.tudarmstadt.informatik.hostage.CONNECTION_INFO.EXTERNAL_IP</string>  
 
     

+ 7 - 3
res/values/strings.xml

@@ -48,6 +48,7 @@
 	<string name="timestamp">Timestamp:</string>
 	<string name="location">Location:</string>
     <string name="internal_ip">Internal IP:</string>
+	<string name="subnet_mask">Subnet Mask:</string>
     <string name="external_ip">External IP:</string>
 	<string name="remote_ip">Remote IP:</string>
 	<string name="packet_type">Packet type:</string>
@@ -71,11 +72,14 @@
 	<string name="dialog_clear_database_date">Delete all data before:</string>
 
 	<string name="threatmap_show_records"><u>Show records</u></string>
-	
+
+	<string name="RecordAttackType">Type</string>
+	<string name="RecordInternalAttack">Internal attack</string>
+	<string name="RecordExternalAttack">External attack</string>
     <string name="RecordBSSID">BSSID</string>
     <string name="RecordSSID">SSID</string>
-    <string name="RecordTimestamp">timestamp</string>
-    <string name="RecordProtocol">protocol</string>
+    <string name="RecordTimestamp">Timestamp</string>
+    <string name="RecordProtocol">Protocol</string>
 
     <string name="drawer_open">Open navigation drawer</string>
     <string name="drawer_close">Close navigation drawer</string>

+ 12 - 0
src/de/tudarmstadt/informatik/hostage/Handler.java

@@ -12,6 +12,8 @@ import android.content.SharedPreferences;
 import android.content.SharedPreferences.Editor;
 import android.preference.PreferenceManager;
 import android.util.Log;
+
+import de.tudarmstadt.informatik.hostage.commons.HelperUtils;
 import de.tudarmstadt.informatik.hostage.location.MyLocationManager;
 import de.tudarmstadt.informatik.hostage.logging.AttackRecord;
 import de.tudarmstadt.informatik.hostage.logging.Logger;
@@ -50,6 +52,9 @@ public class Handler implements Runnable {
 	private String externalIP;
 	private String BSSID;
 	private String SSID;
+
+	private int subnetMask;
+	private int internalIPAddress;
 	
 	private boolean logged;
 
@@ -85,6 +90,11 @@ public class Handler implements Runnable {
 		BSSID = connInfo.getString(service.getString(R.string.connection_info_bssid), null);
 		SSID = connInfo.getString(service.getString(R.string.connection_info_ssid), null);
 		externalIP = connInfo.getString(service.getString(R.string.connection_info_external_ip), null);
+
+		// we need this info to find out whether the attack was internal
+		subnetMask = connInfo.getInt(service.getString(R.string.connection_info_subnet_mask), 0);
+		internalIPAddress = connInfo.getInt(service.getString(R.string.connection_info_internal_ip), 0);
+
 		setSoTimeout(client);
 		logged = false;
 		thread.start();		
@@ -203,6 +213,8 @@ public class Handler implements Runnable {
 		record.setExternalIP(externalIP);
 		record.setLocalIP(client.getLocalAddress().getHostAddress());
 		record.setLocalPort(client.getLocalPort());
+		int remoteIPAddress = HelperUtils.packInetAddress(client.getInetAddress().getAddress());
+		record.setWasInternalAttack((remoteIPAddress & subnetMask) == (internalIPAddress & subnetMask));
 		record.setRemoteIP(client.getInetAddress().getHostAddress());
 		record.setRemotePort(client.getPort());
 		record.setBssid(BSSID);

+ 33 - 19
src/de/tudarmstadt/informatik/hostage/Hostage.java

@@ -23,7 +23,11 @@ import android.content.IntentFilter;
 import android.content.SharedPreferences;
 import android.content.SharedPreferences.Editor;
 import android.net.ConnectivityManager;
+import android.net.DhcpInfo;
+import android.net.NetworkInfo;
 import android.net.Uri;
+import android.net.wifi.WifiInfo;
+import android.net.wifi.WifiManager;
 import android.os.AsyncTask;
 import android.os.Binder;
 import android.os.IBinder;
@@ -34,25 +38,14 @@ import android.support.v4.content.LocalBroadcastManager;
 import android.util.Log;
 import android.widget.Toast;
 
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.impl.client.DefaultHttpClient;
-import org.apache.http.util.EntityUtils;
-import org.json.JSONObject;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-
 import de.tudarmstadt.informatik.hostage.commons.HelperUtils;
 import de.tudarmstadt.informatik.hostage.location.MyLocationManager;
 import de.tudarmstadt.informatik.hostage.persistence.HostageDBOpenHelper;
 import de.tudarmstadt.informatik.hostage.protocol.Protocol;
 import de.tudarmstadt.informatik.hostage.ui.activity.MainActivity;
 
+import static de.tudarmstadt.informatik.hostage.commons.HelperUtils.*;
+
 /**
  * Background service running as long as at least one protocol is active.
  * Service controls start and stop of protocol listener. Notifies GUI about
@@ -138,7 +131,7 @@ public class Hostage extends Service {
 		@Override
 		public void onReceive(Context context, Intent intent) {
 			String bssid_old = connectionInfo.getString(getString(R.string.connection_info_bssid), "");
-			String bssid_new = HelperUtils.getBSSID(context);
+			String bssid_new = getBSSID(context);
 			if (bssid_new == null || !bssid_new.equals(bssid_old)) {
 				deleteConnectionData();
 				updateConnectionInfo();
@@ -485,7 +478,7 @@ public class Hostage extends Service {
 			if (listener.getHandlerCount() > 0) {
 				activeHandlers = true;
 			}
-			if (dbh.bssidSeen(listener.getProtocolName(), HelperUtils.getBSSID(getApplicationContext()))) {
+			if (dbh.bssidSeen(listener.getProtocolName(), getBSSID(getApplicationContext()))) {
 				bssidSeen = true;
 			}
 		}
@@ -612,15 +605,36 @@ public class Hostage extends Service {
 	 * for session data.
 	 * 
 	 * @param context
-	 *            Needs a context to get system recourses.
+	 *            Needs a context to get system resources.
 	 * @see MainActivity#CONNECTION_INFO
 	 */
 	private void updateConnectionInfo() {
+		ConnectivityManager connManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
+		NetworkInfo networkInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
+		if (networkInfo == null || !networkInfo.isConnected()) {
+			return; // no connection
+		}
+		final WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
+		final WifiInfo connectionInfo = wifiManager.getConnectionInfo();
+		if (connectionInfo == null) {
+			return; // no wifi connection
+		}
+		final DhcpInfo dhcpInfo = wifiManager.getDhcpInfo();
+		if (dhcpInfo == null) {
+			return;
+		}
+
+		String ssid = connectionInfo.getSSID();
+		if (ssid.startsWith("\"") && ssid.endsWith("\"")) { // trim those quotes
+			ssid = ssid.substring(1, ssid.length() - 1);
+		}
+
 		SharedPreferences pref = context.getSharedPreferences(getString(R.string.connection_info), Context.MODE_PRIVATE);
 		Editor editor = pref.edit();
-		editor.putString(getString(R.string.connection_info_ssid), HelperUtils.getSSID(context));
-		editor.putString(getString(R.string.connection_info_bssid), HelperUtils.getBSSID(context));
-		editor.putString(getString(R.string.connection_info_internal_ip), HelperUtils.getInternalIP(context));
+		editor.putString(getString(R.string.connection_info_ssid), ssid);
+		editor.putString(getString(R.string.connection_info_bssid), connectionInfo.getBSSID());
+		editor.putInt(getString(R.string.connection_info_internal_ip), dhcpInfo.ipAddress);
+		editor.putInt(getString(R.string.connection_info_subnet_mask), dhcpInfo.netmask);
 		editor.commit();
 		SetExternalIPTask async = new SetExternalIPTask();
 		async.execute(new String[] { "http://ip2country.sourceforge.net/ip2c.php?format=JSON" });

+ 8 - 7
src/de/tudarmstadt/informatik/hostage/Listener.java

@@ -1,11 +1,8 @@
 package de.tudarmstadt.informatik.hostage;
 
-import java.io.BufferedReader;
 import java.io.IOException;
-import java.io.InputStreamReader;
 import java.net.ServerSocket;
 import java.net.Socket;
-import java.security.SecureRandom;
 import java.util.ArrayList;
 import java.util.Iterator;
 
@@ -18,12 +15,13 @@ import android.content.SharedPreferences;
 import android.content.SharedPreferences.Editor;
 import android.preference.PreferenceManager;
 import android.util.Log;
+
+import de.tudarmstadt.informatik.hostage.commons.HelperUtils;
 import de.tudarmstadt.informatik.hostage.location.MyLocationManager;
 import de.tudarmstadt.informatik.hostage.logging.AttackRecord;
 import de.tudarmstadt.informatik.hostage.logging.Logger;
 import de.tudarmstadt.informatik.hostage.logging.NetworkRecord;
 import de.tudarmstadt.informatik.hostage.net.MyServerSocketFactory;
-import de.tudarmstadt.informatik.hostage.protocol.HTTP;
 import de.tudarmstadt.informatik.hostage.protocol.Protocol;
 import de.tudarmstadt.informatik.hostage.protocol.SMB;
 import de.tudarmstadt.informatik.hostage.protocol.SSLProtocol;
@@ -143,9 +141,12 @@ public class Listener implements Runnable {
 			if (server == null)
 				return false;
 			if (protocol.toString().equals("SMB")) {
-				((SMB) protocol).setIP(Hostage.getContext()
-						.getSharedPreferences(Hostage.getContext().getString(R.string.connection_info), Hostage.MODE_PRIVATE)
-						.getString(Hostage.getContext().getString(R.string.connection_info_internal_ip), ""));
+				((SMB) protocol).setIP(HelperUtils.inetAddressToString(Hostage.getContext()
+						.getSharedPreferences(
+								Hostage.getContext().getString(R.string.connection_info),
+								Hostage.MODE_PRIVATE)
+						.getInt(Hostage.getContext()
+								.getString(R.string.connection_info_internal_ip), 0)));
 			}
 			(this.thread = new Thread(this)).start();
 			running = true;

+ 26 - 1
src/de/tudarmstadt/informatik/hostage/commons/HelperUtils.java

@@ -282,6 +282,9 @@ public final class HelperUtils {
 			if (connectionInfo != null
 					&& !TextUtils.isEmpty(connectionInfo.getSSID())) {
 				ssid = connectionInfo.getSSID();
+				if (ssid.startsWith("\"") && ssid.endsWith("\"")) { // trim those quotes
+					ssid = ssid.substring(1, ssid.length() - 1);
+				}
 			}
 		}
 		return ssid;
@@ -381,11 +384,33 @@ public final class HelperUtils {
 		return (character > 31 && character < 127);
 	}
 
-	private static byte[] unpackInetAddress(int bytes) {
+	public static byte[] unpackInetAddress(int bytes) {
 		return new byte[] { (byte) ((bytes) & 0xff),
 				(byte) ((bytes >>> 8) & 0xff), (byte) ((bytes >>> 16) & 0xff),
 				(byte) ((bytes >>> 24) & 0xff) };
 	}
+
+	public static int packInetAddress(byte[] bytes) {
+		/*
+		FUCK YOU JAVA!!! WHY DON'T YOU HAVE UNSIGNED TYPES???
+		 */
+		long b0 = bytes[0]; if (b0 < 0) b0 = 255 + b0;
+		long b1 = bytes[1]; if (b1 < 0) b1 = 255 + b1;
+		long b2 = bytes[2]; if (b2 < 0) b2 = 255 + b2;
+		long b3 = bytes[3]; if (b3 < 0) b3 = 255 + b3;
+		long packed = b0 | (b1 << 8) | (b2 << 16) | (b3 << 24);
+		if (packed >= (1l << 31)) {
+			packed -= (1l << 32) - 1l;
+		}
+		return (int)packed;
+	}
+
+	public static String inetAddressToString(int address) {
+		return String.valueOf(address & 0xFF) + "."
+			+ String.valueOf((address >>> 8) & 0xFF) + "."
+			+ String.valueOf((address >>> 16) & 0xFF) + "."
+			+ String.valueOf((address >>> 24) & 0xFF);
+	}
 	
 	public static boolean isWifiConnected(Context context){
 		if(context == null) return false;

+ 7 - 1
src/de/tudarmstadt/informatik/hostage/logging/AttackRecord.java

@@ -20,6 +20,7 @@ public class AttackRecord implements Parcelable, Serializable {
 	private String remoteIP;
 	private int remotePort;
 	private String externalIP;
+	private int wasInternalAttack; // 1 if attacker ip and local ip were in same subnet, else 0
 
 	public static final Parcelable.Creator<AttackRecord> CREATOR = new Parcelable.Creator<AttackRecord>() {
 		@Override
@@ -45,6 +46,7 @@ public class AttackRecord implements Parcelable, Serializable {
 		this.remoteIP = source.readString();
 		this.remotePort = source.readInt();
 		this.externalIP = source.readString();
+		this.wasInternalAttack = source.readInt();
 		this.bssid = source.readString();
 	}
 
@@ -62,6 +64,7 @@ public class AttackRecord implements Parcelable, Serializable {
 		dest.writeString(remoteIP);
 		dest.writeInt(remotePort);
 		dest.writeString(externalIP);
+		dest.writeInt(wasInternalAttack);
 		dest.writeString(bssid);
 	}
 
@@ -183,5 +186,8 @@ public class AttackRecord implements Parcelable, Serializable {
 	 */
 	public void setExternalIP(String externalIP) {
 		this.externalIP = externalIP;
-	}	
+	}
+
+	public boolean getWasInternalAttack() {return wasInternalAttack == 1;}
+	public void setWasInternalAttack(boolean b) {wasInternalAttack = b ? 1 : 0;}
 }

+ 8 - 0
src/de/tudarmstadt/informatik/hostage/logging/Record.java

@@ -74,6 +74,10 @@ public class Record {
 		return attack.getRemotePort();
 	}
 
+	public boolean getWasInternalAttack() {
+		return attack.getWasInternalAttack();
+	}
+
 	public String getSsid() {
 		return network.getSsid();
 	}
@@ -144,6 +148,10 @@ public class Record {
 		attack.setRemotePort(remotePort);
 	}
 
+	public void setWasInternalAttack(boolean internalAttack) {
+		attack.setWasInternalAttack(internalAttack);
+	}
+
 	public void setSsid(String ssid) {
 		network.setSsid(ssid);
 	}

+ 1 - 0
src/de/tudarmstadt/informatik/hostage/persistence/HostageDBContract.java

@@ -31,6 +31,7 @@ public final class HostageDBContract {
 		public static final String COLUMN_NAME_REMOTE_IP = "remoteIP";
 		public static final String COLUMN_NAME_REMOTE_PORT = "remotePort";
 		public static final String COLUMN_NAME_BSSID = "_bssid";
+		public static final String COLUMN_NAME_INTERNAL_ATTACK = "internalAttack";
 
 		public static final String KEY_ID = COLUMN_NAME_ATTACK_ID;
 	}

+ 17 - 12
src/de/tudarmstadt/informatik/hostage/persistence/HostageDBOpenHelper.java

@@ -62,6 +62,7 @@ public class HostageDBOpenHelper extends SQLiteOpenHelper {
 		attackSQLBuilder.append(AttackEntry.COLUMN_NAME_LOCAL_PORT).append(" INTEGER,");
 		attackSQLBuilder.append(AttackEntry.COLUMN_NAME_REMOTE_IP).append(" BLOB,");
 		attackSQLBuilder.append(AttackEntry.COLUMN_NAME_REMOTE_PORT).append(" INTEGER,");
+		attackSQLBuilder.append(AttackEntry.COLUMN_NAME_INTERNAL_ATTACK).append(" INTEGER,");
 		attackSQLBuilder.append(AttackEntry.COLUMN_NAME_BSSID).append(" TEXT,");
 		attackSQLBuilder.append(String.format("FOREIGN KEY(%s) REFERENCES %s(%s)", AttackEntry.COLUMN_NAME_BSSID, NetworkEntry.TABLE_NAME,
 				NetworkEntry.COLUMN_NAME_BSSID));
@@ -110,20 +111,20 @@ public class HostageDBOpenHelper extends SQLiteOpenHelper {
 		profilSQLBuilder.append(ProfileEntry.COLUMN_NAME_PROFILE_EDITABLE).append(" INTEGER,");
 		profilSQLBuilder.append(ProfileEntry.COLUMN_NAME_PROFILE_ACTIVE).append(" INTEGER");
 		profilSQLBuilder.append(")");
-		SQL_CREATE_PROFIL_ENTRIES = profilSQLBuilder.toString();
+		SQL_CREATE_PROFILE_ENTRIES = profilSQLBuilder.toString();
 	}
 
 	private static final String SQL_CREATE_NETWORK_ENTRIES;
 	private static final String SQL_CREATE_ATTACK_ENTRIES;
 	private static final String SQL_CREATE_PACKET_ENTRIES;
-	private static final String SQL_CREATE_PROFIL_ENTRIES;
+	private static final String SQL_CREATE_PROFILE_ENTRIES;
 	private static final String SQL_CREATE_SYNC_DEVICES_ENTRIES;
 	private static final String SQL_CREATE_SYNC_INFO_ENTRIES;
 
 	private static final String SQL_DELETE_PACKET_ENTRIES = "DROP TABLE IF EXISTS " + PacketEntry.TABLE_NAME;
 	private static final String SQL_DELETE_ATTACK_ENTRIES = "DROP TABLE IF EXISTS " + AttackEntry.TABLE_NAME;
 	private static final String SQL_DELETE_NETWORK_ENTRIES = "DROP TABLE IF EXISTS " + NetworkEntry.TABLE_NAME;
-	private static final String SQL_DELETE_PROFIL_ENTRIES = "DROP TABLE IF EXISTS " + ProfileEntry.TABLE_NAME;
+	private static final String SQL_DELETE_PROFILE_ENTRIES = "DROP TABLE IF EXISTS " + ProfileEntry.TABLE_NAME;
 	private static final String SQL_DELETE_SYNC_DEVICES_ENTRIES = "DROP TABLE IF EXISTS " + SyncDeviceEntry.TABLE_NAME;
 	private static final String SQL_DELETE_SYNC_INFO_ENTRIES = "DROP TABLE IF EXISTS " + SyncInfoEntry.TABLE_NAME;
 
@@ -137,7 +138,7 @@ public class HostageDBOpenHelper extends SQLiteOpenHelper {
 		db.execSQL(SQL_CREATE_NETWORK_ENTRIES);
 		db.execSQL(SQL_CREATE_ATTACK_ENTRIES);
 		db.execSQL(SQL_CREATE_PACKET_ENTRIES);
-		db.execSQL(SQL_CREATE_PROFIL_ENTRIES);
+		db.execSQL(SQL_CREATE_PROFILE_ENTRIES);
 		db.execSQL(SQL_CREATE_SYNC_DEVICES_ENTRIES);
 		db.execSQL(SQL_CREATE_SYNC_INFO_ENTRIES);
 	}
@@ -147,7 +148,7 @@ public class HostageDBOpenHelper extends SQLiteOpenHelper {
 		db.execSQL(SQL_DELETE_SYNC_INFO_ENTRIES);
 		db.execSQL(SQL_DELETE_PACKET_ENTRIES);
 		db.execSQL(SQL_DELETE_ATTACK_ENTRIES);
-		db.execSQL(SQL_DELETE_PROFIL_ENTRIES);
+		db.execSQL(SQL_DELETE_PROFILE_ENTRIES);
 		db.execSQL(SQL_DELETE_NETWORK_ENTRIES);
 		db.execSQL(SQL_DELETE_SYNC_DEVICES_ENTRIES);
 		onCreate(db);
@@ -193,6 +194,7 @@ public class HostageDBOpenHelper extends SQLiteOpenHelper {
 		attackValues.put(AttackEntry.COLUMN_NAME_REMOTE_IP, record.getRemoteIP()); // Log Remote IP
 		attackValues.put(AttackEntry.COLUMN_NAME_REMOTE_PORT, record.getRemotePort()); // Log Remote Port
 		attackValues.put(AttackEntry.COLUMN_NAME_BSSID, record.getBssid());
+		attackValues.put(AttackEntry.COLUMN_NAME_INTERNAL_ATTACK, record.getWasInternalAttack());
 		
 
 		// Inserting Rows
@@ -907,7 +909,8 @@ public class HostageDBOpenHelper extends SQLiteOpenHelper {
 		record.setLocalPort(Integer.parseInt(cursor.getString(4)));
 		record.setRemoteIP(cursor.getString(5));
 		record.setRemotePort(Integer.parseInt(cursor.getString(6)));
-		record.setBssid(cursor.getString(7));
+		record.setWasInternalAttack(cursor.getInt(7) == 1);
+		record.setBssid(cursor.getString(8));
 
 		return record;
 	}
@@ -935,12 +938,14 @@ public class HostageDBOpenHelper extends SQLiteOpenHelper {
 		record.setRemoteIP(cursor.getString(9));
 		record.setRemotePort(Integer.parseInt(cursor.getString(10)));
 
-		record.setBssid(cursor.getString(11));
-		record.setSsid(cursor.getString(12));
-		record.setLatitude(Double.parseDouble(cursor.getString(13)));
-		record.setLongitude(Double.parseDouble(cursor.getString(14)));
-		record.setAccuracy(Float.parseFloat(cursor.getString(15)));
-		record.setTimestampLocation(cursor.getLong(16));
+		record.setWasInternalAttack(Integer.parseInt(cursor.getString(11)) == 1);
+
+		record.setBssid(cursor.getString(12));
+		record.setSsid(cursor.getString(13));
+		record.setLatitude(Double.parseDouble(cursor.getString(14)));
+		record.setLongitude(Double.parseDouble(cursor.getString(15)));
+		record.setAccuracy(Float.parseFloat(cursor.getString(16)));
+		record.setTimestampLocation(cursor.getLong(17));
 
 		return record;
 	}

+ 8 - 2
src/de/tudarmstadt/informatik/hostage/ui/fragment/ConnectionInfoDialogFragment.java

@@ -16,6 +16,7 @@ import android.widget.TextView;
 import java.util.ArrayList;
 
 import de.tudarmstadt.informatik.hostage.R;
+import de.tudarmstadt.informatik.hostage.commons.HelperUtils;
 import de.tudarmstadt.informatik.hostage.ui.model.LogFilter;
 import de.tudarmstadt.informatik.hostage.ui.activity.MainActivity;
 
@@ -29,6 +30,7 @@ public class ConnectionInfoDialogFragment extends DialogFragment {
 		String ssid = "undefined";
 		String bssid = "undefined";
 		String internalIP = "undefined";
+		String subnetMask = "undefined";
 		String externalIP = "undefined";
 
 		// get infos about the current connection using SharedPreferences
@@ -37,8 +39,11 @@ public class ConnectionInfoDialogFragment extends DialogFragment {
 			SharedPreferences sharedPreferences = activity.getSharedPreferences(getString(R.string.connection_info), Context.MODE_PRIVATE);
 			ssid = sharedPreferences.getString(getString(R.string.connection_info_ssid), "");
 			bssid = sharedPreferences.getString(getString(R.string.connection_info_bssid), "");
-			internalIP = sharedPreferences.getString(getString(R.string.connection_info_internal_ip), "");
-			externalIP = sharedPreferences.getString(getString(R.string.connection_info_external_ip), "");
+			internalIP = HelperUtils.inetAddressToString(
+					sharedPreferences.getInt(getString(R.string.connection_info_internal_ip), 0));
+			subnetMask = HelperUtils.inetAddressToString(sharedPreferences.getInt(getString(R.string.connection_info_subnet_mask), 0));
+			externalIP = sharedPreferences.getString(
+					getString(R.string.connection_info_external_ip), "");
 		}
 
 		// inflate the layout with a dark theme
@@ -51,6 +56,7 @@ public class ConnectionInfoDialogFragment extends DialogFragment {
 			((TextView)view.findViewById(R.id.connectioninfo_ssid_value)).setText(ssid);
 			((TextView)view.findViewById(R.id.connectioninfo_bssid_value)).setText(bssid);
 			((TextView)view.findViewById(R.id.connectioninfo_internalip_value)).setText(internalIP);
+			((TextView)view.findViewById(R.id.connectioninfo_subnetmask_value)).setText(subnetMask);
 			((TextView)view.findViewById(R.id.connectioninfo_externalip_value)).setText(externalIP);
 		}
 

+ 2 - 2
src/de/tudarmstadt/informatik/hostage/ui/fragment/HomeFragment.java

@@ -174,8 +174,8 @@ public class HomeFragment extends Fragment {
 
 		if (HelperUtils.isNetworkAvailable(getActivity())) {
 			setStateConnected();
-			String ssid = mConnectionInfo.getString(getString(R.string.connection_info_ssid), "\"\"");
-			mHomeTextName.setText(ssid.substring(1,ssid.length() - 1));
+			String ssid = mConnectionInfo.getString(getString(R.string.connection_info_ssid), "");
+			mHomeTextName.setText(ssid);
 		} else {
 			setStateNotConnected();
 		}

+ 3 - 0
src/de/tudarmstadt/informatik/hostage/ui/fragment/RecordDetailFragment.java

@@ -54,6 +54,7 @@ public class RecordDetailFragment extends UpNavigatibleFragment {
 	 */
 	private View mRootView;
 	private LinearLayout mRecordOverviewConversation;
+	private TextView mRecordDetailsTextAttackType;
 	private TextView mRecordDetailsTextSsid;
 	private TextView mRecordDetailsTextBssid;
 	private TextView mRecordDetailsTextRemoteip;
@@ -128,6 +129,7 @@ public class RecordDetailFragment extends UpNavigatibleFragment {
 	 */
 	private void assignViews(View view) {
 		mRecordOverviewConversation = (LinearLayout) view.findViewById(R.id.record_overview_conversation);
+		mRecordDetailsTextAttackType = (TextView) view.findViewById(R.id.record_details_text_attack_type);
 		mRecordDetailsTextSsid = (TextView) view.findViewById(R.id.record_details_text_ssid);
 		mRecordDetailsTextBssid = (TextView) view.findViewById(R.id.record_details_text_bssid);
 		mRecordDetailsTextRemoteip = (TextView) view.findViewById(R.id.record_details_text_remoteip);
@@ -143,6 +145,7 @@ public class RecordDetailFragment extends UpNavigatibleFragment {
 	 */
 	private void configurateRootView(View rootView) {
 
+		mRecordDetailsTextAttackType.setText(mRecord.getWasInternalAttack() ? R.string.RecordInternalAttack : R.string.RecordExternalAttack);
 		mRecordDetailsTextBssid.setText(mRecord.getBssid());
 		mRecordDetailsTextSsid.setText(mRecord.getSsid());
 		if (mRecord.getRemoteIP() != null)