def get(self, request, *args, **kwargs): project = kwargs.get("project", "default") if project not in get_project_list(): raise Http404("unknown project: {}".format(project)) template_name = "viperweb/cli.html" return render(request, template_name, {'project': project, 'projects': get_project_list()})
def get(self, request, *args, **kwargs): project = kwargs.get("project", "default") if project not in get_project_list(): raise Http404("unknown project: {}".format(project)) template_name = "viperweb/cli.html" return render(request, template_name, {'project': project, 'projects': get_project_list()})
def get(self, request, *args, **kwargs): template_name = 'viperweb/yara.html' # Read Rules action = request.GET.get('action') rule = request.GET.get('rule') rule_text = '' if action == 'list' or action is None: return render( request, template_name, { 'rule_list': self.yara_rule_list, 'rule_text': rule_text, 'projects': get_project_list() }) elif action == 'display' and rule: # Display Rule Contents rule_file = os.path.join(self.yara_rule_path, rule) if os.path.isfile(rule_file): # Only allow .yar or .yara files to be read file_name, file_ext = os.path.splitext(rule_file) if file_ext in ['.yar', '.yara']: rule_text = open(rule_file, 'r').read() if not rule_text: rule_text = "Empty Rule" else: rule_text = 'Invalid Rule File' else: rule_text = 'Invalid Rules File' elif action == 'delete': rule_name = request.GET.get('rulename') if rule_name.split('.')[-1] in ['yar', 'yara']: try: os.remove(os.path.join(self.yara_rule_path, rule_name)) except FileNotFoundError: raise Http404( "Yara rule file not found: {}".format(rule_name)) log.debug('Rule {0} Deleted'.format(rule_name)) rule_text = 'Rule {0} Deleted'.format(rule_name) else: rule_text = 'Invalid Rule' return render( request, template_name, { 'rule_list': self.yara_rule_list, 'rule_text': rule_text, 'projects': get_project_list() }) else: rule_text = 'Invalid Action' return render( request, template_name, { 'rule_list': self.yara_rule_list, 'rule_name': rule, 'rule_text': rule_text, 'projects': get_project_list() })
def post(self, request, *args, **kwargs): template_name = "viperweb/search_result.html" key = request.POST.get('key') value = request.POST.get('term').lower() cur_project = request.POST.get('cur_project', 'default') search_all_projects = request.POST.get('search-project-radio', 'search-this-project') print("projects: {}".format(search_all_projects)) # TODO(frennkie) remove DEBUG print("Key: {}".format(key)) print("Value: {}".format(value)) if not value: print("no search term provided") messages.error(request, "no search term provided") return redirect(reverse("main-page-project", kwargs={"project": cur_project})) # Set some data holders results = [] projects = [] # Search All Projects if search_all_projects == "search-all-projects": # Get list of project paths projects = get_project_list() else: # If not searching all projects what are we searching projects.append(cur_project) # Search each Project in the list for project in projects: db = open_db(project) print(db) # get results proj_results = [] rows = db.find(key=key, value=value) print(rows) for row in rows: proj_results.append([row.name, row.sha256]) results.append({'name': project, 'res': proj_results}) if results: # Return some things return render(request, template_name, {'results': results, 'searched_key': key, 'searched_value': value, 'projects': get_project_list()}) else: return render(request, template_name, {'results': [], 'searched_key': key, 'searched_value': value, 'projects': get_project_list()})
def post(self, request, *args, **kwargs): template_name = "viperweb/search_result.html" key = request.POST.get('key') value = request.POST.get('term').lower() cur_project = request.POST.get('cur_project', 'default') search_all_projects = request.POST.get('search-project-radio', 'search-this-project') print("projects: {}".format(search_all_projects)) # TODO(frennkie) remove DEBUG print("Key: {}".format(key)) print("Value: {}".format(value)) if not value: print("no search term provided") messages.error(request, "no search term provided") return redirect(reverse("main-page-project", kwargs={"project": cur_project})) # Set some data holders results = [] projects = [] # Search All Projects if search_all_projects == "search-all-projects": # Get list of project paths projects = get_project_list() else: # If not searching all projects what are we searching projects.append(cur_project) # Search each Project in the list for project in projects: db = open_db(project) print(db) # get results proj_results = [] rows = db.find(key=key, value=value) print(rows) for row in rows: proj_results.append([row.name, row.sha256]) results.append({'name': project, 'res': proj_results}) if results: # Return some things return render(request, template_name, {'results': results, 'searched_key': key, 'searched_value': value, 'projects': get_project_list()}) else: return render(request, template_name, {'results': [], 'searched_key': key, 'searched_value': value, 'projects': get_project_list()})
def get(self, request, *args, **kwargs): template_name = 'viperweb/yara.html' # Read Rules action = request.GET.get('action') rule = request.GET.get('rule') rule_text = '' if action == 'list' or action is None: return render(request, template_name, {'rule_list': self.yara_rule_list, 'rule_text': rule_text, 'projects': get_project_list()}) elif action == 'display' and rule: # Display Rule Contents rule_file = os.path.join(self.yara_rule_path, rule) if os.path.isfile(rule_file): # Only allow .yar or .yara files to be read file_name, file_ext = os.path.splitext(rule_file) if file_ext in ['.yar', '.yara']: rule_text = open(rule_file, 'r').read() if not rule_text: rule_text = "Empty Rule" else: rule_text = 'Invalid Rule File' else: rule_text = 'Invalid Rules File' elif action == 'delete': rule_name = request.GET.get('rulename') if rule_name.split('.')[-1] in ['yar', 'yara']: try: os.remove(os.path.join(self.yara_rule_path, rule_name)) except FileNotFoundError: raise Http404("Yara rule file not found: {}".format(rule_name)) log.debug('Rule {0} Deleted'.format(rule_name)) rule_text = 'Rule {0} Deleted'.format(rule_name) else: rule_text = 'Invalid Rule' return render(request, template_name, {'rule_list': self.yara_rule_list, 'rule_text': rule_text, 'projects': get_project_list() }) else: rule_text = 'Invalid Action' return render(request, template_name, {'rule_list': self.yara_rule_list, 'rule_name': rule, 'rule_text': rule_text, 'projects': get_project_list()})
def get(self, request, *args, **kwargs): template_name = "viperweb/index.html" # default to "default" project if none given project = kwargs.get('project', 'default') db = open_db(project) # Get all Samples sample_list = db.find('all') # set pagination details page = request.GET.get('page', 1) page_count = request.GET.get('count', 15) sample_count = len(sample_list) first_sample = int(page) * int(page_count) - int(page_count) + 1 last_sample = int(page) * int(page_count) if last_sample > sample_count: last_sample = sample_count paginator = Paginator(sample_list, page_count) try: samples = paginator.page(page) except PageNotAnInteger: samples = paginator.page(1) except EmptyPage: samples = paginator.page(paginator.num_pages) return render(request, template_name, {'sample_list': samples, 'sample_count': sample_count, 'samples': [first_sample, last_sample], 'extractors': Extractor().extractors, 'project': project, 'projects': get_project_list()})
def func_wrapper(viewset, *args, **kwargs): log.debug("running decorator: get_project_open_db - called by: {}". format(viewset)) project = viewset.kwargs.get(viewset.lookup_field_project, None) if project == 'default': __project__.open(project) db = Database() elif project in get_project_list(): log.debug("setting project to: {}".format(project)) __project__.open(project) db = Database() else: db = None if not db: error = { "error": { "code": "NotFound", "message": "Project not found: {}".format(project) } } log.error(error) raise NotFound(detail=error) return func(viewset, project=project, db=db, *args, **kwargs)
def create(self, request, project=None, db=None, *args, **kwargs): """Create a new Project""" # kwargs provided by URLs/Routers: - serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) if serializer.validated_data['name'] in get_project_list(): # exists already # return Response(data=serializer.validated_data, status=status.HTTP_200_OK) error = { "error": { "code": "ExistsAlready", "message": "Project exists already: {}".format( serializer.validated_data['name']) } } raise ValidationError(detail=error) new_project_new = serializer.validated_data['name'] __project__.open(new_project_new) serializer_new = self.get_serializer(new_project_new) headers = self.get_success_headers(serializer_new.data) return Response(data=serializer_new.data, status=status.HTTP_201_CREATED, headers=headers)
def get(self, request, *args, **kwargs): template_name = "viperweb/file.html" # default to "default" project if none given project = kwargs.get('project', 'default') db = open_db(project) sha256 = kwargs.get('sha256') if not sha256: log.error("no sha256 hashed provided") raise Http404("no sha256 hashed provided") path = get_sample_path(sha256) if not path: raise Http404( "could not retrieve file for sha256 hash: {}".format(sha256)) # Get additional details for file malware = db.find(key='sha256', value=sha256) try: malware_obj = malware[0] except IndexError: raise Http404( "could not find file for sha256 hash: {}".format(sha256)) note_list = [] notes = malware_obj.note if notes: for note in notes: note_list.append({ 'title': note.title, 'body': note.body, 'id': note.id }) module_history = [] analysis_list = malware_obj.analysis if analysis_list: for item in analysis_list: module_history.append({ 'id': item.id, 'cmd_line': item.cmd_line }) tag_list = db.list_tags_for_malware(sha256) children = db.list_children(malware_obj.id) parent = db.get_parent(malware_obj.id) return render( request, template_name, { 'malware': malware_obj, 'note_list': note_list, 'tag_list': tag_list, 'children': children, 'parent': parent, 'module_history': module_history, 'project': project, 'projects': get_project_list() })
def post(self, request, *args, **kwargs): project_name = request.POST['project'].replace(' ', '_') if project_name not in get_project_list(): log.debug("creating new project: {}".format(project_name)) log.debug("redirecting to project: {}".format(project_name)) __project__.open(project_name) return redirect(reverse('main-page-project', kwargs={'project': project_name}))
def get(self, request, *args, **kwargs): template_name = "viperweb/changelog.html" _changelog = {"foo": "bar"} return render(request, template_name, { 'changelog': _changelog, 'projects': get_project_list() })
def post(self, request, *args, **kwargs): project_name = request.POST['project'].replace(' ', '_') if project_name not in get_project_list(): log.debug("creating new project: {}".format(project_name)) log.debug("redirecting to project: {}".format(project_name)) __project__.open(project_name) return redirect(reverse('main-page-project', kwargs={'project': project_name}))
def get(self, request, *args, **kwargs): template_name = "viperweb/about.html" return render( request, template_name, { 'version': __version__, 'extractors': Extractor().extractors, 'projects': get_project_list() })
def get(self, request, *args, **kwargs): template_name = "viperweb/config.html" sections = list(cfg.__dict__) config_values = {} for section in sections: config_values[section] = cfg.get(section) return render(request, template_name, {'config_values': config_values, 'projects': get_project_list()})
def get(self, request, *args, **kwargs): template_name = "viperweb/config.html" sections = list(cfg.__dict__) config_values = {} for section in sections: config_values[section] = cfg.get(section) return render(request, template_name, {'config_values': config_values, 'projects': get_project_list()})
def post(self, request, *args, **kwargs): template_name = "viperweb/search.html" key = request.POST.get('key') value = request.POST.get('term').lower() curr_project = request.POST.get('curr_project') project_search = request.POST.get('project', False) print("Key: {}".format(key)) print("Value: {}".format(value)) # Set some data holders results = [] projects = [] # Search All Projects if project_search: # Get list of project paths projects = get_project_list() else: # If not searching all projects what are we searching projects.append(curr_project) # Search each Project in the list for project in projects: db = open_db(project) print(db) # get results proj_results = [] rows = db.find(key=key, value=value) print(rows) for row in rows: url = row.url.split('/')[2] proj_results.append([row.name, row.sha256, url]) results.append({'name': project, 'res': proj_results}) if results: # Return some things return render(request, template_name, {'results': results, 'projects': get_project_list()}) else: return render(request, template_name, {'results': [], 'projects': get_project_list()})
def get(self, request, *args, **kwargs): template_name = "viperweb/file.html" # default to "default" project if none given project = kwargs.get('project', 'default') db = open_db(project) sha256 = kwargs.get('sha256') if not sha256: log.error("no sha256 hashed provided") raise Http404("no sha256 hashed provided") path = get_sample_path(sha256) if not path: raise Http404("could not retrieve file for sha256 hash: {}".format(sha256)) # Get additional details for file malware = db.find(key='sha256', value=sha256) try: malware_obj = malware[0] except IndexError: raise Http404("could not find file for sha256 hash: {}".format(sha256)) note_list = [] notes = malware_obj.note if notes: for note in notes: note_list.append({'title': note.title, 'body': note.body, 'id': note.id}) module_history = [] analysis_list = malware_obj.analysis if analysis_list: for item in analysis_list: module_history.append({'id': item.id, 'cmd_line': item.cmd_line}) tag_list = db.list_tags_for_malware(sha256) children = db.list_children(malware_obj.id) parent = db.get_parent(malware_obj.id) return render(request, template_name, {'malware': malware_obj, 'note_list': note_list, 'tag_list': tag_list, 'children': children, 'parent': parent, 'module_history': module_history, 'project': project, 'projects': get_project_list()})
def get(self, request, *args, **kwargs): template_name = "viperweb/index.html" # default to "default" project if none given project = kwargs.get('project', 'default') db = open_db(project) # Get all Samples sample_list = db.find('all') return render(request, template_name, {'sample_list': sample_list, 'extractors': Extractor().extractors, 'project': project, 'projects': get_project_list()})
def get(self, request, *args, **kwargs): template_name = "viperweb/index.html" # default to "default" project if none given project = kwargs.get('project', 'default') db = open_db(project) # Get all Samples sample_list = db.find('all') return render(request, template_name, {'sample_list': sample_list, 'extractors': Extractor().extractors, 'project': project, 'projects': get_project_list()})
def get(self, request, *args, **kwargs): project = kwargs.get("project", "default") if project not in get_project_list(): raise Http404("unknown project: {}".format(project)) sha256 = kwargs.get("sha256") if not sha256: log.error("no sha256 hashed provided") raise Http404("no sha256 hashed provided") # Open a session try: path = get_sample_path(sha256) __sessions__.new(path) except Exception as err: log.error("Error: {}".format(err)) return HttpResponse('<span class="alert alert-danger">Invalid Submission</span>'.format()) try: task_list_url = '{0}/tasks/list'.format(cfg.cuckoo.cuckoo_host) task_list_response = requests.get(task_list_url) if task_list_response.status_code == 200: task_list = task_list_response.json() task_list_filtered = [x for x in task_list["tasks"] if x["sample"]["sha256"] == sha256] if task_list_filtered: task_list_filtered_sorted = sorted(task_list_filtered, key=itemgetter("added_on"), reverse=True) task_id = task_list_filtered_sorted[0]["id"] return HttpResponse('<a href="{0}/analysis/{1}/summary/" target="_blank"> Link to latest existing Cukoo Report</a>'.format(cfg.cuckoo.cuckoo_web, str(task_id))) except Exception as err: log.error("Error: {}".format(err)) return HttpResponse('<span class="alert alert-danger">Error Connecting To Cuckoo</span>'.format()) # If it doesn't exist, submit it. # Get the file data from viper file_data = open(__sessions__.current.file.path, 'rb').read() file_name = __sessions__.current.file.name if file_data: # Submit file data to cuckoo uri = '{0}{1}'.format(cfg.cuckoo.cuckoo_host, '/tasks/create/file') options = {'file': (file_name, file_data)} cuckoo_response = requests.post(uri, files=options) if cuckoo_response.status_code == 200: cuckoo_id = dict(cuckoo_response.json())['task_id'] return HttpResponse('<a href="{0}/analysis/pending/" target="_blank"> Link To Cuckoo (pending tasks)</a>'.format(cfg.cuckoo.cuckoo_web, str(cuckoo_id))) else: log.error("Cuckoo Response Code: {}".format(cuckoo_response.status_code)) return HttpResponse('<span class="alert alert-danger">Unable to Submit File</span>')
def get(self, request, *args, **kwargs): project = kwargs.get("project", "default") if project not in get_project_list(): raise Http404("unknown project: {}".format(project)) sha256 = kwargs.get("sha256") if not sha256: log.error("no sha256 hashed provided") raise Http404("no sha256 hashed provided") # Open a session try: path = get_sample_path(sha256) __sessions__.new(path) except Exception as err: log.error("Error: {}".format(err)) return HttpResponse('<span class="alert alert-danger">Invalid Submission</span>'.format()) try: task_list_url = '{0}/tasks/list'.format(cfg.cuckoo.cuckoo_host) task_list_response = requests.get(task_list_url) if task_list_response.status_code == 200: task_list = task_list_response.json() task_list_filtered = [x for x in task_list["tasks"] if x["sample"]["sha256"] == sha256] if task_list_filtered: task_list_filtered_sorted = sorted(task_list_filtered, key=itemgetter("added_on"), reverse=True) task_id = task_list_filtered_sorted[0]["id"] return HttpResponse('<a href="{0}/analysis/{1}/summary/" target="_blank"> Link to latest existing Cukoo Report</a>'.format(cfg.cuckoo.cuckoo_web, str(task_id))) except Exception as err: log.error("Error: {}".format(err)) return HttpResponse('<span class="alert alert-danger">Error Connecting To Cuckoo</span>'.format()) # If it doesn't exist, submit it. # Get the file data from viper file_data = open(__sessions__.current.file.path, 'rb').read() file_name = __sessions__.current.file.name if file_data: # Submit file data to cuckoo uri = '{0}{1}'.format(cfg.cuckoo.cuckoo_host, '/tasks/create/file') options = {'file': (file_name, file_data)} cuckoo_response = requests.post(uri, files=options) if cuckoo_response.status_code == 200: cuckoo_id = dict(cuckoo_response.json())['task_id'] return HttpResponse('<a href="{0}/analysis/pending/" target="_blank"> Link To Cuckoo (pending tasks)</a>'.format(cfg.cuckoo.cuckoo_web, str(cuckoo_id))) else: log.error("Cuckoo Response Code: {}".format(cuckoo_response.status_code)) return HttpResponse('<span class="alert alert-danger">Unable to Submit File</span>')
def post(self, request, *args, **kwargs): template_name = 'viperweb/yara.html' rule_name = request.POST.get('rule_name') rule_text = request.POST.get('rule_text') rule_file = os.path.join(self.yara_rule_path, rule_name) # Prevent storing files in a relative path or with a non yar extension rule_test = rule_name.split('.') if len(rule_test) == 2 and rule_test[-1] in ['yar', 'yara']: # if file exists overwrite with open(rule_file, 'w') as rule_edit: rule_edit.write(rule_text) else: rule_text = "The File Name did not match the style 'name.yar'" return render(request, template_name, {'rule_list': self.yara_rule_list, 'rule_name': rule_name, 'rule_text': rule_text, 'projects': get_project_list()})
def post(self, request, *args, **kwargs): template_name = 'viperweb/yara.html' rule_name = request.POST.get('rule_name') rule_text = request.POST.get('rule_text') rule_file = os.path.join(self.yara_rule_path, rule_name) # Prevent storing files in a relative path or with a non yar extension rule_test = rule_name.split('.') if len(rule_test) == 2 and rule_test[-1] in ['yar', 'yara']: # if file exists overwrite with open(rule_file, 'w') as rule_edit: rule_edit.write(rule_text) else: rule_text = "The File Name did not match the style 'name.yar'" return render(request, template_name, {'rule_list': self.yara_rule_list, 'rule_name': rule_name, 'rule_text': rule_text, 'projects': get_project_list()})
def func_wrapper(viewset, *args, **kwargs): log.debug("running decorator: get_project_open_db - called by: {}".format(viewset)) project = viewset.kwargs.get(viewset.lookup_field_project, None) if project == 'default': __project__.open(project) db = Database() elif project in get_project_list(): log.debug("setting project to: {}".format(project)) __project__.open(project) db = Database() else: db = None if not db: error = {"error": {"code": "NotFound", "message": "Project not found: {}".format(project)}} log.error(error) raise NotFound(detail=error) return func(viewset, project=project, db=db, *args, **kwargs)
def create(self, request, project=None, db=None, *args, **kwargs): """Create a new Project""" # kwargs provided by URLs/Routers: - serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) if serializer.validated_data['name'] in get_project_list(): # exists already # return Response(data=serializer.validated_data, status=status.HTTP_200_OK) error = {"error": {"code": "ExistsAlready", "message": "Project exists already: {}".format(serializer.validated_data['name'])}} raise ValidationError(detail=error) new_project_new = serializer.validated_data['name'] __project__.open(new_project_new) serializer_new = self.get_serializer(new_project_new) headers = self.get_success_headers(serializer_new.data) return Response(data=serializer_new.data, status=status.HTTP_201_CREATED, headers=headers)
def complete(text, state): # filesystem path completion only makes sense for a few commands/modules fs_path_completion = False # clean up user input so far (no leading/trailing/duplicate spaces) line = " ".join(readline.get_line_buffer().split()) words = line.split(" ") # split words; e.g. store -f /tmp -> ['store', '-f', '/tmp'] if words[0] in [i for i in self.cmd.commands]: # handle completion for commands # enable filesystem path completion for certain commands (e.g. export, store) if words[0] in [x for x in self.cmd.commands if self.cmd.commands[x]["fs_path_completion"]]: fs_path_completion = True options = [key for key in self.cmd.commands[words[0]]["parser_args"]] # enable tab completion for projects --switch if words[0] == "projects": if "--switch" in words or "-s" in words: options += get_project_list() # enable tab completion for copy (list projects) if words[0] == "copy": options += get_project_list() completions = [i for i in options if i.startswith(text) and i not in words] elif words[0] in [i for i in __modules__]: # handle completion for modules if len(words) == 1: # only the module name is give so far - present all args and the subparsers (if any) options = [key for key in __modules__[words[0]]["parser_args"]] options += [key for key in __modules__[words[0]]["subparser_args"]] elif len(words) == 2: # 1 complete word and one either complete or incomplete that specifies the subparser or an arg if words[1] in list(__modules__[words[0]]["parser_args"]): # full arg for a module is given options = [key for key in __modules__[words[0]]["parser_args"]] elif words[1] in list(__modules__[words[0]]["subparser_args"]): # subparser is specified - get all subparser args options = [key for key in __modules__[words[0]]["subparser_args"][words[1]]] else: options = [key for key in __modules__[words[0]]["parser_args"]] options += [key for key in __modules__[words[0]]["subparser_args"]] else: # more that 2 words if words[1] in list(__modules__[words[0]]["subparser_args"]): # subparser is specified - get all subparser args options = [key for key in __modules__[words[0]]["subparser_args"][words[1]]] else: options = [key for key in __modules__[words[0]]["parser_args"]] completions = [i for i in options if i.startswith(text) and i not in words] else: # initial completion for both commands and modules completions = [i for i in self.cmd.commands if i.startswith(text)] completions += [i for i in __modules__ if i.startswith(text)] if state < len(completions): return completions[state] if fs_path_completion: # completion for paths only if it makes sense if text.startswith("~"): text = "{0}{1}".format(expanduser("~"), text[1:]) return (glob.glob(text + '*') + [None])[state] return
def get_queryset(self, project=None, db=None, *args, **kwargs): projects = get_project_list() if not next((i for i in projects if i == "default"), None): projects.append("default") # make sure "default" is part of list of projects return projects
def get(self, request, *args, **kwargs): template_name = "viperweb/file.html" # default to "default" project if none given project = kwargs.get('project', 'default') db = open_db(project) sha256 = kwargs.get('sha256') if not sha256: log.error("no sha256 hashed provided") raise Http404("no sha256 hashed provided") path = get_sample_path(sha256) if not path: raise Http404("could not retrieve file for sha256 hash: {}".format(sha256)) __sessions__.new(path) # Get the file info - TODO (frennkie) this should not be done here.. move it to backend file_info = { 'id': __sessions__.current.file.id, 'name': __sessions__.current.file.name, 'url': __sessions__.current.file.url, 'path': __sessions__.current.file.path, 'size': __sessions__.current.file.size, 'type': __sessions__.current.file.type, 'mime': __sessions__.current.file.mime, 'md5': __sessions__.current.file.md5, 'sha1': __sessions__.current.file.sha1, 'sha256': __sessions__.current.file.sha256, 'sha512': __sessions__.current.file.sha512, 'ssdeep': __sessions__.current.file.ssdeep, 'crc32': __sessions__.current.file.crc32, 'parent': __sessions__.current.file.parent, 'children': __sessions__.current.file.children.split(','), 'tag_list': __sessions__.current.file.tags } # Get additional details for file malware = db.find(key='sha256', value=sha256) # TODO (frennkie) this should not be done here.. move it to backend if not malware: raise Http404("could not find file for sha256 hash: {}".format(sha256)) note_list = [] notes = malware[0].note if notes: for note in notes: note_list.append({'title': note.title, 'body': note.body, 'id': note.id}) module_history = [] analysis_list = malware[0].analysis if analysis_list: for item in analysis_list: module_history.append({'id': item.id, 'cmd_line': item.cmd_line}) tag_list = db.list_tags_for_malware(sha256) return render(request, template_name, {'file_info': file_info, 'note_list': note_list, 'tag_list': tag_list, 'project': project, 'projects': get_project_list(), 'module_history': module_history})
def get(self, request, *args, **kwargs): template_name = "viperweb/about.html" return render(request, template_name, {'version': __version__, 'extractors': Extractor().extractors, 'projects': get_project_list()})
def get_queryset(self, project=None, db=None, *args, **kwargs): projects = get_project_list() if not next((i for i in projects if i == "default"), None): projects.append( "default") # make sure "default" is part of list of projects return projects
def get(self, request, *args, **kwargs): template_name = "viperweb/changelog.html" _changelog = {"foo": "bar"} return render(request, template_name, {'changelog': _changelog, 'projects': get_project_list()})