Beispiel #1
0
def parameters():
    """This function deals with parameters passed to the script"""

    # Defines globals to be used above
    global mode, effectObject, target_packet_type, save_active, NFQUEUE_Active

    # Defaults
    mode = print_packet
    target_packet_type = 'ALL'
    save_active = False

    # Setup
    NFQUEUE_Active = True

    # Arguments
    parser = argparse.ArgumentParser(
        prog="Packet.py",
        formatter_class=argparse.RawDescriptionHelpFormatter,
        allow_abbrev=False)

    parser.add_argument_group('Arguments', description=Parameter.Usage())

    # Mode parameters
    effect = parser.add_mutually_exclusive_group(required=True, )

    effect.add_argument('--print',
                        Parameter.cmd_print,
                        action='store_true',
                        dest="output",
                        help=argparse.SUPPRESS)

    effect.add_argument('--ignore',
                        '-i',
                        action='store_true',
                        dest='ignore',
                        help=argparse.SUPPRESS)

    effect.add_argument('--latency',
                        Parameter.cmd_latency,
                        action='store',
                        help=argparse.SUPPRESS,
                        type=int)

    effect.add_argument('--packet-loss',
                        Parameter.cmd_packetloss,
                        action='store',
                        help=argparse.SUPPRESS,
                        type=int)

    effect.add_argument('--surge',
                        Parameter.cmd_throttle,
                        action='store',
                        help=argparse.SUPPRESS,
                        type=int)

    effect.add_argument('--display-bandwidth',
                        Parameter.cmd_bandwidth,
                        action='store_true',
                        help=argparse.SUPPRESS)

    effect.add_argument('--rate-limit',
                        Parameter.cmd_ratelimit,
                        action='store',
                        dest='rate_limit',
                        help=argparse.SUPPRESS,
                        type=int)

    # Extra parameters
    parser.add_argument('--target-packet',
                        Parameter.cmd_target_packet,
                        action='store',
                        dest='target',
                        help=argparse.SUPPRESS)

    parser.add_argument('--save',
                        Parameter.cmd_save,
                        nargs=1,
                        dest='save',
                        help=argparse.SUPPRESS)

    args = parser.parse_args()

    # Modes
    if args.output:

        effectObject = Print.Print()
        mode = print_packet

    elif args.ignore:
        mode = ignore_packet

    elif args.latency:
        effectObject = Latency.Latency(latency_value=args.latency)
        mode = packet_latency

    elif args.packet_loss:
        effectObject = PacketLoss.PacketLoss(percentage=args.packet_loss)
        mode = packet_loss

    elif args.surge:
        effectObject = Surge.Surge(period=args.surge)
        effectObject.start_purge_monitor()
        mode = surge

    elif args.display_bandwidth:
        effectObject = DisplayBandwidth.DisplayBandwidth()
        mode = track_bandwidth

    elif args.rate_limit:
        # Sets the bandwidth object with the specified bandwidth limit
        effectObject = LimitBandwidth.LimitBandwidth(bandwidth=args.rate_limit)
        mode = limit_bandwidth

    if args.save:
        print('[!] File saving on - Files will be saved under: \'{}.pcap\''.
              format(args.save[0]))

        save_active = True
        setup_packet_save(args.save[0])

    if args.target:
        target_packet_type = args.target

    # When all parameters are handled
    if NFQUEUE_Active:
        run_packet_manipulation()