Browse Source

External ip and indication if the attack was internal is now also being synched with tracing

Alexander Brakowski 9 years ago
parent
commit
ab98e843c1

+ 2 - 2
res/raw/jlan_config.xml

@@ -25,7 +25,7 @@
 
         <authenticator type="local">
             <mode>USER</mode>
-            <NOallowGuest/>
+            <allowGuest/>
             <Debug/>
         </authenticator>
     </SMB>
@@ -41,7 +41,7 @@
         <diskshare name="JLAN" comment="Test share">
             <driver>
                 <class>org.alfresco.jlan.smb.server.disk.JavaFileDiskDriver</class>
-                <LocalPath>.</LocalPath>
+                <LocalPath>/</LocalPath>
             </driver>
         </diskshare>
     </shares>

+ 1 - 0
src/de/tudarmstadt/informatik/hostage/protocol/CIFS.java

@@ -10,6 +10,7 @@ import org.alfresco.jlan.server.SessionListener;
 import org.alfresco.jlan.server.SrvSession;
 import org.alfresco.jlan.server.config.InvalidConfigurationException;
 import org.alfresco.jlan.server.filesys.FileListener;
+import org.alfresco.jlan.server.filesys.FilesystemsConfigSection;
 import org.alfresco.jlan.server.filesys.NetworkFile;
 import org.alfresco.jlan.smb.server.CIFSConfigSection;
 import org.alfresco.jlan.smb.server.SMBServer;

+ 67 - 8
src/de/tudarmstadt/informatik/hostage/protocol/cifs/PseudoCIFSDiskDriver.java

@@ -4,9 +4,13 @@ import org.alfresco.config.ConfigElement;
 import org.alfresco.jlan.server.SrvSession;
 import org.alfresco.jlan.server.core.DeviceContext;
 import org.alfresco.jlan.server.core.DeviceContextException;
+import org.alfresco.jlan.server.filesys.DiskDeviceContext;
 import org.alfresco.jlan.server.filesys.DiskInterface;
+import org.alfresco.jlan.server.filesys.FileAttribute;
+import org.alfresco.jlan.server.filesys.FileExistsException;
 import org.alfresco.jlan.server.filesys.FileInfo;
 import org.alfresco.jlan.server.filesys.FileOpenParams;
+import org.alfresco.jlan.server.filesys.FileSystem;
 import org.alfresco.jlan.server.filesys.NetworkFile;
 import org.alfresco.jlan.server.filesys.SearchContext;
 import org.alfresco.jlan.server.filesys.TreeConnection;
@@ -15,19 +19,61 @@ import java.io.FileNotFoundException;
 import java.io.IOException;
 
 public class PseudoCIFSDiskDriver implements DiskInterface {
+    private static class PseudoNetworkFile extends NetworkFile {
+        public PseudoNetworkFile(String name){
+            super(name);
+            setFileSize(12);
+            setModifyDate(System.currentTimeMillis());
+            setCreationDate(System.currentTimeMillis());
+        }
+
+        @Override
+        public void openFile(boolean createFlag) throws IOException {
+            setClosed(false);
+        }
+
+        @Override
+        public int readFile(byte[] buf, int len, int pos, long fileOff) throws IOException {
+            return 0;
+        }
+
+        @Override
+        public void writeFile(byte[] buf, int len, int pos, long fileOff) throws IOException {
+
+        }
+
+        @Override
+        public long seekFile(long pos, int typ) throws IOException {
+            return 0;
+        }
+
+        @Override
+        public void flushFile() throws IOException {
+
+        }
+
+        @Override
+        public void truncateFile(long siz) throws IOException {
+
+        }
+
+        @Override
+        public void closeFile() throws IOException {
+            setClosed(true);
+        }
+    }
+
     @Override
     public void closeFile(SrvSession srvSession, TreeConnection treeConnection, NetworkFile networkFile) throws IOException {
-
     }
 
     @Override
     public void createDirectory(SrvSession srvSession, TreeConnection treeConnection, FileOpenParams fileOpenParams) throws IOException {
-
     }
 
     @Override
     public NetworkFile createFile(SrvSession srvSession, TreeConnection treeConnection, FileOpenParams fileOpenParams) throws IOException {
-        return null;
+        throw new FileExistsException();
     }
 
     @Override
@@ -52,17 +98,27 @@ public class PseudoCIFSDiskDriver implements DiskInterface {
 
     @Override
     public FileInfo getFileInformation(SrvSession srvSession, TreeConnection treeConnection, String s) throws IOException {
-        return null;
+        FileInfo finfo = new FileInfo(s, 12, FileAttribute.ReadOnly);
+        long fdate = System.currentTimeMillis();
+        finfo.setModifyDateTime(fdate);
+        finfo.setAllocationSize((12 + 512L) & 0xFFFFFFFFFFFFFE00L);
+        finfo.setFileId(s.hashCode());
+
+        finfo.setCreationDateTime(fdate - 1000);
+        finfo.setChangeDateTime(fdate);
+        return finfo;
     }
 
     @Override
     public boolean isReadOnly(SrvSession srvSession, DeviceContext deviceContext) throws IOException {
-        return false;
+        return true;
     }
 
     @Override
     public NetworkFile openFile(SrvSession srvSession, TreeConnection treeConnection, FileOpenParams fileOpenParams) throws IOException {
-        return null;
+        System.out.println(srvSession + " - " + treeConnection + " - " + fileOpenParams);
+        NetworkFile netFile = new PseudoNetworkFile("Test");
+        return netFile;
     }
 
     @Override
@@ -87,7 +143,7 @@ public class PseudoCIFSDiskDriver implements DiskInterface {
 
     @Override
     public SearchContext startSearch(SrvSession srvSession, TreeConnection treeConnection, String s, int i) throws FileNotFoundException {
-        return null;
+        throw new FileNotFoundException();
     }
 
     @Override
@@ -102,7 +158,10 @@ public class PseudoCIFSDiskDriver implements DiskInterface {
 
     @Override
     public DeviceContext createContext(String s, ConfigElement configElement) throws DeviceContextException {
-        return null;
+        DiskDeviceContext ctx = new DiskDeviceContext("/");
+        ctx.setFilesystemAttributes(FileSystem.CasePreservedNames + FileSystem.UnicodeOnDisk);
+        ctx.setAvailable(true);
+        return ctx;
     }
 
     @Override

+ 6 - 4
src/de/tudarmstadt/informatik/hostage/sync/android/SyncUtils.java

@@ -156,7 +156,7 @@ public class SyncUtils {
                     "\"port\":" + record.getRemotePort() +
                 "}," +
                 "\"dst\":{" +
-                    "\"ip\":\"" + record.getExternalIP() /*record.getLocalIP()*/ + "\"," +
+                    "\"ip\":\"" + record.getLocalIP() + "\"," +
                     "\"port\":" + record.getLocalPort() +
                 "}," +
                 "\"type\":" + (protocolsTypeMap.containsKey(record.getProtocol()) ? protocolsTypeMap.get(record.getProtocol()) : 0) + "," +
@@ -166,7 +166,9 @@ public class SyncUtils {
                 "\"bssid\":\"" + record.getBssid() + "\"," +
                 "\"ssid\":\"" + record.getSsid() + "\"," +
                 "\"device\":\"" + record.getDevice() + "\"," +
-                "\"sync_id\":\"" + record.getSync_id() + "\"" +
+                "\"sync_id\":\"" + record.getSync_id() + "\"," +
+                "\"internal_attack\":\"" + record.getWasInternalAttack() + "\"," +
+                "\"external_ip\":\"" + record.getExternalIP() + "\"" +
              "}\n"
             );
         } catch (IOException e) {
@@ -351,8 +353,8 @@ public class SyncUtils {
                     record.setLocalPort(dst.getInt("port"));
                     record.setRemoteIP(src.getString("ip"));
                     record.setRemotePort(src.getInt("port"));
-                    record.setExternalIP("0.0.0.0");
-                    record.setWasInternalAttack(false);
+                    record.setExternalIP(item.has("external_ip") ? item.getString("external_ip") : "0.0.0.0");
+                    record.setWasInternalAttack(item.has("internal_attack") && item.getBoolean("internal_attack"));
 
                     syncRecords.add(record);
                 } catch(Exception e){