Рубрики
Без рубрики

GSOC 20: неделя 2

Всем привет! Это снова Нирай. Сегодня я буду делиться своим кодом вклад второй недели … Помечено Python, OpenSource, GSOC.

GSOC 20 (12 Часть серии)

Всем привет!

Это снова Нирай. Сегодня я буду делиться своим вкладом кода второй недели GSOC.

Фон

Как я обсуждал в моих более ранних блогов, у нас есть Сканер Модуль, который рекурсивно сканирует каждый двоичный файл данного каталога и разбирающихся строки из двоичного файла и пересылает его каждому шашкам, и они определяют поставщику, продукт и версию и передают его сканеру, затем он выглядит в локальной копии базы данных NVD и Находит все уязвимости, связанные с данным продуктом и отображает его.

Здесь Сканер Модуль использует Файл Утилита командной строки Unix, если существует или Файл Модуль, чтобы проверить, если данный файл является бинарным исполняемым и использует строки Утилита командной строки GNU, если существует или строки Модуль для разборки строк из двоичного файла.

Мы также предоставляем возможность извлечь архив и сканировать двоичные файлы в нем. Для этого у нас есть Экстракт Модуль, который поддерживает извлечение общих архивов упаковки, таких как RPM, DEB, TAR, EXE, MSI и т. Д.

Что я сделал на этой неделе?

Я начал работать над моим заданием GSOC по улучшению параллелизма двоичного инструмента CVE. Мы собираемся использовать асинсио Для IO связанной задачи, как файл чтения/записи, загрузка из Интернета и т. Д. И одновременно. ProcessPoolExecutor для CPU связанных задач.

Я преобразовал синхронные функции IO, связанные с IO Экстракт , строки и Файл модули в асинхронные COROUTINES. Поскольку эти модули нуждаются в поддержке Async-файла IO и асинсио не имеет этой функциональности встроенного. Итак, я начал поиск внешних библиотек, но я не могу найти одну библиотеку со всеми необходимыми функциями. Итак, я решил построить один с нуля. После 2-3 дней исследований и кодирования я наконец создал асинхронный Fileo Класс со всем способом, который синхронный файловый объект в Python обеспечивает и также реализован асинхронный альтернатива Tempfile’s Временноеfile С Namedtemporaryfile и SPALEDTEMPORARYFILE классы.

Примечание: aiofiles Является известным асинхронным файлом IO модулем, но ему не хватает интерфейсов для tempfile и забил И у него также есть много вопросов и PR открыта более года.

Поскольку мы используем подпроцесс во многих местах, я также создал Async Run_command COROUTINE, который запускается командой в неблокирующем способе. Я также преобразовал тест синхронного блока асинхронно, используя питиш ‘s Pytest-Asyncio Удлинительный плагин.

Если вы хотите узнать, как я реализовал выше async-утилиты, оформить заказ мой async_utils модуль.

Что я делаю на этой неделе?

Я собираюсь разделить Сканер Модуль на два отдельных модуля: 1) версия_scanner и 2) CVE_SCanner – Я думаю о том, чтобы назвать это cve_fetcher. чтобы избежать недоразумений Но так как я упомянул CVE_SCanner В моем предложении и вопросах давайте сохраним это сейчас. Я буду слиться get_cves Методы Cvedb. и Сканер Модули в один модуль называется CVE_SCanner который использует Cvedb. . Это сделает код более ремонтом и читаемым, как только я преобразую его в асинхронную.

Я также думаю о том, чтобы сделать мою собственную библиотеку как альтернативу aiofiles который также реализует другие функции файловых операций высокого уровня, такие как забил и разверните его на пипи, чтобы другие разработчики могли получить выгоду от нее.

GSOC 20 (12 Часть серии)

Оригинал: “https://dev.to/nirajkamdar/gsoc-20-week-2-82o”