Почему Python — это не просто мода, а реальный инструмент
В мире кибербезопасности Python — это не просто тренд, а мощный инструмент. Его синтаксис ясен, а возможности безграничны. От автоматизации задач до создания собственных инструментов — Python предоставляет всё необходимое для эффективной работы.Всех приветствую дорогие друзья! Долго думая, я решил начать цикл статей по сами знаете какой теме. В этой части я посмотрю , нужно ли вам это вообще. Вести я буду этот цикл параллельно с простыми уроками по питону. И собственно проводить в этом разделе. Т.к. относится это к хеку. Начнем)
Почему Python
1. Всем итак понятно, что его синтаксис очень и очень понятен.
2. Python имеет много плюшек. Очень много отличных библиотек зачастую повышающих функционал.
3. Python он и в Windows Python.
Как все будет
Мы начнем с малого. Сегодня создадим простой сканер портов. А в конце цикла, напишем для себя простенький фреймворк с некоторым количеством полезностей) 
Я постараюсь в разы облегчить все что мы будем писать. Ну и как же без практики? Конечно же будут задания! Куда без них.
Пишем простой сканер портов
Чтобы особо умные люди не задовали вопросов по типу
Отвечаю сразу: А затем, чтобы вырваться из объятий ламера и уметь самомуЗачем писать если есть nmap?
Для начала обсудим, как же будет работать наш "Hello, world!" в этой сфере)
Для совсем не знающих о портах представляю свои обьяснения ниже:
А вот теперь поговорим про закрытые порты и открытые порты.Постараюсь обойтись без терминов. Представьте себе реальный порт(те что с кораблями). Так вот корабль это определенный кусок данных(пакет), он движется по определенному пути(каналу) к определенному порту. В этом порту с ним произойдет какие либо действия. Этот карабль(пакет) могут разгрузить(получить ланные) , а могут послать подальше если порт закрыт на ремонт.
Порт закрыт - это значит что установить соединение с этим портом нельзя.
Разберемся пока что с этим. Вернемся к обсуждению алгоритма работы нашего простенького сканера.Открытый порт - аналогично, это порт с которым можно установить соединение и обменятся информацией.
		Код:
	
	1. Спрашивает тип.
2. Спрашивает данные.
3. Создает сокет
4. Подключается к host:port
5. Определяет открыт или закрыт.
6. Красиво выводит)Приступим к написанию нашего кода.Сокет - коротко говоря, интерфейс для обмена данными между устройствами.
1. Подключаем библиотеки. Нам понадобятся 2-е библиотеки, socket и termcolor( отдельное спасибо DarkNode)
		Код:
	
	from termcolor import colored
import socket
		Код:
	
	...
print("~"*50)
print("\t[1] --- сканировать отделный порт")
print("\t[2] --- сканировать список")
print("~"*50, "\n")
text_a = input("[scan]--> ")
if text_a == "1":
    fanc1()
elif text_a == "2":
    fanc2()
else:
    print(colored("Параметр введен не правильно!", 'red'))
...3. Начнем с функции 1.
		Код:
	
	color_a = colored("[+] ", 'green')
print("~"*50)
host = input(color_a + "Host --> ")
port = int(input(color_a + "Port --> "))
print("~"*50)Теперь создадим сокет
		Код:
	
	scan = socket.socket()
		Код:
	
	color_b = colored("[!] ", 'red')
color_c = colored("[!] ", 'yellow')
try:
    scan.connect((host, port))
except scan.error:
    print(color_b + "Port -- ", port, " -- [CLOSED]")
else:
    print(color_c + "Port -- ", port, " -- [OPEN]")
Все это поместим в функцию fanc1().
		Код:
	
	def fanc1():
    color_a = colored("[+] ", 'green')
    print("~"*50)
    host = input(color_a + "Host --> ")
    port = int(input(color_a + "Port --> "))
    print("~"*50)
    scan = socket.socket()
    color_b = colored("[!] ", 'red')
    color_c = colored("[!] ", 'yellow')
    try:
        scan.connect((host, port))
    except scan.error:
        print(color_b + "Port -- ", port, " -- [CLOSED]")
    else:
        print(color_c + "Port -- ", port, " -- [OPEN]")Тут все на мноого проще. Спросим у пользователя только хост. А порты зададим в список. Естественно проверять их будем еще и циклом
		Код:
	
	def fanc2():
    color_a = colored("[+] ", 'green')
    color_b = colored("[!] ", 'red')
    color_c = colored("[!] ", 'yellow')
    host = input(color_a + "Host --> ")
    port = [20, 21, 22, 23, 42, 43, 53, 67, 69, 80]
		Код:
	
	...
for i in port:
    try:
        scan = socket.socket()
        scan.connect((host, i))
    except scan.error:
        print(color_b + "Port -- ", i, " -- [CLOSED]\n")
    else:
        print(color_c + "Port -- ", i, " -- [OPEN]\n")
		Код:
	
	def fanc2():
    color_a = colored("[+] ", 'green')
    color_b = colored("[!] ", 'red')
    color_c = colored("[!] ", 'yellow')
    host = input(color_a + "Host --> ")
    port = [20, 21, 22, 23, 42, 43, 53, 67, 69, 80]
    for i in port:
        try:
            scan = socket.socket()
            scan.settimeout(0.5)
            scan.connect((host, i))
        except scan.error:
            print(color_b + "Port -- ", i, " -- [CLOSED]")
        else:
            print(color_c + "Port -- ", i, " -- [OPEN]")
		Код:
	
	scan.settimeout(0.5)А теперь осталось все соединить.
		Код:
	
	# -*- coding:utf -8 -*-
from termcolor import colored
import socket
def fanc1():
    color_a = colored("[+] ", 'green')
    print("~"*50)
    host = input(color_a + "Host --> ")
    port = int(input(color_a + "Port --> "))
    print("~"*50)
    scan = socket.socket()
    color_b = colored("[!] ", 'red')
    color_c = colored("[!] ", 'yellow')
    try:
        scan.connect((host, port))
    except socket.error:
        print(color_b + "Port -- ", port, " -- [CLOSED]")
    else:
        print(color_c + "Port -- ", port, " -- [OPEN]")
def fanc2():
    color_a = colored("[+] ", 'green')
    color_b = colored("[!] ", 'red')
    color_c = colored("[!] ", 'yellow')
    host = input(color_a + "Host --> ")
    print("\n")
    port = [20, 21, 22, 23, 42, 43, 53, 67, 69, 80]
    for i in port:
        try:
            scan = socket.socket()
            scan.settimeout(0.5)
            scan.connect((host, i))
        except socket.error:
            print(color_b + "Port -- ", i, " -- [CLOSED]")
        else:
            print(color_c + "Port -- ", i, " -- [OPEN]")
print("~"*50)
print("\t[1] --- сканировать отделный порт")
print("\t[2] --- сканировать список")
print("~"*50, "\n")
text_a = input("[scan]--> ")
if text_a == "1":
    fanc1()
elif text_a == "2":
    fanc2()
else:
    print(colored("Параметр введен не правильно!", 'red'))Надеюсь вам понравилась данная статья!
Ваше задание будет очень простым. На первый раз просто разберитесь в выше мною написанном и просканируйте порты любого сайта))
 Курс Python для пентестеров: от теории к практике
 Курс Python для пентестеров: от теории к практике
Если вы хотите углубить свои знания и научиться применять Python в сфере кибербезопасности, обратите внимание на курс «Python для пентестера». Он предлагает 3,5 месяца практического обучения, включая создание собственных инструментов, работу с базами данных, многопоточность и основы криптографии. Курс ориентирован на разработку реальных приложений и предоставляет подробные методички, поддержку наставников и возможность общения с коллегами в чате. Это отличная возможность для тех, кто хочет перейти от теории к практике и начать создавать собственные решения.Если вы уже знакомы с основами Python и хотите развить свои навыки в области кибербезопасности, этот курс может стать отличным следующим шагом в вашем обучении.
Обсудим: зачем писать свой сканер портов, если есть готовые решения?
Вопрос, который часто возникает: зачем разрабатывать собственные инструменты, если существуют готовые решения, такие как Nmap? Ответ прост: создание собственного инструмента позволяет глубже понять процессы, улучшить навыки программирования и адаптировать решение под свои конкретные нужды.
			
				Последнее редактирование: 
				
		
	
							 
	 
	 
	 
	 
	
 
 
		 ). Пришлось многое править и дополнять. Довел дело до ума и получилась неплохая такая миним-программка с анимационной превьющкой. Код где то вышел строк на 500-600 (хз точно, у меня все по отдельным объектам разбито, для удобства).
). Пришлось многое править и дополнять. Довел дело до ума и получилась неплохая такая миним-программка с анимационной превьющкой. Код где то вышел строк на 500-600 (хз точно, у меня все по отдельным объектам разбито, для удобства).  
 
		 
 
		 
 
		
 
 
		 
 
		 

 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
	