среда, 24 марта 2010 г.

Шаманство вокруг Unreal Tournament 2004 под современным Линуксом

Лирическое отступление.



До недавних пор в нашем отделе разработчиков было принято расслабляться в течении дня получасовыми забегами в Counter Strike: Source. Но совсем недавно часть программистов, в том числе и я, полностью перевели свои рабочие машины на Linux (а именно Ubuntu).
Возиться с wine не было желания, поэтому единственным вариантом оставалось выбрать кроссплатформенный шутер. Это дело вкуса, но лично мне из всех доступных самым приемлимым показался Unreal Tournament 2004.
Вооружившись всем необходимым я попытался "завести" эту игру на своей домашней системе (Ubuntu 10.04beta1 x86_64) и прочитал не одну простыню логов трассировщиков, врежде чем понял что к чему.

Основные трудности.



С момента последнего релиза Unreal Tournament 2004 в мире линукса многое успело поменяться. Появились новые фреймворки, подсистемы, некоторые из старых потеряли свою актуальность. От HAL'а отказываются, PulseAudio же напротив почти в каждом втором популярном дистрибутиве... Неудивительно, что игра, которой около шести лет не запуститься "влет" в среде бурно развивающегося линукса.
В попытках запуска Unreal Tournament основной проблемой было несоответствие библиотек libstdc++5 и openal.

О чем пишем.



В этой статье я подробно опишу процесс доведения до рабочего состояния Unreal Tournament 2004 под современным линуксом, имея на руках установленную windows версию и linux-патч.
Описанное руководство актуально как для 64-х битных систем, так и для 32-х битных.

Аппаратное обсепечение:
Процессор: Intel(R) Core(TM)2 Quad CPU Q9550 @ 2.83GHz
Видеокарта: GeForce GTX 260

Программное обеспечение:
Операционная система: Ubuntu lucid (development branch), 64-х битная
Видео-драйвер: nvidia 195.36.15 (проприетарный)

Руководство.



1. Сначала необходимо скопировать распакованную (установленную) Windows-версию во временный каталог, в котором мы будем экпериментировать. Это должна быть файловая система, поддерживающия POSIX ACL, чтобы можно было устанавливать права доступа.
В моем случае это ~/ut2004

image

2. Теперь желательно удалить exe и dll файлы, а так же установить корректные права доступа:

zerotroll@ZTDesktop:~/ut2004$ find ./ -name "*.exe" -exec rm {} \;
zerotroll@ZTDesktop:~/ut2004$ find ./ -name "*.dll" -exec rm {} \;
zerotroll@ZTDesktop:~/ut2004$ find ./ -type d -exec chmod 755 {} \;
zerotroll@ZTDesktop:~/ut2004$ find ./ -type f -exec chmod 644 {} \;


image

3. Последней версией linux-патча на момент написания руководства являлась 3369. За весь десяток попыток инсталлятор ни разу не отработал корректно до конца. Поэтому я поступил проще: просто распаковал его в каталог ~/ut2004-linuxpatch и изъял необходимые файлы.

zerotroll@ZTDesktop:/media/Documents/Downloads/Games/Linux/Unreal Tournament 2004$ ls
TOCrossfire_beta_1.93_full ut2004_3369-english.midway.dvd-3.run
TOCrossfire_beta_1.93_full.zip ut2004.megapack-english-3.run
zerotroll@ZTDesktop:/media/Documents/Downloads/Games/Linux/Unreal Tournament 2004$ ./ut2004_3369-english.midway.dvd-3.run --help
Makeself version 2.1.5
1) Getting help or info about ./ut2004_3369-english.midway.dvd-3.run :
./ut2004_3369-english.midway.dvd-3.run --help Print this message
./ut2004_3369-english.midway.dvd-3.run --info Print embedded info : title, default target directory, embedded script ...
./ut2004_3369-english.midway.dvd-3.run --lsm Print embedded lsm entry (or no LSM)
./ut2004_3369-english.midway.dvd-3.run --list Print the list of files in the archive
./ut2004_3369-english.midway.dvd-3.run --check Checks integrity of the archive

2) Running ./ut2004_3369-english.midway.dvd-3.run :
./ut2004_3369-english.midway.dvd-3.run [options] [--] [additional arguments to embedded script]
with following options (in that order)
--confirm Ask before running embedded script
--noexec Do not run embedded script
--keep Do not erase target directory after running
the embedded script
--nox11 Do not spawn an xterm
--nochown Do not give the extracted files to the current user
--target NewDirectory Extract in NewDirectory
--tar arg1 [arg2 ...] Access the contents of the archive through the tar command
-- Following arguments will be passed to the embedded script
zerotroll@ZTDesktop:/media/Documents/Downloads/Games/Linux/Unreal Tournament 2004$ ./ut2004_3369-english.midway.dvd-3.run --noexec --target ~/ut2004-linuxpatch
Creating directory /home/zerotroll/ut2004-linuxpatch
Verifying archive integrity... All good.
Uncompressing Unreal Tournament 2004 3369-english.midway.dvd Installer..............................................................................................................................................................................................................................................................
zerotroll@ZTDesktop:/media/Documents/Downloads/Games/Linux/Unreal Tournament 2004$


image

4. Следующим этапом будет копирование содержимого каталога /home/zerotroll/ut2004-linuxpatch/patch в каталог ~/ut2004/

image

5. Так как бинарные файлы поставляются и 32-х и 64-х битные, а дистрибутив я подготавливал универсальный, я создал два каталога в ~/ut2004/System: bin_amd64 и bin_x86. В каждый из них следует скопировать содержимое соответствующего архива (linux-amd64.tar.gz/System в bin_amd64 и linux-x86.tar.gz/System в bin_x86).

image

image

6. Для каждого файла из каталога bin_amd64 или bin_x86, в зависимости от платформы вашей операционной системы, необходимо создать символьную ссылку в каталоге ~/ut2004/System

image

image

7. Так как Unreal Tournament динамически слинкован с устаревшей версией библиотеки libstdc++, ее необходимо скопировать в каталог бинарников соответствующий вашей архитектуре.
deb-пакет можно скачать отсюда:



Устанавливать его не нужно, просто скопировать файл libstdc++.so.5.0.7 в каталог бинарников, соответствующего вашей архитектуре.

image

8. После этого необходимо создать символьную ссылку ~/ut2004/System/libstdc++.so.5 указывающую на скопированный выше файл.



9. Теперь можно попробовать запустить игру, чтобы автоматически создать файлы настроек в пользовательском каталоге.
Находясь в каталоге ~/ut2004/System выполните команду: ./ut2004-bin
После появления главного меню можете сразу выходить из игры.

image


10. Далее следует установить лицензионный ключ игры:

echo XXXX-XXXX-XXXX-XXXX > ~/.ut2004/System/cdkey

11. Следующим этапом является установка библиотеки openal:

sudo apt-get install libopenal1

image

12. После этого необходимо скопировать библиотеку openal в каталог бинарников, соответствующий вашей архитектуре

zerotroll@ZTDesktop:~/ut2004/System$ cp /usr/lib/libopenal.so.1.11.753 bin_amd64/openal.so

image

13. В конфигурационном файле ~/.ut2004/System/UT2004.ini следует найти секцию ALAudio.ALAudioSubsystem и установить параметр UseDefaultDriver в False.

image

14. Теперь необходимо скопировать конфигурационный файл /etc/openal/alsoft.conf в .alsoftrc и произвести следующие изменения: в поле format указать тип вашей звуковой системы, а так же в поле drivers поменять местами alsa и pulse (поставив на первое место alsa).

image

image

15. И на последок установим корректнные права доступа на бинарные файлы:

zerotroll@ZTDesktop:~/ut2004/System$ find bin_amd64/ -type f -exec chmod 644 {} \;
zerotroll@ZTDesktop:~/ut2004/System$ chmod 755 bin_amd64/ut2004-bin
zerotroll@ZTDesktop:~/ut2004/System$ chmod 755 bin_amd64/ucc-bin


Если у вас 32-х битныя система вместо каталога bin_amd64 нужно указать bin_x86.

После всех описанных выше действий вы должны получить полностью работоспособную linux-версию Unreal Tournament 2004.
Надеюсь это руководство кому-нибудь поможет.

суббота, 2 января 2010 г.

Взлом Wi-Fi - тяжелый труд...

Machine #1



Notebook (Acer Aspire 5738G)
Intel Core 2 Duo, T6600, 2.2 GHz / 3Gb RAM
Собственно на нем и происходит сканирование Wi-Fi сетей и дамп трафика. Уже несколько часов ждем Дядю Васю, чтобы сохранить пакеты аутентификации.



Machine #2



Desktop (custom)
Intel Core 2 Quad, Q9550, 2.93 GHz / 4Gb RAM
На основном компьютере по идее должен происходить подбор пароля из словарей, но так как Дяди Васи весь день нет, то, как видите, и подбирать не к чему.



Рабочее место



Стимуляторы
Parliament, White Horse, Black Light Burns - лучшие помощники в этом нелегком деле.



UPDATE:


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