Загрузка...

[PYTHON ХАКЕРС #1] Пишем свой NMAP (сканер портов)

Тема в разделе Python создана пользователем rady_inactive159273 22 янв 2020. 1892 просмотра

  1. rady_inactive159273
    rady_inactive159273 Автор темы 22 янв 2020 42 19 авг 2017
    Приветствую всех, кто интересуется данной темой.:roflanZdarova:

    Сегодня мы будем писать свой аналог nmap'а, те сканер открытых портов

    Вот что должно в итоге получиться:

    [IMG]



    Писать это все дело мы будем на Python 3 +

    Ну и приступим.:da:




    Для начала естественно импортируем нужные модули, а именно 'socket' и 'time'.

    Код

    # -*- coding:utf -8 -*-

    import socket
    import time



    Далее создадим первую и единственную функцию

    Код

    def scan():
    host = input("[!] Host --> ") # Тут мы вводим адрес сайта, который мы хотим сканировать
    print()
    port = [20, 21, 22, 23, 42, 43, 53, 67, 69, 80, 110, 139, 8000, 8080, 3128, 3389, 6588, 1080, 5900, 8888, ] # Список, тут лежат порты
    # Я добавил одни из самых популярных, если хотите, то можете добавить те, которые вам нужны
    for i in port: # В данном цикле мы просто перебираем порты и пытаемся подключиться по ним подключиться
    try:
    scan = socket.socket()
    scan.settimeout(0.5) # Выставление таймаута, чтобы нас не забанило
    scan.connect((host, i)) # Как раз попытка подключиться к хосту через перебираемые порты
    except socket.error: # Здесь мы ставим условие, что если произошла ошибка, то программа на выведет, что данный порт закрыт
    print("[-] Port -- ", i, " -- [CLOSED]")
    else: # А в противном случае, если ошибки не было, то программа выведет, что порт открыт
    print("[+] Port -- ", i, " -- [OPEN]")


    Далее делаем design :da: и меню естественно

    Код

    print("-" * 50)

    print("\t[1] --- сканировать")

    print("-" * 50, "\n")
    text_a = input("[scan]---> ")
    print()

    if text_a == "1":
    scan()
    else:
    print('Выбранное действие не существует')
    print()
    print("-" * 50)
    print()
    time.sleep(1)
    input('Для выхода нажмите ENTER: ')

    Далее можете это все скомпилировать в exe шник, но перед этим нужно установить доп модуль 'pyinstaller'

    Для этого заходим в cmd(если у вас винда), если линукс, то терминал и пишем


    Код

    pip3 install pyinstaller

    или

    pip install pyinstaller

    (Если первый вариант не работает, то делайте второй)

    Далее, после установки библиотеки открываем так же cmd(терминал) и с помощью команды 'cd' перемещаемся в директорию, где лежит данный пайтон файл. Когда переместились и в cmd(терминале) пишется расположение директории, где лежит ваш .py файл. Тогда вводим в консоль следующее

    Код

    pyinstaller --onefile <название файла.py>

    допустим

    C:\User\Desktop\Python\ScanPort> pyinstaller --onefile scaner.py (это так должно выглядеть в итоге, не надо водить C:\User и тд

    Далее, когда в консоли все прошло, то мы идем в ту директорию и там появилась папка 'dist', в которой и лежит наш exe-шник :2011_like:

    Всем спасибо за прочтение, учите пайтон, всего хорошего :hi:
    P.S. От симпы не откажусь :da:




    Код

    # -*- coding:utf -8 -*-


    import socket
    import time


    def scan():
    host = input("[!] Host --> ") # Тут мы вводим адрес сайта, который мы хотим сканировать
    print()
    port = [20, 21, 22, 23, 42, 43, 53, 67, 69, 80, 110, 139, 8000, 8080, 3128, 3389, 6588, 1080, 5900, 8888, ] # Список, тут лежат порты
    # Я добавил одни из самых популярных, если хотите, то можете добавить те, которые вам нужны
    for i in port: # В данном цикле мы просто перебираем порты и пытаемся подключиться с помощью
    try:
    scan = socket.socket()
    scan.settimeout(0.5) # Выставление таймаута, чтобы нас не забанило
    scan.connect((host, i)) # Как раз попытка подключиться к хосту через перебираемые порты
    except socket.error: # Здесь мы ставим условие, что если произошла ошибка, то программа на выведет, что данный порт закрыт
    print("[-] Port -- ", i, " -- [CLOSED]")
    else: # А в противном случае, если ошибки не было, то программа выведет, что порт открыт
    print("[+] Port -- ", i, " -- [OPEN]")


    print("-" * 50)

    print("\t[1] --- сканировать")

    print("-" * 50, "\n")
    text_a = input("[scan]---> ")
    print()

    if text_a == "1":
    scan()
    else:
    print('Выбранное действие не существует')
    print()
    print("-" * 50)
    print()
    time.sleep(1)
    input('Для выхода нажмите ENTER: ')
     
  2. setcode
    setcode 23 янв 2020 27 10 май 2019
    Можно ещё написать сканер диапазонов IP адресов на один порт. Моногопоточный, иначе сканить будет до конца света. И желательно реализовать поддержку не только CIDR но и IP Ranges. Хорошая штука получится!
     
  3. rady_inactive159273
    rady_inactive159273 Автор темы 23 янв 2020 42 19 авг 2017
    Типо сканирование разных ip на наличие открытых портов?
     
  4. setcode
    setcode 23 янв 2020 27 10 май 2019
    Да. Программа берёт все IP из диапазоны и сканирует, например на 3899 порт.
     
Загрузка...
Top