mirror of
				https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
				synced 2025-10-31 10:48:02 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			122 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			122 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env python3
 | |
| """
 | |
|     NAME:       lf_sniff_radio.py
 | |
|     PURPOSE:    THis script will sniff a Radio after changing the Radio settings.
 | |
| 
 | |
|                 Radio settings: channel radio mode  AUTO, 802.11a, 802.11b, etc... refer
 | |
|                                         lanforge-scripts/py-json/LANforge/set_wifi_radio.py for different modes
 | |
| 
 | |
|     EXAMPLE:    python3 lf_sniff_radio.py
 | |
|                         --mgr localhost
 | |
|                         --mgr_port 8080
 | |
|                         --outfile /home/lanforge/test_sniff.pcap
 | |
|                         --duration 20
 | |
|                         --channel 52
 | |
|                         --radio_mode AUTO
 | |
| 
 | |
| """
 | |
| 
 | |
| import sys
 | |
| 
 | |
| if 'py-json' not in sys.path:
 | |
|     sys.path.append('../py-json')
 | |
| 
 | |
| import argparse
 | |
| import time
 | |
| from LANforge.LFUtils import *
 | |
| from realm import Realm
 | |
| 
 | |
| 
 | |
| class SniffRadio(Realm):
 | |
|     def __init__(self,
 | |
|                  lfclient_host="localhost",
 | |
|                  lfclient_port=8080,
 | |
|                  radio="wiphy0",
 | |
|                  outfile="/home/lanforge/test_pcap.pcap",
 | |
|                  duration=60,
 | |
|                  channel=52,
 | |
|                  radio_mode="AUTO",
 | |
|                  debug_on_=False):
 | |
|         super().__init__(lfclient_host, lfclient_port)
 | |
|         self.lfclient_host = lfclient_host
 | |
|         self.lfclient_port = lfclient_port
 | |
|         self.debug = debug_on_
 | |
|         self.local_realm = Realm(lfclient_host=self.lfclient_host,
 | |
|                                        lfclient_port=self.lfclient_port,
 | |
|                                        debug_=self.debug)
 | |
|         self.monitor = self.local_realm.new_wifi_monitor_profile()
 | |
|         if channel != "AUTO":
 | |
|             channel = int(channel)
 | |
|         self.channel = channel
 | |
|         self.duration = duration
 | |
|         self.outfile = outfile
 | |
|         self.mode = radio_mode
 | |
|         self.radio = radio
 | |
| 
 | |
|     def setup(self, ht40_value, ht80_value, ht160_value):
 | |
|         self.monitor.set_flag(param_name="disable_ht40", value=ht40_value)
 | |
|         self.monitor.set_flag(param_name="disable_ht80", value=ht80_value)
 | |
|         self.monitor.set_flag(param_name="ht160_enable", value=ht160_value)
 | |
|         self.monitor.create(radio_=self.radio, channel=self.channel, mode=self.mode, name_="moni3a")
 | |
| 
 | |
|     def start(self):
 | |
|         self.monitor.admin_up()
 | |
|         time.sleep(5)
 | |
|         self.monitor.start_sniff(capname=self.outfile, duration_sec=self.duration)
 | |
|         for i in range(0, self.duration):
 | |
|             print("started sniffer, PLease wait,", self.duration - i)
 | |
|             time.sleep(1)
 | |
|         print("Sniffing Completed Success", "Check ", self.outfile)
 | |
|         self.monitor.admin_down()
 | |
|         time.sleep(2)
 | |
| 
 | |
|     def cleanup(self):
 | |
|         self.monitor.cleanup()
 | |
| 
 | |
| 
 | |
| def main():
 | |
|     parser = argparse.ArgumentParser(usage=
 | |
|                                      """./lf_sniff_radio.py 
 | |
|         --mgr localhost
 | |
|         --mgr_port 8080 
 | |
|         --radio wiphy0  
 | |
|         --outfile /home/lanforge/test_sniff.pcap
 | |
|         --duration 1
 | |
|         --channel 52
 | |
|         --radio_mode AUTO
 | |
|         """)
 | |
| 
 | |
|     parser.add_argument('--mgr', type=str, help='--mgr: IP Address of LANforge', default="localhost")
 | |
|     parser.add_argument('--mgr_port', type=int, help='--mgr_port: HTTP Port of LANforge', default=8080)
 | |
|     parser.add_argument('--radio', type=str, help='--radio: Radio to sniff', default="wiphy0")
 | |
|     parser.add_argument('--outfile', type=str, help='--outfile: give the filename with path',
 | |
|                         default="/home/lanforge/test_pcap.pcap")
 | |
|     parser.add_argument('--duration', type=int, help='--duration duration in sec, for which you want to capture',
 | |
|                         default=60)
 | |
|     parser.add_argument('--channel', type=str, help='--channel Set channel pn selected Radio, [52, 56 ...]',
 | |
|                         default=0)
 | |
|     parser.add_argument('--radio_mode', type=str, help='--radio_mode select the radio mode [AUTO, 802.11a, 802.11b, '
 | |
|                                                        '802.11ab ...]', default="AUTO")
 | |
|     parser.add_argument('--disable_ht40', type=str, help='Enable/Disable \"disable_ht40\" [0-disable,1-enable]', default=0)
 | |
|     parser.add_argument('--disable_ht80', type=str, help='Enable/Disable \"disable_ht80\" [0-disable,1-enable]', default=0)
 | |
|     parser.add_argument('--ht160_enable', type=str, help='Enable/Disable \"ht160_enable\ [0-disable,1-enable]" ', default=0)
 | |
| 
 | |
|     args = parser.parse_args()
 | |
| 
 | |
|     obj = SniffRadio(lfclient_host=args.mgr,
 | |
|                      lfclient_port=args.mgr_port,
 | |
|                      outfile=args.outfile,
 | |
|                      duration=args.duration,
 | |
|                      channel=args.channel,
 | |
|                      radio=args.radio,
 | |
|                      radio_mode=args.radio_mode
 | |
|                      )
 | |
|     obj.setup(int(args.disable_ht40), int(args.disable_ht80), int(args.ht160_enable))
 | |
|     time.sleep(5)
 | |
|     obj.start()
 | |
|     obj.cleanup()
 | |
| 
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     main()
 | 
