-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathencrypt.py
More file actions
163 lines (139 loc) · 5.43 KB
/
Copy pathencrypt.py
File metadata and controls
163 lines (139 loc) · 5.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
try:
import os
import sys
from fernet import Fernet
#check file open by app
if os.path.exists("process/run_by_app_01") :
os.remove("process/run_by_app_01")
else:
sys.exit()
#read files for encryption
file = open("process/encrypt_select_file","r" ,encoding='utf8')
files_for_encrypt = file.read().split("<><><><><>")[:-1]
file.close()
#read no. data
data_count_total = 0
data_count_list = []
for file in files_for_encrypt:
read_file = open(file ,"rb")
data_count = 0
while True:
if read_file.readline() == b"":
f = open("process/file_read_complete","w")
f.close()
while os.path.exists("process/file_read_complete"):
#check program is closed ?
if os.path.exists("process/exit"):
sys.exit()
data_count_list.append(data_count)
read_file.close()
break
data_count_total += 1
data_count += 1
#check program is closed ?
if os.path.exists("process/exit"):
sys.exit()
#zero line files check
data_count_list_index = 0
while data_count_list_index < len(data_count_list) :
#check program is closed ?
if os.path.exists("process/exit"):
sys.exit()
if data_count_list[data_count_list_index] == 0:
data_count_list[data_count_list_index] = 1
data_count_list_index += 1
#get key
try:
key_file = open("process/key","rb")
key = key_file.readline()
except:
key = Fernet.generate_key()
key_file = open("process/key","wb")
key_file.write(key)
key_file.close()
while 1:
#check program is closed ?
if os.path.exists("process/exit"):
sys.exit()
if os.path.exists("process/encrypt_decrypt_start"):
break
#create file name
def genarate_name(file_name):
file_type = file_name.split(".")[-1]
file_name = file_name.replace("."+file_type,"")
genarated_name = file_name + "_ec." + file_type
return genarated_name
file_index = -1
for file in files_for_encrypt:
#one file encrypt start
progression_file =open("process/progression","w")
progression_file.write("0")
progression_file.close()
#reading and createing files
original_file = open(file,"rb")
encrypted_file = open(genarate_name(file),"wb")
lines_encrypted = 0
file_index += 1
encrypted_target = 1
while True:
if int((lines_encrypted/data_count_list[file_index])*100) == encrypted_target :
try:
progression_file = open("process/progression" ,"w")
progression_file.write(str(encrypted_target))
progression_file.close()
except:
pass
encrypted_target += 1
#find errors in percentage
if int((lines_encrypted/data_count_list[file_index])*100) > 100 :
try:
error_file = open("system error/encrypt pro.txt","a")
except:
error_file = open("system error/encrypt pro.txt","w")
error_file.write(str(files_for_encrypt[file_index]) + "\n")
error_file.write(str(lines_encrypted) + " | " + str(data_count_list[file_index]) + "\n")
error_file.write(str(int((lines_encrypted/data_count_list[file_index])*100)) +"%" + "\n")
error_file.write("--------------------------------------------------------" + "\n\n")
#read original file
original_content = original_file.readline()
#check end of file
if original_content == b"":
#one file encrypt completed
progression_file =open("process/progression","w")
progression_file.write("100")
progression_file.close()
#one file encrypt ended
file = open("process/file_completed","w")
file.close()
while os.path.exists("process/file_completed"):
#check program is closed ?
if os.path.exists("process/exit"):
sys.exit()
break
else:
#encryption
if lines_encrypted < 10000:
encrypted_content = Fernet(key).encrypt(original_content)
else:
encrypted_content = b"`[`>`" + original_content.replace(b" ",b"`>~`") + b"`[`>`"
#adding new content
encrypted_content += b"|~~~<>\n"
#write encrypted content on new file
encrypted_file.write(encrypted_content)
#count encrypted lines
lines_encrypted += 1
#check program is closed ?
if os.path.exists("process/exit"):
sys.exit()
except Exception as error :
try :
os.mkdir("system error")
except:
pass
try:
f = open("system error/encrypt log.txt" ,"a")
except:
f = open("system error/encrypt log.txt" ,"w")
f.write(str(error)+"\n")
f.write("-------------------------------------------------------------" + "\n\n")
f.close()