Skip to content

Dem0n4ik/FastAPI-CVE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FastAPI-CVE

Опис коду

Цей код є веб-додатком, створеним за допомогою FastAPI, який надає інтерфейс для перегляду, пошуку та фільтрації даних про вразливості (CVE). Він використовує шаблони HTML для створення сторінок, а також обробляє дані з JSON-файлу cve_data.json.

1. Імпорт бібліотек

  • FastAPI, Query, HTMLResponse – для створення веб-API.
  • StaticFiles, Jinja2Templates – для роботи з веб-інтерфейсом.
  • Request – для отримання інформації про запит.
  • datetime, timedelta – для роботи з датами.
  • json – для роботи із JSON-форматом.

2. Ініціалізація програми

  • app = FastAPI() – створює FastAPI-додаток.
  • app.mount("/static", StaticFiles(directory="static"), name="static") – підключає папку static для роботи зі статичними файлами (у нашому випадку, CSS).
  • templates = Jinja2Templates(directory="templates") – підключає папку templates для HTML-шаблонів.

3. Файл даних

  • DATA_FILE = "cve_data.json" – вказує файл, який містить список вразливостей у форматі JSON.

4. Функції для обробки даних

  1. load_data:

    • Завантажує дані з cve_data.json.
    • Повертає вміст файлу у вигляді Python-об'єкта.
  2. filter_date:

    • Фільтрує вразливості за датою.
    • Враховує тільки ті вразливості, які були додані за останні days.
    • max_items – обмежує кількість результатів.
  3. filter_keyword:

    • Шукає вразливості, що містять вказане ключове слово в будь-якому полі.
    • Повертає не більше max_items результатів.
  4. filter_known:

    • Фільтрує вразливості, позначені як "knownRansomwareCampaignUse: known".
    • Повертає не більше max_items результатів.

5. Ендпоінти

  1. Головна сторінка

    • @app.get("/") – відображає головну сторінку за допомогою шаблону index.html.
  2. Інформаційна сторінка

    • @app.get("/info") – відображає інформаційну сторінку через шаблон info.html.
  3. Список усіх вразливостей

    • @app.get("/get/all"):
      • Завантажує дані з файлу.
      • Фільтрує вразливості, додані за останні 5 днів, обмежуючи результат 40 елементами.
      • Відображає результати через шаблон all.html.
  4. Нові вразливості

    • @app.get("/get/new"):
      • Завантажує дані з файлу.
      • Сортує їх за датою додавання.
      • Виводить перші 10 нових вразливостей через шаблон new.html.
  5. Відомі програми-вимагачі

    • @app.get("/get/known"):
      • Завантажує дані з файлу.
      • Відбирає вразливості, позначені як "known".
      • Відображає через шаблон known.html.
  6. Пошук вразливостей

    • @app.get("/get"):
      • Отримує параметр query через URL-запит.
      • Якщо query вказано, завантажує дані та шукає вразливості за ключовим словом.
      • Відображає результати через шаблон search.html.

Як працює додаток

  • Веб-додаток завантажує дані про вразливості із JSON-файлу.
  • На основі запитів користувача фільтрує ці дані за датою, ключовими словами або параметрами.
  • Результати відображаються у вигляді HTML-сторінок, створених на основі шаблонів Jinja2.

Встановлення

  1. Встановіть залежності з файлу requirements.txt:
    pip install -r requirements.txt

Запуск додатку

  1. Запустіть сервер:
    uvicorn main:app --reload --port 5000
  2. Відкрийте браузер і перейдіть за адресою:
    http://127.0.0.1:5000
    

Результати

   /

{9DC60E2B-53A9-4422-A795-BC73C009AB39}

   /info

{1396A51C-869F-4222-A163-12E4E2C58608}

   /get/all

{D4BAF74B-4384-4FC3-8BFE-AF4C71BE92D8}

   /get/new

{73C98025-07D7-4B65-B53F-B86C030A49C4}

   /get/know

{53406544-773C-465F-9FC5-216F71DE5667}

   /get

{A99062CD-8D1C-422C-B207-B987F617D560}

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published