def test_loop(self): bs = Bars("Ti ") self.assertEquals(str(bs.next()), " Ti ") self.assertEquals(str(bs.next()), " Ti") self.assertEquals(str(bs.next()), "i T") self.assertEquals(str(bs.next()), "Ti ") bs = Bars(" iT") self.assertEquals(str(bs.next()), " iT ") self.assertEquals(str(bs.next()), "iT ") self.assertEquals(str(bs.next()), "T i") self.assertEquals(str(bs.next()), " iT")
def test_loop(self): bs = Bars("Ti ") self.assertEquals(str(bs.next()), " Ti ") self.assertEquals(str(bs.next()), " Ti") self.assertEquals(str(bs.next()), "i T") self.assertEquals(str(bs.next()), "Ti ") bs = Bars(" iT") self.assertEquals(str(bs.next()), " iT ") self.assertEquals(str(bs.next()), "iT ") self.assertEquals(str(bs.next()), "T i") self.assertEquals(str(bs.next()), " iT")
def simple_check(answer): chk_str = "iTiIIT" bars = Bars(" "*32) bars_pos = 0 count = 0 for c in answer: c = c.upper() assert(ord(' ') < ord(c) and ord(c) < 127) code = encode_morse(c) for i in code: bars.xor(bars_pos, i) bars_pos += 1; bars_pos %= len(bars) bars_pos += 1; bars_pos %= len(bars) bars.next() #print("answer={0} bars={1} bars_str={2}".format(''.join(answer), str(bars), str(bars)[len(bars)-len(answer):])) return chk_str[0:len(answer)] == str(bars)[len(bars)-len(answer):]
class SignatureParser(HTMLParser): def __init__(self): HTMLParser.__init__(self) self.verifing = 0 self.e = 65537 self.n = 47775743999999999999 # TODO: this bit length is too short for RSA! def handle_starttag(self, tag, attrs): attrs_dict = dict(attrs) if self.verifing > 0: self.verifing += 1 elif "data-sign" in attrs_dict: print("data-sign: " + attrs_dict["data-sign"]) self.verifing = 1 self.signature = int(attrs_dict["data-sign"]) self.bars = Bars(" " * 32) self.bars_pos = 0 def handle_data(self, data): if self.verifing > 0: for c in data: c = c.upper() assert (ord(' ') < ord(c) and ord(c) < 127) code = encode_morse(c) print('code=' + code) for i in code: self.bars.xor(self.bars_pos, i) self.bars_pos += 1 self.bars_pos %= len(self.bars) self.bars_pos += 1 self.bars_pos %= len(self.bars) print(self.bars) self.bars.next() print(self.bars) def handle_endtag(self, tag): if self.verifing > 0: self.verifing -= 1 if self.verifing == 0: hash_value = self.bars.num() if verify_RSA_signature(hash_value, self.e, self.n, self.signature): print("verification succeeded!") else: print("verification failed")
def check_answer(answer): bars = Bars(" "*32) bars_pos = 0 for c in answer: c = c.upper() assert(ord(' ') < ord(c) and ord(c) < 127) code = encode_morse(c) for i in code: bars.xor(bars_pos, i) bars_pos += 1; bars_pos %= len(bars) bars_pos += 1; bars_pos %= len(bars) bars.next() hash_value = bars.num() if True: s = bars_num_to_str(hash_value) ans = "iT iTiI T" if 0 <= s.find(ans): print('anser='.join(answer)) return hash_value == 1758412232636122750
def inverse(): pat = [] for c in list(s): pat.append(table[c]) for p in itertools.product(*pat): line = ''.join(p) bs = Bars(line) n = str(bs.next()) if s == n: return line
class SignatureParser(HTMLParser): def __init__(self): HTMLParser.__init__(self) self.verifing = 0 self.e = 65537 self.n = 47775743999999999999 # TODO: this bit length is too short for RSA! def handle_starttag(self, tag, attrs): attrs_dict = dict(attrs) if self.verifing > 0: self.verifing += 1 elif "data-sign" in attrs_dict: print("data-sign: " + attrs_dict["data-sign"]) self.verifing = 1 self.signature = int(attrs_dict["data-sign"]) self.bars = Bars(" "*32) self.bars_pos = 0 def handle_data(self, data): if self.verifing > 0: for c in data: c = c.upper() assert(ord(' ') < ord(c) and ord(c) < 127) code = encode_morse(c) for i in code: self.bars.xor(self.bars_pos, i) self.bars_pos += 1; self.bars_pos %= len(self.bars) self.bars_pos += 1; self.bars_pos %= len(self.bars) print(self.bars) self.bars.next() print(self.bars) def handle_endtag(self, tag): if self.verifing > 0: self.verifing -= 1 if self.verifing == 0: hash_value = self.bars.num() if verify_RSA_signature(hash_value, self.e, self.n, self.signature): print("verification succeeded!") else: print("verification failed")
def solve3(): e = 65537 n = 47775743999999999999 # TODO: this bit length is too short for RSA! h = 1758412232636122750 signature = 26984024434151540355 bars = Bars(" "*32) bars_pos = 0 data = "EBMDKA" for c in data: c = c.upper() print("c=" + c) assert(ord(' ') < ord(c) and ord(c) < 127) code = encode_morse(c) for i in code: bars.xor(bars_pos, i) bars_pos += 1; bars_pos %= len(bars) bars_pos += 1; bars_pos %= len(bars) print(bars) bars.next() print(bars) hash_value = bars.num() return lets_take_tea_break(hash_value, e, n, signature)
def test_next(self): bs = Bars("I IT ii i I I i i I T") bs.next() self.assertEquals(str(bs), "Ii iI iIIiiT Ii iI Ti iTi iIi ") bs.next() self.assertEquals(str(bs), "TIiiIT IIITI iTI ITi T TiT IIIii")
#/usr/bin/env python from second_code import Bars from third_code import decode_morse def take_away_tea(s): return s.replace('T','') str1 = "ITT TI I T TIii" str2 = "T i I Iii TTT" s = str2 for i in range(1000): bs = Bars(s) if bs.next() == str1: print("answer: " + ''.join([take_away_tea(decode_morse(take_away_tea(x))) for x in [s, str1, str2]])) break s = str(bs)
#/usr/bin/env python from second_code import Bars from third_code import decode_morse bs = Bars("I IT ii i I I i i I T") for i in range(26): print(bs) bs.next() print(bs) print("answer: " + decode_morse(str(bs)))
#!/usr/bin/env python from second_code import Bars from third_code import decode_morse bs = Bars("ITT TI I T TIii") while True: prev = bs[:] bs.next() if ''.join(bs) == "ITT TI I T TIii": break print ''.join(prev) print decode_morse(''.join(prev))
from second_code import Bars from third_code import decode_morse val="ITT TI I T TIii" bs = Bars(val) i=0; while(True): before=val val=str(bs.next()) if (val == "ITT TI I T TIii"): break print decode_morse(before) #print("answer: " + decode_morse(str(bs)))
def test_next(self): bs = Bars("I IT ii i I I i i I T") bs.next() self.assertEquals(str(bs), "Ii iI iIIiiT Ii iI Ti iTi iIi ") bs.next() self.assertEquals(str(bs), "TIiiIT IIITI iTI ITi T TiT IIIii")