Муню

X
Главная » All » Многопоточный сканер портов по списку IP на Python

Многопоточный сканер портов по списку IP на Python

Время чтение: 2 минуты 2018-12-09

Чего, nmap? Нет, не слышала))) А вообще я прекрасно знаю о существовании nmap и это не отбило желание написать свой многопоточный сканер портов. Поскольку он пишется для получения опыта, это в первую очередь.

И вообще, если брошен «Вызов самому себе» то я уже врятле угомонюсь пока не добьюсь того, чего хочу.

Вот так и тут. Изучать Python на каких-то примерчиках не интересно и скучно, хотелось написать более-менее реальную программу… И пофигу что подобных «Велосипедов» на каждом углу полно. Короче возникло желание написать многопоточный сканер портов. И при этом он должен сканировать список IP адресов, а не так, что 1 IP програн по диапазону портов до 1500 и все!

Многопоточный сканер портов на Python.

Как я сказал выше, сканируется именно список IP, а не отдельно взятый IP. Берётся IP прогоняется по диапазону портов, в данном случаи до 1500-того порта, поле чего берётся следующий IP и снова прогоняется до 1500-того порта, и так далее.

Собственно что получается в итоге? Сканируется 14 IP адресов до 1500-того порта, и на весь процесс скана ушло всего 32 секунды! Я хз норм результат или нет. Так же в конец IP списка я добавляла IP адрес на котором я знаю каждый открытый порт, как свои 5 пальцев. Сканер не пропустил не одного порта, что конечно же хорошо и прекрасно!

Но сразу скажу, если вдруг кто захочет раздуть из этого кода, так скажем «полноценный» многопоточный сканер портов. Дело в том что, если запихенить дахера айпишников, то программа загнётся, либо создаться слишком дахера потоков.

Именно по этому в коде можно видеть «time.sleep(0.0005)» и «time.sleep(10)» Эти значения я подобрал методом тыка. В таком виде сканер проверял 65535 портов и 186 IP. Проблем не возникло, сканер отработал корректно, но на скорости все эти манипуляции с time.sleep() конечно же отразились, да и насрать… )))

А что если замутить, как-то вот так:

В файл с ипами я запихенил 12 000 IP адресов и запустил сканер, как видно из кода на один порт. В итоге скан окончил работу через 0:10:04.897297

Я решил поменять тайм на «time.sleep(0.01)» и тогда терминал просто полетел ))) А 12 000 адресов просканировались за 0:02:04.514192. Но на этом я не остановился

Вот таков вот )))

Результат. Сканировал уже не 12к а 50 000 адресов на 1 порт и на это ушло «Прошло: 0:01:12.104565«. На этом уже можно остановится! Хватит…

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

X