Python для хакера - Часть 1. Начало.

  • Автор темы Gidroponika
  • Дата начала
G

Gidroponika

Всех приветствую дорогие друзья! Долго думая, я решил начать цикл статей по сами знаете какой теме. В этой части я посмотрю , нужно ли вам это вообще. Вести я буду этот цикл параллельно с простыми уроками по питону. И собственно проводить в этом разделе. Т.к. относится это к хеку. Начнем)


Почему 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

2. А теперь создадим "меню". Программа будет спрашивать у нас. Сканировать список "популярных портов", или только то, что напишм мы.

Код:
...

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]")

4. Вторая функция)

Тут все на мноого проще. Спросим у пользователя только хост. А порты зададим в список. Естественно проверять их будем еще и циклом

Код:
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]

В список port можете добавить какие хотите порты. Я для примера добавил малость. А теперь к самому интересному. В цикле повторим прошлые действия(немного видоизменив)

Код:
...

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")

И все вместе(функция 2)

Код:
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'))


Итог:

Посмотреть вложение 8820
Посмотреть вложение 8821
Посмотреть вложение 8822
Посмотреть вложение 8823



Надеюсь вам понравилась данная статья!

Ваше задание будет очень простым. На первый раз просто разберитесь в выше мною написанном и просканируйте порты любого сайта))


Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

 
Последнее редактирование:
E

Endlesx

Scan.settimeout(0.5) чучуть не понял, что конкретно делает этот метод? Можно по подробнее и почему 05?)
 
  • Like
Реакции: Anorali

Anorali

Pro Member
Сообщения
106
Реакции
153
Посетить сайт
Scan.settimeout(0.5) чучуть не понял, что конкретно делает этот метод? Можно по подробнее и почему 05?)

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

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

является подклассом

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

и как таковой также функционирует как пример создания пользовательских потоков. "

Пример:
Python:
def hello():
    print("hello, world")

t = Timer(30.0, hello)
t.start()  # after 30 seconds, "hello, world" will be printed

ссылка >>

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

 
A

akaBest

Ребят, я в теме программирования зелёный пока, помогите. Код можно писать в IDLE? Или требуется что-то другое?
 
Название темы
Автор Заголовок Раздел Ответы Дата
G Python для хакера - Часть 4. Свой мини фреймворк. Другие ЯП 1
G Python для хакера - Часть 3. Сбор информации об IP и пробиваем номер сотового. Другие ЯП 1
G Python для хакера - Часть 2. Другие ЯП 1
G Бомбер для ПК на Python Spam/DDOS/Malware 3
I Python программист для разных задач. Ищу работу. Предлагаю свои услуги. 1
S Интересно CrazyPy - Пак самых нужных модулей для создания вирусов на python Другие ЯП 6
M TBomb: Ещё один бомбер на python для termux Другие ЯП 0
M СЛИВ КУРСА Development Script-Python для Начинающих (2019) Корзина 4
A Эликсир для программистов на Python Полезные статьи 0
M Python скрипт для создания базы ip по диапазону Бруты/Парсеры/Чекеры 0
Little_Prince Программирование на Python для тестировщиков Другие ЯП 0
Elliot_service Закрыто Пишу web-проекты | Копии сайтов | Поднимаю сервера | Маркетплейсы | ТГ Боты | Скрипты | Крипта | python, php, js, MySql, html/css Корзина 1
Little_Prince Интересно Напишу проекты [Open Bullet 1|2/Python 3] Бруты/Парсеры/Чекеры 0
CRC29A Ищу работу кодером [C++, Assembler, Python] Услуги дизайнеров/веб-разработчиков 1
C Layer 4 DDOS Tool Python Спам / Флуд / Ддос 0
A Пишем свой RAT на Python > {Часть 1} Уязвимости и взлом 3
A Требуются программисты Python, PHP, C++ Продажа софта 2
L Интересно Реверсим APK (Python-Kivy) Вирусология 4
ВЛАД013 ByPassCaptcha Python Другие ЯП 0
L Интересно Шифруемся используя python (Крипто контейнеры и DPAPI) Другие ЯП 0
Eteriass Интересно Metasploit и Python Уязвимости и взлом 2
Anorali Свой мини кейлоггер на python. Часть 3 Вирусология 2
Anorali Свой мини кейлоггер на python. Часть 2 Вирусология 0
Anorali Свой мини кейлоггер на python Вирусология 4
_ZerO_ Интересно Python и LongPoll VK, или как запустить скрипт ВК и настроит Другие ЯП 2
G Команда разработчиков - php, python, веб дизайн, программирование Ищу работу. Предлагаю свои услуги. 0
B нужна помощь Python | автоматизация работы в браузере Вопросы и интересы 1
E Интересно Бот с автооплатой на Python Другие ЯП 10
S Интересно Свой мини-рат на python + стиллер хрома v80 Софт от наших юзеров 8
M Декомпиляция Python Другие ЯП 1
M Спам комментариями в ВК {PYTHON} Другие ЯП 2
B [Udemy] Полное руководство по Python. Python Programming Bootcamp (2019) Другие ЯП 4
M Защищаем свой Python скрипт за пару минут Другие ЯП 0
M Разные винлокеры,на VBS и PYTHON Другие ЯП 0
B Клиент-серверная игра на Python Полезные статьи 0
B Python. Полное руководство (2019) Полезные статьи 1
B Основы языка Python (2019) Полезные статьи 0
E Не могу запустить Python на Kali Вопросы и интересы 1
D Кодер ищет проекты/работу [Asm/C/Python] Ищу работу. Предлагаю свои услуги. 0
A Что нового в Python 3.8? Полезные статьи 0
A Веб-очистка с BeautifulSoup в Python Другие ЯП 0
R Не изучай синтаксис, изучай псевдокод и программирование! *Python* Другие ЯП 3
S Вирус на Python Софт для работы с текстом/Другой софт 7
S Курсы по c++ , c# , php , python , css , html и т.д. С/C++ 4
G Многопоточный сканер портов на python Полезные статьи 2
G Пишем парсер на Python - грабим Proxy ч.2 Бруты/Парсеры/Чекеры 0
G Пишем парсер на Python - грабим Proxy ч.1 Бруты/Парсеры/Чекеры 2
G Создаём полиалфавитный шифр на Python С/C++ 1
G Пишем шифровальщик на python Полезные статьи 0
Traven Пишем спамер Telegram, на Python Другое 0

Название темы