def upload_wordlist(request): if request.method == 'POST': node_name = request.POST["node"] name = request.POST["name"] if "file" in request.FILES: # get from file f = request.FILES["file"] rule_file = f.read().decode() node_item = get_object_or_404(Node, name=node_name) hashcat_api = HashcatAPI(node_item.hostname, node_item.port, node_item.username, node_item.password) res = hashcat_api.upload_wordlist(name, rule_file) if res["response"] == "error": return node(request, node_name, error_msg=res["message"]) return redirect('node', node_name)
def node(request, node_name, error_msg=""): context = {} context["Section"] = "Nodes" if len(error_msg) != 0: context["error_message"] = error_msg template = loader.get_template('Nodes/node.html') return HttpResponse(template.render(context, request)) node_item = get_object_or_404(Node, name=node_name) context["node_name"] = node_item.name context["hostname"] = node_item.hostname context["port"] = node_item.port if request.method == 'POST': if request.POST["action"] == "synchronize": hashcat_api = HashcatAPI(node_item.hostname, node_item.port, node_item.username, node_item.password) node_data = hashcat_api.get_hashcat_info() rule_list = Hashcat.get_rules() mask_list = Hashcat.get_masks() wordlist_list = Hashcat.get_wordlists() for rule in rule_list: if not rule["name"] in node_data["rules"]: hashcat_api.upload_rule(rule["name"], open(rule["path"], 'rb').read()) elif node_data["rules"][rule["name"]]["md5"] != rule["md5"]: hashcat_api.upload_rule(rule["name"], open(rule["path"], 'rb').read()) for mask in mask_list: if not mask["name"] in node_data["masks"]: hashcat_api.upload_mask(mask["name"], open(mask["path"], 'rb').read()) elif node_data["masks"][mask["name"]]["md5"] != mask["md5"]: hashcat_api.upload_mask(mask["name"], open(mask["path"], 'rb').read()) for wordlist in wordlist_list: if not wordlist["name"] in node_data["wordlists"]: hashcat_api.upload_wordlist( wordlist["name"], open(wordlist["path"], 'rb').read()) elif node_data["wordlists"][ wordlist["name"]]["md5"] != wordlist["md5"]: hashcat_api.upload_wordlist( wordlist["name"], open(wordlist["path"], 'rb').read()) hashcat_api = HashcatAPI(node_item.hostname, node_item.port, node_item.username, node_item.password) node_data = hashcat_api.get_hashcat_info() if node_data["response"] == "error": return node(request, node_name, error_msg=node_data["message"]) rule_list = Hashcat.get_rules() mask_list = Hashcat.get_masks() wordlist_list = Hashcat.get_wordlists() for rule in rule_list: if not rule["name"] in node_data["rules"]: rule["synchro"] = False elif node_data["rules"][rule["name"]]["md5"] != rule["md5"]: rule["synchro"] = False else: rule["synchro"] = True for mask in mask_list: if not mask["name"] in node_data["masks"]: mask["synchro"] = False elif node_data["masks"][mask["name"]]["md5"] != mask["md5"]: mask["synchro"] = False else: mask["synchro"] = True for wordlist in wordlist_list: if not wordlist["name"] in node_data["wordlists"]: wordlist["synchro"] = False elif node_data["wordlists"][ wordlist["name"]]["md5"] != wordlist["md5"]: wordlist["synchro"] = False else: wordlist["synchro"] = True hash_type_list = sorted(node_data["hash_types"], key=itemgetter('id')) context["version"] = node_data["version"] context["rule_list"] = rule_list context["mask_list"] = mask_list context["wordlist_list"] = wordlist_list context["hash_type_list"] = hash_type_list template = loader.get_template('Nodes/node.html') return HttpResponse(template.render(context, request))