Esempio n. 1
0
        public static void MessDir(String dirName, MessOption option, bool delAfterMess = false, Logger am = null)
        {
            am?.Invoke("<---dir:" + dirName);
            DirectoryInfo di = new DirectoryInfo(dirName);

            if (!di.Exists)
            {
                Console.WriteLine("dir not found");
                return;
            }
            foreach (var f in di.GetFileSystemInfos())
            {
                try
                {
                    if (f is FileInfo)
                    {
                        am?.Invoke("<---" + f.FullName);
                        String name = Mess(f.FullName, option, delAfterMess);
                        am?.Invoke("--->" + name);
                        am?.Invoke("\n");
                    }
                    else if (f is DirectoryInfo)
                    {
                        MessDir(f.FullName, option, delAfterMess, am);
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                    Console.WriteLine(e.StackTrace);
                    continue;
                }
            }
            am?.Invoke("<---dir :" + dirName);
        }
Esempio n. 2
0
        private void button2_Click(object sender, EventArgs e)
        {
            button2.Enabled = false;
            button1.Enabled = false;
            MessOption option = radioButton1.Checked ? MessOption.MESS : MessOption.UNMESS;
            bool       isDel  = checkBox2.Checked;

            if (checkBox1.Checked)
            {
                String path = textBox1.Text;
                if (!String.IsNullOrEmpty(path) && Directory.Exists(path))
                {
                    try
                    {
                        //new thread
                        new Thread(() =>
                        {
                            FileMess.MessDir(path, option, isDel, Log);
                        })
                        {
                            IsBackground = true
                        }.Start();
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("无法处理的异常:" + ex.Message);
                    }
                }
            }
            else
            {
                if (openFileDialog1.FileNames != null && openFileDialog1.FileNames.Length > 0)
                {
                    try
                    {
                        String[] names = openFileDialog1.FileNames;
                        new Thread(() =>
                        {
                            foreach (var name in names)
                            {
                                Log("<---" + name);
                                String newName = FileMess.Mess(name, option, isDel);
                                Log("--->" + newName);
                            }
                        })
                        {
                            IsBackground = true
                        }.Start();
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("无法处理的异常:" + ex.Message);
                    }
                }
            }
            button1.Enabled = true;
            textBox1.Text   = "";
        }
Esempio n. 3
0
        /// <summary>
        /// 打乱或恢复文件
        /// </summary>
        /// <param name="fullName"></param>
        /// <param name="ext"></param>
        /// <returns></returns>
        public static String Mess(String fullName, MessOption option, bool delAfterMess = false)
        {
            String newFullName = null;

            try
            {
                newFullName = ReverseFileWithBinary(fullName, option, delAfterMess);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            return(newFullName);
        }
Esempio n. 4
0
        private static String ReverseFileWithBinary(String src, MessOption option, bool delAfterReverse = false)
        {
            FileStream   fsReader     = null;
            BinaryReader br           = null;
            FileStream   fsWriter     = null;
            BinaryWriter bw           = null;
            String       destFileName = null;
            FileInfo     file         = new FileInfo(src);

            if (!file.Exists)
            {
                throw new Exception("File Not Found !");
            }
            else if (option != MessOption.MESS && option != MessOption.UNMESS)
            {
                throw new Exception("Mess option error!!");
            }
            try
            {
                fsReader = new FileStream(src, FileMode.Open);
                br       = new BinaryReader(fsReader, Encoding.UTF8);
                if (option == MessOption.MESS)
                {
                    destFileName = String.Format(@"{0}\{1}", file.Directory, Guid.NewGuid().ToString("N"));
                    fsWriter     = new FileStream(destFileName, FileMode.CreateNew);
                    bw           = new BinaryWriter(fsWriter, Encoding.UTF8);
                    WriteFileHead(bw, file.Name);
                }
                else
                {
                    destFileName = String.Format(@"{0}\{1}", file.Directory, ReadFileHead(br));
                    fsWriter     = new FileStream(destFileName, FileMode.CreateNew);
                    bw           = new BinaryWriter(fsWriter, Encoding.UTF8);
                }
                byte[] buffer = new byte[buffer_size];
                int    index  = 2;
                int    len    = 0;
                while ((len = br.Read(buffer, 0, index++)) != 0)
                {
                    Array.Reverse(buffer, 0, len);
                    bw.Write(buffer, 0, len);
                    if (index >= buffer.Length)
                    {
                        index = 2;
                    }
                }
                bw.Close();
                br.Close();
                fsReader.Close();
                fsWriter.Close();
                if (delAfterReverse)
                {
                    file.Delete();
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                Console.WriteLine(e.StackTrace);
            }
            finally
            {
                if (null != bw)
                {
                    bw.Close();
                }
                if (null != br)
                {
                    br.Close();
                }
                if (null != fsReader)
                {
                    fsReader.Close();
                }
                if (null != fsWriter)
                {
                    fsWriter.Close();
                }
            }
            return(destFileName);
        }