Kev Posted December 8, 2023 Report Posted December 8, 2023 This is a small extension script to monitor suff.py, or the Simple Universal Fortigate Fuzzer, and to collect crashlogs for future analysis. Download: suff_monitor.py.txt Mirror: #!/usr/bin/env python3 # suff_monitor.py -- basic monitoring for fuzzing scenarios (suff/burp/mutiny) # # -- updates -- # 22.11.2023 @ 02:23 :: shame init version ready to go # 21.11.2023 @ 19:18 :: log me if you can # 21.11.2023 @ 15:14 :: added: time, sleep, log2fp # 21.11.2023 @ 01:19 :: started this lame code # # idea - run suff_monitor.py against the box you're testing (fgvm): # - add time to sleep and date to log updates # - log in (so same creds as for suff.py, postauth testing, etc) # - get ver/info -> log2file # ** (should be ready at this stage, so): ** # while true: # check_diag_deb(+log2file,+a) # sleep 1 # end_of_file # # ------------- # # for more details: # https://code610.blogspot.com/2023/12/monitoring-suff.html # https://code610.blogspot.com/2023/04/fuzzing-fortigate-7.html # https://github.com/c610/free/blob/master/suff-v0.1.py # https://github.com/c610/free/blob/master/fg7stack_poc.py # # from netmiko import Netmiko import sys,os import time import paramiko ################### ############## ######## #### ## # fplog = open('saveme.log','+a') command = 'diag debug crashlog show' # did you enable logs in your FGVM? def connect_to_crashlog(): # set up for the target try: fw_01 = { 'host':'192.168.56.231', 'username':'admin', 'password':'P@ssw0rd', 'device_type':'fortinet', 'timeout':3 } net_connect = Netmiko( **fw_01 ) print("+ Connected to FG!") print("+ logfile: savethis.log") fplog.write('----starting suff_monitor.py ----\n') fplog.write(net_connect) fplog.write('\n-- results below: --\n') # if we're connected: check diag debug crashlog (or any other you'd like to) send_logcheck_cfg = net_connect.send_config_set( command ) fplog.write(send_logcheck_cfg) fplog.write('\n---- next while loop ----\n') print("+ looks like we just sent this command:\n\t%s\n\n" % send_logcheck_cfg ) print("send_init_cfg finished") ## check crashlog finished except paramiko.ssh_exception.SSHException as e: print(" > connection error: %s" % e) except ConnectionResetError as e: print("> connection error2: %s" % e) except UnboundLocalError as e: print("UnboundLocalError: local variable 'net_connect' referenced before assignment") print("> unbound variable error: %s" % e) ## end of connect_to_crashlog() # ########## #### main ########## print('y0;[') print('starting: connect_to_crashlog()') while True: print('debug: connect_to_crashlog() starting...') connect_to_crashlog() print("... sleeping 1...") time.sleep(1) print('sleep done. next True iter...') #### print("finished main()") Source 1 Quote