Getting rid of static privates on CryptoWorkbench; camel-casing names; introducing SharedLibraries dependency
This commit is contained in:
parent
d2b8b98f08
commit
c653fece93
@ -29,7 +29,7 @@ namespace AniNIX.Crypto {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// We should be able to act on a workspace and command line. Most ciphers will sue the same syntax. Those that don't can override.
|
||||
/// We should be able to act on a workspace and command line. Most ciphers will use the same syntax. Those that don't can override.
|
||||
/// </summary>
|
||||
/// <param name=workSpace>The current version of the text being worked on.</param>
|
||||
/// <param name=line>The command sequence.</param>
|
@ -3,7 +3,8 @@ using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Collections.Generic;
|
||||
using AniNIX.TheRaven;
|
||||
using System.Reflection;
|
||||
using AniNIX.Shared;
|
||||
|
||||
namespace AniNIX.Crypto {
|
||||
public class Workbench {
|
||||
@ -12,14 +13,7 @@ namespace AniNIX.Crypto {
|
||||
public StringBuilder HelpText = new StringBuilder();
|
||||
public Dictionary<String,Cipher> SwitchCases = new Dictionary<String,Cipher>();
|
||||
// The workbench needs to maintain an instance of each ciphersuite for operation.
|
||||
private Substitution _sub;
|
||||
private Analysis _analysis;
|
||||
private Simple _simple;
|
||||
private Caesarian _caesar;
|
||||
private Affine _affine;
|
||||
private Vigenere _vig;
|
||||
private ColumnTransposition _col;
|
||||
private Ubchi _ubchi;
|
||||
private List<Cipher> _ciphers = new List<Cipher>();
|
||||
// If this is true, we will prevent prompt and filesystem access.
|
||||
private bool _isBlind = false;
|
||||
|
||||
@ -107,15 +101,11 @@ namespace AniNIX.Crypto {
|
||||
HelpText.Append("exit -- exit and show the result.\n");
|
||||
HelpText.Append("quit -- alias of exit.\n");
|
||||
// Initialize the ciphersuites.
|
||||
_sub = new Substitution(this);
|
||||
_analysis = new Analysis(this);
|
||||
_simple = new Simple(this);
|
||||
_caesar = new Caesarian(this);
|
||||
_affine = new Affine(this);
|
||||
_vig = new Vigenere(this);
|
||||
_col = new ColumnTransposition(this);
|
||||
_ubchi = new Ubchi(this);
|
||||
|
||||
Object[] cipherArgs = { (Object)this };
|
||||
foreach (Type cipherType in Assembly.GetAssembly(typeof(Cipher)).GetTypes()
|
||||
.Where(myType => myType.IsClass && !myType.IsAbstract && myType.IsSubclassOf(typeof(Cipher)))) {
|
||||
_ciphers.Add((Cipher)Activator.CreateInstance(cipherType, cipherArgs));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -250,9 +240,9 @@ namespace AniNIX.Crypto {
|
||||
case "regex":
|
||||
try {
|
||||
if (line.Length == 3) {
|
||||
Console.Write(RavenExecute.Command(String.Format("bash /usr/local/src/CryptoWorkbench/regex-lookup.bash \"{0}\" \"{1}\"",line[1].Replace("\\","\\\\").Replace("$","\\$"),line[2].Replace("\\","\\\\").Replace("$","\\$"))));
|
||||
Console.Write(ExecuteCommand.Run(String.Format("bash /usr/local/src/CryptoWorkbench/regex-lookup.bash \"{0}\" \"{1}\"",line[1].Replace("\\","\\\\").Replace("$","\\$"),line[2].Replace("\\","\\\\").Replace("$","\\$"))));
|
||||
} else if (line.Length == 2) {
|
||||
Console.Write(RavenExecute.Command(String.Format("bash /usr/local/src/CryptoWorkbench/regex-lookup.bash \"{0}\"",line[1].Replace("\\","\\\\").Replace("$","\\$"))));
|
||||
Console.Write(ExecuteCommand.Run(String.Format("bash /usr/local/src/CryptoWorkbench/regex-lookup.bash \"{0}\"",line[1].Replace("\\","\\\\").Replace("$","\\$"))));
|
||||
} else {
|
||||
Console.Error.WriteLine("Need at least one search term.");
|
||||
}
|
6
Makefile
6
Makefile
@ -1,7 +1,9 @@
|
||||
TMUXSetting != grep -c "cryptoworkbench" /etc/tmux.conf
|
||||
|
||||
compile: clean /usr/bin/mcs analysis.csharp substitution.csharp caesarian.csharp cryptoworkbench.csharp
|
||||
/usr/bin/mcs -out:cryptoworkbench.exe *.csharp 2>&1 | grep -v 'is assigned but its value is never used'
|
||||
compile: clean /usr/bin/mcs CryptoWorkbench.csharp
|
||||
if [ ! -d ../SharedLibraries ]; then git -C /usr/local/src clone https://aninix.net/foundation/SharedLibraries; fi
|
||||
git -c /usr/local/src/SharedLibraries pull
|
||||
/usr/bin/mcs -out:cryptoworkbench.exe ../SharedLibraries/CSharp/*.csharp *.csharp 2>&1
|
||||
|
||||
test: /usr/bin/mono compile
|
||||
/usr/bin/mono cryptoworkbench.exe ./sample.txt
|
||||
|
@ -1,58 +0,0 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Diagnostics;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace AniNIX.TheRaven {
|
||||
|
||||
public static class RavenExecute {
|
||||
|
||||
/// <summary>
|
||||
/// This method allows TheRaven to execute a command on the OS.
|
||||
/// </summary>
|
||||
/// <param name=command>The command string to run as the string argument to "bash -c 'command'"</param>
|
||||
/// <param name=input>The effective replacement for the command's stdin</param
|
||||
/// <return>The stdout of the command</return>
|
||||
/// </summary>
|
||||
public static String Command(String command, String input) {
|
||||
//Sanitize inputs.
|
||||
if (command.Contains("\'")) {
|
||||
throw new Exception("Command strings cannot include \'.");
|
||||
}
|
||||
|
||||
//Create process.
|
||||
Process proc = new Process();
|
||||
proc.StartInfo.CreateNoWindow = true;
|
||||
proc.StartInfo.FileName = "/bin/bash";
|
||||
proc.StartInfo.Arguments = String.Format("-c \'{0}\'",command);
|
||||
proc.StartInfo.UseShellExecute=false;
|
||||
|
||||
//Redirect input
|
||||
proc.StartInfo.RedirectStandardOutput=true;
|
||||
proc.StartInfo.RedirectStandardInput=true;
|
||||
|
||||
//Start process
|
||||
proc.Start();
|
||||
|
||||
//Add input and read output.
|
||||
proc.StandardInput.Write(input);
|
||||
proc.StandardInput.Close();
|
||||
proc.WaitForExit();
|
||||
if (proc.ExitCode != 0) {
|
||||
throw new Exception(String.Format("Failed to exit command with return code {0}",proc.ExitCode));
|
||||
}
|
||||
String stdoutString = proc.StandardOutput.ReadToEnd();
|
||||
|
||||
//Close up and return
|
||||
proc.Close();
|
||||
return stdoutString;
|
||||
}
|
||||
|
||||
//Add polymorphism to allow no stdin
|
||||
public static String Command(String command) {
|
||||
return Command(command,null);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user