| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- #!/usr/bin/env python3
- import os
- import argparse
- import json
- def get_all_jsonfiles(rootdir, debug=False):
- jsonfiles = []
- try:
- for root, dirs, files in os.walk(rootdir):
- for file in files:
- if file.endswith(".json") or file.endswith(".json.libncrt"):
- filepath = "%s/%s" %(root, file)
- if debug:
- print("Found %s" % (filepath) )
- jsonfiles.append(filepath)
- except:
- pass
- return jsonfiles
- def fix_archext_in_json(jsonfile):
- if os.path.isfile(jsonfile) == False:
- return False
- lines = []
- with open(jsonfile, "r") as f:
- lines = f.readlines()
- fixcnt = 0
- with open(jsonfile, "w") as f:
- for line in lines:
- vext_name = "_zve32f"
- pext_name = "_xxldspn1x"
- if "\"nx" in line or "\"ux" in line:
- pext_name = "_xxldsp"
- if "fd" in line:
- vext_name = "v"
- else:
- vext_name = "_zve64f"
- oldext=''
- if '"bpv"' in line:
- oldext = '"bpv"'
- newext = "\"%s_zba_zbb_zbc_zbs%s\"" % (vext_name, pext_name)
- elif '"bv"' in line:
- oldext = '"bv"'
- newext = "\"%s_zba_zbb_zbc_zbs\"" % (vext_name)
- elif '"bp"' in line:
- oldext = '"bp"'
- newext = "\"_zba_zbb_zbc_zbs%s\"" % (pext_name)
- elif '"pv"' in line:
- oldext = '"pv"'
- newext = "\"%s%s\"" % (vext_name, pext_name)
- elif '"v"' in line:
- oldext = '"v"'
- newext = "\"%s\"" % (vext_name)
- elif '"p"' in line:
- oldext = '"p"'
- newext = "\"%s\"" % (pext_name)
- elif '"b"' in line:
- oldext = '"b"'
- newext = "\"_zba_zbb_zbc_zbs\""
- elif 'xxldspn1x' in line and pext_name == "_xxldsp":
- oldext = 'xxldspn1x'
- newext = 'xxldsp'
- elif '"v' in line and vext_name == "_zve64f":
- oldext = '"v'
- newext = "\"%s" % (vext_name)
- else:
- oldext = ""
- newext = ""
- if oldext != "":
- line = line.replace(oldext, newext)
- fixcnt = fixcnt + 1
- f.write(line)
- if fixcnt > 0:
- print("Fix json file %s, replace count %s" % (jsonfile, fixcnt))
- return True
- def fix_jsonfiles(rootdir):
- if os.path.isdir(rootdir) == False:
- return False
- jsonfiles = get_all_jsonfiles(rootdir)
- for jsfile in jsonfiles:
- #print("Fix file %s" % (jsfile))
- fix_archext_in_json(jsfile)
- for jsfile in jsonfiles:
- try:
- json.load(open(jsfile, 'r'))
- except:
- print("ERROR:Json file %s is invalid" % (jsfile))
- return True
- if __name__ == '__main__':
- parser = argparse.ArgumentParser(description="Nuclei SDK CLI Configuration Fixup Tools For GCC 13 upgrade")
- parser.add_argument('--jsondir', '-d', required=True, default='tools/scripts/nsdk_cli/', help="Where json configuration files located")
- args = parser.parse_args()
- fix_jsonfiles(args.jsondir)
- pass
|