Неисповедимые пути GitHub: применение самой безнадёги и на капельку выше
Заглавие
Заглавие
Весточку издалека шлем мы вам, друзья дорогие, всех приветствую и вкратце по сути пробежимся: данная писанина будет отличаться от последних и более походить на сперва изданные мной. Сюжет литературный присутствовать не сможет по причинам ясным, на радость хейтерам его и к сожалению тех, кому всё-же это зашло. Потому сделаем-ка из этого статью простую, но по родственным особенностям отца этого творения определить все же можно, как технаря, нежели литератора и любителя искусной прозы. Приятного чтения, а мы начинаем c банального, и уже классического для меня, осмотра плана:
- Карманная нейронная сеть: когда-то сложное теперь у самого носа
- Принтерные забавы: или очередная проблема крупных компаний
- Мобильный хостинг: зачем тогда все эти сервисы
Дисклеймер
На самом деле я против зла и то, что я покажу вам далее, может быть,
практически применено различного рода антагонистами. Сразу предупреждаю, что я, как автор этой писанины , снимаю с себя ответственность за то с каким умыслом будет использована эта информация дальше. Виноват только и только тот, кто применяет знания, но не тот, кто ими делится. Автор лишь преследует благие цели, используя способы и пути злоумышленников, раскрывает суть преступного механизма, открывая людям глаза, демонстрируя способы защиты, ведь лучший протект - это знания.
Карманная нейронная сеть: когда-то сложное теперь у самого носа
“Так вот, как уже можно было понять, речь заведем мы о нейронных сетях”. На этом моменте половина народа, что принялась за прочтение, прошла сквозь решето темы раздела, и ушла, ибо этой штукой умудрились просверлить мозг всех, кто когда-либо был увлечен интересом этим.
Потому кратко о сути: нейронная сеть - фактически есть моделью сети нервных клеток живого организма, разница лишь в том, что это программное воплощение. Проще говоря это искусственный интеллект, отличительной чертой есть его обучаемость. Естественно, это играет немаловажное значение во многих сферах: распознавание речи от Google, автопилот Теслы или система распознавания лиц вашего смартфона.
А теперь к основному, теория мало кому интересна так ещё и с в моей глупой интерпретации, делом займемся.
Знакомлю вас с достаточно интересным репозиторием, что был найден мной на всем нам знакомой платформе Гитхаб, исключительное стечение обстоятельств, ведь поиском совершенно иного я был занят. Подлинный смысл таков: установив данную сборку скриптов, мы получаем карманную нейронную сеть, которая фундаментально обучена распознавать предметы и прочую чепуху на видео или фото.
Изначально инструмент позиционирует себя, как тот, который должен работать на карманных устройствах, то бишь телефонах , даже в App Store имеется. Но люди мы сложные, потому будем заниматься установкой сначала на Кали, а после и уже на сам термукс под андроидом, разобрав нюансы использования, что возникнут по пути.
Скопировать и установить возможно следующими командами, для работы потребуется Питон версии не ниже, чем 3.8 :
Код:
git clone https://github.com/ultralytics/yolov3
pip install -r requirements.txt
Сам процесс установки займёт достаточно долгий отрезок времени, если у вас такой же медленный интернет, как и у меня. После завершения скачивания и распаковки всех нужных для работы библиотек, мы можем приступать к тестированию, по правде говоря, проверим мы лишь самое , как с моей точки зрения, забавное, а именно - распознавания объектов на фото и видео.
Потому немедля запускаем анализ, используя фотографию, что уже находилась в “файловой системе” нейросети, для этого вводим следующую команду:
Код:
python3 detect.py --source /home/kirin/yolov3/data/images/zidan.jpg
Как видим результат достаточно неплох, его можете лицезреть на фотографии, которая прикреплена здесь. Были точно распознаны люди и даже галстуки, что очень даже неплохо. Но давайте проведём более глубокие тесты, а для чего воспользуемся уже фотографией с кучей объектов:
Код:
python3 detect.py --source /home/kirin/yolov3/data/images/1.jpg
Запустив анализ уже своего документа, изменив в команде лишь путь к нашему файлу, мы получаем результат и список того, что было распознано. Выход скрипта можете рассмотреть ниже.
В целом если, то это удовлетворительный результат, были распознаны практически все транспортные средства, персоны и животные, которые имелись в зоне видимости, правда с некоторыми недочетами в виде того, что определенно не все.
А теперь давайте усложним задачу, рискнув сходить ва банк и проанализировать целое видео длинной в 14 секунд. Для этого понадобится нам лишь указать путь к файлу, указав, в отличии от предыдущих тестов, разрешение видео и процесс пошёл:
Код:
python3 detect.py --source /home/kirin/yolov3/data/images/134.mp4
Сразу можно отметить, что 14 единиц времени меньше на одно от минуты были разбиты на 895 фрагментов-слоев, каждый из которых проходит тот же путь, что и обычная фотография, но в конце компилируется в изначальный формат.
Итог вышел достаточно неплохим, единственным нюансом, который стоит упомянуть, так это сильная нагрузка на процессор устройства, напомню, что тесты проводились на средней мощности ноутбуке, где Кали выделено четыре из восьми ядер, но даже в таких условиях можно было заметить нагрузку, что превышала 70 процентов, что уже ставит под вопрос возможность использования на старых сотовых аппаратах.
На этой ноте предлагаю перейти к тесту на мобильных устройствах. Испытуемые будут представлены в трёх категориях, по одному девайсу от каждой: слабые, средние и мощные.
В первой названной группе будет выступать ветеран корейской промышленности - Samsung J1, если вкратце, то это рядовой солдат, ничем особо не отличающийся от всех устройств своего времени. 512 мегабайт оперативной памяти, два ядра по 1.2 ГГц.
Во вторую группу был определен коренной китаец - Lenovo TAB 7. Говорить о нем особо нет чего, простой и достаточно надежный аппарат со следующими характеристиками: четыре ядра по 1.5 ГГц, 2 гигабайта оперативной памяти.
А вот в третью был определен самый мощный, который нашёлся с огромный трудом - Asus ZenPhone 5. Когда-то считался первой моделью телефонов, где появилось 4 гигабайта оперативной памяти, также там присутствуют 8 ядер по 1.8 ГГц.
После установки термукса и всех надобных принадлежностей для работы на первое устройство, начался долгий и изнурительный процесс скачивания зависимостей, необходимых для работы скрипта-нейросети:
Код:
pkg update & upgrade -y
pkg install git python3 python3-pip -y
git clone https://github.com/ultralytics/yolov3
pip install -r requirements.txt
Но после оказалось, что термукс не имеет доступа к внутренней памяти телефона, что решилось просто, первым делом нужно проверить так ли это, прописав следующее:
Код:
ls /sdcard
Если вывод команды этой будет состоять в ошибке, то нужно будет перейти в настройки телефона - Приложения - Termux , а после и выдать все необходимые разрешения.
После закидываем в корень памяти телефона одно коротенькое видео и фотографию, которые и будут сканироваться нашей мини-нейромашиной, а затем уже и запустить само сканирование командой:
Код:
python3 detect.py --sourse /sdcard/1.jpg
Анализ этого документа занял не намного дольше, чем на ноутбуке, но всё же это показатель - 7.6 секунд. А с обработкой видео всё оказалось немного тяжелей, ибо приложение-эмулятор просто отказалось работать.
На следующем устройстве, повторив все необходимые действия, мы получили результаты следующие:
Фото было распознано за 4.3 секунды, что уже неплохо. Обработка видео заняла больше 30 минут, что уж очень долго, если смотреть на то, что длительность его всего-то 13 секунд.
Асус, как и ожидалось, показал лучший результат и ближе всех подобрался к рекорду, который установлен ноутбуком: Фотография за 1.6 секунд, а видео за 15 минут.
Исходя с полученной информации, можно вывести следующие утверждения:
Во-первых, данный скрипт абсолютно непригоден для полноценного использования на слабых устройствах, объясняется это чрезвычайно высокой нагрузкой на процессор.
Владельцам средних и даже относительно мощных устройств с этим подфартило, использовать можно во всю. Во-вторых, это лишь забава, не более того. Основательного практического применения найти мне не удалось. Разве не так?
Принтерное веселие: или очередная проблема крупных компаний
Иногда у меня складывается ощущение, что всё, что подключено к глобальной сети имеет дыры, уязвимости и всячески может компрометировать пользователей, владельцев. Воистину не без греха здесь все, чего стоит только дыра в беспроводных камерах от достаточно крупного производителя. Да, всего-то достаточно браузерного запроса, чтобы получить файл конфигурации system.ini, где и хранится пароль от консоли управления. Не нужно долго и мучительно подбирать пароли - лишь несколько символов подписать к айпи адресу в браузере, но не об этом.
Этот инструмент для тестирования безопасности принтеров, разработан он был в Рурском университете и имя будет ему PRET, что расшифровывается как Printer Explotacion Toolkit . Функционал достаточно обширный: можно и печатать свои файлы, копаться в файловой системе и даже попытаться перейти в связанные директории принтера и другого устройства. Так, к примеру, можно случайно попасть в файловую систему компьютера, используя лишь этот репозиторий. Давайте-ка установим его:
Код:
pip install colorama pysnmp
apt-get install imagemagick ghostscrip
git clone https://github.com/RUB-NDS/PRET.git
Уязвимость, о которой пойдёт речь в данном разделе, расположена на порту 9100, в идеале, мы можем запустить сканер диапазонов на этот порт и после уже вбивать каждый адрес в консоль, проверяя наличие уязвимости. Но это долго, я так считаю, а это ведь лишь демонстрация, потому воспользуемся Шоданом, кстати где-то валялся репозиторий, который позволял использовать Шодан без API ключа, давайте-ка воспользуемся им, жадные мы ведь:
Код:
git clone https://github.com/lime542/free_shodan.git
cd free_shodan
pip3 install -r requirements.txt
python3 free_shodan.py
Затем банально составляем запрос на порт 9100 и на PJL метод и наблюдаем неплохого количества список айпи адресов с портом, что был указан ранее.
Теперь переходим во второй терминал, где запускаем уже нашу утилиту для тестирования безопасности принтеров и составляем, с учетом полученных ранее данных о адресе, следующую команду вводим:
Код:
cd PRET
python2 pret.py 68.14.228.243 pjl
Далее идет процесс подключения и получения заголовка, который несёт в себе информацию об устройстве, а после уже и нас перенаправляет в shell , где, выполнив следующую команду, мы узнаем список всех доступных:
Код:
help
Список достаточно обширный, но, к сожалению, не все работают корректно. Так при попытке просмотра папок следующей командой:
Код:
ls
Нас просто реконектит, но это не особо и беда, основная масса не подводит, потому давайте узнаем не связано ли это устройство с каким-нибудь другим:
Код:
fuzz path
Результат везде отрицательный, но , если поискать - можно найти и с положительным откликом на эту команду ,а тогда уже будет веселей, но в рамках данного тестирования делать мы это не будем.
Теперь давайте напечатаем что-то, использовав следующий синтаксис команды:
Код:
print "123123"
Если ошибок никаких не имеется - успех, во всяком случае больше смысла говорить о функционале нет, возможности обширные, начиная от печати, заканчивая физическим уроном устройству.
Мобильный хостинг: зачем же тогда все эти сервисы
Итак, вещица довольно забавная , но и одновременно простая как двери, потому затягивать нет к чему. Формально мы сейчас установим собственный апачи-сервер на термуксе, а после и зальем туда какой-то сайт и разницы особой какой именно нет.
Разберемся сразу с нюансами, а они присутствуют, скрывать не стану. Многие могут скептически к этому отнестись и подумать, что это будет жутко виснуть и сам сайт будет очень долго грузиться из-за производительности мобильного устройства, но, проведя несколько тестов, могу сказать, что в основном хостинги доверяют нам в аренду не самые мощные сервера. Обычно это 1 гигабайт оперативной памяти и какой-то дохленький процессор с одним ядром.
Естественно вывод напрашивается сам по себе - телефон мощнее и с производительностью вопросов не будет никаких.
Единственный минус кроется в нестабильности подключения, если использовать как беспроводные сети, так и мобильный интернет. Также подводит факт, что без рут прав возможно установить лишь порт 8080, а не просто 80, как у адекватных сайтов. Но это всё решает рутирование девайса.
Итак, для начала давайте установим сам Апач, а в комплекте и ещё несколько полезных штук:
Код:
pkg install php-apache wget git nano -y
Хотя сам текстовый редактор нам не понадобится, ибо есть очень большой шанс напортачить, дальше поймёте в чём и как.
Затем проверяем есть ли у приложения возможность просматривать память телефона:
Код:
ls /sdcard/
Если всё пучком и ошибок нет, то продолжаем, если есть - смотрите чуточку выше, я вроде как объяснял там, как это исправить.
После установки мы можем запустить уже сам сервер следующей командой:
Код:
apachectl start
Затем узнаем свой айпи в локальной сети, использовав:
Код:
ifconfig
И переходим по нашему адресу, добавив порт 8080. Если всё путем - увидите надпись, как на скриншоте.
Теперь нам нужно отредактировать конфиг нашего сервера, для этого можем воспользоваться редактором, что скачали ранее , или же скопировать конфиг в память телефона, а там уже подсобить в правке ноутбуком или другим устройством. Всяко, я так подумал, что возни будет больше , если пытаться сделать вторым методом.
Потому делаем проще, но намного опасней:
Код:
nano ../usr/etc/apache2/httpd.conf
Для поиска можем воспользоваться командой CTRL+W, если у вас имеется root, то следует найти строку с параметром “Listen”, где изменить порт на восьмидесятый, если прав суперпользователя нет - оставляем, как есть.
Затем ищем строку “DocumentRoot”, там указан путь к корневой папке нашего сайта, советую перенести её в основную память телефона, так будет проще:
Код:
DocumentRoot “/sdcard/web/777”
<Directory “/sdcard/web/777”
Затем ищем параметр “Directory Index”, где дописываем в том же ряду(к слову, использовалась Hakers keyboard, которая имеется в гугл плей, штука оказалась весьма полезной) :
Код:
index.php
После ищем строчку “Load”, это список модулей, которые будут подгружены, включаются и выключаются они путем # на начале. Если этот символ есть - модуль выключен, если нет - включен.
Убрать стоит решетку возле “LoadModule mpm_prefork_module libexec/apache2/mod_mpm_prefork.so “
А поставить возле “#LoadModule mpm_worker_module libexec/apache2/mod_mpm_worker.so”
И теперь, для того, чтобы работал PHP, мы добавляем в конец следующие строки:
Код:
LoadModule php7_module libexec/apache2/libphp7.so
<IfModule php7_module>
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
</IfModule>
Затем осталось лишь сохранить документ комбинацией CTRL+S и создать саму папку в памяти телефона:
Код:
mkdir -p /sdcard/web/777
После можно с помощью ПК закинуть файлы сайта в корневую папку, произвести рестарт апачи и перейти по адресу, как можно видеть на скрине - сайт:
Код:
apachectl restart
Теперь уже можно присвоить доменное имя с помощью dnsmasq, но возникает проблема. Именно я уже не могу вывести эту штуку в глобальную сеть из-за чёртового динамического адреса, если бы не он - пробросили бы в роутере порты и дело в шляпе.
Выводы
Ну, а на этом у меня всё. Благодарю за прочтение этой писанины, надеюсь, что кое-что почерпнули. Всем удачи и всех прочих благ, а я вас покидаю.
Последнее редактирование: