Блоги

GRUB: Получаем полный доступ к системе


Дублирую сюда мой пост на Хабре:

GRUB, безусловно, является самым продвинутым загрузчиком на сегодняшний день, и за это любим админами и разработчиками по всему миру. Его функционал настолько широк, что он практически монополизировал рынок загрузчиков в мире *NIX, а некоторые вообще говорили, что GRUB2 — это скорее маленькая операционная система, чем просто загрузчик. Эдакий швейцарский нож в мире загрузчиков.

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

Сценарий 1: загружаемся со внешнего носителя

Ситуация, когда в BIOS заблокирована загрузка со внешних носителей, — отнюдь не редкость. Делается ли это из соображений безопасности или иных причин не так уж и важно. Важно то, что GRUB может помощь нам преодолеть этот барьер. Ниже описана последовательность действий, которая позволит нам загрузиться с флешки.

  1. Изготавливаем загрузочную флешку любым способом, например, с помощью unetbootin.
  2. Вставляем флешку и включаем компьютер.
  3. Дожидаемся появления экрана grub (иногда для того, чтобы успеть его поймать, надо держать Shift).
  4. Перед нами появляется список вариантов загрузки.
  5. Нажимаем c и входим в интерактивный режим.
  6. Теперь требуется указать носитель, с которого будем грузиться. Обычно (hd0) — это родной жесткий диск компьютера, а флешка становится (hd1). Выяснить, как назовется флешка в вашем случае, нетрудно просто опытным путем.
    Так или иначе, вводим: root (hd1) для GRUB Legacy или set root=(hd1) для GRUB2
  7. Просим передать управление загрузчику на указанном диске: chainloader +1
  8. Загружаемся! boot

Если вы все сделали правильно, то в результате вы успешно загрузитесь со своей флешки, несмотря на запрет в биосе. Опытным путем мне удалось выяснить, что метод не работает если ваша материнка не умеет грузиться с usb или не опрашивает устройства при каждой загрузке (как, например, на моем eee PC при включенном Boot Booster).

Лирическое отступление: этот метод мне удалось опробовать в одном из терминальных классов нашего университета, где на компах стояли в дуалбуте винда с линуксом. Прелесть того случая в том, что факультетский сервер экспортировал /home по NFS и та терминалка была занесена в разрешенные подсети. В результате, мне удалось прочитать домашние каталоги пользователей того сервера и уйти так никем и незамеченным.

Сценарий 2: получаем консоль root'a

Опять-таки, ситуация, когда пароль рута не сообщают конечным пользователям компьютера, ни у кого удивления не вызывает. Однако все тот же GRUB поможет нам это досадное ограничение обойти. В отличие от предыдущего способа, удобного для доступа в духе «незаметно пришел, скопировал и ушел, не наследив», этот способ удобнее для внесения нужных нам изменений в установленную систему. Кроме того, для этого нам уже не нужны никакие флешки.

  1. Аналогично, добираемся до списка вариантов загрузки.
  2. Выбираем нужный нам вариант.
  3. Входим в режим редактирования. Здесь есть небольшие отличия между GRUB Legacy и GRUB2. В GRUB2 после нажатия клавиши e мы сразу попадаем в режим редактирования, а в GRUB Legacy нужно нажать e первый раз, выбрать строку для редактирования и еще раз нажать e.
  4. Выбираем строку, которая начинается со слова linux или kernel.
  5. Удаляем из нее слова quiet и splash, если они есть, и дописываем в конец single init=/bin/bash
  6. Если у нас GRUB2, то сразу жмем Ctrl+X, а если GRUB Legacy — Esc и потом b

В результате мы загрузимся в рутовую консоль безо всяких паролей и ненужных вопросов.

Защита?

И GRUB2, и GRUB Legacy предоставляют возможность ограничить доступ к интерактивному режиму и редактированию с помощью директивы password. Подробности описаны в руководстве по GRUB2 и GRUB Legacy. В обоих случаях манипуляции весьма просты и не требуют много времени.

Баян!

В общем, да, ничего нового я не сказал — все это можно нагуглить, например так. Однако, проблема от этого меньше не становится, наоборот. Более того, если с января в школах действительно поставят linux, то желающих считерить или просто «похакать терминалку» станет на порядок-другой больше. И не стоит недооценивать школьников — найдутся и те, кто умеют гуглить. Если же принять во внимание лирическое отступление, которое я сделал в первой части, то тут еще и поле для утечки данных. Думаю, каждый сможет придумать еще пару способов применения.

Nevkontakte.me — introducing Qby CMS


Alek$ пт, 17/09/2020 - 10:50

Qby CMSПришло время опубликовать первый из проектов, которые я упомянал в позапрошлом посте. Позвольте представить вам мой новый сайт-визитку: Nevkontakte.ME.

Мысль о том, что неплохо было бы сделать небольшой сайт-визитку проскальзывала у меня уже довольно давно, однако делать еще один тупой трехстраничник в духе "Главная, обо мне, контакты" было неинтересно. И тут я вспомнил об одном из старых постов Тормоза, в котором он предлагал концепт Cuby CMS — движка для микросайтов в виде, как это ни странно, куба. Однако у Тормоза дело не пошло дальше концепта, а у меня как раз была нужда в чем-то оригинальном и в добавок желание поупражняться в JavaScript-fu.

Взяв за основу идею Тормоза, я добавил анимацию перехода между сторонами с помощью CSS3 2D Transforms (по началу хотел для большей реалистичности юзать 3D Transforms, однако его пока поддерживают только nightly-билы вебкита), немного плюшек для более прозрачной навигации и удобную AJAX-админку.

Однако, поскольку я при этом юзал достаточно свежие технологии, в конце пришлось озаботиться совместимостью со старыми браузерами, в результате чего был порожден упрошенный режим без анимаций для динозавров. Кроме того, для полноты счастья был сделан и режил для работы без JavaScript вовсе.

Вживую все это вы можете повертеть на Nevkontakte.ME, а админку посмотреть на скриншоте:
acp-qby.jpg

Единственное, что я не уверен, стоит ли ее распространять, ибо тогда потеряется главная изюминка — оригинальность, ради которой все и затевалось.

Полнотекстовый RSS - это удобно!


Сегодня, заглянув очередной раз в RSS-ридер и бегло проглядев список новых постов, понял, что больше половины блогов, на которые я подписан, отдают в RSS лишь жалкие огрызки постов и меня это жутко удручает. В частности, читать такие посты мне уже не хочется и я зачастую их пропускаю практически машинально - разве что заголовок зацепит, но это бывает не часто. И в то же время я отдаю себе отчет в том, что будь пост целиком в моем ридере - я бы его прочитал, хотя бы по диагонали.

Почему же такая практика стала популярной? Я сходу могу назвать такие причины:

  1. Защита от автоматического воровства контента (по-видимому, самая главная).
  2. Стимуляция пользователя лишний раз зайти на блог.
  3. Желание защитить пользователя от "попадания на трафик" на случай, если вдруг получится большой пост с кучей картинок.
  4. Все так делают.

Все эти аргументы кажутся мне довольно неубедительными, и вот почему:

  1. Современные парсеры-грабберы достаточно умны, чтобы пройти по ссылке из ленты на сайт и стащить полный пост.
  2. На самом деле тут все, как мне кажется, наоборот: пользователь как правило или ленив или спешит, поэтому он не будет утруждать себя чтением огрызка и кликом, если тот его не заинтересует с первого взгляда. А заинтересовать не так-то просто. Кроме того, все мы знаем о собственном любопытстве и что если начнем читать - наверняка захочется прочитать все, а кликать лень, лучше не напрягаться и не начинать читать вовсе. В результате блоггер не только не увеличивает посещаемость блога, но и "теряет" часть подписчиков из-за того, что они не читают его посты целиком.
  3. Признайтесь честно, вы не так уж и часто пишете такие посты. И если вдруг случится, что напишете, то вручную поставить кат совсем недолго.
  4. Ну это вообще просто стадный эффект.

Помимо этого я вижу еще как минимум один минуса:

  1. Этот актуален для многих блоггеров, а именно - тех, кто сидит на Вордпрессе. ВП имеет дурное свойство при автоматической генерации тизера для RSS срезать половину форматирования, которое пересекает границу отсечения и в результате выглядит этот тизер ну совсем непривлекательно. Да и обрыв на полуслове тоже не добавляет изящества.
  2. Здесь затронуты мобильные пользователи вроде меня - те, кому удобно закачать обновления ленты дома, а потом спокойно читать в том же транспорте, не тратя деньги на мобильный трафик, цены которого всегда казались мне сильно завышенными.

Поэтому я призываю блоггеров - отдавайте в RSS полные посты, не мучайте своих читателей! И если вы согласны со мною, то опубликуйте заметку, постовой или еще что-нибудь с тем же призывом, пусть блогосфера станет немного удобнее.

Вообще, самое грамотное решение этой проблемы я видел у vitashok'a: у него есть два фида: полный и урезанный. Рекомендую все брать с него пример ;)

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

PS. В RSS я полные посты отдаю уже давно, а с этого момента и на главной блога посты тоже будут отображаться целиком.

Летнее


Вот и прошло лето :-)

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

Как и у любого студента приход лета знаменуется не первым обгоранием на пляже и даже не легко одетыми девушками, а сессией. Какие уж тут девушки, когда надо за месяц пройти семестровую программу по 5 предметам :D Тем не менее, мне удалось побороть даже самые зверские предметы и избежать троек, честно заработав стипендию (1300р./мес. !).

А вот дальше все пошло гораздо приятнее. Весь июль у меня прошел под знаком Parallels®, поскольку я в этом году все же решил изменить ЛШЮП'у (прости, в следующем году постараюсь наверстать) и пошел на летнюю практику в лабораторию Параллелс-НГУ. Там я работал в довольно большой команде аж из 16 человек над проектом PCI Scanner.

С этим проектом связана достаточно забавная история. Согласно задумке нашего куратора-научрука в команду набрали студентов, окончивших 1-2 курсы и из тех, кто после летней школы останется на стажировку в лаборатории, будет сформирована команда, ориентированная на информационную безопасность. В конце концов, именно эта команда должна заняться изготовлением инструмента проверки биллинговых систем стандарту безопасности PCI. Но, учитывая общую неопытность команды в качестве триального проекта, который позволит нам набить руку в программировании и веб-технологиях в частности, было выбрано создание сайта с играми, основанными на разных математических проблем. Так, например, игра Complexity имеет в своей основе тот факт, что решение системы уравнений над кольцом Z2 - задача NP-трудная, то есть разрешима только полным перебором.

Таким образом, весь июль у меня был посвящен проекту NP-Hard Games, где в мои обязанности входила разработка самого движка сайта. И несмотря на то, что новичком в веб-программировании я уже давно себя не считаю, мне довелось столкнуться с несколькими новыми для меня интересными проблемами и получить массу полезного опыта. В частности я познакомился с новым для меня фреймворком Yii и уже успел его полюбить :-) Еще одной новой для меня задачей стала разработка API для сетевого взаимодействия в играх (да, даже в математических играх бывает мультиплеер ;-)

Происходило все это с 28 июня по 29 июля, и финишной чертой в виде отчетной конференции 30-го июля. Все это время я работал в режиме фулл-тайм, по 8 часов в день с 9 до 18 и часовым перерывом на обед, тоже довольно занимательный опыт. Зато пятидневная рабочая неделя для нас стала раем на земле!

Тем не менее, 30 июля я с облегчением последний синхронизировал продакшен с девелоперской веткой и позволил себе забыть об этом проекте аж до сегодняшнего дня.

На август у меня была запланирована поездка в город Абаза, что в Хакасии, в гости к родителям моей девушки, аж на целых три недели. И, надо отдать должное, эти три недели не сумели омрачить даже такие прелести жизни в частном секторе, как "туалет типа сортир" на улице. 3 недели полной безответственности, вкусной еды, свежего воздуха и позитивного общения оказались именно тем, что нужно измученному учебой, сессией, а потом и летней практикой студенту. Так что теперь я точно знаю, где проведу следующий август :-) Кстати, несмотря на то (или скорее благодаря тому), что Абаза - довольно маленький город, он очень симпатичный, а природа вокруг просто зашибись, да еще и мошек нет (те, кто живут в Академгородке меня поймут). Взять хотя бы то, что я, насквозь городское дитя, с удовольствием дважды съездил по грибы, второй и третий раз в жизни соответственно. Еще одним результатом поездки стало, что я наконец вплотную занялся своим проектом-долгостроем и теперь он уверенно движется к завершению, что не может не радовать.

Вот такое вот было лето. Одно из самых приятных в моей жизни :-)

И напоследок немного о планах - их до фига, дай бог свободного времени. Я планирую написать пару-тройку статей по мотивам разработки nphardgames.com, а так же представить парочку своих последних проектов. Кроме того, я уже давно собираюсь модернизировать этот блог и перевести в порядок уже вышедшие продукты. Наиболее интересными свершениями скорее всего станут две вещи: Google&Bing Cache Dumper станут доступны по свободной цене, а RegSubmitter и вовсе станет бесплатным. Правда, еще не очень скоро, но станет. А еще блог переедет на новый домен и заодно модернизируется.

RoboMap: привет из прошлого.


Чуть больше двух лет назад я запустил один небольшой эксперимент с кодовым названием RoboMap.txt. Суть его заключалась в том, чтобы на практике выяснить какие ссылки способны опознать поисковики. Спустя три недели после начала эксперимента я подвел итоги и забыл о нем. До сегодняшнего дня.

В прошлое воскресенье мне пришло уведомление от хостера о том, что я выбрал 80% квоты трафика. Я слегка удивился, поскольку все мои сайты, размещенные на этом аккаунте (включая этот блог =) особой популярностью не пользуются, глянув на календарь, решил не дергаться, ведь месяц подходил к концу и квота скоро должна была возобновиться. Я оказался почти прав, квота таки кончилась, но в самый последний день месяца. Именно поэтому вчера весь день мой блог был недоступен. Поскольку целый день я бегал вдали от компа, обнаружил я проблему только к вечеру и решил не дергаться и просто подождать конца суток.

Сегодня утром я первым делом убедился, что сайт снова онлайн, и стал разбираться, в чем причина. Каково же было мое удивление, когда я увидел, что 70% квоты трафика пришлось на robomap.stalker-x.ru - тот самый проект двухлетней давности! Я тут же полез смотреть его собственную статистику и увидел, что лог посещений поисковиками за два года раздулся до полутора сотен тысяч записей, при чем последние записи датировались сегодняшним днем!

Вот тут-то на мнея и снизошло озарение. Изначально я запретил поисковикам индексировать лог посещений, но в результате небольшой ошибки в robots.txt Яндекс таки проиндексировал эти страницы. Мне стало интересно, будут ли остальные поисковики их индексировать, и я убрал запрет вообще.

Оказалось, что будут и еще как. Google и Rambler принялись с таким энтузиазмом жрать страницы, что в июле выкачали с сайта 16 Гб абсолютно неинтересного, генерированного контента. Почему? Хотел бы я знать, но в индексе Google в данный момент сидит 5 тысяч страниц, а у Рамблера - 14. Яндекс оставил только заглавную и еще парочку, а на остальных я не смотрел.

Есть ли от этого практическая польза? Думаю, нет. Об этом говорит статистика Liveinternet. С другой стороны я даже не пытался оптимизировать все это под какие-то запросы, так что может профи бы и сумел извлечь из этого хороший результат.

Тем не менее, сейчас я возвращаю запрет на индексацию лога, чтобы не грузить бесполезным трафиком сервер. Эксперимент удался и закрыт.