예제 #1
0
def get_version(text):
    version_string = h.right(h.token("SW: Version "), h.sepBy(alphanumeric, h.ch('.')))
    version = h.whitespace(version_string)
    parser = h.action(version, tuple_string)
    for i in text.split("\n"):
        ret = parser.parse(i.encode('ascii','ignore'))
        if ret is not None:
            return {'os_version': ".".join(ret)}
예제 #2
0
def init_parser():
    # CORE
    digit = h.ch_range(0x30, 0x39)
    alpha = h.choice(h.ch_range(0x41, 0x5a), h.ch_range(0x61, 0x7a))

    # AUX.
    plus = h.ch(b'+')
    slash = h.ch(b'/')
    equals = h.ch(b'=')

    bsfdig = h.choice(alpha, digit, plus, slash)
    bsfdig_4bit = h.in_(b'AEIMQUYcgkosw048')
    bsfdig_2bit = h.in_(b'AQgw')
    base64_3 = h.repeat_n(bsfdig, 4)
    base64_2 = h.sequence(bsfdig, bsfdig, bsfdig_4bit, equals)
    base64_1 = h.sequence(bsfdig, bsfdig_2bit, equals, equals)
    base64 = h.sequence(h.many(base64_3),
                        h.optional(h.choice(base64_2, base64_1)))

    return h.sequence(h.whitespace(base64), h.whitespace(h.end_p()))
예제 #3
0
파일: base64.py 프로젝트: ae-g-i-s/hammer
def init_parser():
    # CORE
    digit = h.ch_range(0x30, 0x39)
    alpha = h.choice(h.ch_range(0x41, 0x5a), h.ch_range(0x61, 0x7a))

    # AUX.
    plus = h.ch('+')
    slash = h.ch('/')
    equals = h.ch('=')

    bsfdig = h.choice(alpha, digit, plus, slash)
    bsfdig_4bit = h.in_('AEIMQUYcgkosw048')
    bsfdig_2bit = h.in_('AQgw')
    base64_3 = h.repeat_n(bsfdig, 4)
    base64_2 = h.sequence(bsfdig, bsfdig, bsfdig_4bit, equals)
    base64_1 = h.sequence(bsfdig, bsfdig_2bit, equals, equals)
    base64 = h.sequence(h.many(base64_3),
                        h.optional(h.choice(base64_2, base64_1)))

    return h.sequence(h.whitespace(base64), h.whitespace(h.end_p()))
예제 #4
0
 def setUpClass(cls):
     cls.parser = h.sequence(h.ch("a"), h.whitespace(h.ch("b")))
예제 #5
0
 def setUpClass(cls):
     cls.parser = h.whitespace(h.end_p())
예제 #6
0
 def setUpClass(cls):
     cls.parser = h.whitespace(h.ch("a"))
예제 #7
0
 def setUpClass(cls):
     cls.parser = h.sequence(h.ch(b"a"), h.whitespace(h.ch(b"b")))
예제 #8
0
 def setUpClass(cls):
     cls.parser = h.whitespace(h.end_p())
예제 #9
0
 def setUpClass(cls):
     cls.parser = h.whitespace(h.ch(b"a"))