Browse Source

- NFC implemented (NFCSync Activity) but not integrated
- Added flags for root acces and porthack, set on startup

lp-tu 10 years ago
parent
commit
d93638303b

+ 5 - 0
AndroidManifest.xml

@@ -57,6 +57,11 @@
        	<activity
             android:name="de.tudarmstadt.informatik.hostage.ui.PlayGroundActivity"
             android:label="@string/playground" >
+        </activity>
+       	
+       <activity
+            android:name="de.tudarmstadt.informatik.hostage.sync.NFCSync"
+            android:label="@string/playground" >
             <intent-filter>
   				<action android:name="android.nfc.action.NDEF_DISCOVERED" />
   				<category android:name="android.intent.category.DEFAULT" />

+ 3 - 0
src/de/tudarmstadt/informatik/hostage/HoneyListener.java

@@ -12,6 +12,7 @@ import javax.net.ssl.SSLSocketFactory;
 import android.content.Context;
 import android.content.SharedPreferences;
 import android.content.SharedPreferences.Editor;
+import android.util.Log;
 import de.tudarmstadt.informatik.hostage.net.MyServerSocketFactory;
 import de.tudarmstadt.informatik.hostage.protocol.Protocol;
 import de.tudarmstadt.informatik.hostage.protocol.SSLProtocol;
@@ -98,6 +99,7 @@ public class HoneyListener implements Runnable {
 			server = new MyServerSocketFactory().createServerSocket(protocol
 					.getPort());
 			(this.thread = new Thread(this)).start();
+			Log.i("BugSearch", "Open ServerSocket - ServerSocket is: " + ((server == null) ? "null" : "not null"));
 			editor.putBoolean(protocol + MainActivity.LISTENER, true);
 			editor.commit();
 			service.notifyUI(protocol.toString(), MainActivity.LISTENER);
@@ -113,6 +115,7 @@ public class HoneyListener implements Runnable {
 	 */
 	public void stop() {
 		try {
+			Log.i("BugSearch", "Closing ServerSocket - ServerSocket is: " + ((server == null) ? "null" : "not null"));
 			server.close();
 			thread.interrupt();
 			editor.putBoolean(protocol + MainActivity.LISTENER, false);

+ 0 - 1
src/de/tudarmstadt/informatik/hostage/logging/DatabaseHandler.java

@@ -571,7 +571,6 @@ public class DatabaseHandler extends SQLiteOpenHelper {
     public void updateNetworkInformation(HashMap<String, Object> networkInformation){ 
         SQLiteDatabase db = this.getReadableDatabase();
 		String bssid = (String) networkInformation.get(KEY_BSSID);
-		Log.i("DatabaseHandler", "F�ge " + bssid + " hinzu");
 		String bssidQuery = "SELECT  * FROM " + TABLE_BSSIDS + " WHERE "  + KEY_BSSID + " = " + "'" + bssid + "'";
         Cursor cursor = db.rawQuery(bssidQuery, null);
         int result = cursor.getCount();

+ 4 - 0
src/de/tudarmstadt/informatik/hostage/net/MyServerSocketFactory.java

@@ -9,6 +9,8 @@ import java.net.SocketImpl;
 
 import javax.net.ServerSocketFactory;
 
+import android.util.Log;
+
 import de.tudarmstadt.informatik.hostage.system.PrivilegedPort;
 
 /**
@@ -26,8 +28,10 @@ public class MyServerSocketFactory extends ServerSocketFactory {
 		FileDescriptor fd = new PrivilegedPort(port).bindAndGetFD();
 
 		ServerSocket socket = new ServerSocket();
+		Log.i("BugSearch", "Creating ServerSocket - ServerSocket is: " + ((socket == null) ? "null" : "not null"));
 		try {
 			SocketImpl impl = getImpl(socket);
+			Log.i("BugSearch", "Creating SocketImpl - SocketImpl is: " + ((impl == null) ? "null" : "not null"));
 			injectFD(fd, impl);
 			injectImpl(impl, socket);
 			setBound(socket);

+ 3 - 5
src/de/tudarmstadt/informatik/hostage/sync/BluetoothSync.java

@@ -236,16 +236,14 @@ public class BluetoothSync{
 	            	DatabaseHandler dbh = new DatabaseHandler(context);
             		ArrayList<HashMap<String, Object>> localNetworkInformation = dbh.getNetworkInformation();
 	            	if(identifier == SERVER){
-		                // Read from the InputStream
-		            	Object object = objectInput.readObject();
-		            	ArrayList<HashMap<String, Object>> remoteNetworkInformation = (ArrayList<HashMap<String, Object>>) object;
+		                // Read from the InputStream 
+		            	ArrayList<HashMap<String, Object>> remoteNetworkInformation = (ArrayList<HashMap<String, Object>>) objectInput.readObject();;
 		            	dbh.updateNetworkInformation(remoteNetworkInformation);
 		            	objectOuput.writeObject(localNetworkInformation); 		            	
 	            	}else{
 	    	        	objectOuput.writeObject(localNetworkInformation); 
 		                // Read from the InputStream
-		            	Object object = objectInput.readObject();
-		            	ArrayList<HashMap<String, Object>> remoteNetworkInformation = (ArrayList<HashMap<String, Object>>) object;
+		            	ArrayList<HashMap<String, Object>> remoteNetworkInformation = (ArrayList<HashMap<String, Object>>) objectInput.readObject();
 		            	dbh.updateNetworkInformation(remoteNetworkInformation);
 		            	mmSocket.close();
 	            	}

+ 4 - 1
src/de/tudarmstadt/informatik/hostage/sync/NFCSync.java

@@ -30,6 +30,7 @@ import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
 import android.os.Parcelable;
+import android.util.Log;
 import android.widget.TextView;
 import android.widget.Toast;
 
@@ -79,7 +80,7 @@ public class NFCSync extends Activity implements CreateNdefMessageCallback,
     	// Get Networkdata
     	DatabaseHandler dbh = new DatabaseHandler(this);
 		ArrayList<HashMap<String, Object>> localNetworkInformation = dbh.getNetworkInformation();
-
+		Log.i("NFC", "Creating Message");
         NdefMessage msg = null;
 		try {
 			msg = new NdefMessage(NdefRecord.createMime(
@@ -118,6 +119,7 @@ public class NFCSync extends Activity implements CreateNdefMessageCallback,
             switch (msg.what) {
             case MESSAGE_SENT:
                 Toast.makeText(getApplicationContext(), "Message sent!", Toast.LENGTH_LONG).show();
+                Log.i("NFC", "Message sent!");
                 break;
             }
         }
@@ -148,6 +150,7 @@ public class NFCSync extends Activity implements CreateNdefMessageCallback,
         NdefMessage msg = (NdefMessage) rawMsgs[0];
         // record 0 contains the MIME type, record 1 is the AAR, if present
     	Object object;
+    	Log.i("NFC", "Getting Message!");
 		try {
 			object = deserialize(msg.getRecords()[0].getPayload());
 	    	ArrayList<HashMap<String, Object>> remoteNetworkInformation = (ArrayList<HashMap<String, Object>>) object;

+ 49 - 0
src/de/tudarmstadt/informatik/hostage/ui/MainActivity.java

@@ -1,5 +1,9 @@
 package de.tudarmstadt.informatik.hostage.ui;
 
+import java.io.BufferedReader;
+import java.io.DataInputStream;
+import java.io.File;
+import java.io.InputStreamReader;
 import java.util.ArrayList;
 import java.util.HashMap;
 
@@ -27,6 +31,7 @@ import android.os.AsyncTask;
 import android.os.Bundle;
 import android.os.IBinder;
 import android.support.v4.content.LocalBroadcastManager;
+import android.util.Log;
 import android.view.GestureDetector;
 import android.view.GestureDetector.SimpleOnGestureListener;
 import android.view.Menu;
@@ -42,6 +47,7 @@ import android.widget.CheckBox;
 import android.widget.ImageView;
 import android.widget.ListView;
 import android.widget.TextView;
+import android.widget.Toast;
 import android.widget.ToggleButton;
 import android.widget.ViewAnimator;
 import de.tudarmstadt.informatik.hostage.HoneyService;
@@ -78,6 +84,15 @@ public class MainActivity extends Activity {
 	public static final String BSSID = "BSSID";
 	public static final String INTERNAL_IP = "INTERNAL_IP";
 	public static final String EXTERNAL_IP = "EXTERNAL_IP";
+	
+	/**
+	 * Flag for root acces. True if phone has root acces, else false.
+	 */
+	public static boolean isRooted = false;
+	/**
+	 * Flag for porthack. True if porthack is installed, else false.
+	 */
+	public static boolean porthackInstalled = false;
 
 	/**
 	 * Integer representing a grey light.
@@ -132,6 +147,7 @@ public class MainActivity extends Activity {
 		sessionPref = getSharedPreferences(MainActivity.SESSION_DATA, Context.MODE_PRIVATE);
 		logger = new SQLLogger(this);
 		sessionEditor = sessionPref.edit();
+		checkRootAndPorthack();
 	}
 
 	@Override
@@ -295,6 +311,39 @@ public class MainActivity extends Activity {
 
 	};
 	
+	/**
+	 * Checks if the phone ist rooted and if porthack is installed. Sets flags {@link isRooted} and {@link porthackInstalled}
+	 */
+	private void checkRootAndPorthack(){
+		isRooted = false;
+		porthackInstalled = false;
+		Process p;
+		try {
+			String found = "Found";
+			String notFound = "Not found";
+			String command = "[ -f /data/local/p ] && echo " + found + " || echo " + notFound;
+			p = Runtime.getRuntime().exec(new String[] { "su", "-c", command });
+			BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));			
+ /*           int av = 
+            byte[] b = new byte[av];
+            if (av != 0) {                
+                in.read(b);
+            }
+   */         
+            String echoResponse = in.readLine();
+            Log.i("MainAc", echoResponse);
+            if(echoResponse.equals(found)){
+            	isRooted = true;
+            	porthackInstalled = true;
+            } else if(echoResponse.equals(notFound)){
+            	isRooted = true;
+            }
+		} catch (Exception e) {
+			e.printStackTrace();
+		}	    
+		Log.i("MainAc", "Rooted: " + isRooted + " Porthack: " + porthackInstalled);
+	}
+	
 	/**
 	 * Returns an intent to start HoneyService.
 	 * @return An Intent to start HoneyService

+ 6 - 6
src/de/tudarmstadt/informatik/hostage/ui/PlayGroundActivity.java

@@ -62,12 +62,12 @@ public class PlayGroundActivity extends Activity{
 		ArrayList<HashMap<String, Object>> fakeNetInfo = new ArrayList<HashMap<String, Object>>();
 		for(int i = 0; i < 25; i++){
 			HashMap<String, Object> network = new HashMap<String, Object>();
-			network.put("BSSID", createRandomBSSID());
-			network.put("SSID", new BigInteger(130, rnd).toString(32));
-			network.put("LATITUDE", rnd.nextDouble() * 360);
-			network.put("LONGITUDE", rnd.nextDouble() * 360);
-			network.put("ACCURACY", rnd.nextFloat());
-			network.put("TIMESTAMP", System.currentTimeMillis());
+			network.put(DatabaseHandler.KEY_BSSID, createRandomBSSID());
+			network.put(DatabaseHandler.KEY_SSID, new BigInteger(130, rnd).toString(32));
+			network.put(DatabaseHandler.KEY_LATITUDE, rnd.nextDouble() * 360);
+			network.put(DatabaseHandler.KEY_LONGITUDE, rnd.nextDouble() * 360);
+			network.put(DatabaseHandler.KEY_ACCURACY, rnd.nextFloat());
+			network.put(DatabaseHandler.KEY_TIME, System.currentTimeMillis());
 			fakeNetInfo.add(network);
 		}