コード例 #1
0
ファイル: fuzz_packet.py プロジェクト: shivarammysore/faucet
def main():
    """Run AFL repeatedly with externally supplied generated packet from STDIN."""
    application = faucet.Faucet(dpset=dpset.DPSet())
    application.start()

    # make sure dps are running
    if application.valves_manager is not None:
        for valve in list(application.valves_manager.valves.values()):
            state = valve.dp.dyn_finalized
            valve.dp.dyn_finalized = False
            valve.dp.running = True
            valve.dp.dyn_finalized = state

    while afl.loop(ROUNDS):  # pylint: disable=c-extension-no-member
        # receive input from afl
        rcv = sys.stdin.read()
        data = None
        try:
            data = bytearray.fromhex(rcv)  # pytype: disable=missing-parameter,wrong-arg-types
        except (ValueError, TypeError):
            continue

        # create fake packet
        _dp = fake_packet.Datapath(1)
        msg = fake_packet.Message(datapath=_dp,
                                  cookie=15243729,
                                  port=1,
                                  data=data,
                                  in_port=1)
        pkt = fake_packet.RyuEvent(msg)

        # send fake packet to faucet
        application.packet_in_handler(pkt)
コード例 #2
0
def main():
    """Shows the crash in the FAUCET log produced by given input."""

    with open(sys.argv[1]) as pkt:
        packet_data = str(pkt.read())

    # start faucet
    application = faucet.Faucet(
        dpset=dpset.DPSet(),
        faucet_experimental_api=faucet_experimental_api.FaucetExperimentalAPI())
    application.start()

    # make sure dps are running
    if application.valves_manager is not None:
        for valve in list(application.valves_manager.valves.values()):
            state = valve.dp.dyn_finalized
            valve.dp.dyn_finalized = False
            valve.dp.running = True
            valve.dp.dyn_finalized = state

    # create data from read file
    byte_data = None
    try:
        byte_data = bytearray.fromhex(packet_data)  # pytype: disable=missing-parameter,wrong-arg-types
    except (ValueError, TypeError):
        pass

    if byte_data is not None:
        # create fake packet
        _dp = fake_packet.Datapath(1)
        msg = fake_packet.Message(datapath=_dp, cookie=15243729, port=1, data=byte_data, in_port=1)
        pkt = fake_packet.RyuEvent(msg)

        # send packet to faucet and display error produced
        application.packet_in_handler(pkt)