• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Конкурс Фреймворк на питоне

Статья для участия в Конкурсе программистов


У программы есть следующее возможности:

сканирование всех портов или 1 конкретного
получение IP по домену
получение имени сервера
получение whois информации
получение информации по номеру телефона
создание запросов с кастумным или дефолтным user-agentom
выполнение команд не выходя из скрипта
смена мак адреса или имени хоста
запуск airgeddona
запуск nmap в разных режимах сканирование


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

Код:
from termcolor import colored

#тут идет подключение модулей 
import modules.siteName
import modules.scan
import modules.infoIp
import modules.infoPhone
import modules.request

#и создание функций которые я буду потом вызывать
getIPaddr = modules.siteName.getIP
getServer = modules.siteName.getServerName
scanPort = modules.scan.scaner
scanList = modules.scan.list
infIP = modules.infoIp.whois
infPhone = modules.infoPhone.infPhone
req = modules.request.GetRequest

#с помощью этой переменой потом можно будет вывести красивый список возможностей 
modulesList = r"""

            +-----------------------------------------+
            | [1] -- Get IP address.                  |
            | [2] -- Get Server Name.              |
            | [3] -- Scan port                           |
            | [4] -- Scan the list of ports          |
            | [5] -- Whois                                 |
            | [6] -- Info Phone                         |
            | [7] -- Request                             |
            +-----------------------------------------+
"""

def setModule ():
    #вызываем красивый список:)
    moduleNum = input(colored("Enter module num--> ", 'green'))
    #тут в зависимости от выбраной пользователем цифры исполняется одна из возможностей я не стола выводить весь код так как он длиный а по факту дальше тоже самое
    if moduleNum == "1":

        try:
            domain = input (colored("[Enter domain]: ", 'green'))
            #вызываем созданную нами функцию
            ipSite = getIPaddr(domain)

            #красиво выводим ответ
            print(colored("-" * 60,'yellow'))
            print(colored("[IP] == [{0}]".format(ipSite), 'green'))
            print(colored("-" * 60,'yellow'))

        #или пишем ошибку
        except:
            print(colored("[Error]: Domain or ip not found!", 'red'))
#================================================================================================================================================
    #и т. д. :)
    elif moduleNum == "2":

        try:
            site = input (colored("[Enter domain]: ", 'green'))
            url = "http://" + site
            server = getServer(url)

            print(colored("-" * 60,'yellow'))
            print(colored("[Server] == [{0}]".format(server), 'green'))
            print(colored("-" * 60,'yellow'))

        except:
            print(colored("[Error]: Domain or server not found!", 'red'))

теперь подробнее про модули

написанию этих модулей siteName, infoPhone, infoIP я разбирать не буду т. к. их написание описано в статьях питон для хакера я внесла туда несколько изменений но они минимальны в них каждый при желании сам разберется.
Так-же я не буду разбирать модуль scan в его написании мне помогла следующая статья в него внесены уже более крупные мои изменения но опять таки желающим разобраться статьи хватит
теперь пошли уже мои модули их я буду более подробно описывать

начну с модуля request
Код:
#импортируем нужные библиотеки
import urllib3
from termcolor import colored

def GetRequest():

    #позволяем пользователю выбрать хочет-ли он использовать костумный или дефолтный user-agent
    quest = input(colored("Defoult useragent 1\n Castum useragent 2\n", 'yellow'))
    if(quest == "2"):
        castum = input(colored("Castum useragent: ", 'yellow'))
    elif(quest == "1"):
        castum = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Edge/15.15063"
    else:
        print(colored("Option not found", 'red'))

    #спрашиваем пользователя об IP или домене
    ip = input(colored("Enter IP or domain: ", 'yellow'))
    #и даем выбрать ему метод запроса
    met = input(colored("Enter metod: ", 'yellow'))

    #создаем запрос с заданными параметрами
    useragent = {'user-agent': castum,'connection':'keep-alive'}
    http = urllib3.PoolManager(headers=useragent)
    r = http.request(met,ip)
    
    #возвращаем данные запроса
    return r.data

так же есть модуль os он позволяет выполнять команды не выходя из программы
код максимально простой

Код:
#импортируем библиотеку subprocess
import subprocess

def os(comand):
    #запускаем команду
    subprocess.call(comand, shell=True)

теперь пришло время модуля отвечающего за подмену мак адреса и имени хоста
Код:
#вновь импортируем нужные библиотеки
import subprocess

#объявляем функция для смены мака
def mac(intr):
   #запускаем команду для смены мака
    subprocess.call("sudo ifconfig %s down; sudo macchanger -r %s; sudo ifconfig %s up" % (intr,intr, intr), shell=True)

#теперь  объявляем функция для смены имени хоста
def HostName(host):
    #выводим текущие имя
    subprocess.call("hostname", shell=True)
     #меняем его
    subprocess.call("sudo  hostname %s" % host, shell=True)
     #выводим новое
    subprocess.call("hostname", shell=True)

Следующий модуль для запуска аиргедона
Код:
import subprocess

def airstart():
    subprocess.call("sudo airgeddon", shell=True)

тут минимум кода поэтому перейдем к модулю с запуском нмапа тут уже интереснее
Код:
#импортируем библиотеки
from termcolor import colored
import subprocess

def scannmap():
#красиво выводим пользователю список возможностей
    print(colored(r"""
        *-------------------------------------*
        | [1] -- simple scan                 |
        | [2] -- scan all ports               |
        | [3] -- detailed scan of port 1 |
        | [4] -- detailed scan host       |
        | [5] -- ping scan                    |
        *-------------------------------------*
    """, "yellow"))

    #спрашиваем что он выбрал
    option = input(colored("Enter option num--> ", 'green'))
    #спрашиваем ip или домен
    IP = input(colored("Enter IP or domain: ", "yellow"))

    #в зависимости от выбора исполняем команду или выводим ошибку
    if option == "1":
        subprocess.call("sudo nmap %s" % IP, shell=True)

    elif option == "2":
        port = input(colored("Enter range in the format 0-100: ", "yellow"))
        subprocess.call("sudo nmap -p %s %s" % (port, IP), shell=True)

    elif option == "3":
        port = input(colored("Enter port: ", "yellow"))
        subprocess.call("sudo nmap -p %s -sV %s" % (port, IP), shell=True)

    elif option == "4":
        subprocess.call("sudo nmap -A -O %s" % IP, shell=True)

    elif option == "5":
        subprocess.call("sudo nmap -sn %s" % IP, shell=True)
    else:
        print (colored( "[Error]: option not found!", 'red'))

Для запуска программы нужны следующие библиотеки:
termcolor
socket
requests
urllib3
subprocess
json
os
urllib

для установки библиотек выполнить:
sudo pip install termcolor socket requests urllib3 subprocess json os urllib
или
sudo pip3 install termcolor socket requests urllib3 subprocess json os urllib

если нет pip то выполнить:
Debian:
sudo apt install python3-pip

or
sudo apt install python-pip

Fedora:
sudo dnf install python-pip

or
sudo dnf install python3-pip

Arch:
sudo pacman -S python-pip


название пакета содержащего pip может отличаться, я точно знаю его название только для арча.
Если не получаеться поставить библиотеки на 3 питон можно попробовать использовать 2 теоретически ошибок возникнуть не должно

как правило питон в linuxe установлен если нет то нужно выполнить следующею команду
Debian:
sudo apt install python3

or
sudo apt install python

Fedora:
sudo dnf install python

or
sudo dnf install python3

Arch:
sudo pacman -S python


также дополнительно нужно установить:
airgeddon
macchanger
nmap

Это можно сделать так:
Debian:
sudo apt install airgeddon macchanger nmap


Fedora:
sudo dnf install airgeddon macchanger nmap


Arch:
sudo pacman -S airgeddon macchanger nmap


если чего-то нет в репозиториях вот ссылка на сайт где можно это найти почти для любого дистрибутива:
link removed

кроме airgeddona его устанавливать так:
git clone v1s1t0r1sh3r3/airgeddon
cd airgeddon/
sudo bash airgeddon.sh

сам фреймворк запускать так:
cd fraimwork
python main.py
or
python3 main.py
установка не требуется

при попытки сделать спойлер main получаю кучу ошибок видимо файл слишком большой поэтому я просто прикреплю паку с файлами содержащими исходный код

P.S.
это моя первая статья вообще поэтому прошу сильно помидорами не кидаться но критику принять готова как по самой статье так и по коду.
 

Вложения

  • fraimwork.zip
    12,3 КБ · Просмотры: 277

darklight

Green Team
18.10.2018
45
72
BIT
1
fraimwork.zip framework :)

main > modulesList = r""" > change mac adres address

в маин неплохо бы сделать так

Python:
def main():
    func()

if __name__ == "__main__":
    main()

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

explorer

Platinum
05.08.2018
1 081
2 474
BIT
14
Хорошо что начали люди в конкурс подтягиваться. Код пока даже по диагонали не смотрел. Открыл первый попавшийся модуль scan.py
Это из области приколов )))
Python:
 except socket.error:
            'Hello World'
Hello World там конечно не в тему и return или print отсутствует. Позже посмотрю подробнее что там в модулях есть.
А так пока только могу сказать - спасибо что приняли участие ;)

Да, вот что ещё - отредактируйте код. Поменяйте модуль termcolor на colorama, ибо в windows это не работает.

term.png



Как работать с colorama ЗДЕСЬ
 
Последнее редактирование:
  • Нравится
Реакции: Vander и darklight
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!