Содержание статьи
Q: При попытке кинуть на Android-телефон файл hosts при помощи ADB получил сообщение об ошибке. Телефон рутованный. В чем может быть проблема?
A: Несмотря на то что ты рутовал свое устройство, файловая система все же осталась readonly. Можно перемонтировать ее командой adb remount, чтобы она стала read-write. Но для этого нужно, чтобы демон adbd на устройстве был запущен под рутом («adb root»), с чем могут возникнуть проблемы. Воспользуемся более универсальным методом: сделаем remount файловой системы через shell («adb shell») или же непосредственно с устройства, используя Terminal Emulator (или ему подобных программ).
# mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
Система уже read-write, но все еще можешь получить ошибку об отсутствии доступа — его нужно дать:
# chmod 777 /system/etc
Чтобы вернуть файловой системе readonly-статус, набираем:
# mount -o ro,remount -t yaffs2 /dev/block/mtdblock3 /system
Как упорядочить награбленное
Q: По работе приходится захватывать сетевой трафик с разных машин, под управлением различных операционок. Довольно часто забираю cap-файл с собой для дальнейшего анализа. Со временем этих cap-файлов насобиралось очень много на разных носителях, и найти нужный среди этой кучи бывает сложновато. Как бы все это упорядочить?
A: Удобнейший инструмент, который поможет решить твою задачу, — облачный сервис CloudShark. Это облачное хранилище, разработанное специально для файлов дампа трафика. Сервис позволяет просматривать дампы в удобном формате, имеет полезные инструменты для систематизации загруженных дампов: им можно присваивать теги, оставлять свои комментарии в любом месте дампа, а также расшаривать. Это инструмент из разряда must have для любого, кто связан с захватом трафика.
Q: Существуют ли приемлемые способы редактировать реестр винды из-под линукса?
A: До недавних пор «нормальных» способов сделать это из-под Linux не было, так что проще было заюзать LiveCD на базе Windows. Но совсем недавно появился проект HIVEXFS, который опирается на такие разработки, как FUSE и HIVEX. Он позволяет примонтировать реестр Windows к любому каталогу, то есть дальше можно обращаться с ним, как с обычной древовидной файловой системой: каталоги этой ФС являются разделами реестра, файлы — ключами, а содержимое файлов — значениями этих ключей. Типы параметров устанавливаются расширенными атрибутами файла. Монтирование реестра выполняется с помощью команды hivexfs:
# hivexfs /mnt/win /mnt/reg
где первым параметром следует указать точку монтирования диска, на котором размещен реестр Windows, а вторым — каталог, куда будет примонтирован реестр. На данный момент утилита используется в Dr.Web LiveCD.
Q: Запустил BackTrack 5 на планшете поверх Android. Но никак не могу найти там Aircrack-ng. Можно ли его как-то установить?
A: Для этого тебе нужно скачать исходники и скомпилировать их на своем устройстве. Для этого запусти BackTrack (достаточно консоли) и выполни:
# apt-get install zlib1g-dev
# wget http://bit.ly/libssl-dev
# dpkg --install libssl-dev_0.9.8k-7ubuntu8.6_armel.deb
# apt-get install source-aircrack-ng
# cd /var/backtrack/sources/aircrack-ng/1.1/bt9/upstream-sources/
# tar -xzf aircrack-ng.tar.gz
# cd aircrack-ng/
# make
# make install
Теперь можно запускать Aircrack-ng, но работать он будет только с внешним Wi-Fi-адаптером, так как тот, которым комплектуется большинство Android-девайсов, не поддерживает режим мониторинга (ремарка: это не совсем так, группа специалистов выяснила, что режим мониторинга обрезается на уровне драйвера. Энтузиасты модифицировали стандартную прошивку под некоторые девайсы, после установки которой режим мониторинга становится доступным. Но на данный момент решение не очень стабильно, поэтому не буду тебе его предлагать; если интересно, вот ссылка. О том, как подключить внешний Wi-Fi-адаптер, подробнее можно прочитать здесь.
Q: Работаю администратором сети Windows в крупной компании. Сейчас планируется масштабное расширение оборудования, соответственно, это все добро нужно будет как-то мониторить. При этом хочется оперативно получать подробное инфо о поломках. Что порекомендуешь?
A: Большинство продуктов для мониторинга поддерживают отправку SMS/e-mail в случае аварии, но я хочу порекомендовать тебе задействовать свой смартфон для этих целей. Среди существующих на рынке вариантов хочется выделить PRTG от Paessler. Продукт имеет отличные Android- и iPhone-клиенты с богатым набором функций. Помимо самого факта аварийной ситуации, со своего смартфона ты сможешь узнать детали произошедшего, посмотреть различные графики и логи. Еще один хороший продукт — OpManager. Для него нет специальных приложений под мобильные платформы, но есть ничем не уступающий веб-интерфейс OpManager Smartphone GUI. Кроме подробной информации о неполадке, он предоставляет пользователю инструменты ping и traceroute, с помощью которых можно уточнить, что за проблема возникла. Следует отметить, что оба продукта распространяются на коммерческой основе, но, думаю, это не станет непреодолимым препятствием для крупной компании.
Q: Занимаюсь разработкой игрового движка на С++. Сейчас нахожусь в поисках оптимального скриптового языка для проекта. Все советуют Python (boost.python) или Lua, но мне нужно что-то более легковесное. Можешь что-то подсказать?
A: Посмотри в сторону squirrel. Этот легковесный скриптовый язык создан специально для использования в real time программах, в том числе играх. Синтаксис его чем-то похож на Lua, но более С++-подобный. Для критических по времени задач имеется JIT-компилятор. Использовался в таких проектах, как Left 4 Dead 2 и Portal 2.
ОДНОЗНАЧНОГО ОТВЕТА НЕТ
Q: Часто ставлю планшет или телефон на ночь на зарядку — но для полного заряда ему достаточно двух-трех часов. Очень волнует вопрос, не навредит ли «перезарядка» аккумулятору?
Во всех современных устройствах используются литий-ионные батареи. Встроенные в них схемы (контроллеры заряда) автоматически отключают батарею от зарядки, когда достигается максимальный уровень заряда. Соответственно, литий-ионную батарею невозможно «перезарядить», так что не стоит беспокоиться о вреде избыточного питания :).
С другой стороны, работа схем управления зарядом сопровождается выделением тепла. Количество этого тепла зависит от конкретного устройства и еще от массы других параметров. Так вот, литий-ионные батареи не очень это любят. При нагреве они быстрее разряжаются, и срок их службы сокращается.
Q: Реально ли заскриптить батник (или PowerShell-скрипт), который бы подсчитывал количество USB-портов на машине, при этом определяя, какой это порт: USB 2.0 или USB 3.0?
A: Конечно, даже не прибегая к всемогущему PowerShell’у. Обычный батник легко справится с задачей.
@echo off
setlocal
set h=wmic path Win32_PnPEntity get hardwareid /value | findstr "ROOT_HUB[2-3]0"
for /f "tokens=3 delims=,}" %%i in (' "%h%" ') do (
if "%%~i"=="USB\ROOT_HUB20" set /a u2+=1
if "%%~i"=="USB\ROOT_HUB30" set /a u3+=1
)
echo USB-2.0: %usb_2%
echo USB-3.0: %usb_3%
Утилита wmic WMI Command-line позволяет выполнять запросы WQL к классам и объектам WMI как локальной, так и удаленной машины.
Q: Нужно склеить картинку и программу, но код большинства джойнеров определяется антивирями. Есть какой-то беспалевный метод?
A: Если программа, которую будешь клеить к картинке, сама по себе не палится антивирем, то самый тривиальный способ склейки файлов — SFX-архив, созданный, например, при помощи WinRar. Для этого создаем архив, в который запихиваем нужную программу, картинку/аудио/документ и bat-файл, например такого содержания:
@echo off
start image.jpg
start program.exe
Теперь конвертируем этот архив в SFX, при этом можно указать в дополнительных параметрах SFX на вкладке «Общие» абсолютный путь распаковки (например, %Temp%). На вкладке «Инсталляция» нужно прописать название нашего bat-файла, а на вкладке «Режимы» выставить «Полное молчание». Чтобы избавиться от консольного окошка, которое появляется из-за батника, просто конвертни его в exe при помощи утилиты типа bat2exe.
Q: Наткнулся на такой кусок PHP-кода:
eval(preg_replace("/tr/e", "AK=e9GhT8r9fPgdh2qa ..."^"\x24=\x5c\x09\x11\x20\x12=V\x14U\x07\x24\x02L\x0a...", "tr"));
Не пойму, как или чем выполнялась обфускация?
A: Да, не очень очевидный способ. Во-первых, модификатор /e заставляет preg_replace выполнять второй параметр функции как PHP-код для каждой найденной подстановки, которая у нас здесь одна (tr). Что же у нас идет вторым параметром? Вторым параметром идет побитовый XOR (символ ^) двух строк. Если заXORить те части, что ты прислал, получим:
eval(gzinflate(b
Здесь видим знакомый классический метод обфускации, и очевидно, что b — это первая буква названия функции base64_decode. Чтобы деобфусцировать этот код, просто замени eval на echo.
Q: Подскажи, пожалуйста, как легче всего получить список компьютеров в подсети, на которых запущен некий процесс, например Chrome?
A: Самый легкий способ достать нужную тебе инфу заключается в использовании командлетов Active Directory Service Interfaces в связке с PowerShell’ом. Установка и работа с ADSI уже освещалась на страницах нашего журнала, так что с этим не должно возникнуть проблем. Перейдем сразу к делу. Твоя задача решается с помощью следующего скрипта:
$comps = Get-ADComputer -Filter * | select -exp name
foreach ($c in $comps) {
Get-WMIObject Win32_Process -ComputerName $c \
-Filter "name='chrome.exe'" | ft CSname }
Согласись, довольно лаконичное решение.
Q: Как под Linux посмотреть количество передаваемых байт в секунду для каждого конкретного приложения? То есть, например, в таком виде: skype — 100 Кб/с, Chrome — 20 Кб/с и так далее. Может, есть какой-то плагин для системного монитора?
A: В этом случае удобнее всего воспользоваться консольными утилитами, такими как ntop или NetHogs. Последняя попроще и больше подходит под твое описание. Если ее не окажется в стандартных репозиториях, то она легко и быстро собирается из исходников. Чтобы посмотреть интересующую тебя информацию, выполни в терминале:
# nethogs
Дополнительно можно указать первым параметром название сетевого интерфейса, по которому NetHogs и будет выводить информацию.
5 шагов: Собираем свою прошивку OpenWrt
Часто бывает так, что процесс настройки OpenWrt приходится повторять заново, например после переустановки прошивки по каким-либо причинам или, скажем, при покупке нового роутера. Но нет необходимости каждый раз заново править конфиги и устанавливать нужные пакеты: ты можешь один раз создать настроенную под себя прошивку (в которую включишь все необходимые пакеты и программы, настроишь конфиги и так далее) и потом использовать ее сколько угодно раз, что очень удобно. Давай рассмотрим, как это сделать.
- Для начала получим исходники OpenWrt:
# svn co svn://svn.openwrt.org/openwrt/trunk/ openwrt
После этого переходим в папку с сырцами и выполняем:
# cd openwrt # ./scripts/feeds update -a # ./scripts/feeds install -a
Проверяем зависимости:
# make prereq
и устанавливаем все, чего не хватает.
- Дальше займемся конфигурацией сборки.
# make menuconfig
Начнем с конфигурации сборки под конкретное железо. Для этого заходим в пункт меню «Target-Profile» и выбираем из списка наш роутер, например TP-LINK TL-MR3420. Если же твоего девайса нет в «Target-Profile», то нужно указать версию чипсета, на котором он построен, в пункте «Target System».
- Следующим шагом надо выбрать нужные модули ядра, то есть те, которые будут включены в прошивку. Важно заметить, что при выборе модуля существует два варианта: компиляция модуля в отдельный пакет — такие модули помечены буквой [М] — или же компиляция непосредственно в ядро — такие модули помечены звездочкой [*]. Далее пройдись по пунктам и отметь нужные тебе модули. Для добавления в прошивку разного рода программ воспользуйся пунктами меню: Network, Multimedia, Utilites, etc. Когда закончишь, не забудь сохранить изменения.
- Теперь займемся конфигами. Идем в папку target/linux/ar71xx/base-files/, где вместо ar71xx указываешь название используемого чипсета. Это директория, файлы из которой будут помещены в прошивку. В OpenWrt конфиги по умолчанию надо положить в папку etc/defconfig. Создаем для них папку:
# mkdir etc/defconfig/tl-mr3420
и помещаем в нее нужные конфиги OpenWrt. Для конфигурации установленных в прошивку приложений правим их конфиги в директории feeds/packages/multimedia/.
- Ну и наконец, после всех конфигураций выполняем заветную команду:
# make
Ждать придется не очень долго. Если сборка прервалась с ошибкой, добавь к «make» параметр «V=99». Так ты включишь режим вывода дополнительной информации, что поможет разобраться с проблемой. Если сборка прошла успешно, результат будет лежать в bin/название_твоего_чипсета/. Все. Твоя собственная сборка готова.