Я только что получил новый робот-пылесос, который поможет нам с уборкой. Этот робот (Cecotec Conga 3890), как и многие другие, подключается к вашему Wi-Fi для синхронизации с управляющим приложением. Однажды я проверял свой маршрутизатор и нашел IP-адрес Conga, и это только возбудило мое любопытство, поэтому я решил провести некоторые проверки.

Сначала я запустил со своего терминала nmap, чтобы посмотреть, какие порты у него открыты, и посмотрите, что я обнаружил: порт 22 был открыт 😏.

Итак, я последовал своей наивной мысли и попытался просто связаться с ssh [email protected]. Конечно, он запросил пароль, которого я не знал, и, попробовав обычный пароль для пользователя root, я отказался.

Однако позже в тот же день я начал проводить некоторые исследования и обнаружил, что некоторые люди уже взломали этот пароль и были достаточно любезны, чтобы опубликовать его, так что… я попробовал, и это сработало! 🍾 🤓 престижность

После этого я неизбежно провел около часа, просто перемещаясь по ОС, основанной на OpenWRT, в поисках интересной информации. Во время своего исследования я нашел интересные вещи, такие как загрузочные сценарии, инструменты Wi-Fi, инструменты для обновления прошивки и… штуку под названием tinyplayer. О боже, какое открытие!

Я подумал: «Это не может быть правдой». Так ли просто заставить Conga воспроизводить звуковой файл? Да, сэр, это так. Я скачал отрывок музыки Чайковского в формате mp3 через wget и запустил tinyplayer tchaikovsky.mp3, а Конга просто начал проигрывать ее вслух. О боже.

На следующий день у меня просто возникла идея: а что, если… я напишу скрипт, который несколько раз случайным образом будет воспроизводить звук? А что, если заставить его воспроизводить забавные звуки? Я простой человек, поэтому я пошел на пердеж 💩, конечно. Поэтому я загрузил их на свой ноутбук и скопировал в Conga через scp,один за другим:

scp ~/Downloads/1.mp3 [email protected]:/root/1.mp3

Затем я потратил некоторое время на написание самого скрипта, который в итоге получился таким, и я поместил его в /root/sounds.sh:

#!/bin/bash
output="sounds.log"
while true; do
  randomNumber=$(cat /proc/sys/kernel/random/uuid | tr -dc '0-9' | cut -c5-8)
  if [[ ${randomNumber} -gt 9900 ]] ; then
    hour=$(date +%H)
    if [[ ${hour} -gt 11 || ${hour} -lt 21 ]] ; then
        fileNumber=$(cat /proc/sys/kernel/random/uuid | tr -dc '1-3' | cut -c1)
        fileName="$fileNumber".mp3
        echo "$(date) - Reproducing $fileName" >> sounds.log
        tinyplayer $fileName
    else
      echo "$(date) - Let's be quiet, it's too late..." >> sounds.log
    fi
  fi
 
  sleep 180;
done

Возможно, это не лучший способ сделать это, но мне все равно. Это просто работает. Каждые 180 секунд он генерирует случайное число от 0 до 9999. Если оно больше 9900, выполнение будет продолжаться, то есть примерно в 1% случаев. Также я добавил временное окно, чтобы робот не начал пукать в 3 часа ночи и не пугал нас до чертиков 😅.

Я также добавил регистрацию в /root/sounds.log для отладки.

Затем я добавил эту строку в файл /etc/rc.local, поэтому скрипт запускается при загрузке.

sh /root/sounds.sh

И это в основном все. Теперь мой робот-пылесос пукает раз в несколько часов.