blob: 90ced045bca2e50913c27c11b7c579686e293723 (
plain) (
blame)
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
|
#!/usr/bin/python
"""
Applies the 'pskN' transformations to Noise patterns.
Authors:
Rhys Weatherley <rhys.weatherley@gmail.com>
This script is placed into the public domain.
"""
import sys
from noise_patterns import *
def make_psk(orig, modifier, psk_num):
pattern = Pattern()
pattern.name = orig.name
pattern.addTransformation(modifier)
pattern.parameters = list(orig.parameters)
pattern.initiator_premessage = list(orig.initiator_premessage)
pattern.responder_premessage = list(orig.responder_premessage)
pattern.messages = []
if psk_num == 0:
direction, message = orig.messages[0]
pattern.messages.append((direction, ['psk'] + message))
for direction, message in orig.messages[1:]:
pattern.messages.append((direction, list(message)))
else:
posn = 1
for direction, message in orig.messages:
if psk_num == posn:
pattern.messages.append((direction, message + ['psk']))
else:
pattern.messages.append((direction, list(message)))
posn += 1
return pattern
if len(sys.argv) <= 2:
print "Usage: " + sys.argv[0] + " N file ..."
sys.exit(1)
psk_num = int(sys.argv[1])
modifier = "psk" + sys.argv[1]
for file in sys.argv[2:]:
patterns = loadPatterns(file)
for pattern in patterns:
if modifier in pattern.transformations():
# The modifier was already applied to this pattern.
continue
if psk_num > len(pattern.messages):
# Cannot apply the modifier to this pattern because
# there aren't enough messages in it.
continue
psk = make_psk(pattern, modifier, psk_num)
print psk
sys.exit(0)
|