update:完善调用方式,删除多余代码

This commit is contained in:
2024-05-14 21:31:31 +08:00
parent fa86f12a48
commit 0ae787002c
2 changed files with 28 additions and 27 deletions

View File

@@ -1,4 +1,5 @@
import io
import json
import os
import pickletools
import pickle
@@ -87,10 +88,9 @@ class pickleScanner():
self.file = file
def find_class(self, module, name):
print(module, name)
if module.decode() in dangerous_modules or name.decode() in dangerous_names:
# self.maliciousCount += 1
self.maliciousModule.append((module, name))
self.maliciousModule.append((module.decode(), name.decode()))
def load(self):
self._unframer = _Unframer(self._file_read, self._file_readline)
@@ -128,30 +128,24 @@ class pickleScanner():
def output(self):
if self.ReduceCount > 0 or len(self.maliciousModule) > 0:
print("The pickle file maybe contains malicious code")
print(f"The number of REDUCE opcodes is {self.ReduceCount}")
print("The malicious options are: ", self.maliciousModule)
else:
print("The pickle file is safe")
return {
"ReduceCount": self.ReduceCount,
"maliciousModule": self.maliciousModule
}
def pickleDataDetection(file,output_file=None):
'''
:param file: pickle file path
'''
with open(file, "rb") as file:
pickscan = pickleScanner(file)
pickscan.load()
res = pickscan.output()
if output_file:
with open(output_file, "w") as file:
file.writelines(json.dumps(res))
else:
print(json.dumps(res))
class test:
a = 1
b = 2
def __reduce__(self):
return (__import__("os").system,('calc',))
data = pickle.dumps(test(),protocol=2)
print(data)
print(pickletools.dis(data))
with open("test.pkl", "wb") as file:
file.write(data)
with open("test.pkl", "rb") as file:
pickscan = pickleScanner(file)
pickscan.load()
pickscan.output()
if __name__ == '__main__':
pickleDataDetection("test.pkl")