CryptoWorkbench/ravenexecute.csharp
cxford 65dbd8cae2 Converting from Bazaar
Old Log:
------------------------------------------------------------
revno: 16
committer: cxford <cxford@aninix.net>
branch nick: CryptoWorkbench
timestamp: Sun 2016-07-10 20:22:37 -0500
message:
  Some fixes for regex, captive shells, analysis
------------------------------------------------------------
revno: 15
committer: dev <dev@aninix.net>
branch nick: CryptoWorkbench
timestamp: Thu 2016-07-07 13:54:04 -0500
message:
  Adding captivecrypto.bash shell to go with ForceCommand
------------------------------------------------------------
revno: 14
committer: dev <dev@aninix.net>
branch nick: CryptoWorkbench
timestamp: Thu 2016-07-07 13:38:21 -0500
message:
  Updating
------------------------------------------------------------
revno: 13
committer: cxford <cxford@aninix.net>
branch nick: CryptoWorkbench
timestamp: Tue 2016-07-05 13:20:34 -0500
message:
  Adding inline regex lookup
  Updating ciphers to use standard constructor -- now ciphers can be added from new class, new private in WorkBench, and new instantiation in Workbench constructor
------------------------------------------------------------
revno: 12
committer: dev <dev@aninix.net>
branch nick: CryptoWorkbench
timestamp: Sat 2016-06-18 10:16:40 -0500
message:
  GUI enhancements for colorizing. General updates.
------------------------------------------------------------
revno: 11
committer: dev <dev@aninix.net>
branch nick: CryptoWorkbench
timestamp: Mon 2016-05-09 12:21:57 -0500
message:
  Updated letter frequency in analysis
  Added reverse function in Simple
  Updated bash script with small fixes
  Updated cryptoworkbench Links function with link to frequency analysis
------------------------------------------------------------
revno: 10
committer: dev <dev@aninix.net>
branch nick: CryptoWorkbench
timestamp: Fri 2016-04-15 13:03:41 -0500
message:
  Syncing with new ciphers for Affine, Ubchi, Vignere, and Columnar Transposition. Analytics updated and general fixes included. Paradigm shift for cipher inheritance.
------------------------------------------------------------
revno: 9
committer: cxford <cxford@aninix.net>
branch nick: CryptoWorkbench
timestamp: Wed 2016-02-10 15:36:37 -0600
message:
  Added new class for simple operations, like string to upper/lower and removing spaces.
  Updated with file reading and writing.
  Added brute-force for Caesarian ciphers.
  Updated substition and analysis for better options.
  Improved CLI
------------------------------------------------------------
revno: 8
committer: root <root@aninix.net>
branch nick: CryptoWorkbench
timestamp: Mon 2016-02-01 13:44:20 -0600
message:
  Modified analysis to display doubled letters and notify of which letter is repeated when One-to-one query fails to find a one-to-one relationship
------------------------------------------------------------
revno: 7
committer: root <root@aninix.net>
branch nick: CryptoWorkbench
timestamp: Thu 2016-01-28 10:03:40 -0600
message:
  Lots of minor fixes.
------------------------------------------------------------
revno: 6
committer: root <root@aninix.net>
branch nick: CryptoWorkbench
timestamp: Wed 2016-01-20 09:29:54 -0600
message:
  Makefile had a small typo but it prevented installs. Worth a commit.
------------------------------------------------------------
revno: 5
committer: root <root@aninix.net>
branch nick: CryptoWorkbench
timestamp: Tue 2016-01-19 13:12:12 -0600
message:
  Added one-to-one query to Analysis for checking if a substitution or rotation remains one-to-one and to acquire the key
  Moved bash script to ease tab-completion
------------------------------------------------------------
revno: 4
committer: root <root@aninix.net>
branch nick: CryptoWorkbench
timestamp: Thu 2016-01-14 10:24:02 -0600
message:
  Renamed README to be consistent with other branches in repo.
  Added Caesarian functions
  Added analysis and substitution functions for letter substitution.
------------------------------------------------------------
revno: 3
committer: cxford <cxford@aninix.net>
branch nick: CryptoWorkbench
timestamp: Wed 2016-01-13 16:41:05 -0600
message:
  Added install files
------------------------------------------------------------
revno: 2
committer: cxford <cxford@aninix.net>
branch nick: CryptoWorkbench
timestamp: Wed 2016-01-13 16:30:10 -0600
message:
  Adding Makefile and source files.
------------------------------------------------------------
revno: 1
committer: cxford <cxford@aninix.net>
branch nick: CryptoWorkbench
timestamp: Wed 2016-01-13 10:29:31 -0600
message:
  Initializing project tree and adding Readme.
2016-08-04 12:10:50 -05:00

59 lines
1.9 KiB
Plaintext

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);
}
}
}