Sie sind auf Seite 1von 14

using Acrelec.Mockingbird.

HashFileLibrary;

using Newtonsoft.Json;

using System;

using System.Collections.Generic;

using System.Globalization;

using System.IO;

using System.Linq;

using System.Text;

namespace Hashish_tester

class Program

static void Main(string[] args)

bool done = false;

Console.WriteLine("Type root directory to hash or 'exit' to quit");

while (!done)

Console.Write("Path or exit: ");

string commandOrPath = Console.ReadLine();

switch (commandOrPath.ToLower())

case "exit":

case "quit":

done = true;

break;

case "chars":
getAllChars();

break;

case "read":

ReadDirectories();

break;

case "testread":

ReadDirectoriesTest();

break;

case "sort":

SortFiles();

break;

default:

string hash = string.Empty;

var result = HashFolderManager<HashFile>.GetAppHashedFilesList(commandOrPath,


out hash);

LogListOfStrings(HashFolderManager<HashFile>.allFoundFilesUnsorted,
"allFoundFilesUnsorted.txt");

LogListOfStrings(HashFolderManager<HashFile>.allFoundFilesSorted,
"allFoundFilesSorted.txt");

LogList(HashFolderManager<HashFile>.filesSortedAfterFilterAndHash,
"filesSortedAfterFilterAndHash.txt");

Console.WriteLine($"Hash for selected directory: {hash}");

break;

}
}

public static void SortFiles()

//string[] dirs =
Directory.GetFiles("C:\\Users\\Alexandru.Sisu\\Desktop\\Temp\\AcrelecTest\\bin");

//Console.WriteLine("Array:");

//Array.Sort(dirs);

//foreach (var file in dirs)

//{

// Console.WriteLine(file);

//}

List<string> dirsList =
Directory.GetFiles("C:\\Users\\Alexandru.Sisu\\Desktop\\Temp\\AcrelecTest\\bin").ToList();

Console.WriteLine("\nList:");

dirsList = dirsList.OrderBy(p => p).ToList();

foreach (var file in dirsList)

Console.WriteLine(file);

List<string> dirsList1 =
Directory.GetFiles("C:\\Users\\Alexandru.Sisu\\Desktop\\Temp\\AcrelecTest\\bin").ToList();

Console.WriteLine("\nList:");

for (int i = 0; i < dirsList1.Count; i++)

dirsList1[i] =
dirsList[i].Replace("C:\\Users\\Alexandru.Sisu\\Desktop\\Temp\\AcrelecTest\\bin\\", "");

dirsList1 = dirsList1.OrderBy(p => p).ToList();


foreach (var file in dirsList1)

Console.WriteLine(file);

Console.WriteLine("\nfirst letter:");

for (int i = 0; i < dirsList1.Count; i++)

dirsList1[i] =
dirsList[i].Replace("C:\\Users\\Alexandru.Sisu\\Desktop\\Temp\\AcrelecTest\\bin\\", "");

dirsList1[i] = dirsList1[i][0].ToString();

dirsList1 = dirsList1.OrderBy(p => p).ToList();

foreach (var file in dirsList1)

Console.WriteLine(file);

Console.WriteLine("\nfirst 2 letters:");

for (int i = 0; i < dirsList1.Count; i++)

dirsList1[i] =
dirsList[i].Replace("C:\\Users\\Alexandru.Sisu\\Desktop\\Temp\\AcrelecTest\\bin\\", "");

dirsList1[i] = dirsList1[i].Substring(0, 2);

dirsList1 = dirsList1.OrderBy(p => p).ToList();

foreach (var file in dirsList1)

Console.WriteLine(file);

Console.WriteLine("\nfirst letter duplicate:");


for (int i = 0; i < dirsList1.Count; i++)

dirsList1[i] =
dirsList[i].Replace("C:\\Users\\Alexandru.Sisu\\Desktop\\Temp\\AcrelecTest\\bin\\", "");

dirsList1[i] = dirsList1[i][0].ToString() + dirsList1[i][0].ToString();

dirsList1 = dirsList1.OrderBy(p => p).ToList();

foreach (var file in dirsList1)

Console.WriteLine(file);

Console.WriteLine("\nfirst letter inverted:");

for (int i = 0; i < dirsList1.Count; i++)

dirsList1[i] =
dirsList[i].Replace("C:\\Users\\Alexandru.Sisu\\Desktop\\Temp\\AcrelecTest\\bin\\", "");

dirsList1[i] = dirsList1[i][0].ToString() + dirsList1[dirsList1.Count - i - 1][0].ToString();

dirsList1 = dirsList1.OrderBy(p => p).ToList();

foreach (var file in dirsList1)

Console.WriteLine(file);

Console.WriteLine("\nList of sorted chars:");

List<char> allChars = new List<char> { 'W', 'S', 'N', 'M', 'i', 'I', 'G', 'A', '-', '2', '1', '~', '_', '@' };

allChars = allChars.OrderBy(p => p).ToList();

foreach (char ch in allChars)

{
Console.WriteLine(ch);

Console.WriteLine("\nList of sorted strings with order by:");

List<string> allCharssO = new List<string> { "W", "S", "N", "M", "i", "I", "G", "A", "-", "2", "1",
"~", "_", "@" };

allCharssO = allCharssO.OrderBy(p => p).ToList();

foreach (string ch in allCharssO)

Console.WriteLine(ch);

Console.WriteLine("\nList of sorted strings:");

List<string> allCharss = new List<string> { "W", "S", "N", "M", "i", "I", "G", "A", "-", "2", "1",
"~", "_", "@" };

for (int i = 0; i < allCharss.Count; i++)

allCharss[i] =
$"C:\\Users\\Alexandru.Sisu\\Desktop\\Temp\\AcrelecTest\\bin\\{allCharss[i]}";

allCharss = allCharss.OrderBy(p => p).ToList();

foreach (string ch in allCharss)

Console.WriteLine(ch);

Console.WriteLine("\nList of sorted stringsss:");

List<string> allCharsss = new List<string> { "\\W-abc", "\\S-abc", "\\N-abc", "\\M-abc", "\\i-


abc", "\\I-abc", "\\G-abc", "\\A-abc", "\\--abc", "\\2-abc", "\\1-abc", "\\~-abc", "\\_-abc", "\\@-abc"
};

allCharsss = allCharsss.OrderBy(p => p).ToList();

foreach (string ch in allCharsss)

{
Console.WriteLine(ch);

public static void ReadDirectoriesTest()

StringBuilder sb = new StringBuilder();

List<char> allChars = new List<char> { 'W', 'S', 'N', 'M', 'i', 'I', 'G', 'A', '-', '2', '1', '~', '_', '@' };

Console.WriteLine($"chars: {allChars.Count}");

allChars.Sort();

Dictionary<int, string> charsD = new Dictionary<int, string>();

int index = 0;

int exceptions = 0;

foreach (var c in allChars)

try

File.WriteAllText(Path.Combine(Directory.GetCurrentDirectory(), "Dict"), c.ToString());

charsD.Add(index++, c.ToString());

catch (Exception)

exceptions++;
}

Console.WriteLine($"Number of exceptions: {exceptions}");

// serialize JSON directly to a file

using (StreamWriter file = File.CreateText(@"c:\charstest.json"))

JsonSerializer serializer = new JsonSerializer();

serializer.Serialize(file, charsD);

public static void ReadDirectories()

StringBuilder sb = new StringBuilder();

List<char> allChars = Enumerable.Range(0, char.MaxValue + 1)

.Select(i => (char)i)

.Where(c => !char.IsControl(c))

.ToList();

Console.WriteLine($"chars: {allChars.Count}");

allChars.Sort();

Dictionary<int, string> charsD = new Dictionary<int, string>();

int index = 0;

int exceptions = 0;

foreach (var c in allChars)


{

try

File.WriteAllText(Path.Combine(Directory.GetCurrentDirectory(), "Dict"), c.ToString());

charsD.Add(index++, c.ToString());

catch (Exception)

exceptions++;

Console.WriteLine($"Number of exceptions: {exceptions}");

// serialize JSON directly to a file

using (StreamWriter file = File.CreateText(@"c:\chars.json"))

JsonSerializer serializer = new JsonSerializer();

serializer.Serialize(file, charsD);

public static void getAllChars()

List<char> chars = Enumerable.Range(0, char.MaxValue + 1)

.Select(i => (char)i)

.Where(c => !char.IsControl(c))

.ToList();
chars.Sort();

int i1 = 0;

foreach (var c in chars)

try

Directory.CreateDirectory($"C:\\AcreTEst6 sorted\\{c}-{i1++}");

catch (Exception)

public static void LogList(List<HashFile> list, string fileName)

StringBuilder sb = new StringBuilder();

sb.AppendLine($"OS Encoding: {System.Text.Encoding.Default}");

foreach (var item in list)

sb.AppendLine($"{item.FullFilePath.PadRight(70, ' ')} - {item.HashValue}");

string appRoot = System.IO.Directory.GetCurrentDirectory();

File.WriteAllText(Path.Combine(appRoot, fileName), sb.ToString());

public static void LogListOfStrings(List<string> list, string fileName)


{

StringBuilder sb = new StringBuilder();

sb.AppendLine($"OS Encoding: {System.Text.Encoding.Default}");

foreach (var item in list)

sb.AppendLine(item);

string appRoot = System.IO.Directory.GetCurrentDirectory();

File.WriteAllText(Path.Combine(appRoot, fileName), sb.ToString());

//public static void GetCoreHash(String appRootDirectory)

//{

// List<String> skippedDirectories = new List<string>()

// {

// $"{Path.DirectorySeparatorChar}logs{Path.DirectorySeparatorChar}",

// $"{Path.DirectorySeparatorChar}debug{Path.DirectorySeparatorChar}"

// };

// List<String> skippedPaths = new List<string>()

// {

// Path.Combine(appRootDirectory.ToLower(), "core",
"peripherals")+Path.DirectorySeparatorChar,

// Path.Combine(appRootDirectory.ToLower(), "agent",
"downloads")+Path.DirectorySeparatorChar

// };

// List<String> allowedRootPaths = new List<string>()


// {

// Path.Combine(appRootDirectory.ToLower(), "admin") + Path.DirectorySeparatorChar,

// Path.Combine(appRootDirectory.ToLower(), "agent") + Path.DirectorySeparatorChar,

// Path.Combine(appRootDirectory.ToLower(), "core") + Path.DirectorySeparatorChar,

// Path.Combine(appRootDirectory.ToLower(), "utils") + Path.DirectorySeparatorChar,

// };

// string appRoot =
System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().CodeBase).
Replace($"file:{Path.DirectorySeparatorChar}", "");

// Console.WriteLine($"Application root: {appRoot}");

// try

// {

// string[] allDirectories = Directory.GetDirectories(appRootDirectory, "*",


SearchOption.AllDirectories);

// File.WriteAllLines(Path.Combine(appRoot, "out.txt"), allDirectories);

// Array.Sort(allDirectories);

// List<String> allValidDirectories = new List<string>();

// foreach (var item in allDirectories)

// {

// bool shouldSkip = true;

// string itemToCheck = item + Path.DirectorySeparatorChar;

// foreach (var allowedPath in allowedRootPaths)

// {

// if (itemToCheck.ToLower().Equals(allowedPath) ||
itemToCheck.ToLower().StartsWith(allowedPath))

// {
// //If atleast one is a match, stop everything

// shouldSkip = false;

// break;

// }

// }

// if (shouldSkip)

// continue;

// foreach (var skippedPath in skippedPaths)

// {

// if (itemToCheck.ToLower().StartsWith(skippedPath))

// {

// shouldSkip = true;

// break;

// }

// }

// if (shouldSkip)

// continue;

// foreach (var skippedDirNames in skippedDirectories)

// {

// if (itemToCheck.ToLower().Contains(skippedDirNames))

// {

// shouldSkip = true;

// break;

// }

// }

// if (shouldSkip)
// continue;

// allValidDirectories.Add(item);

// }

// if (allValidDirectories.Count == 0)

// { Console.WriteLine("No valid directories found!"); return; }

// File.WriteAllLines(Path.Combine(appRoot, "out_sorted.txt"), allValidDirectories);

// }

// catch (Exception ex)

// {

// Console.WriteLine($"Error: {ex.Message}");

// }

//}

Das könnte Ihnen auch gefallen