четверг, 24 декабря 2009 г.

Прикладная некромантия в линукс или возвращаем из небытия удаленные файлы

Источник
Думаю, каждый из нас с вами сталкивался с проблемой, когда из-за глюка прошивки фотоаппарата, камеры, кпк, смартфона или просто из-за особого устройства /dev/hands карточка была отформатирована, данные были удалены. В свое время данную проблему я решал достаточно просто, используя Portable версию Ontrack Easy Recovery, но так как уже несколько лет являюсь пользователем linux систем, то использование данного нелицензионнного приложения через wine показалось не совсем кошерным, к тому же жажда исследований и приключений требовала найти бесплатный родной аналог для linux систем. Исследования закончились, даже не успев начаться, так как первая строчка в поиске Google привела к набору утилит TestDisk, о которых я расскажу далее подробнее.

И так, TestDist состоит из двух утилит:
testdisk и photorec; Официальный сайт утилит.
Краткое описание:
testdisk – мощная утилита, разработанная для восстановления удаленных разделов и для восстановления загрузочных записей mbr после программных ошибок, действий некоторых вирусов, человеческих ошибок (например, когда раздел был просто удален).
Возможности testdisk:
Исправление таблицы разделов; восстановление удаленных разделов Восстановление FAT32 загрузочного сектора из бэкапа Перестроение FAT12/FAT16/FAT32 загрузочного сектора Исправление FAT tables
Перестроение NTFS загрузочного сектора Восстановление NTFS загрузочного сектора из бэкапа Исправление MFT используя MFT зеркало Нахождение ext2/ext3 Backup SuperBlock
Восстановление удаленных файлов в FAT, NTFS and ext2 файловых системах
Копирование файлов из FAT, NTFS and ext2/ext3 удаленных разделов.

photorec – утилита восстановления данных таких, как файлы видео, документы, архивы с жестких дисков и cdrom дисков, а также фото (поэтому название программы Photo Recovery) со встроенной памяти камер. Список типов файлов для восстановления весьма внушителен и с ним можно ознакомиться тут.

Обе утилиты open source, распространяются под лицензией GNU General Public License (GPL). Имеются в наличие версии для linux, unix, а также для windows платформ.

В большинстве линукс дистрибутивов уже включены в состав стандартного репозитория. Для debian-based дистрибутивов установка командой:
  1. sudo aptitude install testdisk


В моем случае требовалось восстановить фотографии с карточки фотоаппарата после того, как фотоаппарат случайно отформатировал карточку. Вставив флешку в card reader и запустив с правами рута photorec в консоли, утилита предложила мне выбрать диск, на котором требуется восстановить данные.
выбор диска
В моем случае это будет /dev/sdb.
Далее выбираем тип таблицы разделов на диске, для большинства пользователей это будет Intel/PC.
выбор типа разделов
И далее выбираем раздел или диск целиком для поиска удаленных файлов. Так как мне нужно было восстановить все удаленные файлы после форматирования, то я выбрал поиск по всему диску.
После этого photorec требуется указать тип файловой системы, в которой хранились удаленные файлы. В данном случае все просто, выбираем второй пункт.

А затем на другом диске выбираем директорию, куда утилита сохранит восстановленные файлы.

Далее нажимаем Y и программа начинает свою работу. Для 32Мб карточки ей потребовалось меньше минуты.
Теперь о результатах работы:
Честно говоря, по началу я весьма сомневался в способностях программы. Но открыв директорию с результатами работы утилиты, я с удивлением обнаружил, что были восстановлены не только нужные недавно сделанные 10 фотографий, но и еще 110 других, самая ранняя из которых была сделана 3 года назад и не была перезаписана при дальнейшем использовании карточки, хотя форматировалась карта неоднократно.
В итоге имеем очередную победу добра над злом, счастливую улыбку обладателя фотоаппарата, еще один факт доказательства того, что существует море полезных и качественных opensource утилит.
______________________

воскресенье, 6 декабря 2009 г.

Ubuntu - Редактор конфигурации

Задася целью убрать иконки подключенных дисков с "Рабочего стола" и вот нашел такую штуку.

Редактор конфигурации gconf-editor

Вот пример параметров "Рабочего стола"
gconf-editor>apps>nautilus>desktop
volumes_visible - Показывать подключенные носители на рабочем столе
trash_icon_visible - Отображать на рабочем столе значок «Корзина»
trash_icon_name - Имя значка «Корзина» на рабочем столе
text_ellipsis_limit - Предел многоточия
network_icon_visible - Значок «Сетевые серверы» присутствует на рабочем столе
network_icon_name - Имя значка сетевых серверов
home_icon_visible - Отображать на рабочем столе значок домашней папки
/home_icon_name - Имя значка «Домашняя папка» на рабочем столе
computer_icon_visible - Показывать значок «Компьютер» на рабочем столе
computer_icon_name - Имя значка «Компьютер» на рабочем столе

D-Link DNS-323 - transmission

Итак приступим.
Что такое D-Link DNS-323? Это NAS - сетевое хранилище. описание
Примечательно что к нему существуют хаки. Одним из таких хаков является transmission торрент-клиент.

Для его установки надо:
1. скачать funplug
http://www.inreto.de/dns323/fun-plug/0.5/fun_plug
http://www.inreto.de/dns323/fun-plug/0.5/fun_plug.tgz

2. Зайти по шаре на диски
smb://dlinknas/volume_1/
smb://dlinknas/volume_2/

3. Скопировать на оба диска фалы fun_plug и fun_plug.tgz
на оба диска потому что мы не знаем как они определятся системой.
4. Перезагрузиться.
После перезагрузки нам будет доступен телнет и еще куча плюшек.
5. Заходим удаленно на наш D-Link.
telnet 192.168.1.100
6. Далее готовим каталог для установочных файлов
cd /mnt/HD_a2/
mkdir transmission.setup
cd transmission.setup

7. Загружаем необходимые файлы
wget к сожалению не все смог загрузить :( поэтому грузим с большого брата на шару следующие файлики в smb://dlinknas/volume_1(2)/transmission.setup
curl-7.18.1
Transmission-1.76-1
uclibc-0.9.29-7
8. Возвращаемся в telnet
если все нормально то файлики можно будет найти тут
cd /mnt/HD_a2/transmission.setup
или тут
cd /mnt/HD_b2/transmission.setup
команда ls покажет содержимое каталога
9. Установка самого битторрент клиента
funpkg -i curl-7.18.1.tgz
funpkg -i Transmission-1.76-1.tgz
funpkg -i uclibc-0.9.29-7.tgz

10. В терминале (telnet) Стартуем/Останавливаем клиента чтобы появились файлы настроек
# /ffp/start/transmission.sh start
# /ffp/start/transmission.sh stop

11. Редактируем файл настроек.
а) либо из терминала (telnet'a)
vi /mnt/HD_a2/.transmission-daemon/settings.json
б) либо через шару
smb://dlinknas/volume_1/.transmission-daemon/settings.json
smb://dlinknas/volume_2/.transmission-daemon/settings.json
12. У себя я поставил следующие строки.
"rpc-whitelist-enabled": true,
на
"rpc-whitelist-enabled": false,
и
"download-dir": "\/home\/torrent\/download",
на
"download-dir": "\/mnt\/HD_a2\/transmission",
13. В терминале (telnet) окончательно Стартуем клиента
# /ffp/start/transmission.sh start
14. Проверяем доступность через веб.
В браузере в строке адреса вбиваем
http://192.168.1.100:9091
Мы должны увидеть веб интерфейс для нашего transmission



источники
http://forum.dsmg600.info/t2719-%5BREL%5D-Transmission.html
http://forum.dsmg600.info/viewtopic.php?pid=15546
http://wiki.dns323.info/
http://www.inreto.de/dns323/

з.ы. Честно говоря у веб интерфейса есть недостатки, например нужно постоянно менять папку, куда класть закачку. По этой причине я у себя поставил "удаленный" интерфейс (transmisson-remote-gui)
Найти его можно тут. Есть клиенты для Windows, Linux и MacOS.

MD5SUM

Рекурентный расчет md5sum для всей/всех папок
find . -type f 2>/dev/null -exec md5sum {} \; >md5sum.txt

пятница, 27 ноября 2009 г.

Как запретить доступ к USB носителям

Просматривал форум российского ЛоКо ubuntu (forum.ubuntu.ru)

И зацепила меня тема
Запретить доступ к usb носителям [решено]


Там разобрался, сюда как шпаргалку положить надо. В развернутом виде.

И так. До 9.04 включительно была тулза policykit-gnome.
Это графический фронтенд для настройки политик.
В 9.10 эта утилита есть. НО она обращается по старому местоположению файлов. И поэтому видит только одну единственную ветку.

По этой причине пришлось расковырять где же собака порылась.

Оказывается политики это просто xml файлики. В которых просто указывается правило доступа к тому или иному объекту.

В результате разбирательства были найдены файлики
для 9.04 и ниже
/usr/share/PolicyKit/
для 9.10
/usr/share/polkit-1/actions/

В этих каталогах штук 15 файликов, нас же интересует вот этот файл : org.freedesktop.devicekit.disks.policy


идем на http://hal.freedesktop.org/docs/polkit/
И там выясняется, что за сам доступ отвечают 3 параметра (тега)
allow_any
allow_inactive
allow_active

которые могут принимать значения (тут оригинал)

no - Not authorized.
yes - Authorized.
auth_self - Authentication by the owner of the session that the client originates from is required.
auth_admin - Authentication by an administrative user is required.
auth_self_keep - Like auth_self but the authorization is kept for a brief period.
auth_admin_keep - Like auth_admin but the authorization is kept for a brief period.

Играя с этими параметрами, мы установим ограничения на подключение флешек, дисков и т.д.

з.ы. еще будем править
з.ы.ы. Проверить к моему сожалению мне особо не где, НО если мы говорим о безопасности корпоративной системы, то еще рекомендую убрать пользователей из групп wheel, sudoers и т.п.

з.ы.ы.ы. В последнем посту Dfg предложил пойти еще дальше. Дойдя до dbus
http://forum.ubuntu.ru/index.php?topic=76165.msg572550#msg572550
Что в свою очередь тоже любопытно.

XML editor for Linux

Решил поискать на досуге легковестный opensource XML редактор.
Нашел XML Copy Editor (ссылка)

Простой и Фполне функциональный.

Как альтернатива - использовать eclipse... Не монстр... Хотя местами и его буду ипользовать.

вторник, 17 ноября 2009 г.

Ubuntu 9.10 + Yota (wimax) vs Я

В продолжении этой темы

У меня были предположения что рецептура не меняется, так и получилось.
# для работы драйверов нам также понадобится пакет libnl-dev
apt-get install libnl-dev

# cтавим управляющую обвязку для драйвера
cd /usr/src/WiMAX-Network-Service-1.4.0
make clean
./configure --prefix=/usr/ --with-i2400m=/usr/src/linux-headers-$(uname -r) --localstatedir=/var
make
sudo make install


# Cтавим Supplicant
cd /usr/src/Intel-WiMAX-Binary-Supplicant-1.4.0
sudo ./install_supplicant.sh install


# Супликант у меня ставится в /usr/local/lib, я его сразу скопирую в /usr/lib
cp -r /usr/local/lib/wimax/*.* /usr/lib/wimax/
Либо исправляем путь в ./install_supplicant.sh на нужный

# Загружаем yot'овские конфиги, спасибо icelord
wget http://icelord.net/images/wimax/NDnSAgentConfig_forDriver.xml
wget http://icelord.net/images/wimax/NDnSAgentDefaultConfig.xml


# копируем по назначению /usr/share/wimax/
sudo cp NDnSAgentConfig_forDriver.xml /usr/share/wimax/NDnSAgentConfig_forDriver.xml
sudo cp NDnSAgentDefaultConfig.xml /usr/share/wimax/NDnSAgentDefaultConfig.xml

И всю последовательность загнать в файл скрипта
Даст упрощение при последующей перекомпиляции

Вот еще один гик, от icelord'а
http://icelord.net/wordpress/archives/1151
Там есть интересный скрипт, для переключения между режимами.
Добрался наконец до этого скрипта и переделал.
#!/bin/sh
STATE_WIMAXCU=`sudo wimaxcu status link`
#STATE=`sudo /etc/init.d/wimax status| awk '{print $4}'`
if [ "$STATE_WIMAXCU" = "Operation Failed." ]
then
echo "$STATE_WIMAXCU"
echo "WiMAX Network Service: Stoping"
sudo /etc/init.d/wimax stop
echo "WiMAX Network Service: Starting"
sudo /etc/init.d/wimax start
else
echo "$STATE_WIMAXCU"

fi

STATE_WIMAXD=`sudo /etc/init.d/wimax status`
#Operation Failed.

if [ "$STATE_WIMAXD" = "WiMAX Network Service: Running" ]
then
echo "$STATE_WIMAXD"
else
echo "$STATE_WIMAXD"
echo "WiMAX Network Service: Stoping"
sudo /etc/init.d/wimax stop
echo "WiMAX Network Service: Starting"
sudo /etc/init.d/wimax start
fi

STATE_LINK=`sudo wimaxcu status system`
#Connected.
#Link Status: Network is not connected.
#SW Radio is OFF.
if [ "$STATE_LINK" = "Connected." ]
then
echo "$STATE_LINK"
sudo ifconfig wmx0 down
sleep 0.1s
sudo wimaxcu roff
sleep 2s
sudo iwconfig wlan0 tx on
sleep 0.5s
sudo ifconfig wlan0 up
else
if [ "$STATE_LINK" = "Link Status: Network is not connected." ]
then
echo "$STATE_LINK"
sudo wimaxcu connect network 15
sudo dhclient wmx0
else
if [ "$STATE_LINK" = "SW Radio is OFF." ]
then
echo "$STATE_LINK"
sudo iwconfig wlan0 tx off
sudo ifconfig wmx0 up
sleep 0.1s
sudo wimaxcu ron
sleep 2s
sudo wimaxcu connect network 15
sudo dhclient wmx0
echo ""
else
if [ "$STATE_LINK" = "Scanning..." ]
then
echo "$STATE_LINK"
STATE_SCAN=`sudo wimaxcu scan| grep Yota | awk '{print $3}'`
if [ "$STATE_SCAN" = "Yota" ]
then
sudo wimaxcu connect network 15
sudo dhclient wmx0
fi

fi

fi
fi
fi


В своем варианте я этот скрипт сохранил в /usr/share/wimax/wifiwimax.sh и на табе создал кнопку запуска.

и красивое решение на последок
отсюда http://vonderer.blogspot.com/2006/10/initd-autorun-debian.html
+
http://translated.by/you/man-update-rc-d-8-install-and-remove-system-v-style-init-script-links/into-ru/

cd /etc/init.d
sudo update-rc.d wimax defaults

Даст авто запуск службы wimax



з.ы. У меня работает а у вас?