forked from ema/systemtap-ids-poc
/
runtime_check.py
46 lines (31 loc) · 1007 Bytes
/
runtime_check.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
#!/usr/bin/python
import sys
import config
import reader
import dbaccess
from hamming import distance_xrange
def min_distance(sequence, known_seqs, distance=distance_xrange):
minimum = config.SEQUENCE_LENGTHS
for known in known_seqs:
val = distance(known, sequence)
if val <= config.ALLOWED_MISMATCHES:
return val
if val < minimum:
minimum = val
return minimum
def main():
data = dbaccess.getdata()
dbaccess.check_seq_length_consistency(data.sequence_lengths)
while True:
input_line = sys.stdin.readline()
if not input_line:
break
execname, uid, calls = reader.line2data(input_line)
if execname not in data.executables:
continue
known_seqs = tuple(data.executables[execname])
minimum = min_distance(calls, known_seqs)
if minimum > config.ALLOWED_MISMATCHES:
print minimum, execname, calls
if __name__ == "__main__":
main()