-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstat.py
107 lines (91 loc) · 2.44 KB
/
stat.py
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# OutFile << tid << hex << "ret address not found!! " << sp << " " << *((*tdata).begin())<< " " << target << " " << eip << endl;
# 0ret address not found!! ad8d38a8 ad8d38c8 7f9184043e08 7f9184041b4e
# sp = 4 top =5 target = 6 rip =7
import operator
# ********************* SET PATH BEFORE USING THE SCRIPT DONT OVERWRITE CURRENT LOG FILES-MAKE A NEW FOLDER *******************************
file = open("C:\Users\dZONE\Desktop\ROP\\10-18-14\wtotGDB\\cnt.out", "r") #log file from pin tool
op_file = open("C:\Users\dZONE\Desktop\ROP\\10-18-14\wtotGDB\\fox_out1.out", "w") #Parses all ret address not in begining target rip
tar_file = open("C:\Users\dZONE\Desktop\ROP\\10-18-14\wtotGDB\\fox_tar1.out", "w") #contains target and frequency
log = open("C:\Users\dZONE\Desktop\ROP\\10-18-14\wtotGDB\\log.out", "w") #Parses all ret address not found in a seprate logfile
lines = file.readlines()
sp = dict()
top = dict()
target = dict()
rip = dict()
min_rip = float("inf")
i = 0
for line in lines:
i += 1
#print i, " &&&" ,line
tmp = line.split('\n')[0]
tmp = tmp.split(' ')
if tmp[0] == 'ret':
op_file.write(line)
continue
else:
pass
log.write(line)
try:
if tmp[2] != 'not':
print "BREAK MET", i
print tmp
break
except IndexError:
print i, tmp
try:
if tmp[9]:
print "LONF STR"
print i, tmp
break
except IndexError:
pass
if tmp[4] in sp:
sp[tmp[4]] += 1
else:
sp[tmp[4]] = 1
if tmp[5] in top:
top[tmp[5]] += 1
else:
top[tmp[5]] = 1
try:
if tmp[6] in target:
target[tmp[6]] += 1
else:
target[tmp[6]] = 1
except IndexError:
print i, tmp
try:
if tmp[7] in rip:
rip[tmp[7]] += 1
else:
rip[tmp[7]] = 1
except IndexError:
print i, tmp
"""
if (int(tmp[7], 16) < 0x600000):
print "FireFox Binary RIP", temp[7]
if int(tmp[7], 16) < min_rip:
min_rip = int(tmp[7], 16)
print min_rip, hex(min_rip)
"""
op_file.close()
log.close()
len = 0
tar = list()
#target -MAX '7fffa2e98934', 669)
#RIP -MAX ('7fffc61ba976', 8839)
#sp -MAX ('ffff6d50', 609)
#top -MAX ('ffff6d98', 613)
#ma = max(top.iteritems(), key=operator.itemgetter(1))
#print ma
for item in target:
#print target[item], item
tar_file.write(item)
tar_file.write(' ')
tar_file.write(str(target[item]))
tar_file.write('\n')
tar_file.close()
#print "SP", sp
#print "TOP", top
#print "Target", target
#print "RIP", rip