-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathpython-call-graph.py
More file actions
36 lines (29 loc) · 942 Bytes
/
python-call-graph.py
File metadata and controls
36 lines (29 loc) · 942 Bytes
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
import pydot
from Node import pNode, pEdge
from MyParser import simpleParser
from ReflexionBuilder import ReflexionBuilder
"""node = pNode('ThreadManager')
node2 = pNode('SessionManager')
myNodes = {}
myNodes['ThreadManager'] = node
print(myNodes['ThreadManager'])
node.addEdge(pEdge(node2))h
print(myNodes['ThreadManager'])
print(myNodes)"""
parser = simpleParser()
mnodes = parser.parse('nodes.txt', 'edges.txt')
#print(mnodes['ThreadManager'].myEdges.itervalues().next())
refBuilder = ReflexionBuilder(mnodes)
refBuilder.buildReflexion('call_trace.txt')
graph = pydot.Dot(graph_type='digraph')
for item in mnodes.values():
graph.add_node(item.getPydotObj())
for edge in item.myEdges.values():
graph.add_edge(edge.getPydotObj(item))
graph.write_png('example2.png')
string = "/msf/core/module"
for regex in mnodes['PenetrationModuleManager'].listValidRegex:
if(regex.search(string)):
print "Match!"
else:
print "No match!"