Browse Source

fixed the crash while trying to connect to port 445 and tried to debug a bit

Daniel Lazar 9 years ago
parent
commit
3c625856d1

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

@@ -257,6 +257,19 @@ public class Handler implements Runnable {
 		Logger.log(Hostage.getContext(), createMessageRecord(type, packet));
 	}
 
+
+    //just for debugging purpose
+    final protected static char[] hexArray = "0123456789ABCDEF".toCharArray();
+    public static String bytesToHex(byte[] bytes) {
+        char[] hexChars = new char[bytes.length * 2];
+        for ( int j = 0; j < bytes.length; j++ ) {
+            int v = bytes[j] & 0xFF;
+            hexChars[j * 2] = hexArray[v >>> 4];
+            hexChars[j * 2 + 1] = hexArray[v & 0x0F];
+        }
+        return new String(hexChars);
+    }
+
 	/**
 	 * Communicates with a client using the corresponding protocol
 	 * implementation.
@@ -280,6 +293,7 @@ public class Handler implements Runnable {
 			}
 		}
 		while (!thread.isInterrupted() && (inputLine = reader.read()) != null) {
+            System.out.println("inputLine "+bytesToHex(inputLine.getBytes()));
 			outputLine = protocol.processMessage(inputLine);
 			log(TYPE.RECEIVE, inputLine.toString());
 			if (outputLine != null) {

+ 22 - 3
src/de/tudarmstadt/informatik/hostage/protocol/SMB.java

@@ -10,7 +10,9 @@ import android.preference.PreferenceManager;
 import de.tudarmstadt.informatik.hostage.Hostage;
 import de.tudarmstadt.informatik.hostage.R;
 import de.tudarmstadt.informatik.hostage.commons.HelperUtils;
+import de.tudarmstadt.informatik.hostage.protocol.smbutils.NBDSType;
 import de.tudarmstadt.informatik.hostage.protocol.smbutils.NBNS;
+import de.tudarmstadt.informatik.hostage.protocol.smbutils.NBNSType;
 import de.tudarmstadt.informatik.hostage.protocol.smbutils.NMB;
 import de.tudarmstadt.informatik.hostage.protocol.smbutils.SMBPacket;
 import de.tudarmstadt.informatik.hostage.wrapper.Packet;
@@ -129,11 +131,28 @@ public class SMB implements Protocol {
 		return false;
 	}
 
+    //just for debugging purpose
+    final protected static char[] hexArray = "0123456789ABCDEF".toCharArray();
+    public static String bytesToHex(byte[] bytes) {
+        char[] hexChars = new char[bytes.length * 2];
+        for ( int j = 0; j < bytes.length; j++ ) {
+            int v = bytes[j] & 0xFF;
+            hexChars[j * 2] = hexArray[v >>> 4];
+            hexChars[j * 2 + 1] = hexArray[v & 0x0F];
+        }
+        return new String(hexChars);
+    }
+
 	@Override
 	public List<Packet> processMessage(Packet requestPacket) {
-		if (requestPacket != null)
-			lastMessage = requestPacket.getBytes();
-		smbPacket.prepareNextResponse(lastMessage);
+        if (requestPacket != null && requestPacket.getBytes().length != 0){
+            lastMessage = requestPacket.getBytes();
+            System.out.println("request packet " + bytesToHex(lastMessage));
+            smbPacket.prepareNextResponse(lastMessage);
+        }
+        else{
+            smbPacket.prepareNextResponse(NBDSType.LOCAL_MASTER_ANNOUNCEMENT_ALL);
+        }
 		byte smbCommand = smbPacket.getSmbCommand();
 		byte[] response;
 		List<Packet> responsePackets = new ArrayList<Packet>();

+ 1 - 1
src/de/tudarmstadt/informatik/hostage/protocol/smbutils/NMB.java

@@ -295,7 +295,7 @@ public class NMB extends Thread {
 	 */
 	private void checkForAnswers() {
 		try {
-			nbnsSocket.setSoTimeout(1000);
+			nbnsSocket.setSoTimeout(3000);
 			try {
 				while (!masterAnswered) {
 					nbnsSocket.receive(receive);