-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdraw.py
More file actions
53 lines (51 loc) · 1.74 KB
/
Copy pathdraw.py
File metadata and controls
53 lines (51 loc) · 1.74 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
from raw_graphs import *
import cPickle as pickle
import networkx as nx
import matplotlib.pyplot as plt
import datetime
#file_name = 'busybox-armv6l.ida'
#file_name = 'busybox-i686.ida'
file_name = 'G:\ida_out\busybox_O0_X86.ida'
data = pickle.load(open(file_name, 'r'))
graphs = data.raw_graph_list
folder = file_name + '_graphs_' + datetime.datetime.now().strftime('%H_%M_%S')
os.mkdir(folder)
os.mkdir(folder + '/node')
os.mkdir(folder + '/edge')
os.mkdir(folder + '/adj')
#doc_node = open('nodeopenssl.txt', 'w')
#doc_edge = open('edgeopenssl.txt', 'w')
#doc_adj = open('adjopenssl.txt', 'w')
for i in range(len(graphs)):
print(i)
#if i % 100 == 0:
# print(i)
doc_node = open(folder + '/node/nodeopenssl'+str(i)+'.txt', 'w')
doc_edge = open(folder + '/edge/edgeopenssl'+str(i)+'.txt', 'w')
doc_adj = open(folder + '/adj/adjopenssl'+str(i)+'.txt', 'w')
g = graphs[i].g
### node
print('graph_' + str(i) + '(node):')
doc_node.write('graph_' + str(i) + ':(node)\n')
for j in range(len(g.node)):
print(g.node[j])
doc_node.write(str(g.node[j]) + '\n')
### edge
print('graph_' + str(i) + '(edge):')
doc_edge.write('graph_' + str(i) + ':(edge)\n')
for k in range(len(g.edge)):
print(g.edge[k])
doc_edge.write(str(g.edge[k]) + '\n')
### adj
print('graph_' + str(i) + '(adj):')
doc_adj.write('graph_' + str(i) + ':(adj)\n')
for l in range(len(g.adj)):
print(g.adj[l])
doc_adj.write(str(g.adj[l]) + '\n')
doc_node.close()
doc_edge.close()
doc_adj.close()
# plt.cla()
# nx.draw(g)
# pic_save_name = folder + '/graphs/' + file_name + ".%05d.png" % i;
# plt.savefig(pic_save_name)