mirror of
https://github.com/vanhoefm/fragattacks.git
synced 2024-11-25 00:38:24 -05:00
44 lines
1.4 KiB
Python
Executable File
44 lines
1.4 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
# Copyright (c) 2020, Mathy Vanhoef <mathy.vanhoef@nyu.edu>
|
|
#
|
|
# This code may be distributed under the terms of the BSD license.
|
|
# See README for more details.
|
|
|
|
from libwifi import *
|
|
import argparse, time, subprocess
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description="Test packet injection properties of a device.")
|
|
parser.add_argument('inject', help="Interface to use to inject frames.")
|
|
parser.add_argument('monitor', nargs='?', help="Interface to use to monitor for frames.")
|
|
parser.add_argument('--debug', type=int, default=0, help="Debug output level.")
|
|
options = parser.parse_args()
|
|
|
|
peermac = "00:11:22:33:44:55"
|
|
subprocess.check_output(["rfkill", "unblock", "wifi"])
|
|
|
|
# Parse remaining options
|
|
change_log_level(-options.debug)
|
|
|
|
set_monitor_mode(options.inject)
|
|
if options.monitor:
|
|
set_monitor_mode(options.monitor)
|
|
chan_inject = get_channel(options.inject)
|
|
chan_monitor = get_channel(options.monitor)
|
|
if chan_inject == None or chan_monitor == None:
|
|
log(WARNING, "Unable to verify if both devices are on the same channel")
|
|
elif chan_inject != chan_monitor:
|
|
log(ERROR, "Both devices are not on the same channel")
|
|
quit(1)
|
|
peermac = get_mac_address(options.monitor)
|
|
|
|
log(STATUS, "Performing injection tests")
|
|
try:
|
|
test_injection(options.inject, options.monitor, peermac)
|
|
except OSError as ex:
|
|
log(ERROR, str(ex))
|
|
|
|
if __name__ == "__main__":
|
|
main()
|
|
|