Привет начинающим кодерам! Сегодня мы запилим простенький скрипт на Python, который будет выявлять дыры в нашей системе.
Приступим к написанию. Использовать будем следующие библиотеки
Для того, чтобы в консоли получить цветной текст, дописшем: colorama.init()
Добавим аргументы:
Введем переменные:
Список установленных программ будем получать через wmic.
Ввывод будем записывать в .txt файлы:
Добавляем в список имена софта:
Очищаем от \n и ненужных элементов:
Аналогично и с версиями софта:
Ищем в списке с именами софта, софт который указал пользователь для поиска:
Если найдем искомый софт в списке с именами софта, то ищем в другом списке версию софта:
Теперь будем сравнивать если версия уязвимого ПО равна версии установленного ПО или меньше, то пишем что уязвимо, если нет, то пишем не уязвимо:
Весь скрипт:
Пример вывода программы:
Приступим к написанию. Использовать будем следующие библиотеки
Python:
from subprocess import check_output
import argparse
from termcolor import *
import colorama
Для того, чтобы в консоли получить цветной текст, дописшем: colorama.init()
Добавим аргументы:
Python:
parser = argparse.ArgumentParser(description='Find vuln PO')
parser.add_argument('-vs', help ='Vuln version PO')
parser.add_argument('-nm', help ='PO Name')
args = parser.parse_args()
vulnvers = args.vs
namepo = args.nm
Python:
count = 0
count2 = 0
s = []
s2 = []
a = check_output(["wmic", "product", "get", "name"]) # Имена софта
b = check_output(["wmic", "product", "get", "version"]) # Версии софта
Ввывод будем записывать в .txt файлы:
Python:
handle = open('pen.txt','w')
handle.write(a)
handle.close()
handle = open('pen2.txt','w')
handle.write(b)
handle.close()
Python:
handle = open('pen.txt')
for x in handle:
s.append(x)
Python:
s = map(lambda m: m.strip(), s)
s.pop(0)
s.pop(-1)
Аналогично и с версиями софта:
Python:
handle = open('pen2.txt')
for x in handle:
s2.append(x)
s2 = map(lambda m: m.strip(), s2)
s2.pop(0)
s2.pop(-1)
Python:
for x in s:
count += 1 # Записуем его номер, чтобы найти его версию в другом списке
if namepo in x:
break
Python:
for x in s2:
count2 += 1
if count2 == count:
vers = x # После того как найдем версию искомого софта приравниваем vers к версии софта
break
Python:
if vulnvers <= vers:
cprint (namepo + ' - Vuln!' ,'green')
else:
cprint (namepo + ' - Not Vuln!' ,'red')
Python:
from subprocess import check_output
from termcolor import *
import colorama
import os
colorama.init()
vuln = {'Python 2.7.15':'2.9','VMware Tools':'11'} # Тут дополнейте уязвимые программы и их версии
# Эти две программы добавлены для примера/теста
s = []
s2 = []
a = check_output(["wmic", "product", "get", "name"])
b = check_output(["wmic", "product", "get", "version"])
handle = open('pen.txt','w')
handle.write(a)
handle.close()
handle = open('pen2.txt','w')
handle.write(b)
handle.close()
handle = open('pen.txt')
for x in handle:
s.append(x)
s = map(lambda m: m.strip(), s)
s.pop(0)
s.pop(-1)
handle = open('pen2.txt')
for x in handle:
s2.append(x)
handle.close()
s2 = map(lambda m: m.strip(), s2)
s2.pop(0)
s2.pop(-1)
os.unlink('pen.txt')
os.unlink('pen2.txt')
dct = dict(zip(s,s2))
for x in dct.keys():
for j in vuln.keys():
if x == j:
if dct[x] <= vuln[j]:
cprint (x + ' ' + 'Vuln!','green')
Код:
C:\Users\!!!!\Desktop>python main.py
Python 2.7.15 Vuln!
VMware Tools Vuln!