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
|
#!/usr/bin/python
"""
Metadata anonymisation toolkit
"""
import sys
import mat
import argparse
__version__ = "0.1"
def parsing():
'''
Parse the arguments,
and returns a dict
'''
parser = argparse.ArgumentParser(version=__version__,
description="Metadata Anonymisation Toolkit - CLI %s" % __version__)
#list and check clean are mutually exclusives
group = parser.add_mutually_exclusive_group()
#list meta
group.add_argument('--print-meta', '-p', action="store_true", default=False,
dest='just_list', help='List all the meta of a file,\
without removing them')
#check if the file is clean
group.add_argument('--check-clean', '-c', action="store_true",
default=False, dest='just_check',
help='Check if a file is clean of harmfull metadatas')
#list of files to process
parser.add_argument('filelist', action="store", type=str, nargs="+",
metavar='file', help='File(s) to process')
return parser.parse_args()
def list_meta(class_file, filename):
'''
Print all the meta of "filename" on stdout
'''
print("[+] File %s :" % filename)
for key, item in class_file.get_meta().iteritems():
print("\t%s : %s" % (key, item) )
def is_clean(class_file, filename):
'''
Say if "filename" is clean or not
'''
if class_file.is_clean():
print("[+] %s is clean" % filename)
else:
print("[+] %s is not clean" % filename)
def clean_meta(class_file, filename):
'''
Clean the file "filename"
'''
print("[+] Cleaning %s" % filename)
if class_file.is_clean():
print("%s is already clean" % filename)
else:
class_file.remove_all()
print("%s cleaned !" % filename)
def main():
args = parsing()
#func receive the function correponding to the options given as parameters
if args.just_list is True: #only print metadatas
func = list_meta
elif args.just_check is True: #only check if the file is clean
func = is_clean
else: #clean the file
func = clean_meta
for filename in args.filelist:
class_file = mat.create_class_file(filename)
func(class_file, filename)
print("\n")
if __name__ == '__main__':
main()
|