Beispiel #1
0
        /// <summary>
        /// Runs a Kerberos implemented RC4 Encryption
        /// </summary>
        /// <param name="xConfounder">Outputs new Confounder</param>
        /// <param name="xPayload">Outputs the payload</param>
        /// <param name="x">RC4 Reference</param>
        /// <returns></returns>
        public static byte[] KerberosEncrypt(this RC4 x, ref byte[] xConfounder, ref byte[] xPayload)
        {
            var xIn = new List <byte>();

            xIn.AddRange(xConfounder);
            xIn.AddRange(xPayload);
            return(x.RunAlgorithm(xIn.ToArray()));
        }
Beispiel #2
0
        /// <summary>
        /// Generates a new counfounder of your choice
        /// </summary>
        /// <param name="x"></param>
        /// <param name="ConLen"></param>
        /// <returns></returns>
        public static byte[] NewConfounder(this RC4 x, long ConLen)
        {
            var xReturn = new byte[ConLen];
            var xRand   = new Random();

            for (var i = 0; i < 8; i++)
            {
                xReturn[i] = (byte)xRand.Next(0, 0xFF);
            }
            return(xReturn);
        }
Beispiel #3
0
 /// <summary>
 /// Runs a Kerberos implemented RC4 decryption
 /// </summary>
 /// <param name="xConfounder">The confounder input</param>
 /// <param name="xPayload">The payload input</param>
 /// <param name="x">RC4 reference</param>
 /// <param name="xData">Data to be decrypted</param>
 /// <param name="xConLen">Length of the Confounder</param>
 /// <returns></returns>
 public static bool KerberosDecrypt(this RC4 x, byte[] xData, out byte[] xConfounder, int xConLen, out byte[] xPayload)
 {
     xPayload    = new byte[0];
     xConfounder = new byte[0];
     try
     {
         var xOut = new DJsIO(x.RunAlgorithm(xData), true)
         {
             Position = 0
         };
         xConfounder = xOut.ReadBytes(xConLen);
         xPayload    = xOut.ReadBytes(xData.Length - xConLen);
         xOut.Dispose();
     }
     catch { return(false); }
     return(true);
 }
Beispiel #4
0
        /// <summary>
        /// Runs an RC4 encryption with a specified key
        /// </summary>
        /// <param name="xKey"></param>
        /// <param name="xConfounder"></param>
        /// <param name="xPayload"></param>
        /// <returns></returns>
        public static byte[] RunKerberosEncrypt(byte[] xKey, ref byte[] xConfounder, ref byte[] xPayload)
        {
            var xrc4 = new RC4(xKey);

            return(xrc4.KerberosEncrypt(ref xConfounder, ref xPayload));
        }
Beispiel #5
0
        /// <summary>
        /// Runs a Kerberos RC4 encryption on the specified data
        /// </summary>
        /// <param name="xKey">Key input</param>
        /// <param name="xConfounder">outputs the confounder</param>
        /// <param name="xPayload">Outputs the payload</param>
        /// <param name="xConLen">Confounder Length</param>
        /// <param name="xData">Outputs the decrypted data</param>
        /// <returns></returns>
        public static bool RunKerberosDecrypt(byte[] xKey, byte[] xData, out byte[] xConfounder, int xConLen, out byte[] xPayload)
        {
            var xrc4 = new RC4(xKey);

            return(xrc4.KerberosDecrypt(xData, out xConfounder, xConLen, out xPayload));
        }
Beispiel #6
0
        /// <summary>
        /// Runs an RC4 on the specified data using the specified key
        /// </summary>
        /// <param name="xKey"></param>
        /// <param name="xData"></param>
        /// <returns></returns>
        public static byte[] RunAlgorithm(byte[] xKey, byte[] xData)
        {
            var xrc4 = new RC4(xKey);

            return(xrc4.RunAlgorithm(xData));
        }