···11+import re
22+import fileinput
33+44+55+def is_abba(seq):
66+ for i in range(len(seq) - 3):
77+ a, b, c, d = seq[i:i+4]
88+ if a == d and b == c and a != b:
99+ return True
1010+1111+ return False
1212+1313+1414+def find_abas(seq):
1515+ for i in range(len(seq) - 2):
1616+ a, b, c = seq[i:i+3]
1717+ if a == c and a != b:
1818+ yield a, b
1919+2020+2121+tls_ips = 0
2222+ssl_ips = 0
2323+2424+for line in fileinput.input():
2525+ line = line.strip()
2626+2727+ sequences = set(re.findall(r'\](\w+)\[?', line)) | set(re.findall(r'\]?(\w+)\[', line))
2828+ hypernets = set(re.findall(r'\[(\w+)\]', line))
2929+3030+ if any(is_abba(s) for s in sequences):
3131+ if not any(is_abba(h) for h in hypernets):
3232+ tls_ips += 1
3333+3434+ abas = set()
3535+3636+ for seq in sequences:
3737+ for aba in find_abas(seq):
3838+ abas.add(aba)
3939+4040+ for aba in abas:
4141+ bab = aba[1] + aba[0] + aba[1]
4242+4343+ if any(bab in h for h in hypernets):
4444+ ssl_ips += 1
4545+ break
4646+4747+print "Number of TLS IPs: %i" % tls_ips
4848+print "Number of SSL IPs: %i" % ssl_ips