
Открывает 1K+ IP-адресов или результаты поиска Shodan и пытается выполнить вход
Одновременно открывает либо результаты поиска Shodan, указанный IP-адрес, диапазон IP, домен, либо список IP из текстового файла и выводит статус и заголовок страницы, если таковой имеется. Добавьте опции -u и -p, чтобы попытаться сначала войти на страницу через форму входа, а в случае неудачи — использовать HTTP Basic Auth.
Используйте -f СТРОКА_ПОИСКА, чтобы найти определённую строку в HTML-ответе и проверить, успешна ли аутентификация. Записывает все устройства, которые ответили, используя либо поисковый запрос Shodan, либо целевые IP/домен + _results.txt. Одно замечание по поводу поиска HTML ответной страницы: некоторые страницы с формой входа возвращают JSON-объект после запроса аутентификации, а не исходный HTML страницы после входа. Часто можно определить, был ли вход успешным, просто используя -f "success" в подобных сценариях.
Тайм-аут по умолчанию для запросов — 15 секунд. Отправляет пакеты из 1000 запросов одновременно; количество можно изменить с помощью опции -c. Следует отметить, что Shodan разрешает только первую страницу результатов (100 хостов) при использовании бесплатного API-ключа. Если у вас есть профессиональный API-ключ, вы можете указать количество страниц результатов для проверки с помощью аргумента -n КОЛИЧЕСТВО_СТРАНИЦ. По умолчанию проверяется только страница 1.
Python 2.7
Современный Linux
API-ключ Shodan (только если используется аргумент -s ПОИСКОВЫЙ_ЗАПРОС)
Простейшее использование:
python device-pharmer.py -s 'dir-300' -a Wutc4c3T78gRIKeuLZesI8Mx2ddOiP4
Поиск в Shodan по запросу "dir-300" с API-ключом Wutc4c3T78gRIKeuLZesI8Mx2ddOiP4. Выводит IP-адрес и заголовок страницы ответа, если он существует.
python device-pharmer.py -s 'dd-wrt' -a Wutc4c3T78gRIKeuLZesI8Mx2ddOiP4 -u admin -p password -n 5 -f ">Advanced Routing<" --proxy 123.12.12.123:8080 --timeout 30
Поиск в Shodan по запросу "dd-wrt" с заданным API-ключом и попытка входа в результаты с именем пользователя "admin" и паролем "password". Собрать только первые 5 страниц (500 хостов) результатов Shodan и проверить, содержит ли HTML целевой страницы строку ">Advanced Routing<". Вывести "* MATCH *" вместе с IP-адресом и заголовком страницы в выводе и записать в лог, если строка найдена. Наконец, использовать HTTP-прокси 123.12.12.123:8080 для всех запросов и установить тайм-аут 30 секунд.
python device-pharmer.py -t 192.168.0-2.1-100 -c 100
Указание цели 192.168.0-2.1-100 означает, что скрипт будет одновременно открывать 192.168.0.1-101, 192.168.1.1-101 и 192.168.2.1-101 и собирать статус и заголовки ответных страниц. -c 100 ограничит одновременные запросы до 100 страниц, так что скрипт пройдёт через 3 группы по 100 IP-адресов. Поскольку тайм-аут по умолчанию в скрипте 15 секунд, выполнение займёт около 45 секунд.
python device-pharmer.py -t www.reddit.com/login -ssl -u sirsmit418 -p whoopwhoop -f 'tattoos'
Попытка входа на www.reddit.com/login с использованием HTTPS с именем пользователя sirsmit418 и паролем whoopwhoop. Поиск текста "tattoos", соответствующего подписанному subreddit, в HTML-ответе для проверки успешности аутентификации.
python device-pharmer.py --ipfile list_of_ips.txt
Проверить каждый IP из текстового файла, где IP-адреса разделены переводами строк.
-a APIKEY: использовать этот API-ключ при поиске в Shodan (требуется только вместе с -s)
-c CONCURRENT: отправлять указанное количество запросов одновременно; по умолчанию 1000
-f FINDTERMS: искать строку аргумента в HTML каждого ответа; при совпадении вывести и записать в лог
--ipfile IPTEXTFILE: проверить каждый IP из списка IP-адресов, разделённых переводами строк, из указанного текстового файла
-n NUMPAGES: пройти через указанное количество страниц результатов поиска Shodan, собирая IP-адреса; 100 результатов на страницу
-p PASSWORD: попытаться войти, используя этот пароль
--proxy PROXY: использовать этот прокси для запросов; для входа в прокси с HTTP Basic укажите user:[email protected]:8080
-s SEARCHTERMS: искать в Shodan по запросу (запросам) и выводить каждый IP-адрес, возвращает ли страница ответ, и если да, то вывести заголовок страницы (следует перенаправлениям)
-ssl: отправлять HTTPS-запросы специально ко всем целям
-t IPADDRESS/DOMAIN/IPRANGE: попробовать обратиться к этому домену, IP или диапазону IP вместо использования Shodan для заполнения списка целей и вернуть информацию об ответе
--timeout TIMEOUT: установить тайм-аут для каждого URI в секундах; по умолчанию 15
-u USERNAME: попытаться войти, используя это имя пользователя
Copyright (c) 2014, Dan McInerney All rights reserved.
Распространение и использование в исходных и бинарных формах, с изменениями или без, допускается при соблюдении следующих условий:
ЭТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ ВЛАДЕЛЬЦАМИ АВТОРСКИХ ПРАВ И УЧАСТНИКАМИ "КАК ЕСТЬ" И ЛЮБЫЕ ЯВНЫЕ ИЛИ ПОДРАЗУМЕВАЕМЫЕ ГАРАНТИИ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ПОДРАЗУМЕВАЕМЫЕ ГАРАНТИИ ТОВАРНОЙ ПРИГОДНОСТИ И ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ, ОТРИЦАЮТСЯ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ ВЛАДЕЛЕЦ АВТОРСКИХ ПРАВ ИЛИ УЧАСТНИКИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЯМЫЕ, КОСВЕННЫЕ, СЛУЧАЙНЫЕ, ОСОБЫЕ, ШТРАФНЫЕ ИЛИ ПОСЛЕДУЮЩИЕ УБЫТКИ (ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ПРИОБРЕТЕНИЕ ЗАМЕНЯЮЩИХ ТОВАРОВ ИЛИ УСЛУГ; ПОТЕРЮ ИСПОЛЬЗОВАНИЯ, ДАННЫХ ИЛИ ПРИБЫЛИ; ИЛИ ПРЕРЫВАНИЕ ДЕЛОВОЙ АКТИВНОСТИ) НЕЗАВИСИМО ОТ ПРИЧИНЫ И НА ЛЮБОЙ ТЕОРИИ ОТВЕТСТВЕННОСТИ, БУДЬ ТО ПО ДОГОВОРУ, СТРОГОЙ ОТВЕТСТВЕННОСТИ ИЛИ ДЕЛИКТУ (ВКЛЮЧАЯ НЕБРЕЖНОСТЬ ИЛИ ИНОЕ), ВОЗНИКШИЕ ЛЮБЫМ ОБРАЗОМ ИЗ ИСПОЛЬЗОВАНИЯ ЭТОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ, ДАЖЕ ЕСЛИ БЫЛО СООБЩЕНО О ВОЗМОЖНОСТИ ТАКОГО УЩЕРБА.