Ejemplo n.º 1
0
 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")
Ejemplo n.º 2
0
 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")
Ejemplo n.º 3
0
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):]
Ejemplo n.º 4
0
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")
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
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")
Ejemplo n.º 8
0
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)
Ejemplo n.º 9
0
 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")
Ejemplo n.º 10
0
#/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)
Ejemplo n.º 11
0
Archivo: moon.py Proyecto: funaken/cp1
#/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)))

Ejemplo n.º 12
0
#!/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)))
Ejemplo n.º 14
0
 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")