Скрипт пакетного переименования файлов

Опять же, с графическим интерфейсом на GTK. Тестировался на Puppy Slacko и на «большой» Slackware 12 версии:



Мопед, опять же, не мой.
Что умеет:
0. Последовательно пронумеровать все файлы в директории.
1. Найти префикс, например вида SCNJ-число, как на цифровых фотоаппаратах, и переименовать во что-то заданное пользователем (например kotik-число).
2. Сохранить переименованные файлы в другом каталоге.
3. Найти некоторую последовательность символов в имени файла и заменить их на другую (если другая последовательность не введена, то найденная последовательность будет удалена из имени файла)
4. Удалять из имени файла специальные символы и пробелы.
5. Заменять пробелы на знак подчеркивания (_).
6. Преобразовывать символы в имени и расширении файла в нижний регистр.
7. Транслителировать имена файлов.

Скрипт на PasteBin
Скачать с mega.nz

Скрипты, делающие скриншоты с видео

С графическим интерфейсом.
Сразу говорю, мопеды не мои, а хороший знакомый кодер к тем скриптам только что интерфейсы и дорисовал. Работает под GTK 3 в любых графических средах, где есть соответствующие библиотеки:
Вариант #1: делает несколько файлов со скриншотами. Вариант #2: делает несколько скриншотов (сколько задано) в одном графическом файле.




Скрипт #1 на PasteBin
Скрипт #2 на PasteBin

Скачать скрипт #1 на MEGA.NZ
Скачать скрипт #2 на MEGA.NZ

Определение момента, когда поднялся VPN тоннель.

Версия 2. Исправленная и дополненная.

Преамбула.

Продолжаю начатое тут.
Обычно тоннель поднимается командой pppd call providername где providername – файл настроек соединения в /etc/ppp/peers. Команда особого интерактива не дает, а хотелось бы, например, чтоб выводился «прогресс-бар», когда соединение устанавливается, а по прошествии максимального времени ожидания, если соединение так и не поднялось, выводилось сообщение о таймауте. Если соединение поднялось до истечения таймаута – выводилось сообщение об успехе.
Скрипту будет передаваться единственный параметр – имя необходимого файла настроек соединения из /etc/ppp/peers
Что должен делать скрипт.

1. Проверить собственные параметры, и если файл настроек не указан – выдать соответствующее сообщение и прекратить работу.
2. Проверить наличие переданного файла настроек
3. Проверить, не поднято ли уже это соединение, если поднято – выдать сообщение и прекратить работу
4. Проверить параметр настройки unit – номер будущего интерфейса ppp. Если его нет – найти первый свободный (его и использует pppd). Если параметр unit присутствует, то проверить, свободен ли он, если нет – найти первый свободный.
5. Запустить установку соединения.
6. В цикле проверять, установилось ли оно, или истек заданный таймаут
7. По завершению цикла оповестить пользователя об успехе или истечении таймаута.
Недочет предыдущей версии скрипта.

Главный недочет предыдущей версии скрипта — жестко заданная проверка наличия соединения командой ping, после получения сведений об установленном соединении из вывода команды ifconfig. Пинговался адрес полученного шлюза. Дело в том, что некоторые провайдеры не позволяют пинговать шлюз, или вообще отключают возможность использования протокола ICMP, поэтому необходимо дать пользователю возможность через параметры командной строки указать, нужно ли использовать дополнительную проверку с помощью ping и какой адрес в случае необходимости пинговать.
Заодно мною были добавлены дополнительные информационные сообщения, а также немного видоизменен основной рабочий цикл.
Read more…
Скрипт на pastebin
Скачать с mega.nz
Бонусом сделал еще одну версию

Куда прикрутил обратный отсчет времени с мельницей, скрестив этот скрипт с вот этим.
Скрипт на pastebin
Скачать с mega.nz

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/329224.html
Прокомментировать заметку можно по ссылке выше.

Чиним поддержку криптографии и ошибку при запуске tcplay в Puppy Slacko 5.5. Часть III

Преамбула

Этот способ несколько сложнее, но ненамного.
Что сделаем:
1. Пересоберем ядро с поддержкой криптографии
2. Встроим tcplay в основную систему, т.е. после наших манипуляций он будет доступен «из коробки»
Преимущества:
— Не надо больше ничего делать
Недостатки:
— Способ требует больше движений
Начало
Тут я забегу немного вперед, и скажу, чтоб наше ядро (и соответственно далее Puppy Linux) запустился корректно, нам будет необходима поддержка UnionFS в ядре. На официальном сайте UnionFS я не нашел патч для поддержки UnionFS для версии оригинального ядра 3.2.33, поэтому выбрал ближайший патч для ядра версии 3.2.62 и, соответственно, решил изменить оригинальную версию ядра. На самом деле я долго, местами методом тыка пытался подружить оригинальное ядро с патчем для других версий, но не получилось, чтоб не загружать заметку, оставлю путь за кадром.
Если мы скомпилируем ядро без патча UnionFS, то при запуске операционной системы мы получим примерно такую картинку:

Подготовка
Нам необходимы:
1. Исходники ядра, которые можно взять здесь
2. Патч для поддержки UnionFS для новой версии ядра
3. Комплект разработчика, для соответствующей версии Puppy Linux, если мы будем собирать ядро в ней, или же «большой» Linux, в котором есть все нужные инструменты. (см. предыдущую заметку )
4. Комплект для работы со SquashFS, чтоб разобрать основной файл Puppy Linux Slacko, добавить туда, что нам надо, собрать обратно и оттестировать. Я на «большом» Линуксе просто скачал squashfs-tools-4.2 через sbopkg, но кому мало ли надо, вот оф. сайт
Внимание! Если собирать ядро в Puppy, то следует делать это на внешнем разделе, на котором имеется достаточно места, не следует собирать ядро в стандартных директориях, изменения в которых сохраняются в персональный файл. В противном случае место в файле сохранения и оперативная память быстро кончатся и процесс может до конца и не дойти.
Я собирал новое ядро для Puppy в «большом» линуксе.
Приступаем

1. Распакуем исходники ядра в отдельную директорию.
2. Скопируем в эту директорию патч для поддержки UnionFS
3. Распакуем его командой gunzip unionfs-2.6_for_3.2.62.diff.gz
4. Применим патч
patch -p1 -i <имя файла заплатки>
т.е. для нашего случая
patch -p1 -i unionfs-2.6_for_3.2.62.diff
Конфигурирование

Вообще это самый большой, больной и неоднозначный вопрос при сборке ядра, посему тут мне придется отослать читателя к более подробному и обстоятельному материалу, ссылки на который будут в конце заметки.
Я же остановлюсь только на некоторых моментах, которые непосредственно важны для нашей задачи.
Итак, у меня имелся в наличии готовый конфиг (который можно скачать здесь), и я подправил в нем только некоторые моменты
Во-первых, копируем файл .config в директорию с исходниками ядра.
Во-вторых, открываем в любом удобном текстовом редакторе файл Makefile, находящийся в директории с исходниками, ищем в нем 4 строчку сверху: EXTRAVERSION= и дописываем туда, что-нибудь типа -pcry (Puppy с поддержкой криптографии). Эта настройка добавит к имени ядра соответствующий постфикс, и кто-нибудь, случайно скачавший мое изделие, будет знать, что ядро не нативное, и возможно в нем работает криптография, но что-нибудь другое важное отвалилось :))
Наконец, запускаем конфигурирование командой
make menuconfig
Далее идем в раздел Cryptographic API и устанавливаем переключатели так, как это указано на нижеследующих картинках.
1 2 3
Далее идем в File systems и обязательно включаем в ядро поддержку Ext2, Ext3 и Ext4 файловых систем
В разделе File systems ищем подраздел Miscellaneous filesystems, заходим в него и проверяем, чтобы Union file system, был встроен в ядро <*>, а также проверяем, что в ядро встроена SquashFS 4.0
1 2 3
Собираем ядро

В директории с исходниками запускаем команду make bzImage
И идем пить чай, или водку. Возможно, с учетом скорости работы компьютера, и из самовара.
Далее собираем модули
make modules
И опять идем пить из самовара
На сборку ядра на селероне с 2.2 ггц тактовой частоты и 1 Гб оперативной памяти ушло 15 минут, а модули собирались час.
Подготавливаем ОС.

Внимание! Операции по подготовке ОС, разборке главного файла, его сборке и внедрению новых программ лучше выполнять из под root, чтоб не слетели права на некоторые системные файлы.
Команды make modules_install и make install также выполняются с правами root
1.Сначала разбираем основной файл slacko 5.5. — puppy_slacko5.5.sfs
2.Качаем необходимые пакеты LVM2, tcplay и Multipath tools. Ссылки здесь
3.Распаковываем пакеты, каждый в отдельную директорию
4. Копируем файл puppy_slacko_5.5.sfs в отдельную директорию, и, что называется, разбираем на запчасти, точнее распаковываем.
unsquashfs puppy_slacko_5.5.sfs

Образуется директория squashfs-root с содержимым sfs-файла
5.Теперь соберем все модули в одну кучу, на «большом» Линуксе это проблемы не представляет, а вот на Puppy должно хватить места в файле сохранения.
Переходим в каталог с исходниками ядра и выполняем команду
make modules_install
Если вы работаете не через удаленный терминал, то направьте вывод команды в текстовый файл:
, например
make modules_install >/mnt/sdb1/kernel/ok/out.txt
6.Создаем отдельный каталог (что-нибудь типа /mnt/sdb1/kernel/ok), в нем подкаталог lib, а в подкаталоге lib подкаталог modules и копируем в него каталог 3.2.62-pcry из /lib/modules
Дальше идет небольшой геморрой, надо скопировать все собранные Firmware-модули. Что это такое, можно прочитать, например тут. Поскольку я делал все манипуляции на удаленном компьютере через терминал, я просто скопировал из окна терминала нужные мне данные (они есть в выводе команды make modules_install) и написал 2 скрипта, облегчающих мне работу.
Нужная мне часть из вывода команды
Первый создает в моем рабочем каталоге нужную мне структуру подкаталогов (запускается в /mnt/sdb1/kernel/ok/lib/firmware), а второй копирует нужные файлы.
7. Подготавливаем новый sfs-файл, в директорию squashfs-root копируем (далее все пути относительно squashfs-root)
-Директорию 3.2.62-pcry в lib/modules (и удаляем из lib/modules 3.2.33-4g)
-Директорию firmware в lib и при необходимости заменяем нужные файлы
-Из распакованных пакетов копируем в корень squashfs-root все директории со всеми файлами, кроме директорий install
-Создаем в каталоге squashfs-root 3 скрипта 1 2 3, это doinst-скрипты, можно скопировать их из директорий install соответствующих пакетов, им нужно поставить права на исполнение и выполнить, после чего их можно удалить.
8. Выходим из squashfs-root и собираем основной файл Puppy Linux
squashfs-root puppy_slacko_5.5.sfs

Установка нового ядра и главного файла

1. Делаем копию puppy_slacko_5.5.sfs и файла ядра vmlinuz
2. Если вы работали в "большой" ОС, также стоит сделать копию каталога /boot и конфигурации загрузчика
3. Копируем новый главный файл на место предыдущего (он будет немного больше прежнего по размерам, это нормально).
4. Переходим в каталог с исходниками ядра и выполняем команду make install
5. Копируем из /boot vmlinuz вместо файла vmlinuz оригинального Puppy и при необходимости восстанавливаем /boot и конфигурацию загрузчика.
Если что-то не получилось

Или же что-то не устраивает, то всегда можно ядро подправить, пересобрав заново с нужными опциями. Итак, чтобы "вернуть все в зад" нужно:
1. Перейти в каталог с исходниками ядра и скопировать куда-нибудь файл .config, чтобы потом не выполнять конфигурирование заново.
2. Ввести команду make mrproper (Эта команда нужна для удаления временных файлов, созданных при предыдущей сборке. Она удаляет также все настройки, которые Вы сделали во время прошлой сборки.)
Вернуть .config обратно, снова запустить make menuconfig, отконфигурировать заново и запустить make bzImage (ну или make modules, если косяк связан с каким-то модулем, а не с настройкой ядра). Можно отдельно независимо пересобирать ядро и модули (и даже не все модули целиком, а только некоторые из них) если вы знаете, в каком конкретно модуле косяк. Патчи ядра сохраняются и после выполнения очистки.
Небольшая неудача с loglevel

У меня так и не получилось штатными средствами сбросить Default message log level при сборке ядра на уровень 0, как это походу было сделано в оригинальном ядре, и при загрузке выскакивали лишние сообщения ядра, портившие оригинальную красивую загрузку Puppy, патчить ядро я не решился (чтоб чуть что все таки можно было посмотреть вывод ошибок), и просто оставил уровень по умолчанию. А эстетичную загрузку можно вернуть, дописав loglevel=0 в качестве параметра ядра при загрузке, в настройке загрузчика:
kernel /slacko/vmlinuz ro vga=normal loglevel=0

Готовый дистрибутив

Можно скачать тут Puppy Slacko 5.5. NonPAE Crypto Mod

Использованные источники

1. Ставим ядро 2.6, или Ядерная физика для домохозяйки. Версия 2.0 Копия
2. Сборка ядра linux 3.4.* Копия
3. Работаем с модулями ядра в Linux Копия
4. Debugging by printing

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/328027.html
Прокомментировать заметку можно по ссылке выше.

Чиним поддержку криптографии и ошибку при запуске tcplay в Puppy Slacko 5.5. Часть II.

Преамбула
Что сделаем:
— Встроим tcplay, сопутствующие утилиты и необходимые модули в основной файл Puppy Slacko, чтоб tcplay был доступен «из коробки».
Плюсы:
— tcplay и недостающие криптографические модули будут работать из коробки, даже если файл сохранения с соответствующими изменениями испортился/потерялся.
Минусы:
— способ требует больше движений, но все-таки меньше, чем, если полностью пересобирать ядро.
— немного увеличится размер главного файла.
Что требуется.

1. Предварительно собранные модули для PAE или Non-PAE версии Slacko. См. соответствующую здесь
2. «Большой» Linux или Puppy с комплектом разработчика.
3. Комплект для работы со SquashFS, чтоб разобрать основной файл Puppy Linux Slacko, добавить туда, что нам надо, собрать обратно и оттестировать. Я на «большом» Линуксе просто скачал squashfs-tools-4.2 через sbopkg, но кому мало ли надо, вот оф. сайт
4. Необходимые пакеты LVM2, tcplay и Multipath tools. Ссылки здесь
5. Скрипт, загружающий модули.
Примечание: ниже описанным образом можно встроить и другие программы, которые недоступны из коробки, только не переусердствуйте, чтоб сильно не раздуть главный файл sfs.
Начинаем

Внимание! Операции по подготовке ОС, разборке главного файла, его сборке и внедрению новых программ лучше выполнять из под root, чтоб не слетели права на некоторые системные файлы.
Примечание:
придется много чего распаковывать, копировать, пользуйтесь mc для удобства
1. Помещаем главный файл puppy_slacko_5.5.sfs в отдельный каталог и распаковываем командой unsquashfs puppy_slacko_5.5.sfs. По окончании процесса, в каталоге образуется подкаталог squashfs-root с содержимым sfs-файла.
2. Если вы скачали готовые модули, то просто распакуйте в каталог squashfs-root каталоги bin и lib из архивов, при необходимости заменяя файлы. Если вы сами собирали модули, руководствуясь предыдущими заметками, скопируйте их в подкаталог lib/modules/XXX.XXX.XXX/kernel/crypto подкаталога squashfs-root где XXX.XXX.XXX — версия ядра, а также создайте в подкаталоге bin скрипт tcplay-mod:

#!/bin/bash
echo "Loading modules..."
modprobe lrw
modprobe xts
modprobe cbc
modprobe rmd160
modprobe sha256
modprobe wp512
modprobe aes
modprobe serpent
modprobe twofish
modprobe dm-crypt
echo "Complete!"
И назначьте ему права на исполнение
3. Модифицируйте файл squashfs-root/etc/rs.d/rs.local дополнив его командой /bin/tcplay-mod >/logmod, если вы не используете файерволл Puppy, закомментируйте предыдущую строчку. Вывод процесса загрузки модулей будет происходить в файл /logmod, при необходимости это можно будет использовать для отслеживания ошибок при запуске модулей.
4. Назначьте файлу squashfs-root/etc/rs.d/rs.local права на исполнение.
5. Распакуйте в отдельный каталог пакет поддержки LVM2
6. Скопируйте из этого каталога все подкаталоги, кроме подкаталога install в каталог squashfs-root
7. Скопируйте из подкаталога install в каталог squashfs-root скрипт doinst.sh
8. Установите ему права на выполнение, запустите, после чего удалите его.
9. Повторите пункты 5-9 для остальных пакетов (tcplay и Multipath tools)
Готово!

Теперь обратно нужно собрать главный файл, выходим из директории squashfs-root на уровень выше и выполняем команду:
mksquashfs squashfs-root puppy_slacko_5.5.sfs
Размер полученного нового главного файла увеличился примерно на 9 мегабайт, и приблизительно мегабайт на 15 увеличится, если добавить туда отсутствующий из коробки mc и обновить некоторые плагины к Firefox.
Готовые главные файлы

Puppy_slacko_5.5.sfs (PAE)
Puppy_slacko_5.5.sfs (non-PAE, 4G)

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/327863.html
Прокомментировать заметку можно по ссылке выше.

tcplay в Puppy Slacko 5.5 (Rus). Краткая инструкция по установке и другие заметки.

tcplay в PuppyRus Slacko 5.5. Краткая инструкция по установке и другие заметки.

I. Установка

1. Скачиваем и последовательно устанавливаем:
— пакет поддержки LVM: lvm2-2.02.96-i486-4 (скачать с mega.nz) (скачать с Google Drive)
— tcplay: tc-play-2.0-i486-1 (скачать с mega.nz) (скачать с Google Drive)
— multipath tools: multipath-tools-0.5.0-i486 (скачать с mega.nz) (скачать с Google Drive). Этот пакет самому tcplay не нужен, но используется для получения доступа к разделам зашифрованного диска/контейнера, если в нем несколько разделов.
— модули ядра: для версии PAE (скачать с mega.nz) (скачать с Google Drive)
для версии без PAE (скачать с mega.nz) (скачать с Google Drive)
Для других версий Puppy модулей нет, как сделать — описано тут
2. Перезагружаемся (естественно, файл сохранения должен быть, иначе чуда не получится).
3. Добавляем в автозагрузку /bin/tcplay-mod
— либо создав символическую ссылку на /bin/tcplay-mod в /root/Startup (но тогда tcplay будет корректно работать только при загрузке X)
— либо дописав строчку /bin/tcplay-mod в /etc/rc.d/rc.local и установив rc.local права на исполнение
— либо вместо добавления в автозагрузку /bin/tcplay-mod можно указать запуск нужных модулей в BootManager, как это описано тут.
4. Заново перезагружаемся. После перезагрузки tcplay должен работать корректно
II. Подключение контейнера. Пример команд и вывода.

# losetup -f
/dev/loop2
# losetup /dev/loop2 /mnt/sdb1/test.disk
# tcplay --map=test --device=/dev/loop2
Passphrase:
All ok!
# mkdir /mnt/test
# mount -t ext2 /dev/mapper/test /mnt/test

Подробно, как работать с файлами-контейнерами tcplay описано тут
III. Отключение контейнера. Пример команд.
# umount /mnt/test
# tcplay --unmap=test
# losetup -d /dev/loop2
IV. «Лишние» диски в Puppy

При подключении контейнера tcplay на рабочем столе могут появиться «лишние» диски с названиями вроде dm-0:

Так вот, не нужно их трогать и открывать, потом могут возникнуть проблемы с отключением, точнее отмонтированием зашифрованного диска.
Чтоб глаза не мозолили, их можно убрать, щелкнув по ним правой кнопкой и выбрав пункт «Удалить объект(ы)»

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/317718.html
Прокомментировать заметку можно по ссылке выше.

Чиним поддержку криптографии и ошибку при запуске tcplay в Puppy Slacko 5.5. Часть I.

Также возможно этот способ применим для любых урезанных дистрибьютивов, в т.ч. Live. К Puppy Slacko способ применим до последней (еще не русифицированной) версии, разработчики, раздолбаи, так до сей поры косяк и не поправили
Преамбула
На некоторых дистрибьютивах, при попытке подключения зашифрованного контейнера tcplay/TrueCrypt наблюдается следующая ошибка. tcplay вместо сообщения All ok! выдает ошибку:
device-mapper: reload ioctl on test failed: No such file or directory
При этом в логах, в сообщениях ядра присутствуют следующие записи:
Jul 26 23:18:43 puppypc15732 user.err kernel: [ 177.144795] device-mapper: table: 253:0: crypt: Error allocating crypto tfm
Jul 26 23:18:43 puppypc15732 user.warn kernel: [ 177.144798] device-mapper: ioctl: error adding target to table

Это значит, что в системе отсутствуют модули поддержки криптографии, необходимые tcplay либо TrueCrypt (оба используют системные библиотеки поддержки криптоалгоритмов), причем интересно, что в случае с tcplay шифрование проходит нормально, таким образом tcplay работает как настоящий разведчик. 🙂 Шифрует (донесения в Центр), а расшифровать не может.
Если же после установки tcplay при запуске случилась ошибка
tcplay: error while loading shared libraries: libdevmapper.so.2: cannot open shared object file: No such file or directory.
значит, в системе отсутствует поддержка lvm. Как ее установить, читайте здесь.
Попытаемся это починить. Собственно, способов починить есть два:
1. Собрать нужные криптографические модули и загрузить их
2. Пересобрать ядро с поддержкой криптографии (об этом позже).
Рассмотрим первый способ, на примере PuppyRus Slacko 5.5.
Read more…

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/317479.html
Прокомментировать заметку можно по ссылке выше.

Установка поддержки lvm для tcplay.

На некоторых урезанных live или frugal дистрибьютивах отсутствует поддержка LVM2, что при запуске на таких дистрибьютивах tcplay приводит к ошибке:
tcplay: error while loading shared libraries: libdevmapper.so.2: cannot open shared object file: No such file or directory.
Т.е. tcplay не может найти одну из необходимых ему библиотек. Библиотека присутствует в составе LVM2, и лучше установить весь пакет поддержки LVM.
Для Puppy Slacko помогает установка этого пакета (скачать с mega.nz) (скачать с Google Drive).
Для других дистрибьютивов, или если вы хотите версию пакета посвежее, можно скачать и собрать его из исходников, которые можно взять здесь.

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/317264.html
Прокомментировать заметку можно по ссылке выше.

Про полезную комбинацию Ctrl+Enter в mc и putty

Когда-то я печалился, что не работает.
Работает, но надо не Ctrl+Enter нажимать, а Alt+Enter

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/316760.html
Прокомментировать заметку можно по ссылке выше.

tcplay, замена TrueCrypt для Linux. Работа с криптоконтейнерами. Часть II.

Часть II. Работа с простыми томами.
0. Создание простого тома tcplay/truecrypt
Команда для шифрования тома:

tcplay --create --device=/dev/loopX --cipher=шифр_или_каскад_шифров_через_запятую --pbkdf-prf=алгоритм --keyfile=path/to/key/file

где:
--create – указание программе создать новый шифрованный том
--device=/dev/loopX – устройство, которое требуется зашифровать, в данном случае loop-устройство с которым ассоциирован файл-контейнер.
--cipher=шифр_или_каскад_шифров_через_запятую – указание, какой алгоритм шифрования необходимо использовать, или же необходимо использовать несколько алгоритмов последовательно (они перечисляются через запятую). В настоящий момент tcplay поддерживает алгоритмы: AES-256-XTS, TWOFISH-256-XTS, SERPENT-256-XTS, таким образом, поддерживаются комбинации этих трех, двух, или одного из этих шифров, перечисленных через запятую.
В случае использования только одного из них – запятая после его указания не нужна.
Примечание: Если вы используете несколько шифров, особенно на слабой машине, то это может существенно замедлить работу компьютера. Из всех перечисленных шифров AES самый быстрый (на современных машинах он даже поддерживается на аппаратном уровне), но TWOFISH и SERPENT надежнее, хотя и медленнее.
--pbkdf-prf=алгоритм – алгоритм формирования ключа для шифрования на основе пароля. На самом деле, содержимое нашего ключевого файла тоже пароль, «ключ» в криптографии это несколько иное, но, поскольку объяснить вам всю криптографию в трех словах я не могу, отсылаю к специализированным источникам.
Кратко прочесть про PBKDF можно здесь
Вместо алгоритм надо подставить конкретный алгоритм. На данный момент tcplay поддерживает RIPEMD160, SHA512, whirpool
--keyfile=path/to/key/file – указание программе, где взять ключевой файл для шифрования. Если нужно использовать несколько ключевых файлов, то нужно указать несколько параметров --keyfile=, например:
tcplay --create --device=/dev/loop0 --cipher= TWOFISH-256-XTS --pbkdf-prf= RIPEMD160 --keyfile=/path/to/key/file01 --keyfile=/path/to/key/file02
Если ключевой файл не нужен, а достаточно пароля, вводимого с клавиатуры, параметр --keyfile не указывается. Пароль будет запрошен перед шифрованием.
Итак, предположим, что контейнер ассоциирован с устройством /dev/loop0, в качестве алгоритма шифрования мы выбрали один – AES-256, в качестве алгоритма PBKDF выбран whirlpool, а ключ находится в /keys/keyfile
Тогда команда приобретает вид:
tcplay --create --device=/dev/loop0 --cipher=AES-256-XTS --pbkdf-prf= whirlpool --keyfile=/keys/keyfile

Можно также добавить ключ --insecure-erase, тогда процесс пройдет быстрее, т.к. будет произведено затирание данных на диске. Поскольку я параноик, и в незашифрованном виде на диске ничего не храню, а свежий файл-контейнер представляет собой гигабайт нулей, то я смело его добавлю:
tcplay --create --device=/dev/loop0 --cipher=AES-256-XTS --pbkdf-prf= whirlpool --keyfile=/keys/keyfile –-insecure-erase

После ввода команды и нажатия Enter, нам предложат ввести парольную фразу и повторить ее. Если хочется кроме ключевого файла установить еще и пароль (или ключевой файл вообще не нужен), то вводим пароль и подтверждаем его, если указан ключевой файл, а пароль не нужен, жмем два раза Enter.
Далее попросят подтвердить свои действия, если все сделано правильно – отвечаем утвердительно, после чего нужно будет некоторое время подождать, пока tcplay не сгенерирует т.н. истинно-случайные числа и не завершит шифрование.
В конце процесса нам скажут All Done!, если так, значит шифрование файла-контейнера окончено.
Read more…
Начало.
Продолжение следует.

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/316433.html
Прокомментировать заметку можно по ссылке выше.

tcplay, замена TrueCrypt для Linux. Работа с криптоконтейнерами. Часть I.

И просто краткие заметки от склероза.
Часть I. Общие положения.
0. Зачало.
TrueCrypt уже довольно давно почил, однако добрые люди не оставили в беде параноика и начинающего линуксоида в одном лице и форкнули создали независимую реализацию замечательного проекта. TCplay представляет собой утилиту командной строки (для Linux), поддерживающую все основные функции TrueCrypt – создание томов-криптоконтейнеров, открытие контейнеров, созданных в TrueCrypt, создание скрытых шифрованных разделов на томе с обычным шифрованным разделом, поддержку ключевых файлов и т.д.
1. Установка.
1.1. Устанавливаем src2pkg [копия статьи] с помощью installpkg (если не установлена)
1.2. Качаем исходники tcplay
1.3. В каталоге со скаченным архивом выполняем
src2pkg -C tc-play-2.0.tar.gz
и после завершения процесса получаем пакет slackware, который устанавливаем с помошью installpkg
2. Всякие мелочи

tcplay –v
или tcplay –-version – версия программы
tcplay –h или tcplay –-help или запуск без параметров – справка.
3. О генерации ключевых файлов.
Вообще, tcplay, как и TrueCrypt в качестве ключевых файлов может использовать любой файл, точнее первый его мегабайт. Так что генерировать ключевые файлы большего размера смысла не имеет. Конечно, нежелательно использовать в качестве ключевых файлов системные файлы, фотографии своего любимого кота, тещи или Джиллиан Андерсон и т.д. Есть вероятность, что злоумышленник подберет, а уж при использовании системных файлов вероятность близка к 100%.
Простейший способ сгенерировать ключевой файл – воспользоваться командой dd и устройством /dev/random
dd if=/dev/random of=/путь/к/файлу/имя_файла bs=1 count=256
Данная команда сгенерирует ключевой файл размером 256 байт.
Команда dd подробно описана, например, здесь копия
4. Подготовка файла-контейнера.
Чтобы создать новый файл-контейнер (неважно, содержащий лишь один обычный том TrueCrypt или же обычный и скрытый) нам понадобится файл нужного размера, создать его также можно при помощи команды dd:
dd if=/dev/zero of=/path/to/file/disk01.crypt bs=1024M count=1
Команда создаст файл размером 1 Гб (1024 Мб) заполненный нулями, естественно, /path/to/file/disk01.crypt нужно заменить на путь к файлу-контейнеру.
5. Представляем файл-контейнер в виде блочного устройства.
Далее, нужно сделать так, чтобы система представила созданный файл-контейнер в виде блочного устройства, проще говоря, смогла работать с ним, как с диском, для чего нужно «повесить» наш файл на петлевое устройство loop
Для начала определим первое свободное петлевое устройство:
losetup -f
В моем дистрибьютиве loop-устройства ничем не использовались, поэтому команда выдала
/dev/loop0
В других дистрибьютивах может быть и не loop0, например, дистрибьютивы Puppy Linux при загрузке занимают первых два (0 и 1) петлевых устройства, на одном из которых висит основной образ ОС, а на втором файл пользовательской сохраненки.
Вешаем файл-контейнер на свободное петлевое устройство:
losetup /dev/loop0 /path/to/file/disk01.crypt
первый параметр команды – петлевое устройство, второй – путь к файлу-контейнеру.
Продолжение

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/316329.html
Прокомментировать заметку можно по ссылке выше.

Обновление или установка вручную Flash Player в Firefox под Linux

Опять спасибо за подсказку все тому же товарищу из ГОРФ.
1. Идем Firefox’ом на http://adobe.com/software/flash/about и узнаем версию установленного у нас плагина, и последнюю свежую версию для нашей ОС.


На сегодня последняя версия для Linux 11.2.202.451
2. Качаем (или тем же Firefox’ом, или с помощью wget): http://fpdownload.macromedia.com/get/flashplayer/pdc/11.2.202.451/install_flash_player_11_linux.i386.tar.gz
3. Распаковываем из архива куда-нибудь файл libflashplayer.so
4. Закрываем Firefox.
5. Копируем libflashplayer.so в директорию плагинов Firefox (у меня это /usr/lib/mozilla/plugins, судя по сообщениям с полей в Puppy аналогично), при необходимости заменяя старый файл.
6. Запускаем Firefox, идем по ссылке, указанной в пункте 1 и проверяем версию установленного плагина. У меня все получилось 🙂
ЗЫ. Впрочем, я на всякий случай скопировал файлы себе, так что кому понадобится, обращайтесь, Дмитрий Анатольевич Медведев.

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/309844.html
Прокомментировать заметку можно по ссылке выше.

Как сделать скриншот в Puppy Linux

Ввести в терминале команду:
mtpaint -s
В Puppy Linux Rus (Slacko), работает.
Благодарю товарища из ГОРФ за подсказку 🙂

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/309742.html
Прокомментировать заметку можно по ссылке выше.

Обратный отсчет в скрипте bash (видео), вариант 2 с «мельницей»


На Youtube
Аналогично предыдущему — в описании видео есть ссылки на скрипт и дополнительные материалы.

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/307313.html
Прокомментировать заметку можно по ссылке выше.

Обратный отсчет в скрипте bash (видео)


На YouTube
В описании видео даны ссылки на скрипт и поясняющие материалы, так что без особых просьб инструкцию писать не буду.

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/307050.html
Прокомментировать заметку можно по ссылке выше.

Установка Java в Slackware

Я пользовался несколько устаревшим How-to отсюда [копия], но устарел How-To исключительно из-за того, что java обновилась (изменилась версия). Так что алгоритм тот же.
1.Скачиваем JDK отсюда. Находим кнопочку Download под надписью JDK, и щелкаем на нее. Далее принимаем лицензионное соглашение и качаем нужный архив для вашей ОС.
2.И скрипт SlackBuild отсюда (Download SlackBuild на страничке. Для версии JDK 8u31) [копия]. Но, если что, нужный слакбилд гуглится по запросу slackbuild java 8u31, где 8u31 — текущая версия java.
3.Распаковываем архив со SlackBuild’ом (все файлы из архива) в отдельный каталог (можно воспользоваться MC)
4.Туда же копируем скачанный с сайта Oracle файл (на данный момент — jdk-8u31-linux-i586.tar.gz для 32-х битных систем, и jdk-8u31-linux-x64.tar.gz для 64-битных).
5.Переходим в каталог с распакованным SlackBuild и выполняем команду
./jdk.SlackBuild jdk-8u31-linux-i586.tar.gz
Когда процесс завершится, будет выдано сообщение наподобие:
Slackware package /tmp/jdk-8u31-linux-i586-1.txz created.
6.Копируем свежесозданный пакет куда-нибудь (чтоб не потерялся).
7.Устанавливаем его, выполнив следующую команду в директории с пакетом: installpkg jdk-8u31-linux-i586-1.txz
8.Перезагружаем машину.
9.Проверяем правильность установки, введя в командной строке java без параметров. Java-машина должна выдать справку по своему использованию, т.е. список опций.

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/303250.html
Прокомментировать заметку можно по ссылке выше.

Скрипт, разрывающий ppp-соединение

Параметр один — имя тоннеля, без параметров разрывает соединение ppp0. Не мое.
 На pastebin

Скачать с mega.nz

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/302312.html
Прокомментировать заметку можно по ссылке выше.

Определение момента, когда поднялся VPN тоннель

Определение момента, когда поднялся VPN тоннель
Здесь была первая версия скрипта
Она была с недочетом
Описание исправленной здесь

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/293021.html
Прокомментировать заметку можно по ссылке выше.

Информация о выделенном IP и шлюзе, еще вариант

Анон дельно подсказал еще один способ узнать выделенный IP и адрес шлюза VPN-тоннеля и настроить маршрутизацию. Создать скрипт /etc/ppp/ip-up (также есть варианты ip-pre-up и ip-down для соответствующих случаев), которому pppd в параметрах передает всю нужную информацию.
В некоторых дистрибьютивах исполняются не скрипты с указанными названиями, а скрипты из каталогов /etc/ppp/ip-up /etc/ppp/ip-pre-up /etc/ppp/ip-down. Мне сей способ не сильно удобен, т.к. скрипты запускаются при поднятии каждого тоннеля, соответственно, придется городить большой скрипт, определяющий какой именно тоннель поднялся, и какой маршрут прописать (и нет ли этого маршрута уже). Посему у себя я оставлю как было, но информация все-равно полезная, пусть лежит тут. Мало ли когда надо будет.

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/291063.html
Прокомментировать заметку можно по ссылке выше.

Скрипт, для получения информации о выделенных ip и шлюзе и установки маршрутизации.

Преамбула.
Дело в том, что у меня на рабочем компьютере поднимаются сразу несколько VPN-тоннелей. Для работы, сразу с двумя офисами, здесь, в Италии, и до основного, два бесплатных VPN для разных Интернет-сервисов, один из которых должен предоставлять маршрут по умолчанию, местный тоннель (пофлудить на скрытом форуме). Для всего этого зоопарка заведены соответствующие таблицы маршрутизации в файле /etc/iproute2/rt_tables. Понятно, что после того, как тоннели поднялись, в соответствующие таблицы надо прописать соответствующие маршруты по умолчанию. DHCP в данном случае применим с огромным геморроем, маршруты надо прописывать вручную, но это тоже не менее геморройная задача, т.к. провайдеры иногда меняют шлюзы, я меняю провайдеров VPN, админы тоже могут изменить шлюз и/или выделенный IP. В общем, задолбало меня все руками перенастравивать и я решил написать скрипт, который это будет делать за меня. Заодно вспомнить bash, где знал, и узнать что-то новое, где не знал.
Будем исходить из того, что имеется уже поднятый VPN-тоннель и нам необходимо прописать в нужную таблицу нужный маршрут по-умолчанию.
Откуда взять нужные ip.
Из вывода команды ifconfig. В моей системе вывод ifconfig pppX, где X, номер соответствующего интерфейса ppp выглядит так:
ppp1: flags=4305 <UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1396
     inet x.x.x.x netmask 255.255.255.255 destination y.y.y.y
     ppp txqueuelen 3 (Point-to-Point Protocol)
     RX packets 2055 bytes 1502924 (1.4 MiB)
     RX errors 0 dropped 0 overruns 0 frame 0
     TX packets 1747 bytes 179542 (175.3 KiB)
     TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

Где x.x.x.x – IP, присвоенный машине провайдером VPN, а y.y.y.y – IP шлюза провайдера, через который и должен пролегать маршрут.
Команды для установки маршрутизации
Команда добавления маршрута в соответствующую таблицу выглядит примерно так:
ip route add default dev имя_тоннеля via адрес_шлюза src адрес_машины table таблица
Например:
ip route add default dev ppp1 via 10.1.15.1 src 10.1.22.12 table suomi_office
Если таблица не указана (параметр table отсутствует), то маршрут будет установлен, как маршрут по умолчанию.
Обязательными параметрами в данном случае является указание на соответствующий шлюз (dev), остальные – дополнительные.
Для удаления маршрута по умолчанию используется команда:
ip route del default table таблица
или
ip route del default для удаления основного маршрута по-умолчанию.
Что должен делать скрипт
Основное:
1. Проверить, действительно ли поднят указанный интерфейс
2. Есть ли в файле /etc/iproute2/rt_tables соответствующая таблица маршрутизации, если таблица не указана – установить основной маршрут по умолчанию
3. Получить нужные IP
4. Вывести на экран summary – полученные IP и параметры.
5. Установить маршрутизацию, сообщив об успехе, либо ошибке
Дополнительно:
1. Проверить корректность заданных параметров
2. Вывести справку по собственным параметрам при наличии запроса, либо при запуске без параметров.
3. Иметь возможность указать или не указать необязательные параметры для команды маршрутизации.
Read more…
Приложение. Используемая литература и скрипт целиком.
1. Краткое описание команды if. Копия
2. Краткое описание команды awk Копия
3. Скрипт. Копия на pastebin.

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/290649.html
Прокомментировать заметку можно по ссылке выше.