Некоторые ресурсы при копировании текста с сайта вставляют в буфер обмена ссылку на себя. Например, такое поведение будет при копировании первого абзаца со страницы КонсультантПлюс.
Как это технически работает?
В JS можно на событие copy навесить свой обработчик, который что-то модифицирует. Есть более современное Clipboard API.
Этот функционал позволяет осуществить атаку на целостность данных через манипуляцию с содержимым буфера обмена. Результат - страничка, где написано
echo "not evil"
Теперь скопируйте этот фрагмент и вставьте в терминал. Поздравляю, вас хакнули. В терминал вставился другой текст
echo "evil"
Не копируйте команды сразу в терминал. Лучше перепечатать (так ещё и запомнится лучше) или идти по пути сайт — блокнот — анализ глазками. Копировать без переноса строки тоже не поможет — наглый js может вставить в буффер символ переноса строки. В итоге безопасное
pip install -U pytest
Может сделать с вами что-то злобное. Не всегда об этом можно узнать. Команды в терминале, которые начинаются с пробела, в истории команд не сохраняются. Если вывод команды достаточно длинный (установка пакета для python является хорошим примером), то вы даже не увидите настоящую введенную команду.
А ещё так можно модифицировать ваш .bashrc, сделав любой alias.
В телеграм-канале разбираем разные нюансы из жизни разработчика на Python и не только — python, bash, linux, тесты, командную разработку.
Доработал недавно (как и обещал в предыдущей публикации - Ansible. Network-scripts. RHEL8) функционал ansible-хелпера "conf_int_ipv4_via_network_scripts". Теперь изменения сетевых настроек возможно применить временно (например, на период тестирования). Для этого достаточно:
1) сконфигурировать целевые интерфейсы посредством правки файла "config";
2) задать время отката настроек на предыдущие через конфиг "additional_configs/config_temporary_apply_ifcfg" (по умолчанию = 10 минут);
3) запустить скрипт "apply_temporary_ifcfg.sh". Выполняет действия, аналогичные "apply_immediately_ifcfg.sh" (т.е. реконфигурирует сеть в соответствии с файлом "config"), но перед рестартом сервиса "network" запускает на удалённом хосте bash-скрипт "rollback_ifcfg_changes.sh", который возвращает сетевые настройки к виду до модификации через временной промежуток, определённый в файле "config_temporary_apply_ifcfg";
4) протестировать сетевые связанности целевых хостов (вероятно, когда-нибудь реализую утилиту на основе стека "ansible + bash + perl");
Итого, два варианта на выбор пользователя - либо применить новые настройки незамедлительно (just run "apply_immediately_ifcfg.sh"), либо применить их временно (run "apply_temporary_ifcfg.sh") до осуществления тестирования и отмены возврата к предыдущей конфигурации сети хоста (run "apply_immediately_ifcfg.sh").
Конечно, неплохо бы добавить централизованный сбор наименований сетевых интерфейсов и соответствующих им MAC-адресов, дабы в автоматическом режиме (при попытке применить конфигурацию) сверять с тем, что пользователь напишет в конфиге (и прекращать выполнение софта, если, например, для интерфейса задан некорректный MAC), но эту фичу, думаю, реализую позже.
P.S. На очереди небольшой сюрприз для любителей разрешать доступ только к тем сетевым портам, которые необходимы для конкретного сервиса.
Есть такой вид атаки на отказ в обслуживании (DoS, Denial of Service) — forkbomb. Запускается процесс, который бесконечно порождает сам себя, пожирая все ресурсы системы. Прав суперпользователя не требуется, любой пользователь может создавать процессы.
Cкрипт атаки выглядит так. Функция порождает две версии себя, связанные конвейером. Правая функция уходит в фоновый режим с помощью знака амперсанд &.
forkbomb() { forkbomb | forkbomb& }
Скрипт можно переписать в непонятный однострочник, изменив название на символ двоеточия:
:(){ :|:& }; :
Такой набор символов эквивалентен скрипту выше. При этом он компактен, и его могут запихнуть вам в качестве шуточного ответа на вопрос. Спасибо ещё, что не патч Бармина.
В видео также рассматриваются линуксовые команды команды
1. lscpu
2. nproc
3. uptime
4. top
5. free
6. переменные $$ $PPID
7. настройка числа PID в /proc/sys/kernel/pid_max
8. ctrl-L для очистки терминала
9. разделение экрана в терминале terminator
10. буфер выделения и вставка по нажатию на колёсико мышки
11. pkill
И разбираются флаги такой docker команды
docker run --it --rm --cpus="0.5" --memory=4G --pids-limit=1000 --name=forkbomb ubuntu bash
Плюс применяются команды docker ps / stats / exec.
Хотите почувствовать себя капитаном тонущего корабля? Теперь ресурсы системы принадлежат не вам, а паразитному процессу forkbomb. Приятного просмотра!
Починить атакованную систему можно только перезагрузкой. Ну, если атакующий скрипт вам не дописали в .bashrc. Тогда только recovery mode в grub.
В телеграм-канале разбираем разные нюансы из жизни разработчика на Python и не только — python, bash, linux, тесты, командную разработку.
Практически завершил работу над ansible-хелпером "conf_int_ipv4_via_network_scripts" (репозиторий "ansible_helpers"), но "практически" означает, что совокупность скриптов и сценариев уже можно использовать в работе.
2. Переходим в директорию ".../ansible_helpers/conf_int_ipv4_via_network_scripts/rhel8_based".
3. Заполняем inventory-файл "conf_network_scripts_hosts" (не забываем про ssh-ключи на удалённых хостах).
4. Заполняем основной файл конфигурации "config" (такой вот незамысловатый нейминг). Каждая линия - настройка конкретного сетевого интерфейса на конкретном хосте. Присутствует файл со всеми возможными примерами конфигурации - "config_examples".
5. Правим дополнительные файлы конфигурации, расположенные в директории "additional_configs":
а) dns_settings (настройки DNS). По умолчанию содержит только доменные сервера Google (8.8.8.8, 8.8.4.4) в качестве общих NS (nameservers/сервера имён) для всех хостов из inventory-файла. Также присутствует возможность для отдельных хостов выставить уникальные сервера имён;
б) config_del_not_configured_ifcfg. Файл конфигурации, определяющий действия в отношении сетевых интерфейсов, отсутствующих в основном файле конфигурации (который "config"). Для inventory-хостов, вписанных в этот конфиг, действует правило - отключать сетевые интерфейсы (и удалять соответствующие ifcfg-файлы), не сконфигурированные в файле "config".
Что произойдёт после запуска (если опустить часть с установкой "network-scripts"), если кратко:
1. Бэкап ifcfg-файлов с сохранением в директорию (и поддиректории) ".../playbooks/ifcfg_backup_from_remote": "history" - для хранения, "now" - для дальнейшего сравнения с ifcfg-файлами, генерация которых (на основе config-а) произойдёт на следующем этапе.
а) ifcfg-файлы для каждого inventory-хоста (на основе основного конфига). Размещаются в ".../playbooks/dyn_ifcfg_playbooks/dyn_ifcfg";
б) файлы resolv-conf (на основе "dns_settings"). Директория ".../playbooks/dyn_ifcfg_playbooks/dyn_resolv_conf";
в) task-файл для каждого inventory-хоста, содержащий ansible-инструкции для реконфигурации сети (директория ".../playbooks/dyn_ifcfg_playbooks"). Важный момент - если сгенерированные ifcfg-файлы не отличаются от текущих (скопированных на первом этапе исполнения), то task-файл будет содержать только ansible-код для взаимодействия с "resolv.conf".
3. Исполнение сформированных task-файлов.
P.S. №1. Осталась самая малость - реализовать механизм временного применения сетевых настроек (о чём писал ранее).
P.S. №2. Надеюсь, кому-то результат моих изысканий поможет сэкономить время.
Начну с того что я программист и немного увлекаюсь музыкой, развлекаюсь, так сказать.
Не так давно создал канал для своего творчества. Так сложилось что в лекции Анны Виленской мне понравился один момент и я выложил у себя его на канале.. В итоге это понравилось не только мне, но и еще более 600 человек. Больше 18к просмотров и 60 комментариев.. Действительно квартер здОрово сыграл!
Так сложилось что моя деятельность давно в какой-то степени связана с трансляциями и я решил запустить стрим в поддержку квартета.
Теперь по теме.
Запустил трансляцию на базе Orange pi zero 2
У меня на ней работает Home Assistant и node red с домашней автоматизацией.
Дополнительная трансляция по нагрузке ресурсов почти не заметна, поэтому мне совершенно не сложно ее содержать))
И вот сечас уже 100 часов непрерывного воспроизведения записи квартета)
Технологии.
1. Сначала я в figma нарисовал графику
2. Потом в Davinci Resolve смонтировал статический видик, во Fusion добавил минимальную анимацию
3. Далее я использовал wkhtmltoimage для получения картинки с о страницы патреон
5. И последнее - ffmpeg для склейки видео и картинок + стрима в youtube
Вывод.
Очень легко организовать стрим с минимальными затратами ресурсов.
Еще раз инструменты которые я использовал:
1) Orange pi zero 2
2) Figma
3) Davinci Resolve 17
4) wkhtmltoimage
5) GraphicsMagick
6) ffmpeg
Если вам интересна эта тема и вы не знакомы с какими-то из этих инструментов - очень рекоммендую с ними познакомиться)
Если будут какие-нибудь вопросы или предложения - пишите, с радостью обсудим))
P.S. Если вы программист или у вас просто хороший доход, пожалуйста, поддержите музыкантов) они стараются для нас и они действительно это очень круто делают! https://www.patreon.com/San4eZMusic
Стоит отметить что все эти сервисы платные, но цена рассчитывается от количества вызовов функции, времени выполнения и потребляемой оперативной памяти. В любом случае, при использовании этих функций в личных целях, стоимость будет намного ниже даже самого дешевого VPS, дешевле только бесплатный VPS.
В первую очередь нам необходимо создать аккаунт в Yandex Cloud (или Google Cloud, если вдруг кто-то захочет повторить процесс там), подробно данную процедуру я описывать не буду, там ничего сложного.
После создания аккаунта заходим в консоль: https://console.cloud.yandex.ru и в левом меню переходим в пункт Cloud Functions, создаем функцию и придумываем ей имя.
После этого нам предлагают выбрать язык
Как видите, выбор большой. Я же не буду искать лёгкий путей и выберу Bash.
После этого мы попадаем в редактор.
В настройках в нижней части мы будем добавлять переменные окружения для хранения там, например, API ключа от бота. Также желательно увеличить таймаут, так как процесс синтеза речи или обработки фотографий может быть не быстрым.
Важно: После каждого изменения необходимо в правой части экрана нажимать на кнопку "Создать версию". В документации https://cloud.yandex.ru/docs/functions/ может почитать детальную информацию по каждому языку и посмотреть примеры.
Так выглядит моё окно редактора с полностью готовой функцией.
Код функции:
#!/bin/bash # Ответ со статусом 200, оставляем из примера echo '{ "statusCode": 200, "body": {} }' # Запросы в функцию попадают через stdin, чтобы его получить достаточно вызвать команду `cat` # Сервис, помимо тела запроса, присылает много дополнительной информации, а сам запрос лежит по ключу body REQUEST=$(cat | jq -r '.body') # В переменную REQUEST достаём весь запрос от telegram MESSAGE=$(echo $REQUEST | jq -r '.message') # Достаем структуру message CHAT_ID=$(echo $MESSAGE | jq -r '.chat.id') # Внутри находим id чата для того чтобы отправить туда сообщение TEXT=$(echo $MESSAGE | jq -r '.text') # Берём текст сообщения который будем озвучивать # Cоздаём токен яндекса # Для этого обязательно в настройках внизу должен быть подключен сервисный аккаунт IAM_TOKEN=$(yc iam create-token) FILE="/tmp/$(date +%s).ogg" # Названия временного файла, в виде текущей даты в секундах # Отправляем текст на синтез и результат записываем во временный файл curl -s -X POST -H "Authorization: Bearer ${IAM_TOKEN}" \ --data-urlencode "text=${TEXT}" \ -d "voice=alena&lang=ru-RU&folderId=${FOLDER_ID}" \ "https://tts.api.cloud.yandex.net/speech/v1/tts:synthesize" > $FILE # Полученный файл отправляем в telegram curl -s https://api.telegram.org/bot${BOT_API_KEY}/sendVoice -F "voice=@${FILE}" -F "chat_id=${CHAT_ID}" > /dev/null # Удаляем файл rm $FILE > /dev/null
В переменных окружения указан API ключ от бота который выдаётся при его создании.
<API_KEY> - заменить на токен бота, а в url= соответсвенно ваша ссылка.
На этом всё, бот должен работать. Проверяем:
Для создание второго бота проделываем всю ту же процедуру, но на этот раз, для использования сервиса обработки фотографий, нам необходимо зарегестрироваться ещё и на сайте https://mcs.mail.ru, и получить там токен для использования его в API.
Готовая функция выглядит так:
Не обращайте внимания на подсветку кода, из-за сложного синтаксиса в 11 строке всё ломается. В переменных окружения как и в прошлый раз указан API ключ бота и API ключ от mail.ru.
Фотографии взяты из последних постов на пикабу по тегу черно-белое фото
P.S. Приведённый мной код хоть и работает, но представляет из себя определенную субстанция, так как в нём нет абсолютно никаких обработок ошибок и т.п. Единственное что есть - это проверка того что присланный файл это фотография, во втором боте.
P.S №2. Ссылки на ботов не оставляю так как использованные сервисы по синтезу речи и колоризации фотографий платные, хоть и очень дешёвые. С тарифами можно ознакомится на соответствующих сайтах. Кому любопытно попробовать синтез речи, на сайте https://cloud.yandex.ru/services/speechkit есть такая возможность. А колоризация доступна на сайте: https://9may.mail.ru/restoration/ , но не уверен что используются одни и те же алогритмы.
Несмотря на капризы погоды, лето неумолимо приближается. Значит, занятия в спортивном зале или домашние тренировки получится заменить на активности под открытым небом. Собрали для вас товары, которые сделают уличные воркауты интереснее, увлекательнее и полезнее.
Мегамаркет дарит пикабушникам промокод килобайт. Он дает скидку 2 000 рублей на первую покупку от 4 000 рублей и действует до 31 мая. Полные правила здесь.
В компактную поясную сумку поместятся телефон, ключи, кошелек или другие нужные мелочи. Во время тренировки все это не гремит и не мешает, но всегда находится под рукой. Материал сумки прочный и влагонепроницаемый, вещи в ней защищены от повреждений, царапин или пота.
С фитнес-резинкой можно тренировать все группы мышц: руки, ноги, кор, ягодицы. А еще она облегчает подтягивания и помогает мягко растягиваться. В сети можно найти огромное количество роликов с упражнениями разной степени сложности. Нагрузка легко дозируется: новичкам подойдет резинка с сопротивлением до 23 кг, опытным атлетам — до 57 кг. При этом оборудование максимально компактно и поместится даже в небольшую сумку.
Для тех, кому надоели обычные тренировки. Слэклайн — это стропа шириной 50 мм, с помощью которой осваивают хождение по канату. Тренажер учит сохранять баланс, прокачивает координацию и концентрацию, а еще дает отличную нагрузку на спину, руки и ноги.
Настольный теннис — простой в освоении вид спорта, который отлично помогает размяться и тренирует скорость реакции. В комплект входят две ракетки, три мяча, сетка, накладка и чехол — все, что нужно, чтобы поиграть вечером во дворе с другом или устроить небольшие соревнования. Этот недорогой набор подойдет именно для развлечения и веселья, устанавливается почти на любой стол.
Еще один вид спорта, которым можно заниматься, даже не имея серьезной подготовки — бадминтон. С набором от Wish Steeltec вы сможете потренировать силу удара, побегать и просто хорошо провести время. Детали яркие, так что их трудно потерять даже на природе. Леска натянута прочно, ресурса ракеток должно хватить не на один сезон.
Фрисби воспринимается как простое пляжное развлечение. Тем не менее перекидывание друг другу тарелки задействует все группы мышц и развивает скорость реакции. Эта тарелка летит далеко и по понятной траектории — отличный снаряд для начала. Кстати, фрисби — это еще и ряд спортивных дисциплин со своими правилами и техническими сложностями, так что игра с друзьями может перерасти в серьезное увлечение.
Стильный мяч из износостойкой резины отлично подходит для уличных тренировок. Вы сможете поиграть компанией в баскетбол или стритбол или просто отработать броски. При производстве используется технология сбалансированного сцепления: это значит, что снаряд не сбежит от вас и будет двигаться по стабильной траектории.
Футбол — один из самых популярных в России видов спорта. Играя, можно отлично побегать, потренировать меткость и отработать взаимодействие в команде. Футбольный мяч Torres Striker выполнен из качественного полиуретана и резины и выдержит не один десяток матчей, не потеряв упругости. Отличная балансировка и оптимальный размер делают его подходящим как для взрослых, так и для подростков. Он достаточно тяжелый, почти как в профессиональном спорте, так что совсем малышам не понравится.
Пляжный или обычный волейбол? А может быть, пионербол, как в детском лагере? Мяч TORRES SIMPLE COLOR подойдет для любой из этих игр. Камера отлично держит давление, поэтому вам не придется постоянно подкачивать его, а качественные материалы (полиуретан и бутил) сохраняют все характеристики даже при интенсивном использовании.
Многоскоростной велосипед с рамой 19-го размера подойдет как мужчинам, так и женщинам. Это отличный вариант для новичков: модель доступная, удобная. Поможет понять, нравится ли вам велоспорт. Конструкция велосипеда позволяет ездить по дорогам разных типов, поэтому вы сможете перемещаться по городу или отправиться в поход. Есть складной механизм — велосипед с ним легко возить в машине, на электричке и просто хранить в кладовке.
Более продвинутая модель для тех, кто уже оценил прелесть движения на двух колесах. Геометрия велосипеда предполагает вертикальную посадку. Это обеспечивает более удобное положение тела, чем на других байках. В конструкции предусмотрены детали для комфорта и безопасности: пружинная вилка с ходом 100 мм, сервисная подводка тросов и дисковые гидравлические тормоза.
Если вы не фанат велоспорта, но хотите получить свою дозу физической нагрузки, перемещаясь по городу, выбирайте самокат. В модели PLANK Magic 200 есть регулировка руля по высоте, надежные тормоза и прочная увеличенная дека из алюминия. Когда вы катаетесь на самокате, работают мышцы ног, ягодиц, спины и живота, а заодно добираетесь, куда нужно. Если вы решите сделать паузу в тренировках, самокат легко складывается для хранения.
Любая активность на свежем воздухе требует хорошей обуви, специально сделанной для занятий спортом. Яркие кроссовки Hoka RINCON 3 с облегченным весом амортизируют, снижают нагрузку на суставы. Выраженный рельеф подошвы обеспечивает сцепление с поверхностью вне зависимости от того, где проходит тренировка: на специальной площадке, асфальте или грунте.
Легкие женские кроссовки из линейки Clifton подходят для занятий на твердых покрытиях. Дышащий сетчатый верх поддерживает вентиляцию стоп, чтобы можно было тренироваться даже в жару. Подошва из легкой пены EVA гасит силу ударов. Кроссовки беговые, подходят для тренировок на длинных дистанциях.
Во время занятий на свежем воздухе важно защитить голову от перегрева. С этим отлично справится легкая и светлая бейсболка — например, от GLHF. Она удобно сидит на голове, не сваливается и не отвлекает от занятий, благодаря сетке голова меньше потеет. Козырек жесткий и не мнется.
Не забудьте защитить кожу от солнца — чтобы не было мучительно больно на следующий день после тренировки под открытым небом. В этом поможет крем против пигментных пятен с сильной защитой от ультрафиолета SPF50. Водостойкая текстура легко наносится и быстро впитывается, действует два часа — потом крем нужно обновить.
Удобные и стильные солнцезащитные очки защищают глаза благодаря фильтру UV400, который поглощает до 99.99% ультрафиолета. Они выполнены из легких материалов и плотно прилегают к голове. Ударопрочные поликарбонатные линзы с антибликовым покрытием подходят для разных видов спорта.
Используйте промокод килобайт на Мегамаркете.Он дает скидку 2 000 рублей на первую покупку от 4 000 рублей и действует до 31 мая. Полные правила здесь.
Реклама ООО «МАРКЕТПЛЕЙС» (агрегатор) (ОГРН: 1167746803180, ИНН: 9701048328), юридический адрес: 105082, г. Москва, ул. Спартаковская площадь, д. 16/15, стр. 6