Example #1
0
    parser = argparse.ArgumentParser(description="Netflow v9 collector.")
    parser.add_argument("--host", default="0.0.0.0", help="ipv4 host address to listen on")
    parser.add_argument("--port", default=2055, help="the udp port to listen on", type=int)
    args = parser.parse_args()

    p = pprint.PrettyPrinter(indent=4, depth=6)
    netflowpacket = NetFlowPacket()

    host = args.host
    port = args.port

    addrs = socket.getaddrinfo(host, port, socket.AF_INET, socket.SOCK_DGRAM, 0, socket.AI_PASSIVE)
    socks = []

    for addr in addrs:
        sock = socket.socket(addr[0], addr[1])
        sock.bind(addr[4])
        socks.append(sock)
        print "listening on [%s]:%d" % (addr[4][0], addr[4][1])

    while 1:
        (rlist, wlist, xlist) = select.select(socks, [], socks)

        for sock in rlist:
            (data, addrport) = sock.recvfrom(8192)
            print "Received flow packet from %s:%d" % addrport
            netflowpacket.data(data)
            netflowpacket.decodePacket()
            # print len(netflowpacket.flows)
            netflowpacket.export(lambda flow: export_hydra(flow))