COMMA = L(",").suppress()
SEMICOLON = L(";").suppress()
AT = L("@").suppress()

PUNCTUATION = Word("-_.")
IDENTIFIER_END = ALPHANUM | (ZeroOrMore(PUNCTUATION) + ALPHANUM)
IDENTIFIER = Combine(ALPHANUM + ZeroOrMore(IDENTIFIER_END))

NAME = IDENTIFIER("name")
EXTRA = IDENTIFIER

URI = Regex(r'[^ ]+')("url")
URL = (AT + URI)

EXTRAS_LIST = EXTRA + ZeroOrMore(COMMA + EXTRA)
EXTRAS = (LBRACKET + Optional(EXTRAS_LIST) + RBRACKET)("extras")

VERSION_PEP440 = Regex(Specifier._regex_str, re.VERBOSE | re.IGNORECASE)
VERSION_LEGACY = Regex(LegacySpecifier._regex_str, re.VERBOSE | re.IGNORECASE)

VERSION_ONE = VERSION_PEP440 ^ VERSION_LEGACY
VERSION_MANY = Combine(VERSION_ONE + ZeroOrMore(COMMA + VERSION_ONE),
                       joinString=",",
                       adjacent=False)("_raw_spec")
_VERSION_SPEC = Optional(((LPAREN + VERSION_MANY + RPAREN) | VERSION_MANY))
_VERSION_SPEC.setParseAction(lambda s, l, t: t._raw_spec or '')

VERSION_SPEC = originalTextFor(_VERSION_SPEC)("specifier")
VERSION_SPEC.setParseAction(lambda s, l, t: t[1])

MARKER_EXPR = originalTextFor(MARKER_EXPR())("marker")
Пример #2
0
arp = Group("arp" + LBRACE + "sip" + EQUAL + ipAddress("sip") + COMMA + "tip" +
            EQUAL + ipAddress("tip") + COMMA + "op" + EQUAL + op("op") +
            COMMA + "sha" + EQUAL + macAddress("sha") + COMMA + "tha" + EQUAL +
            macAddress("tha") + RBRACE)
ipv4 = Group("ipv4" + LBRACE + "src" + EQUAL + ipAddress("src") + COMMA +
             "dst" + EQUAL + ipAddress("dst") + COMMA + "proto" + EQUAL +
             proto("proto") + COMMA + "tos" + EQUAL + tos("tos") + COMMA +
             "ttl" + EQUAL + ttl("ttl") + COMMA + "frag" + EQUAL +
             frag("frag") + RBRACE)
# ipv4(src=193.170.192.143,dst=193.170.192.142,proto=6,tos=0,ttl=64,frag=no),tcp(src=45969,dst=5672), packets:1, bytes:87, used:4.040s, flags:P., actions:1
tcp = Group("tcp" + LBRACE + "src" + EQUAL + src("srcPkt") + COMMA + "dst" +
            EQUAL + dst("dstPkt") + RBRACE)
flowTcp = (
    "in_port" + LBRACE + in_port("in_port") + RBRACE + COMMA + eth("eth") +
    COMMA +
    Optional("eth_type" + LBRACE + eth_type("eth_type") + RBRACE + COMMA) +
    Optional(ipv4("ipv4") + COMMA) + Optional(tcp("tcp") + COMMA) +
    Optional(arp("arp") + COMMA) + "packets" + COLON + packets("packets"))

with open('parseopenflows') as f:
    lines = f.readlines()

flag_ipv4 = 0
flag_arp = 0
for line in lines:
    flowTcpValues = flowTcp.parseString(line)
    #print (flowTcpValues.dump())
    #print (flowTcpValues.packets)
    #print (flowTcpValues.eth.src)

    if flowTcpValues.arp: