at 24.05-pre 174 lines 13 kB view raw
1diff --git a/NetworkMiner/NetworkMinerForm.cs b/NetworkMiner/NetworkMinerForm.cs 2index 06c808b..6495b73 100644 3--- a/NetworkMiner/NetworkMinerForm.cs 4+++ b/NetworkMiner/NetworkMinerForm.cs 5@@ -1,4 +1,4 @@ 6-// Copyright: Erik Hjelmvik, NETRESEC 7+// Copyright: Erik Hjelmvik, NETRESEC 8 // 9 // NetworkMiner is free software; you can redistribute it and/or modify it 10 // under the terms of the GNU General Public License 11@@ -419,7 +419,7 @@ namespace NetworkMiner { 12 } 13 try { 14 //require FileIOPermission to be PermissionState.Unrestricted 15- string path = System.IO.Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath) + System.IO.Path.DirectorySeparatorChar + PacketParser.FileTransfer.FileStreamAssembler.ASSMEBLED_FILES_DIRECTORY; 16+ string path = System.IO.Path.GetDirectoryName(SharedUtils.XdgDirectories.GetOrCreateXdgDataHome()) + System.IO.Path.DirectorySeparatorChar + PacketParser.FileTransfer.FileStreamAssembler.ASSMEBLED_FILES_DIRECTORY; 17 System.Security.Permissions.FileIOPermission fileIOPerm = new System.Security.Permissions.FileIOPermission(System.Security.Permissions.FileIOPermissionAccess.AllAccess, path); 18 fileIOPerm.Demand(); 19 } 20@@ -1023,13 +1023,13 @@ namespace NetworkMiner { 21 public void CreateNewPacketHandlerWrapper(System.IO.DirectoryInfo outputDirectory) { 22 //make sure that folders exists 23 try { 24- System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(outputDirectory.FullName + System.IO.Path.DirectorySeparatorChar + PacketParser.FileTransfer.FileStreamAssembler.ASSMEBLED_FILES_DIRECTORY); 25+ System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(SharedUtils.XdgDirectories.GetOrCreateXdgDataHome() + System.IO.Path.DirectorySeparatorChar + PacketParser.FileTransfer.FileStreamAssembler.ASSMEBLED_FILES_DIRECTORY); 26 if (!di.Exists) 27 di.Create(); 28- di = new System.IO.DirectoryInfo(outputDirectory.FullName + System.IO.Path.DirectorySeparatorChar + PacketParser.FileTransfer.FileStreamAssembler.ASSMEBLED_FILES_DIRECTORY + System.IO.Path.DirectorySeparatorChar + "cache"); 29+ di = new System.IO.DirectoryInfo(SharedUtils.XdgDirectories.GetOrCreateXdgDataHome() + System.IO.Path.DirectorySeparatorChar + PacketParser.FileTransfer.FileStreamAssembler.ASSMEBLED_FILES_DIRECTORY + System.IO.Path.DirectorySeparatorChar + "cache"); 30 if (!di.Exists) 31 di.Create(); 32- di = new System.IO.DirectoryInfo(outputDirectory.FullName + System.IO.Path.DirectorySeparatorChar + "Captures"); 33+ di = new System.IO.DirectoryInfo(SharedUtils.XdgDirectories.GetOrCreateXdgDataHome() + System.IO.Path.DirectorySeparatorChar + "Captures"); 34 if (!di.Exists) 35 di.Create(); 36 } 37@@ -1962,7 +1962,7 @@ namespace NetworkMiner { 38 string filename = Tools.GenerateCaptureFileName(DateTime.Now); 39 //string filename="NM_"+DateTime.Now.ToString("s", System.Globalization.DateTimeFormatInfo.InvariantInfo).Replace(':','-')+".pcap"; 40 41- string fileFullPath = this.OutputDirectory.FullName + "Captures" + System.IO.Path.DirectorySeparatorChar + filename; 42+ string fileFullPath = SharedUtils.XdgDirectories.GetOrCreateXdgDataHome() + System.IO.Path.DirectorySeparatorChar + "Captures" + System.IO.Path.DirectorySeparatorChar + filename; 43 //string fileFullPath = System.IO.Path.GetDirectoryName(System.IO.Path.GetFullPath(System.Windows.Forms.Application.ExecutablePath)) + System.IO.Path.DirectorySeparatorChar + "Captures" + System.IO.Path.DirectorySeparatorChar + filename; 44 45 //make sure to get the right datalink type 46@@ -2534,7 +2534,7 @@ namespace NetworkMiner { 47 48 if (removeCapturedFiles) { 49 PacketParser.FileTransfer.FileStreamAssemblerList.RemoveTempFiles(); 50- string capturesDirectory = System.IO.Path.GetDirectoryName(System.IO.Path.GetFullPath(System.Windows.Forms.Application.ExecutablePath)) + System.IO.Path.DirectorySeparatorChar + "Captures"; 51+ string capturesDirectory = System.IO.Path.GetDirectoryName(System.IO.Path.GetFullPath(SharedUtils.XdgDirectories.GetOrCreateXdgDataHome())) + System.IO.Path.DirectorySeparatorChar + "Captures"; 52 if (System.IO.Directory.Exists(capturesDirectory)) { 53 foreach (string pcapFile in System.IO.Directory.GetFiles(capturesDirectory)) 54 try { 55@@ -2545,7 +2545,7 @@ namespace NetworkMiner { 56 //this.ShowAnomaly("Error deleting file \"" + pcapFile + "\"", DateTime.Now); 57 } 58 } 59- capturesDirectory = this.packetHandlerWrapper.PacketHandler.OutputDirectory + "Captures"; 60+ capturesDirectory = SharedUtils.XdgDirectories.GetOrCreateXdgDataHome() + System.IO.Path.DirectorySeparatorChar + "Captures"; 61 if (System.IO.Directory.Exists(capturesDirectory)) { 62 foreach (string pcapFile in System.IO.Directory.GetFiles(capturesDirectory)) 63 try { 64@@ -2635,7 +2635,7 @@ namespace NetworkMiner { 65 try { 66 PacketParser.Utils.ByteConverter.ToByteArrayFromHexString(keyword);//to force valid hex 67 this.keywordListBox.Items.Add(keyword); 68- //L�gg till keywordet till PacketHandler.PacketHandler!!! 69+ //L�gg till keywordet till PacketHandler.PacketHandler!!! 70 } 71 catch (Exception ex) { 72 errorMessage = ex.Message; 73@@ -2720,7 +2720,7 @@ namespace NetworkMiner { 74 #endregion 75 76 private void hostSortOrderComboBox_SelectedIndexChanged(object sender, EventArgs e) { 77- //H�R SKA detailsHeader LIGGA Enabled MASSA OLIKA SORTERINGSORDNINGAR: 78+ //H�R SKA detailsHeader LIGGA Enabled MASSA OLIKA SORTERINGSORDNINGAR: 79 //IP, HOTSNAME, SENT PACKETS, RECEIVED PACKETS, MAC ADDRESS 80 this.RebuildHostsTree(sender, e); 81 } 82@@ -2754,7 +2754,7 @@ namespace NetworkMiner { 83 foreach (string p in paths) { 84 if (!p.Contains(PacketParser.FileTransfer.FileStreamAssembler.ASSMEBLED_FILES_DIRECTORY)) 85 return false; 86- if (!this.IsSubDirectoryOf(new System.IO.DirectoryInfo(p), new System.IO.DirectoryInfo(this.packetHandlerWrapper.PacketHandler.OutputDirectory + PacketParser.FileTransfer.FileStreamAssembler.ASSMEBLED_FILES_DIRECTORY))) 87+ if (!this.IsSubDirectoryOf(new System.IO.DirectoryInfo(p), new System.IO.DirectoryInfo(SharedUtils.XdgDirectories.GetOrCreateXdgDataHome() + System.IO.Path.DirectorySeparatorChar + PacketParser.FileTransfer.FileStreamAssembler.ASSMEBLED_FILES_DIRECTORY))) 88 return false; 89 } 90 return true; 91@@ -3976,7 +3976,7 @@ finally { 92 } 93 94 private void closeToolStripMenuItem_Click(object sender, EventArgs e) { 95- DialogResult yesOrNo = MessageBox.Show("Would you like to delete all extracted files from:" + Environment.NewLine + this.OutputDirectory.FullName + PacketParser.FileTransfer.FileStreamAssembler.ASSMEBLED_FILES_DIRECTORY + System.IO.Path.DirectorySeparatorChar, "Delete extracted files?", MessageBoxButtons.YesNo); 96+ DialogResult yesOrNo = MessageBox.Show("Would you like to delete all extracted files from:" + Environment.NewLine + SharedUtils.XdgDirectories.GetOrCreateXdgDataHome() + System.IO.Path.DirectorySeparatorChar + PacketParser.FileTransfer.FileStreamAssembler.ASSMEBLED_FILES_DIRECTORY + System.IO.Path.DirectorySeparatorChar, "Delete extracted files?", MessageBoxButtons.YesNo); 97 this.ResetCapturedData(false, yesOrNo == DialogResult.Yes, true); 98 } 99 100diff --git a/NetworkMiner/PcapOverIP/ReceivePcapOverTcpForm.cs b/NetworkMiner/PcapOverIP/ReceivePcapOverTcpForm.cs 101index 9bae5f0..72586d4 100644 102--- a/NetworkMiner/PcapOverIP/ReceivePcapOverTcpForm.cs 103+++ b/NetworkMiner/PcapOverIP/ReceivePcapOverTcpForm.cs 104@@ -162,7 +162,7 @@ namespace NetworkMiner.PcapOverIP { 105 DateTime lastFrameTimestamp = DateTime.MinValue; 106 107 string filename = Tools.GenerateCaptureFileName(DateTime.Now); 108- string fileFullPath = this.packetHandler.OutputDirectory + "Captures" + System.IO.Path.DirectorySeparatorChar + filename; 109+ string fileFullPath = SharedUtils.XdgDirectories.GetOrCreateXdgDataHome() + System.IO.Path.DirectorySeparatorChar + "Captures" + System.IO.Path.DirectorySeparatorChar + filename; 110 //string fileFullPath = System.IO.Path.GetDirectoryName(System.IO.Path.GetFullPath(System.Windows.Forms.Application.ExecutablePath)) + System.IO.Path.DirectorySeparatorChar + "Captures" + System.IO.Path.DirectorySeparatorChar + filename; 111 112 PcapFileWriter pcapFileWriter = new PcapFileWriter(fileFullPath, this.pcapStreamReader.FileDataLinkType[0]); 113diff --git a/PacketParser/FileTransfer/FileStreamAssemblerList.cs b/PacketParser/FileTransfer/FileStreamAssemblerList.cs 114index 4a6a4dd..129d48b 100644 115--- a/PacketParser/FileTransfer/FileStreamAssemblerList.cs 116+++ b/PacketParser/FileTransfer/FileStreamAssemblerList.cs 117@@ -191,7 +191,7 @@ namespace PacketParser.FileTransfer { 118 if (removeExtractedFilesFromDisk) { 119 //remove all files 120 foreach (string subDirectory in System.IO.Directory.GetDirectories(this.FileOutputDirectory)) { 121- if (subDirectory == this.FileOutputDirectory + System.IO.Path.DirectorySeparatorChar + "cache") { 122+ if (subDirectory == SharedUtils.XdgDirectories.GetOrCreateXdgDataHome() + System.IO.Path.DirectorySeparatorChar + "cache") { 123 foreach (string cacheFile in System.IO.Directory.GetFiles(subDirectory)) 124 try { 125 System.IO.File.Delete(cacheFile); 126diff --git a/PacketParser/PacketHandler.cs b/PacketParser/PacketHandler.cs 127index a600200..cb78071 100644 128--- a/PacketParser/PacketHandler.cs 129+++ b/PacketParser/PacketHandler.cs 130@@ -1,4 +1,4 @@ 131-// Copyright: Erik Hjelmvik, NETRESEC 132+// Copyright: Erik Hjelmvik, NETRESEC 133 // 134 // NetworkMiner is free software; you can redistribute it and/or modify it 135 // under the terms of the GNU General Public License 136@@ -228,7 +228,7 @@ namespace PacketParser { 137 //this.networkTcpSessionDictionary=new Dictionary<int, NetworkTcpSession>(); 138 this.networkTcpSessionList=new PopularityList<int, NetworkTcpSession>(200); 139 this.networkTcpSessionList.PopularityLost+=new PopularityList<int, NetworkTcpSession>.PopularityLostEventHandler(networkTcpSessionList_PopularityLost); 140- this.FileStreamAssemblerList = new FileTransfer.FileStreamAssemblerList(this, 100, this.OutputDirectory + PacketParser.FileTransfer.FileStreamAssembler.ASSMEBLED_FILES_DIRECTORY + System.IO.Path.DirectorySeparatorChar); 141+ this.FileStreamAssemblerList = new FileTransfer.FileStreamAssemblerList(this, 100, SharedUtils.XdgDirectories.GetOrCreateXdgDataHome() + System.IO.Path.DirectorySeparatorChar + PacketParser.FileTransfer.FileStreamAssembler.ASSMEBLED_FILES_DIRECTORY + System.IO.Path.DirectorySeparatorChar); 142 this.FileStreamAssemblerList.PopularityLost += this.FileStreamAssemblerList_PopularityLost; 143 this.ReconstructedFileList=new List<FileTransfer.ReconstructedFile>(); 144 this.credentialList=new SortedList<string, NetworkCredential>(); 145@@ -874,7 +874,7 @@ namespace PacketParser { 146 147 //check the frame content for keywords 148 foreach (byte[] keyword in this.keywordList) { 149- //jAG SLUTADE H�R. FUNKAR EJ VID RELOAD 150+ //jAG SLUTADE H�R. FUNKAR EJ VID RELOAD 151 int keyIndex = receivedFrame.IndexOf(keyword); 152 if (keyIndex >= 0) { 153 if (networkPacket != null) 154diff --git a/SharedUtils/XdgDirectories.cs b/SharedUtils/XdgDirectories.cs 155new file mode 100644 156index 0000000..80c09e3 157--- /dev/null 158+++ b/SharedUtils/XdgDirectories.cs 159@@ -0,0 +1,15 @@ 160+using System; 161+using System.IO; 162+ 163+namespace SharedUtils { 164+ public class XdgDirectories { 165+ public static string GetOrCreateXdgDataHome() { 166+ string home = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile); 167+ string data = Environment.GetEnvironmentVariable("XDG_DATA_HOME") ?? home + System.IO.Path.DirectorySeparatorChar + ".local" + System.IO.Path.DirectorySeparatorChar + "share"; 168+ string dir = data + System.IO.Path.DirectorySeparatorChar + "NetworkMiner"; 169+ // Directory.CreateDirectory(dir); 170+ return dir; 171+ } 172+ 173+ } 174+}