Skip to content

Instantly share code, notes, and snippets.

@vbfox
Last active August 29, 2015 13:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vbfox/9166527 to your computer and use it in GitHub Desktop.
Save vbfox/9166527 to your computer and use it in GitHub Desktop.
namespace HackNSlash
{
using System;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Security.Cryptography;
using System.Text;
using System.Text.RegularExpressions;
class Program
{
const string FULL_TEXT = "AND WITH THIS INCANTATION I DO SO ENSORCELL MATTERS SUCH THAT THE"
+ " MAGIC OF THIS APPLICATION PRODUCES A RESULT THAT MUST INVARIABLY"
+ " ENGENDER MAGNIFICENT AMPLIFICATION OF THE DESIRED OUTCOMES THAT "
+ "WE PRODUCE. AND WITH THIS INCANTATION I THEE BOND INTO REALMS FOR"
+ "EVER INTWINING OURSELVES TO OUR COMBINED DESTINIES WHICH PRODUCE "
+ "A KIND OF INFINITE REWARD IN THE CONSTRUCTION OF MECHANISMS TO AI"
+ "D OUR DISCOVERY OF KNOWLEDGE AND TRUTH. AND WITH THIS INCANTATION"
+ " I REVEAL MYSELF TO BE CAPABLE OF CHALLENGES OF THE MIND AND SPIR"
+ "IT WHICH STRENGTHEN AND EMBOLDEN MY CAPACITY FOR TAKING CONTROL O"
+ "VER THAT WHICH WAS ALWAYS OUR BIRTHRIGHT THOUGH SOMESTIMES WE FOO"
+ "L EVEN OURSELVES TO PROTECT THAT WHICH CANNOT BE PROTECTED. WITH "
+ "THIS INCANTATION I OPEN THE LOCK CLASPED SIMPLY TO PROVIDE OPPORT"
+ "UNITY FOR DEMONSTRATION OF MY POWER. AND WITH THIS INCANTATION I "
+ "FOREVER OPEN THE BOUNDARIES OF UNDRESTANDING SUCH THAT I ALWAYS R"
+ "EALIZE THE POWERS I HAVE OVER HIDDEN BUT NOT INACCESSIBLE TRUTHS."
+ " AND WITH THE MECHANISMS OF THIS INCANTATION I CAN BREAK THE BOND"
+ "S THAT WERE NEVER REALLY THERE DESPITE THE INSISTENCE OF THOSE PR"
+ "ESENTING THEMSELVES AS WIZARDS. AND WITH THIS INCANTATION I OBSER"
+ "VE THE FINITE IN THE INFINITE THAT HAS PRODUCED MUCH WONDER AND M"
+ "AGIC IN OUR WORLD AND COMMIT TO THE PURSUITE OF UNDERSTANDING. AN"
+ "D WITH THIS INCANTATION I DO DECLARE THAT BIRTHRIGHT HAS NO STAND"
+ "ING IN THE CHAMBERS OF WISDOM. AND WITH THIS INCANTATION I DO PRE"
+ "SENT MATTERS SUCH THAT IT IS OBSERVABLE THAT NO CREATURE SHOULD B"
+ "E RESTRAINED BY THE FEAR OF OTHERS.";
const int SUBSTRING_LEN = 4;
static string CreateSentence(byte[] uid)
{
var result = FULL_TEXT.Substring(0, SUBSTRING_LEN);
var uidBytesUsed = 0;
int afterLastMatch;
do
{
var xorFromUid = uid.Skip(uidBytesUsed).Take(2).Aggregate(0, (a, b) => a ^ b);
var last4Chars = result.Substring(result.Length - SUBSTRING_LEN);
var matches = new Regex(Regex.Escape(last4Chars)).Matches(FULL_TEXT);
var numberOfOccurences = matches.Count;
var match = matches[xorFromUid % matches.Count];
result += FULL_TEXT.Substring(match.Index + SUBSTRING_LEN, SUBSTRING_LEN);
afterLastMatch = match.Index + SUBSTRING_LEN*2;
uidBytesUsed += 2;
} while (uidBytesUsed < uid.Length);
if (!result.EndsWith("."))
{
var charsToAdd = FULL_TEXT.Substring(afterLastMatch).TakeWhile(c => c != '.');
result += new string(charsToAdd.ToArray()) + ".";
}
return result;
}
[DllImport("kernel32.dll", SetLastError = true)]
static extern bool GetVolumeNameForVolumeMountPoint(string lpszVolumeMountPoint, StringBuilder lpszVolumeName, uint cchBufferLength);
static string GetVolumeNameForVolumeMountPoint(string lpszVolumeMountPoint)
{
var lpszVolumeName = new StringBuilder(50);
var apiResult = GetVolumeNameForVolumeMountPoint(lpszVolumeMountPoint,lpszVolumeName, (uint)(lpszVolumeName.Capacity + 1));
if (!apiResult)
{
throw new Win32Exception();
}
return lpszVolumeName.ToString();
}
static byte[] GetUniqueId()
{
var winDir = Environment.GetFolderPath(Environment.SpecialFolder.Windows);
var winDrive = Path.GetPathRoot(winDir);
var mountPoint = GetVolumeNameForVolumeMountPoint(winDrive);
var sha1 = new SHA1CryptoServiceProvider();
sha1.Initialize();
return sha1.ComputeHash(Encoding.ASCII.GetBytes(mountPoint));
}
static void Main()
{
var uid = GetUniqueId();
Console.WriteLine(CreateSentence(uid));
Console.ReadLine();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment