From 5b806425d9b837be57a3639f8c47590fad363f29 Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Tue, 28 Oct 2025 05:18:37 +0000 Subject: [PATCH] 1.3 --- core/__pycache__/forms.cpython-311.pyc | Bin 523 -> 1033 bytes core/__pycache__/urls.cpython-311.pyc | Bin 447 -> 546 bytes core/__pycache__/views.cpython-311.pyc | Bin 3090 -> 4698 bytes core/forms.py | 6 ++++- core/templates/core/index.html | 15 +++++++++++ core/templates/core/vulnerability_search.html | 25 ++++++++++++++++++ core/urls.py | 3 ++- core/views.py | 25 +++++++++++++++++- requirements.txt | 1 + 9 files changed, 72 insertions(+), 3 deletions(-) create mode 100644 core/templates/core/vulnerability_search.html diff --git a/core/__pycache__/forms.cpython-311.pyc b/core/__pycache__/forms.cpython-311.pyc index 7e82c9aa98ffbcc3a5d9db5f267498d8a1ae4422..3651588da49c2a9af21b652a3c1268205574843e 100644 GIT binary patch delta 587 zcmeBX>Ez&B&dbZi00bTW44K-D6Zs?<<0h(`>o766Go-MzFr=`iGG;M>6o9}oW(J1U zKnwvZ;-|?`1aegoJBZ)_5g-rW;&jePEON_C%}Kc>kchA_J`ZT&EsoG2ABdbV zvRpaXlKRvlZjdoNAc7Y}@WTj@Ma2$4q5%$Xh^tK~ol?I+`GT$g1@VB3;sIC011_+L z+>p|kp*lzJg1*a%(hE|d7o|e4NQGWt5r-g%;UIJUG+A%4rDP@MrRPH&&cY1}sv=gP uToM1|enwd?DIk*(h>M#iZ)0?KVPj$pWBkB?ot%+6C+j0v?h6hTV56646abk}+%!3mQAWn) w0s~GoxtUQ%?FI`+gG-0x1rd!4`mPsP+%B@XU14$iz|O+Y)W8jbMSMWh0JE$=LI3~& delta 158 zcmZ3)vY%OfIWI340}wn-`JZtLNIwQ~V1NzE_#8D+U4EjMnOr(k6l)4+FoP!7OOTW% z<1Lng#FC7cj35rv#2s=I-^eigX|he0WK^E)$mq+(50n5&7N<>~!6+l9cYy&5ntXv# TN8kf1Ge1)UHwYH-0(AfY!%HM9 diff --git a/core/__pycache__/views.cpython-311.pyc b/core/__pycache__/views.cpython-311.pyc index cedcc736aa0bee51ce4aa3dd89156e0e5f187add..7d78b6866d395d484c57a91f78b74af158f92fab 100644 GIT binary patch delta 1767 zcmZux-ER{|5Z^n0-TC5=;s6e&*olq7Dzc#sR80t!#(@T?k%|Zw|17C3F0o%`+V z%y@QYcGrtRGv>YT@wgGt(m7Q8OIYv*ncTv@)R8hb&M^oh>?rZ$yfwSW-PSCO3)p!R zjdx)epa*k+UhFuJ68ys4&`Yf8y)aX%=JCm5NjzC4Wpn3PtyB?7{{3R9C|^G>=1F0S z8Zzqd_8s5+`Wwpx)E{l<9T7-_dl0kt*qMlWj62Ol)!W>DCZ>K1xLy5)OFDbNg``v; zzneLt9^iw!!=NzzHEY9cu~HW+a+O>sCqTXHL5_dG&^@>b7NNUHX4IBz*U3rLU==jY zfQv<#xe8{8`?vf|hY)yJT59=+LGHu{x zdgvPG<$Sg*%6XF=O`8H1r2;9=(2Y(1mWAa<=)Ex=^?a!&CRo!6L9#_mMnOBbXM~U{ zX-2Mya$%}inT*iDkt?KHj%3Et1ChBsg(?wK^{o#kD_JilIVG1%36`X2bXPlBDd8cs z@#G){+7$9KHFp(CV!k3`D<6|1;s-S-9SWKhWz#<0lpt>>bWf~c(=A>rh*l|*>3_TJ zIr3CRj?$R4`3Zs0^Rc!kZ&7I&z_is!iEbdxR4bBb+G#x|XO#>sBxk83t(?3LAkk+K ziA0+4SwyVo+x@(9$tCdZr$3s6m)AlYLf^U&(}h?oZFv2yQ-;fX^TyJSpIl+h72fd0 zmuFX$bzi^k>%V0;1m8zP9}e9I0U_ncuiLeYCiS8eN|1A6GdJZJ0--)$^57MdS7=j}!yv?ObRD6kRRzZzW0tPSch z2yWYck!j-+XY?jk_pXH3!g}wChcUhP)RNPPCs%7L)wQx7PirF=_4qs5rExvpd{=v~ zpvUo&Ul2gmf_m}c>lCmVr~9*FCKS2qy@DQ-o>-+kA+=!LZQ zjy}u-0I&N`>;BW)|M&^erj14b;SVPo?AkWJPYVq`#M;FPZ72)8F649}r`dB7J>~Cq zzQGUoqDQ^m>7eb=;huEB_IA!>7Y5H-ckVDal2<64qY$BRf&x9cuMp{_GCklw zxufMOu9d`NWCE7-k5sx304Xtyq0S54>KDR`hXyqC95#@VaUxkq&g&~DCha-vuOmjwYrm(dzL~*6C z14-@_)?fxrj)^_Cyo|T_LJM;86I0wWb5b|HXJ=*QH67D*OH`N^3a zUW`hUw{U1MDo?%(Bt<5(aq6*20F@N!O}65ckun7`Z!s6;m)~McEoKLD6d<5TZgK&q z7^?$NL~?UC=VnGGO`gfRg4QM`K#?LN5CO8N$N@;KWGGSqvE_ioFAkgB{FKt1RJ$Tq vAeRw{i`yoz7PL}Qyug5hZZL2)fZ+`W&IT}?EGDERz#zfs$@l?Gf=vYgxCcVN diff --git a/core/forms.py b/core/forms.py index 21e602d..ed7a9bc 100644 --- a/core/forms.py +++ b/core/forms.py @@ -1,4 +1,8 @@ from django import forms class UploadFileForm(forms.Form): - file = forms.FileField() \ No newline at end of file + file = forms.FileField() + +class VulnerabilitySearchForm(forms.Form): + application_name = forms.CharField(max_length=100, label="Application Name") + application_website = forms.URLField(label="Application Website", required=False) \ No newline at end of file diff --git a/core/templates/core/index.html b/core/templates/core/index.html index 6a0a55d..b745fe1 100644 --- a/core/templates/core/index.html +++ b/core/templates/core/index.html @@ -63,6 +63,21 @@ +
+
+ + Vulnerability Search +
+
+
+
+ + +
+
+
+
+
diff --git a/core/templates/core/vulnerability_search.html b/core/templates/core/vulnerability_search.html new file mode 100644 index 0000000..a288bbe --- /dev/null +++ b/core/templates/core/vulnerability_search.html @@ -0,0 +1,25 @@ +{% extends 'base.html' %} + +{% block content %} +
+

Vulnerability Search

+
+ {% csrf_token %} + {{ form.as_p }} + +
+ + {% if results %} +
+

Search Results

+
+ {% for result in results %} +
+
{{ result.cve_id }}
+

{{ result.description }}

+
+ {% endfor %} +
+ {% endif %} +
+{% endblock %} diff --git a/core/urls.py b/core/urls.py index 048e0b9..a619f7a 100644 --- a/core/urls.py +++ b/core/urls.py @@ -1,8 +1,9 @@ from django.urls import path -from .views import dashboard, upload_inventory +from .views import dashboard, upload_inventory, vulnerability_search urlpatterns = [ path("", dashboard, name="dashboard"), path("upload/", upload_inventory, name="upload_inventory"), + path("search/", vulnerability_search, name="vulnerability_search"), ] \ No newline at end of file diff --git a/core/views.py b/core/views.py index 20a38a4..ba7bc06 100644 --- a/core/views.py +++ b/core/views.py @@ -1,8 +1,9 @@ from django.shortcuts import render, redirect from .models import Application, Vulnerability -from .forms import UploadFileForm +from .forms import UploadFileForm, VulnerabilitySearchForm import csv import io +import requests def dashboard(request): # Placeholder data @@ -47,3 +48,25 @@ def upload_inventory(request): else: form = UploadFileForm() return render(request, 'core/upload_inventory.html', {'form': form}) + +def vulnerability_search(request): + form = VulnerabilitySearchForm() + results = [] + if request.method == 'POST': + form = VulnerabilitySearchForm(request.POST) + if form.is_valid(): + application_name = form.cleaned_data['application_name'] + # Basic search using NVD API + url = f"https://services.nvd.nist.gov/rest/json/cves/1.0?keyword={application_name}" + try: + response = requests.get(url) + data = response.json() + if 'result' in data: + for cve_item in data['result']['CVE_Items']: + cve_id = cve_item['cve']['CVE_data_meta']['ID'] + description = cve_item['cve']['description']['description_data'][0]['value'] + results.append({'cve_id': cve_id, 'description': description}) + except requests.exceptions.RequestException as e: + form.add_error(None, f"Error fetching data from NVD: {e}") + + return render(request, 'core/vulnerability_search.html', {'form': form, 'results': results}) diff --git a/requirements.txt b/requirements.txt index e22994c..081e3cb 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ Django==5.2.7 mysqlclient==2.2.7 python-dotenv==1.1.1 +requests