четверг, сентября 04, 2008

Жизнь на флэшке

Intro


Давно была мысль написать одну большую статью, про секурность во всяких разных её видах. Но пока я собирался с силами на её написание, вдруг срочно понадобилось одному моему хорошему знакомому начать жить на флэшке. Просто потому, что периодически он ходит с компа на комп и хотел бы видеть всё своё с собой. Про всё речь я вести пока не готов, поэтому начнём с самого простого - Psi с шифрованием GPG.

Постановка задачи


Есть программа, клиент джаббер-сетей - Psi. Надо, что бы она работала с флэшки на любом компе. Дело осложняется тем, что к псайке очень надо шифрование, которое обеспечивается утилитой GPG. (Надо не в смысле, что psi без него не работает, а в смысле, что шифрование - ето секурно). Естесвенно, надо что бы не было лишних телодвижений на новом компе, никаких настроек, и ничего не должно оставаться, всё только на флэшке. Особенно логи psi и в обязательном порядке ключи GPG.

Начало


Для начала пойдём посмотреть доки на предмет домашних папок обоих программ.
Покопавшись в доках к psi, находим
PSIDATADIR is an envrionment variable pointing to the location of the Psi data files (configuration, profiles, history etc.).
по дефолту оно показывает в
%UserProfile%\PsiData\ (usually C:\Documents and Settings\username\PsiData )
в винде, разумеется.
Про GPG в доках написано следующее:
The default home directory is a directory named "gnupg" below the application data directory of the user.
и
Being only a default, it may be changed by setting the name of the home directory into the Registry under the key HKEY_CURRENT_USER\Software\GNU\GnuPG using the name "HomeDir". If an environment variable "GNUPGHOME" exists, this even overrides the registry setting.

В этот момент все продвинутые юзеры умчались галопом ваять скрипты запуска :). Оставшаяся часть аудитории сидит и внемлет далее.

Действуем


Если вкратце, то в теории всё выглядит следующим образом:
1. Создаём на флэшке нужную нам структуру папок;
2. Копируем нужные программы и файлы в соответствующие места;
3. Создаём скрипт, который инициализирует нужные нам переменные окружения и запускает Psi;
4. Проверяем работоспособность всего получившегося;
5. Донастраиваем скрипты;
6. Проверяем работоспособность всего получившегося;
7. Если не работает, то п.5;
8. Пьём шампанское и радуемся жизни.

Начнём выполнять всё по шагам.

Создаём структуру папок


Я выбрал следующую структуру:

.
.\gpg
.\gpg\keys
.\psi
.\psi\data

Остальные папки в psi показывать не стал, бо неважно для нашего дела.
Тут "." - выбранная папка, у меня в данный момент это C:\Temp, сути дела это не меняет. Вы можете сразу создавать её на флэшке или же создать и проверить на жёстком диске, а потом скопировать на флэшку. Заверяю, что у нас всё будет работать независимо от местоположения этой папки, ради этого, собственно, всё и затевалось :) .
Почему именно такая структура - так мне захотелось... И ещё почувствовалось, что так будет правильно.

Копируем файлы


Все операции проводим из нашей папки, то есть из .
GPG
От GPG нам надо только два файла - собственно gpg.exe и iconv.dll, но можно скопировать и всю папку. Откуда у меня в компе живёт iconv.dll - я уже не в курсе :), поэтому вам надо или найти его самим, или спросить у меня, или жить без него - gpg только предупреждает, но работает и без него.
Ключи gpg живут по адресу %userprofile%\Application Data\gnupg, почти всегда это "C:\Documents and Settings\user\Application Data\gnupg". Надо всё содержимое этой папки скопировать в .\gpg\keys:
copy "%userprofile%\Application Data\gnupg\*" .\gpg\keys

Psi
Папку Psi копируем целиком в .\psi . Профиль (все настройки, аккаунты и логи) лежит в %UserProfile%\PsiData\, как было сказано выше. Точно так же копируем всё оттуда в нашу папку:
xcopy /e "%userprofile%\psidata" .\psi\Data


Создаём скрипт


Тут всё просто - нам надо задать две переменные окружения, для Psi и GPG, задать пути для GPG, иначе Psi не сможет найти его и запустить Psi:

@echo off
set GNUPGHOME=%CD%\gpg\keys
set path=%path%;%CD%\gpg;%CD%\psi
set PSIDATADIR=%CD%\psi\data
start psi.exe

Всё это надо вставить в bat-файл, например start_psi.bat.

Так как я всё это протестил, прежде чем запостить, то пункты 4-7 опускаю и сразу приступаю к п.8 :) .

Заключение


Цели своей мы добились, теперь наша Psi всегда с нами и, что примечательно, все наши ключи и всё шифрование теперь тоже ходит с нами вместе. Достигнуто это минут за 10-20 времени, небольшой работой рук и чуть поболе - работой мозга. В дальшейшем я планирую перевезти на флэшку свой почтовик (Sylpheed) и всё, что попадётся под руку :).

Дальше...