Skip to content

Commit dd539b1

Browse files
committed
Initial commit of merge_packages script
1 parent 1ef8e12 commit dd539b1

1 file changed

Lines changed: 59 additions & 0 deletions

File tree

scripts/merge_packages.py

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# merge_packages script
2+
# v0.10 BETA
3+
# Merges two or more MAEC Package documents (.xml files)
4+
# Attempts to merge related Malware Subjects
5+
import sys
6+
import os
7+
import maec
8+
from maec.utils.merge import merge_documents
9+
10+
USAGE_TEXT = """
11+
MAEC Package Merge Script v0.10 BETA
12+
*Merges two or more MAEC Package XML documents
13+
*Attempts to merge related (e.g., same MD5 hash) Malware Subjects
14+
15+
Usage: python merge_packages.py -o <output file name> -l <single whitespace separated list of MAEC Package files> OR -d <directory name>
16+
"""
17+
18+
def main():
19+
infilenames = []
20+
list_mode = False
21+
directoryname = ''
22+
outfilename = ''
23+
24+
#Get the command-line arguments
25+
args = sys.argv[1:]
26+
27+
if len(args) < 3:
28+
print USAGE_TEXT
29+
sys.exit(1)
30+
31+
for i in range(0,len(args)):
32+
if args[i] == '-o':
33+
outfilename = args[i+1]
34+
elif args[i] == '-l':
35+
list_mode = True
36+
elif args[i] == '-d':
37+
directoryname = args[i+1]
38+
39+
if outfilename == '':
40+
print USAGE_TEXT
41+
sys.exit(1)
42+
43+
sys.stdout.write("Merging...")
44+
# Get the list of input files and perform the merge operation
45+
if list_mode:
46+
files = args[3:]
47+
merge_documents(files, outfilename)
48+
elif directoryname != '':
49+
file_list = []
50+
for filename in os.listdir(directoryname):
51+
if '.xml' not in filename:
52+
pass
53+
else:
54+
file_list.append(os.path.join(directoryname, filename))
55+
merge_documents(file_list, outfilename)
56+
sys.stdout.write("Done.")
57+
58+
if __name__ == "__main__":
59+
main()

0 commit comments

Comments
 (0)