diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..507f46b
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,7 @@
+Day_1/C++/**.o
+Day_1/C++/**.txt
+**/C#/bin/**
+**/C#/obj/**
+**/rust/target/**
+Day_2/rust/**
+**.html
\ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..8a5d656
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,8 @@
+{
+ "files.associations": {
+ "unordered_map": "cpp",
+ "ostream": "cpp",
+ "iosfwd": "cpp"
+ },
+ "python.pythonPath": "/usr/bin/python3"
+}
\ No newline at end of file
diff --git a/Day_1/C#/C#comphash.csproj b/Day_1/C#/C#comphash.csproj
new file mode 100644
index 0000000..058e970
--- /dev/null
+++ b/Day_1/C#/C#comphash.csproj
@@ -0,0 +1,9 @@
+
+
+
+ Exe
+ net5.0
+ C_comphash
+
+
+
diff --git a/Day_1/C#/Program.cs b/Day_1/C#/Program.cs
new file mode 100644
index 0000000..1055429
--- /dev/null
+++ b/Day_1/C#/Program.cs
@@ -0,0 +1,80 @@
+using System;
+using System.Net;
+using System.Text.RegularExpressions;
+
+namespace C_comphash
+{
+ class Program {
+ const string charpool = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
+ const int pwd_length = 4;
+ class strgen {
+ int[] state;
+ public strgen(){
+ state = new int[pwd_length];
+ }
+ public string next() {
+ string ret = "";
+ for(int i = 0; i < pwd_length; i++) {
+ ret += charpool[state[i] % 62];
+ }
+ for(int i = 0; i < pwd_length; i++){
+ if (state[i] < 62) {
+ state[i] += 1;
+ break;
+ } else {
+ state[i] = 0;
+ }
+ }
+ return ret;
+ }
+ }
+ static void Main(string[] args) {
+ // get the target hash from file
+ string target_hash = System.IO.File.ReadAllText("../data/targethash.txt");
+ Console.WriteLine(target_hash);
+
+ // use this to generate possible strings
+ strgen generator = new strgen();
+ string t_string;
+
+ // hashing object
+ var MD5 = System.Security.Cryptography.MD5.Create();
+
+ System.Text.StringBuilder sb = new System.Text.StringBuilder();
+ byte[] t_bytes;
+ byte[] hashed;
+ // now compute hashes and test
+ while(true){
+ t_string = generator.next();
+ t_bytes = System.Text.Encoding.ASCII.GetBytes(t_string);
+ hashed = MD5.ComputeHash(t_bytes);
+
+ // convert the hashed bytes into a string
+ // splits the bytes into low and high nibbles
+ for (int i = 0; i < hashed.Length; i++) {
+ sb.Append(hashed[i].ToString("x2"));
+ }
+ if (sb.ToString().Equals(target_hash)) {
+ break;
+ }
+ sb.Clear();
+ }
+
+ // echo what we found
+ Console.WriteLine($"String with the given hash {target_hash} is {t_string}");
+ // download the final url
+ WebClient client = new WebClient();
+ string htmlstring = client.DownloadString($"https://tiny.utk.edu/{t_string}");
+ System.IO.File.WriteAllText("../data/page.html", htmlstring);
+
+ // we know it's a gist based on the HTML we got, let's get the raw address
+ Regex regex = new Regex("href=\"(.+raw.+?)\"", RegexOptions.Compiled | RegexOptions.IgnoreCase);
+ string matchstr = "";
+ foreach(Match match in regex.Matches(htmlstring))
+ {
+ matchstr += match.Groups[1].Value;
+ }
+ client.DownloadFile($"https://gist.github.com/{matchstr}", "../data/FourVectorTest.csv");
+ }
+ }
+}
diff --git a/Day_1/C#/Usage.md b/Day_1/C#/Usage.md
new file mode 100644
index 0000000..b86999b
--- /dev/null
+++ b/Day_1/C#/Usage.md
@@ -0,0 +1,6 @@
+To use this, you'll need .net version > 2 installed. Once that is done, cd into the C# directory and do
+```
+dotnet build
+dotnet run
+```
+if this doesn't work, I've borked something with the upload.
\ No newline at end of file
diff --git a/Day_1/C++/clangbuild.sh b/Day_1/C++/clangbuild.sh
new file mode 100644
index 0000000..63eba48
--- /dev/null
+++ b/Day_1/C++/clangbuild.sh
@@ -0,0 +1 @@
+clang++ -l ssl -l crypto comphash.cpp -O3 -v -o comphash.o 2> builderr.txt
\ No newline at end of file
diff --git a/Day_1/C++/comphash.cpp b/Day_1/C++/comphash.cpp
new file mode 100644
index 0000000..d199eea
--- /dev/null
+++ b/Day_1/C++/comphash.cpp
@@ -0,0 +1,83 @@
+#include
+#include
+#include
+#include
+#include