Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
12
Добавлен:
20.04.2024
Размер:
15.04 Mб
Скачать

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

 

m

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

Исходникимодуляloop-AES так-

жедоступнывUbuntu 9.04

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Чтобызашифроватькаталог/tmp (илилюбойдругой) таким

 

витьdietlibc, минималистичнуюбиблиотекуязыкаСи, код

способом, просторазмонтируйего(umount /tmp), добавьв/

 

которойбудетиспользованвобразеinitrd:

etc/fstab следующуюстроку:

 

 

 

 

# cd /usr/src

/dev/sda3 /tmp ext2 defaults,loop=/dev/loop3,e

 

# wget ftp://ftp.kernel.org/pub/linux/libs/

ncryption=AES128,phash=random/1777 0 0

 

dietlibc/dietlibc-0.32.tar.bz2

 

 

# tar -xjf dietlibc-0.32.tar.bz2

исмонтируйкаталогснова:

 

# cd dietlibc-0.32

 

 

# make

# mount /tmp

 

# install bin-i386/diet /usr/local/bin

 

 

 

Командаmount неспроситпароля, апростоподключит/

 

2.Такженампонадобитсяутилитаaespipe, спомощью

dev/loop3 кустройству/dev/sda3, создастновуюфайловую

 

котороймызашифруемсуществующиенакорневомразделе

систему, сгенерирует65 случайныхключейивоспользу-

 

данные, непотерявих:

етсяимидляшифрованиязаписываемыхданных. Права

 

 

накаталог/tmp будутвыставленывзначение1777 (опция

 

# cd /usr/src

«phash=random/1777»).

 

# wget http://loop-aes.sourceforge.net/

Обративнимание, чтовыборфайловойсистемыext2 вэтом

 

aespipe-latest.tar.bz2

случаенетребование, апростоздравыйсмысл. Зачем

 

# cd aespipe-v2.3e

использоватьжурналируемуюфайловуюсистемувситуации,

 

# CFLAGS="-O2" LDFLAGS="-static -s" ./

когдаФСзановосоздаетсяприкаждоммонтировании?

 

configure

СЦЕНАРИЙ4.ШИФРОВАНИЕ

 

# make

 

# make tests

КОРНЕВОГОРАЗДЕЛА

 

# cp -p aespipe /boot

Четвертыйизаключительныйсценарийиспользованияloop-

 

 

AES описываетпроцесснастройкисистемыдляшифрования

 

3.Статическисоберемутилитуgpg, чтобыонанезависелаот

корневогораздела. Сразуоговорюсь, чтоэтонепростаяпроце-

 

библиотек, расположенныхвкорневомразделе:

дура, котораяпотребуетсозданиякаталога/boot наотдельном

 

 

разделеиналичияподрукойLiveCD илиотдельностоящего

 

# cd /usr/src

дистрибутиваLinux. Восновеметодалежитиспользование

 

# wget ftp://ftp.gnupg.org/gcrypt/gnupg/gnupg-

небольшогообразаinitrd, которыйещедозагрузкизапустит

 

1.4.9.tar.bz2

утилитыinsmod иlosetup, располагающиесявкаталоге/boot,

 

# tar -xjf gnupg-1.4.9.tar.bz2

дляподключенияшифрующегоloop-устройстваповерхкорне-

 

# cd gnupg-1.4.9

вогоразделаещедофактическойзагрузкисистемы.

 

# patch -p1 </usr/src/loop-AES-v3.2g/gnupg-

1. Первое, чтонеобходимосделать, — этоскачатьиустано-

 

1.4.9.diff

 

 

 

DVD

dvd

Длябольшего удобствамысобрали всенеобходимые командывфайл im_too_lazy_to_type_ it.txt. Вместонабора командтебебудет достаточноделать copy’n’paste.

WARNING

info

Вомногихдистрибутивахутилитыи драйверloop-AES

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

INFO

info

Описаннаявстатье утилитаaespipe — это отличныйинструмент, которыйможно использоватьдля получениядоступа кзашифрованному устройствуотовсюду,

напримеризFreeBSD.

Вотличиеотдругих системшифрования,

драйверloop-AES

поддерживает прямуюиобратную совместимостьсболеераннимиядрами (вплотьдоветки2.0) иможетработатьс томами, зашифрованнымиещесамыми первымиверсиями драйвера89

XÀÊÅÐ 09 /129/ 09

089

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

to

 

 

 

 

 

UNIXOID

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

 

.

 

 

 

 

 

 

.c

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

 

-xcha

 

 

 

 

Настраиваемсборщик

образаinitrd

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

 

w Click

 

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

w

 

 

 

 

g

 

 

 

Драйверloop-AES, ненапрягаясь, обгоняетdm-crypt какприработеp

 

 

 

 

 

o

 

 

 

w

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

.c

 

 

 

 

df

 

 

n

e

 

сфайлами(слева), такивтестахiotest (справа)

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

#CFLAGS="-O2" LDFLAGS="-static -s"

./configure --prefix=/usr --enable- static-rnd=linux

#make

#rm -f /usr/share/man/man1/ {gpg,gpgv}.1.gz

#make install

#chown root:root /usr/bin/gpg

#chmod 4755 /usr/bin/gpg

Заметь, есликаталог/usr/bin находитсянена корневомразделе, бинарникgpg придется переместитьвкаталог/bin:

#cd /usr/bin

#mv gpg ../../bin

#ln -s ../../bin/gpg gpg

4.Скопируеммодульloop.ko вкаталог/boot, чтобыонбылдоступендомонтированиякорневого раздела:

#cp -p /lib/modules/2.6.28.9- noloop/extra/loop.ko /boot/modules- 2.6.28.9-noloop/

5.Какипрежде, создадим65 случайныхключей, которыебудутиспользованыдляшифрования корневогораздела:

#umask 077

#head -c 3705 /dev/random | uuencode -m — | head -n 66 | tail -n 65 \

| gpg --symmetric -a >/boot/ rootkey.gpg

6.Подготовимобразinitrd. Дляэтогопереходим вкаталогсисходникамиloop-AES (/usr/src/ loop-AES-v3.2g), открываемфайлbuild-initrd.sh

втекстовомредактореиисправляемнесколько переменных:

НАСТРОЙКАBUILD-INITRD.SH

#Использовать метод initramfs/ switch_root

#для переключения на зашифрованный корневой раздел

USEPIVOT=2

#Раздел, хранящий каталог /boot BOOTDEV=/dev/sda1

#ÔÑ boot-раздела

BOOTTYPE=ext3

#Корневой раздел CRYPTROOT=/dev/sda2

#ФС корневого раздела

ROOTTYPE=ext3

#Метод шифрования (AES128/AES192/ AES256)

CIPHERTYPE=AES128

#Клавиатура в режиме UTF-8. Это важно, если

#пароль к ключам содержит нелатинские символы

UTF8KEYBMODE=1

Отредактируемконфигурационныйфайлgrub (/ boot/grub/menu.lst), чтобызаписьонашемядре выгляделапримернотак:

#vi/boot/grub/menu.lst

title Ubuntu 9.04, kernel 2.6.28.9-noloop

root (hd0,0)

kernel /boot/vmlinuz-2.6.28.9- noloop

initrd /initrd.gz

Наконец, установимобразinitrd инаборнеобходимыхутилит(losetup, например) вкаталог/boot:

#./build-initrd.sh

7.Делозамалым: загрузитьсясLiveCD (либо другогодистрибутива), создатьнесколькофайловустройств(которыхможетнебытьдозапуска udev) изашифроватьсодержимоекорневого раздела. Монтируемкорневойразделхост-сис- темы(здесьидалее/dev/hda2):

#mount /dev/hda2 /mnt

Открываем/mnt/etc/fstab изаменяем«/dev/ hda2 / ext3 defaults 0 1» на«/dev/loop5 / ext3 defaults 0 1». Дваважныхзамечания: необходимоиспользоватьименно/dev/loop5, — этоимя прошитовinitrd; вUbuntu инекоторыхдругих дистрибутивахвместоименикорневогораздела можетбытьуказанегоUUID (уникальныйидентификационныйномер, используетсядлятого, чтобыядромоглонайтикорневойраздел, даже еслижесткийдискбудетподключенкдругому

каналу/компу). Теперьпроверимнасуществованиенесколькихфайловустройств(нужныдля работыутилит, помещенныхвкаталог/boot):

# ls -l /mnt/dev/{console,null,zero}

Еслитаковыхнесуществует— создадимих:

#mknod -m 600 /mnt/dev/console c 5 1

#mknod -m 666 /mnt/dev/null c 1 3

#mknod -m 666 /mnt/dev/zero c 1 5

Отмонтируемкорневойраздел:

#umount /mnt

#sync

Исмонтируемboot-раздел(mount-r/dev/hda1/ mnt),чтобывоспользоватьсяутилитойaespipeдля шифрованиясодержимогокорневогораздела:

#dd if=/dev/hda2 bs=64k \

| /mnt/aespipe -e AES128 -K /mnt/ rootkey.gpg -G / \

| dd of=/dev/hda2 bs=64k conv=notrunc

Уффф, этовсе, перезагружаемсяинаслаждаемсябезопасностью:

#umount /mnt

#sync

#reboot

ЗАКЛЮЧЕНИЕ

Каквидишь, loop-AES нетакужисложенвустановкеидостаточнопроствиспользовании(за исключениемчетвертогосценария, конечно). Спомощьюэтогонезамысловатогодрайвера можнозашифроватьswap, разделы, файлы, флеш-накопителиидажеCD-ROM. Впакетес исходникамидрайвератынайдешьподробное руководство, описывающее, кромевсегопрочего, процесснастройкишифрованияфайловой системызагрузочногофлеш-брелкаисоздания безопасногоLiveCD.z

090

XÀÊÅÐ 09 /129/ 09

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

to

 

 

 

 

 

UNIXOID

 

w Click

 

 

 

 

 

 

ЕВГЕНИЙ «VSHMUK» БЕЙСЕМБАЕВ / DIVER@EDU.IOFFE.RU, ICQ 308229460 /

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

.c

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

Ebook-потрошитель

Применяемхирургию, чтобыраскрытьсекреты

Sony Bookreader PRS-505

ВокругнасполногаджетовсLinux наборту, иниктонемешаетучитьсянаошибкахпрофессионалов, вскрываягаджеты иизучая. Мнойбылакуплена«игрушка» — книгочиталкана электронныхчернилахSony BookReader PRS-505.

Букридер почтив сборе

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Нашацель— посмотреть, какиспользуетсяЛинуксво«взрослых», массовыхустройствах, оценитьнаходки «тамошних» профессиональныхли-

нуксоидов, поднабратьсяопытависследовании чужогософта, аможет, идобавитьвустройство что-тосвое.

ОФФЛАЙН

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

Чтобынепотрошитьсодержимоеflash-карточек устройства, простоскачаемновуюверсию

(http://download.sony.com/prs/prs-505/ 1.1.00.18040/PRS-505%20Updater%201.1.00.18040. exe). Этопрограмма, которуюпроизводитель нампредоставилдляперепрошивкиридеров.

Онасодержитобразфайловойсистемыдля

size 65536 CRC 0xc3e97789, edition

заливкивустройство. Экзешник— всеголишь

2768907732, 3306537355 blocks,

самораспаковывающийсяархивWin-Zip, иего

1718735798 files

совсемнеобязательнозапускать, достаточно

cramfs.Rootfs.img: Linux Compressed

простораспаковатьlinux-утилитойunzip:

ROM File System data, little endian

 

 

size 65536 CRC 0xdb11801f, edition

$ unzip PRS-505\

 

3444324402, 2364302859 blocks,

Updater\ 1.1.00.18040.exe

 

491549572 files

 

 

raw.BootImg.img: DOS executable

Помимовспомогательныхdll-екиконфигура-

(device driver) for DOS

ционныхфайловxml (книммыещевернемся),

 

 

враспакованномархивебудутжитьнужные

Содержимоетретьегофайлапоказалосьмне

образыФС, которыеизаливаютсявитогев

подозрительным, этобылявнонеДОС-драйвер.

устройство. Ониимеютрасширение*.img.

Размер— 480 тысячбайт, почтиполностьюза-

Пропустимэтиимиджичерезпрограммуfile и

битединичками(дляболеебыстрогозаливаво

посмотрим, чтоонаонихдумает:

флеш, какяполагаю) иимеетнекотороеколи-

 

 

чествовкрапленийчего-томалоосмысленного.

$ file *.img

 

Сначалаярешил, чтоэтокакой-тозагрузчик

cramfs.Fsk.img: Linux Compressed

 

(истинноеназначениестанетяснымпозднее).

ROM File System data, little endian

 

Файлыcramfs.Fsk.img иcramfs.Rootfs.img,

 

 

 

092

XÀÊÅÐ 09 /129/ 09

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

Разобранный

 

 

 

 

-x cha

 

 

 

 

девайс

Подпаялсяк отладочному порту. Ахтунг! КонтактGND на этойфоткезапаяннетам! Это

мойкосяк

рыйзапускаетфайлtinyhttp.sh, живущийвпредыдущейизученнойнамифайловойсистеме. А вотздесьужеинтересно. Зачемустройству, не имеющемуникакогосетевогоинтерфейса, ка- кой-тоhttp? Ладно, беремназаметкуиползем пофайловойсистемедальше.

Некоторыйинтересвызвалдрайверхваленыхэлектронныхчернил(http://ru.wikipedia. org/wiki/EInk), живущийпоадресу/lib/ modules/2.4.17_n12/kernel/drivers/video/ etrackfb.o. ПоискпоследовательностейASCIIсимволоввэтомдвоичномфайле(команда

«strings etrackfb.o») далследующийрезультат:

очевидно— образыфайловыхсистемвформа-

Ну, во-первых, содержимоефайла/etc/issue

kernel_version=2.4.17_n12

теCramFS. Попробуемихсмонтировать:

дастнамверсиюокруженияLinux — коммер-

author=E Ink

 

ческийпроектMontaVista версии3.0 (www.

description=8track FrameBuffer

$ mkdir Fsk.FS

mvista.com). Файлы/etc/passwd и/etc/sudoers

Driver

$ cd Fsk.FS

расскажутоединственномпользователеэтой

VGA e-ink 600x800

 

системы: «libro» сзашифрованнымпаролем

 

 

 

# mount -t cramfs -o loop ../cramfs.

«/ET3mqgcE1NTQ». Подкаталог/etc/rc.d

Следовательно, электронныечернила

Fsk.img .

обозначитвсесервисыидемоны, которые

представляютсяЛинуксукакграфический

 

запускаютсявустройстве. Здесьвсестандарт-

Framebuffer-совместимыйдисплей! Такчто,

 

Внутри— каталогsony/ebook, авнем— под-

но, еслибынеспрятавшийсявrcS.d скрипт

еслизахотимпохачитьустройствоизаста-

каталогиapplication, bin иFONT. Заглянемв

S20libromount. Заглянуввнего, можноузнать,

витьвыводитьнаэкранчто-то, отличноеот

первыйиувидимкучудинамическихбиблио-

чтоонмонтируетфайловыесистемы(в/opt , /

книжек, — надолишьнаправлятьвыводнашей

тек, скомпилированныхподархитектуруarmel,

opt0 и/opt1), подгружаетдрайвераэкранчика,

графическойпрограммыв/dev/fb0. Проявля-

икучкувездесущихxml-файлов. Вкаталоге/

звука, usb-storage иflash-карточек, выводит

етсяисмыслфайлаraw.BootImg.img — этото,

bin — 4 бинарника, авFONT — шрифты.

наружуприветствиеиустанавливаетдефолт-

чтоотсылаетсявофреймбуфферпризагрузке

Теперьпримонтируемфайлcramfs.Rootfs.

ноевремя. Вобщем, все, отчегозависиткниго-

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

img. Внем— полноценнаяфайловаясистема

читалка, делаетсяздесь.

«Starting Up…». Размерфайлакакразравен

GNU скаталогами: bin, Data, dev, etc, home, lib,

Ячутьбылонеушелизподкаталога/etc дальше

800x600 (=480000), побайтунапиксель.

mnt, opt, opt0, opt1, proc, root, sbin, tmp, usr, var.

пофайловойсистеме, новпоследниймомент

Одноизособенностейустройства— разработ-

Чтожеинтересногоздесьможнонакопать?

заметилскриптикrc.d/rc3.d/S98librostart, кото-

чикифизическипоместилинаразныефайло-

XÀÊÅÐ 09 /129/ 09

093

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

UNIXOID

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-xcha

 

 

 

 

 

Подключение ккомпьютеру

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

выесистемысобственноGNU (какуниверсальныйсофт) иустройство-зависимуюоболочку Fsk — то, чтоиделаетбукридербукридером. Сделано, эточтобыможнобылобыстрозаливатьобновлениякпрограммечтения, нетрогая системуцеликомиповышаяеебезопасность.

РАЗБИРАЕМ…

Внутренностиустройстваужедавноисследованытоварищамиigorsk, boroda иостальными энтузиастамисфорумаwww.the-ebook.org/ forum/viewtopic.php?t=7577. Намосталось толькоповторитьихподвиг, благо, инструкция поразборкетамимеется.

Сзамираниемсердцаразбираюсвоегохорошегодругаивнутриобнаруживаю:

Центральный процессор FreeScale (Dragonball) MX-1 с архитектурой ARM926

Микросхема NAND-Flash памяти Samsung (256 Мb)

Микросхема NOR-Flash памяти Spansion (2 Мb)

Две микросхемы оперативной памяти Samsung

Контроллер карт SD/MMC+MemoryStick Ricoh

Контроллер дисплея на FPGA Actel ProASIC3

Цифро-аналоговый преобразователь для вывода звука

Контроллер USB Epson S1R72V17

Распайка под проприетарный отладочный разъем (100 ножек), маркирована как CN1501

Итак, никакогочудаиликрутойинженернойнаходкивнутрибукридеранет. Видиммикросхему NOR-памяти, вкоторой, скореевсего, живутзагрузчикиядро, потомукакименноэтоттипFlash умеетчитатьотдельнозаданныйбайт(Random Access). Рядом— NAND-Flash, где, очевидно,

живутфайловыесистемыи, собственно, сами книжки. ЛичноменяпорадовалаSDRAM-память вмаленькихBGA-корпусах. Темсамыминженерынехилосэкономилиместонаплате. Вообще, компоновщикамплатыидизайнерам корпусамояпохвалаизависть. Всеподогнано неимоверноточно, инигденезаметнорасточительства. Впихнутьвкорпусчто-нибудь, кроме того, чтовнеместь, мнепоказалосьневозможным. Короче, нидобавить, ниотнять. Разберемсясотладочнымразъемом. Очевидно, нанеговыводятсяJTAG-интерфейсымикросхем + какие-нибудьпорты, типапоследовательного отладочногоUART’асцентральногопроцессора. Такиесть. Ребятасфорума, названного выше, ужесделалигрязнуюработу, ввиде тыканияосциллографом, ивычислилипринад- лежащиеDBG-портуножки. Осталосьтолькок нимподпаяться. Припаиваемтонкиесеребря-

ныепроводак6(Transmit) и7(Receive) пинам,

атакженезабываемпро«земляной» контакт, которыйможновзятьилиот5-гопинаразъема

или— простосхватившисьзакорпусустройства. ЧерезпереходникRS-232/UART подключаемк COM-портукомпьютера.

ОНЛАЙН

Включаемустройство. Еслипортнастроенправильноивсезапаяноаккуратно, тонаблюдаем логзагрузкиЛинукса. Какзагрузказакончена, — логинимсясузнаннымииз/etc/passwd реквизитами(libro:librie). Системапускаетнаси вываливаетсообщение:

###fskLoad

###fskLoaded

latest nblconfig read from 0x0003b800 latest nblconfig written to 0x0003c000

#### xs_switcher_usbWatcher_ endUSBThread

#warning: global instead of local!

#warning: global instead of local! SYSNPM: sysnpm_pm_callback():163 Mem, CPU stopping...

Послечегоперестаетотвечатьнакоманды! Все хорошо, такидолжнобыть, этопроцесс-оболоч- каtinyhttp заметиланеактивностьпроцессора ивырубилаего, чтобысэкономитьаккумулятор. «Расшевелить» процессорможно, понажимав накнопкигромкости. Работатьтаксложно, поэтомуубиваемлишнее:

$ killall tinyhttp.sh $ killall tinyhttp

С этого момента нам доступна настоящая, полноценная система GNU/Linux на ядре

2.4!

Из лога загрузки (команда dmesg) можем узнать многое об аппаратной части девайса: например, что размер оперативной памяти 64 Mb и что flash-память разбита на очень много разделов на все случаи жизни. Взглянем на характеристики процессора:

root@(none):/proc# cat /proc/cpuinfo

Processor : ARM/CIRRUS Arm920Tsid(wb) rev 0 (v4l) BogoMIPS : 98.09

Features

: swp half 26bit

Cache type

: write-back

Cache clean

: cp15 c7 ops

Cache lockdown : format A

Cache unified

: harvard

...

 

Hardware

: Motorola

DragonBall MX1 (eBook-2)

Выходит, контроллер работает на частоте 100 МГц и имеет архитектуру ARM9.

А вот что Линукс примонтировал:

root@(none):/var# mount

/dev/root on / type cramfs (rw) proc on /proc type proc (rw) tmpfs on /dev/shm type tmpfs (rw) tmpfs on /tmp type tmpfs (rw) tmpfs on /var type tmpfs (rw) tmpfs on /etc type tmpfs (rw)

/dev/mtdblock10 on /opt1/keys type cramfs (rw)

/dev/mtdblock11 on /opt1/info type cramfs (rw)

/dev/mtdblock15 on /opt type cramfs (rw)

/dev/mtdblock16 on /opt0 type jffs2 (rw)

devpts on /dev/pts type devpts (rw)

Кстати, то, что имеет файловую систему cramfs — доступнотолькодлячтения. Особенностьфайловойсистемы, чтобытамдрайвер себенидумал.

ОБОЛОЧКА

Каксредифайловпрошивкиустройства, таки вприложении, поставляющемсяподWindows, можнозаметитьмножествоxml-файлов,

какодин, начинающихсясострочки«<fsk xmlns=»http://www.kinoma.com/Fsk/1»>». Это файлыдляоболочки, созданнойкомпанией Kinoma иприобретеннойSony (чтомелькаетв «титрах»). Вобщем, бинарникtinyhttp парсит этифайлыиделаетвсе, чторидерунужно: рисуетинтерфейс, подключаетбиблиотекидля разборафайлов, выполняетскриптыит.д. Назвалиего, конечно, странновато, ногде-тодаже логично. Нужнуюфункциональностьможно

094

XÀÊÅÐ 09 /129/ 09

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

добавитьвсистему, неприкасаяськкомпилятору. Пишем пообразуиподобиюновыеконфигиилиправимсуществующие, потомдобавляемшрифты, простенькиеигры— это возможно! «Язык» xml-файловнеоченьсложен, такчтовсе внашихруках.

Энтузиастывинтернетеужесоздалиальтернативные прошивкиспакетамилокализацииидажеупаковалиихв CramFS-образы. Средирекомендуемого— болеечитабельныешрифты, симпатичныеиконкиичасывуглуэкрана. Можнонеспешитьзаламыватьконфиги, асначалапосмотреть, чтопредлагаетсообщество. Ноеслихочетсячего-то своего, торасскажу, каксоздатьобразнапримерезаливки новыхшрифтов.

Ttf-шрифтылежатвкаталоге/opt/sony/ebook/FONT. В

идеале, ихнадопереименоватьвtt0003m_.ttf,tt0011m_. ttf,tt0419m_.ttf, атакжедатьвнутренниеимена:

Font family — Swis721 BT, Dutch801 Rm BT, Courier10 BT Font subfamily — Roman, Roman, Roman

Full font name — Swis721 BT Roman, Dutch801 Rm BT Roman, Courier10 BT Roman

Именнотакиеименапрописанывконфигахapplication/ kconfig.xml иapplication/resources/scripts/main.xml. По образуиподобиюнаписанноготамможноизменитьпредложенныестилинасвои:

<style font=»Courier10 BT»>

//Стиль для показа часов: жирный, размер 22 <style id=»time" size="22" style="bold" color="#FFFFFF"/></style>

<style font="Dutch801 Rm BT">

//Текст размером 12

<style id="text" size="12"/></style>

Втехжеконфигах, играясьсоскриптамииразметкой, можно добавитьвозможностейвоболочку. Финальныйаккорд— пакуемновуюФСвобраз:

# mkfs.cramfs ./new_opt ./new_opt.img

ПЕРЕПРОШИВКА

Простотакзаменитьнужныйфайлнаобновленныйсжатая файловаясистемаcramfs непозволяет. НадобудетеераспаковатьнаPC, внестиизмененияиспомощьюmkfs.cramfs запаковатьобратно, чтоибылопроделановпредыдущем разделе. Товарищigorsk написалнаборскриптов(Universal Flasher, качатьотсюда— www.mobileread.com/forums/ showthread.php?t=26831). Сихпомощьюможнозаменить

XÀÊÅÐ 09 /129/ 09

Внутренности вподробностях

старыйобразна созданный, атакже (внимание!) заменять отдельныефайлы, еслихочетсяпоэкспериментировать, не мучаясьскомпоновкамиобразов. Просто скидываемкучкуфай- ловнаFlash-карточку,

заменяемобразnew_opt.img нанаш, вставляемвбукридер иперезагружаемся. Есливсепрошлохорошо, иошибокв конфигахнет, томызаимеемобновленныйинтерфейс. Чащевсегопризаливкеиспорченногообразасистемане выходитизстрояидаетнамшансисправитьпроблему. Хотя иногдаоболочкаповреждаетсянастолько, чтобезтяжелой артиллерии(подпаиваниякотладочномупорту) необойтись. НоведьостальнаяфайловаясистемасGNU неубита, поэтомусполноценнойконсольюнесложноперепрошить устройстворабочейпрошивкойвручную, предварительно заливнафлешкусоответствующийобраз(приведенная нижепоследовательностьдействийпредложенаboroda):

//Создаем временный диск в памяти объемом 32 Мb root@(none):~# mount -o remount -t tmpfs -o size=32m /dev/shm /tmp

//Монтируем Flash-карточку

root@(none):~# mkdir /tmp/sd_card

root@(none):~# mount /dev/sdmscard/r5c807a1 /tmp/ sd_card

//Вынимаем оттуда образ во временный диск root@(none):~# cp /tmp/sd_card/new_opt.img /tmp

//Проверяем контрольную сумму

root@(none):~# md5sum /tmp/new_opt.img

//Проприетарный софт Sony для низкоуровневой работы с NAND-flash карточками

root@(none):~# /usr/local/sony/bin/nblsdm delete Fsk

root@(none):~# /usr/local/sony/bin/nblsdm create -i /tmp/new_opt.img -d 1 Fsk

//Сравниваем залитое

root@(none):~# /usr/local/sony/bin/nblsdm cmp -i /tmp/new_opt.img Fsk

root@(none):~# /usr/local/sony/bin/nblconfig -ksel normal

root@(none):~# sync root@(none):~# reboot

HTTP://WWW

links

Хорошийсайтпро электронныекнижки сзамечательным форумом— www.theebook.org.

Ещенемногосведенийовнутренностяхдевайса: http:// wiki.mobileread.com/ wiki/Sony_Reader_ hack.

INFO

info

UART — этот простоймеханизм позволяетпоследовательнопередать несколькобайт. Водномизпредыдущих номеровжурнала СергейДолинподробнонаписалонем врубрике«Фрикинг».

Sony Bookreader PRS-505 — карман-

ныйкомпьютер, имеющийвместо стандартногоЖКили OLED-дисплеятак называемыйE-ink дисплейнаэлектронныхчернилах.

ПРОСТОРДЛЯЭКСПЕРИМЕНТОВ

Привычкаразбиратьпопадающиесяподруку(исобиратьобратно!) гаджетыдобавляетопытаипомогаетпри созданиичего-тосвоего. Мывзялиустройстводлячтения электронныхкниг, новместочтениясталиисследоватьего программнуюиаппаратнуюсуть. Ладноспроектированный исозданныйнабазезнакомогоиизученногоLinux, Sony Bookreader PRS-505 предоставляетширокийпростордля экспериментовитворчества. z

095

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

to

BUY

 

 

 

 

 

CODING

 

w Click

 

 

 

 

 

m

ВАДИМ ШПАКОВСКИЙ / SHPAK.VADIM@GMAIL.COM /

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

.c

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

DJANGO

ИКОМПАНИЯ

Обзорweb-фреймворковнаПитоне

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

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

ПИТОНОВСКИЕВЕБ-ФРЕЙМВОРКИ

Впроцессевыборавеб-фреймворкадляразработкисайтаестьнадчем задуматься. Есливзятьзакритерийязыкпрограммирования, тодляпоклонниковMicrosoft иC# выборочевиден— ASP.NET. ЛюбителямRuby тожедолговыбиратьнеприходится— Ruby On Rails. СложнееPython, PHP иJava-программистам: количествовеб-фреймворковдляэтих языковужасает. Надеюсь, статьявнесетнекоторуюясностьипоможет любителямPython’a сделатьболееосознанныйвыбор. Итак, плюсы питоновскихвеб-фреймворков:

1)ИспользованиеязыкаPython. Наверняка, восхвалениеPython’a уже порядкомподнадоело, нонаPython’e сайтдействительноразрабатываетсябыстрее, приятнееидешевле, чемнамногихдругихязыках.

2)Богатыйвыбор. Обилиефреймворковможетиспугатьтольконовичка. Профессионалажевсегдарадуетсвободавыбора, посколькушанс найтито, чтодействительнонужно, увеличивается. Ктомуже, выбор

порождаетконкуренцию, аздороваяконкуренциявсвоюочередьприводиткулучшениюкачествакаждогофреймворка. Отсюдавытекает следующийплюс.

3)Бурноеразвитие. Постояннопоявляютсяновыефреймворки, аих предшественникилибоуступаютдорогумолодым, либопродолжают борьбузалидерство: фиксятсябаги, вводятсяновыефишки. Этоот- личаетвеб-сообществоPython’a от, например, веб-сообществаRuby, котороевбольшинствесвоемпредставленофреймворкомRuby on Rails ивкотором, всвоюочередь, наблюдаетсянекоторыйзастойиз-заотсут- ствияновыхидей.

4)Opensource. Наверное, снашимстобойфлибустьерскимменталитетом, этонеахтикакойплюс. Но, говорят, легальноибесплатнопользоватьсякачественнымсофтом— этоздорово:).

Наданныймоментнасчитываетсянесколькодесятковпитоновских веб-фреймворков. Далеебудутподробнорассмотренытрисамыхкруп-

096

XÀÊÅÐ 09 /129/ 09

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

 

m

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

p

 

 

 

 

 

 

 

o

 

 

 

 

 

 

 

gныхиизвестных: Django, Pylons иTurboGears. Такжебудутупомянуты

 

.

 

 

 

 

 

 

.c

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

несколькодругихинтересныхфреймворков: Zope, Twisted, CherryPy.

 

 

 

 

 

 

 

 

 

КАКВСЕНАЧИНАЛОСЬ

World Wide Web появиласьв1990 году. В1996 светувиделGrail —

веб-браузер, написанныйнаПитоне. Онсуществовалвсеголишьдо 1999 года, нодалтолчоккдальнейшемуразвитиюпитоновскихвеббиблиотек. В1998 годупоявилсяZope — настоящийсолидныйфреймворк, своегородаEmacs длявеб-приложений. Нонекоторыеставили емувупрекмонолитностьигромоздкость(фактически, онвводилновый языкпрограммирования). Поэтомуначалиразрабатыватьсятакие фреймворкикакWebware (2000), Quixote (2000, посути— упрощен-

ныйZope), Twisted (весьмасвоеобразныйасинхронныйфреймворк), CherryPy идр. Количествофреймворковросло, какгрибыпоследождя, чтообусловилопоявлениестандартаWSGI (онемчутьпозже). Следующейвехойвисториипитоновскихфреймворковстал2005 год. Именно тогдапоявилисьDjango, Pylons иTurboGears — представителиновой эры«мегафреймворков». Онисовместилитрадиционныевеб-сервисы, которыепредоставлялисьираньше, стакимиаддонамикакшаблонные «движки», SQL ORM, библиотекамиJavascript ит.п. Этатройкалидирует попопулярностидосихпор.

WSGI

Какужеупоминалось, вПитонесуществуетбольшоеколичествовебфреймворков, тулкитовибиблиотек. Всеонипо-своемуустанавлива- ютсяинастраиваются, ичастовозникаетпроблемаихвзаимодействия междусобой. ПоэтойпричинебылразработанWSGI (Web Server Gateway Interface) — стандартвзаимодействиямеждуPython-программой, выполняющейсянасторонесервера, исамимвеб-сервером. Всесо- временныепитоновскиевеб-фреймворкиемусоответствуют. Втом числе, WSGI определяетmiddleware-компоненты, которыепредоставляютинтерфейсыкакприложению, такисерверу. Тоесть, длясервера middleware являетсяприложением, адляприложения— сервером. Это позволяетсоставлятьцепочкиWSGI-совместимыхmiddlewares. Таким образом(втеории), подбираянужныеmiddleware-компоненты, можно составлятьсобственныефреймворки! Этаконцепциянаиболеешироко проявиласебявPylons (очембудетрассказанодалее).

MVC

Архитектурамногихфреймворковсходнамеждусобойисоответствует паттернуMVC (Model-View-Controller). Согласноэтомупаттерну, приложениеразбиваетсянатричасти:

Модели— содержатданные, скоторымиработаетприложение. Часто соотноситсястаблицамибазыданных.

Виды— отвечаютзачтениеданныхизмоделииихотображение пользователю.

Контроллер— логикаприложения. Онвызываетвидыдляотображенияданныхпользователю, либополучаетданныеотпользователяи сохраняетихвмоделях.

ИдеяMVC визоляции, такчтоможноменятьоднучасть, неломаядругие.

DJANGO

Самыйпопулярныйнаданныймоментизсвоихсобратьев. Былразработанспециальнодлябыстрогоиудобногонаписанияновостныхсайтов компанииThe World Company еесотрудникамиЭдрианомХоловати

иСимономВиллисоном. Началразрабатыватьсяещес2000 года, но широкойобщественностибылпредставленлишьвсередине2005-го. СвоеназваниеполучилвчестьджазовогогитаристаДжангоРейнхардта

(а я думал, что в честь того Джанго из одноименного вестер-

на, который таскал с собой пулемет в гробу на веревочке :(

— Прим. ред.).

СайтнаDjango строитсяизодногоилинесколькихприложений, которые рекомендуетсяделатьотчуждаемымииподключаемыми(вотличие, например, отRuby on Rails). ОдноизсамыхбольшихпреимуществDjango

— отличнаядокументацияи, пожалуй, самоекрупноесообществосреди питоновскихвеб-фреймворков.

Чтобызагрузитьпервуюпробнуюстраницусразупослеустановки, требуетсявсеготридействия:

1)Создатьновыйпроекткомандойdjango-admin.py startproject mysite.

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

 

 

w Click

 

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

2)Запуститьлокальныйсервер: python manage.py runserver.

 

w

p

 

 

 

 

g

 

o

 

 

 

 

 

 

 

.c

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-x cha

 

 

 

 

 

3)Запуститьбраузериперейтипоадресуhttp://127.0.0.1:8000 — откро- етсясимпатичноеокносприветствием.

ПризнакомствесDjango впервуюочередьподкупаетеговстроенный интерфейсадминистратора. Вудобнойформеонпозволяетработатьс контентомнаписанногосайта. Необходимонемногоизменитьнастройки, ипоадресуhttp://127.0.0.1:8000/admin вбраузереможнозапустить страницу, черезкоторуюможноуправлятьконтентом(например, просматриватьсодержимоебазыданныхиизменятьего).

АрхитектураDjango несколькоотличаетсяотклассическогоMVC. КонтроллерклассическоймоделиMVC примерносоответствуетуровню, которыйвDjango называется«Вид», апрезентационнаялогикаВида реализуетсяуровнемШаблонов. Из-заэтогоуровневуюархитектуру Django частоназывают«Модель-Шаблон-Вид» (MTV).

ДлямоделейDjango предоставляетуровеньабстракции, которыйизбав- ляетотнеобходимостиписатьSQL-запросыдляполучения/сохранения данныхвбазуданных. Всетаблицы, которыеиспользуютсявприложении, пишутсяввидеклассоввотдельномфайлеmodels.py. Далее

вкоде, припомощиметодовэтихклассов, происходитманипуляция содержимымтаблиц. Такимобразом, работасбазойданныхстановится полностьюобъектно-ориентированной. Django поддерживаетработус основнымибазамиданных(PostgreSQL, SQLite3, MySQL, Oracle).

Такжеотметимвесьмагибкийспособотображенияurlовнафункции приложения— припомощирегулярныхвыражений.

Приразработкеприложенияудобнопользоватьсявстроеннымсервером— онавтоматическиопределяетизменениявфайлахисходного кодапроектаиперезапускается. Результатвнесенныхвкодизменений сразужеотображаетсянавеб-страницебраузера, ноиспользоватьегов качестве«боевого» крайненерекомендуется, таккакоднопоточенине предусматриваетникакихмербезопасности. Дляэтихцелейпридется настраиватьнормальныйсервер(например, Apache). НазовемнекоторыенедостаткиDjango:

• Языкшаблоновхотьипростой, нонеочень«питоничен».

• НеслишкомудобнаяработасAJAX;

• Некоторымкажется, чтовнеммноговато«магии»;

• Могутвозникнутьтрудностипризаменекомпонентов(еслитыне дружишьсрегулярнымивыражениями, которыеширокоиспользуются приотображенииurl’ов, тотебеможетзахотетьсяиспользоватьдругой диспетчер). Бытуетмнение, чтоDjango-разработчикичастенькоизо- бретаютвелосипеды(правда, Django даетвозможностьделатьэтолегко ибыстро).

PYLONS

Pylons появилсявсентябре2005-гонаосновеPaste (набораутилитдля разработкивебанаPython’e; этосвоегородафреймворкдляфреймворков). Егосоздатель— БенБангерт. Средивсехфреймворковименно Pylons лучшевсегоотвечаетWSGI-архитектуре, причемонбылзадуман такимссамогоначала. Вмирефреймворковонявляетсясвоегородом антиподомDjango. Всеегокомпонентыобразуютmiddleware-стек(о которомупоминалосьчутьвышеприописанииWSGI). Программистможетзаменитьлюбуюизсоставляющихэтогостеканадругойmiddleware. ТакойподходделаетPylons потрясающегибким! Междупрочим, нечто сходноеможноувидетьуUnix-систем. Теследуютпринципу: лучше многоускоспециализированныхутилит, каждуюизкоторыхможнозаме- нитьначто-тоболееподходящее, чемоднабольшая, котораяумеетвсе. Оченьсильноевлияниенанегооказалнабиравшийтогдапопулярность

Ruby On Rails — такиеважныекомпонентыкакRoutes иWebHelpers

взятыименноизRoR.

Pylons содержитследующиекомпоненты: Paste каквеб-сервер, SQLAlchemy дляORM, Mako (илиMyghty) дляшаблонов, Routes какдиспет-

черurl-запросов. ПолезнымифункциямиобладаетWebHelpers (например, работасAJAX, созданиеRSS). Ещеразподчеркну, чтолюбойизэтих компонентовможнозаменитьповкусу. Такимобразом, Pylons закрывает практическивсевышеупомянутыенедостаткиDjango: гибкостьввыборе компонентов, удобнаяработасAJAX. Ктомуже, имевшиеранееделосRuby On Rails сразупочувствуютсебявсвоейтарелке. Темнеменее, Pylons не лишеннедостатков. Какнистранно, онивытекаютизегодостоинств:

Pylons незанимаетсядокументацией, поддержкойиулучшением компонентов, которыевнемможноиспользовать— этаответственность

XÀÊÅÐ 09 /129/ 09

097

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

to

BUY

 

 

 

 

 

CODING

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

HTTP://WWW

links

http://djbook.ru

русскийпереводкнигипоDjango (правда, местамиеще неполный).

http://pyobject.ru/ blog/2007/01/31/ concepts-of-pylons

описаниеPylons, сравнениесDjango и TurboGears.

http://en.wikipedia. org/wiki/Comparison_ of_web_application_ frameworks

сравнение

веб-фреймворков(не толькоПитоновских).

MI (ZOPE MANAGEMENT INTERFACE) — ИНТЕРФЕЙС УПРАВЛЕНИЯОБЪЕКТАМИ

ZOPE

INFO

info

Одинизсоздателей Django — профессиональныйжурналист, иэтолучшимобразом сказалосьнакачестве документации!

Сразупослевыхода

TurboGears приобрел огромнуюпопулярность: запервые3 месяцабылоскачано более30000 скринкастов.

ВZope Corpo-

ration (фирме-

создательницеZope)

с2000 по2003 год работалсамГвидо ванРоссум(автор

Python’a).

лежитнапроизводителяхкомпонент. Врезультате, если, кпримеру, тынаталкиваешьсянабагприиспользованииSQLObject, тотруднопонять, ктовиноват: Pylons или SQLObject. Отсюдатакжеследует, чточащевсегодокументациюпридетсяискатьнепоPylons, апокакому-тоотдель- номукомпоненту. Иневсегдаонбываетдокументирован надлежащимобразом.

• Отметимменьшийразмеркомьюнитипосравнениюс Django илиTurboGears. Нонестоитизэтогоделатьпоспешныхвыводовокачестве. Например, естьвозможностьбез проблемустановитьконтактнепосредственнослидерами проекта. Крометого, багификсятсябыстроиэффективно (чтоневсегдаможносказатьотомжеDjango).

TURBOGEARS

Также, какиDjango, TurboGears былразработандля быстрогосозданияновостныхсайтов. Ноегоавтор, Кевин Дангор, пошелподругомупути. Деловтом, чтокогдаDjango создавался(2000), ещенесуществовалонеобходимых компонент(например, SQL ORM), поэтомуразработчикам пришлосьсоздаватьсобственныерешения. TurboGears жеразрабатывалсяпозже, поэтомупередКевиномбыл довольнобогатыйвыборужеготовыхкомпонент. Кевинвыбраллучшиеиразработалновыйфреймворк— TurboGears. Быливыбраны: CherryPy длядиспетчеризацииurl как http-серверисистемаконфигурации; Kid дляшаблонов; SQLObject длябазыданных; MochiKit дляJavascript.

Посколькутогданебылоподходящихкомпонентдля интерфейсаадминистратора, авторизациипользователей, работысформами, тоонибылиразработаныснуля. ОднакотакойподходпоставилTurboGears взависимое положениеотразвитиявыбранныхстороннихкомпонент, чтоипривелокнеприятнымпоследствиям. ПоддержкаKid прекратилась, иемунасменупришелGenshi. SQLAlchemy началвытеснятьSQLObject. Былиобнаруженынедостаткив библиотекахJavascript. Ктомуже, некоторыепользователи требовалиWSGI, Routes иCheetah. Пришлосьпринимать

меры: проблемусшаблонамирешили, разработавновый шаблонныйдвижокBuffet, былинаписаныHOWTOs для

SQLAlchemy; CherryPy 3 началподдерживатьWSGI и Routes.

Разработчикипришликмысли, чтопонятие«лучший компонент» субъективноинепостоянно. Фокусбылсмещен всторонугибкости, которойизначальноTurboGears (каки Django) былобделен. Именнопоэтомув2007 годусветувиделTurboGears2, которыйбылпостроеннаосновеPylons. Конечно, этонезначило, чтоTurboGears слилсясPylons, хотясобытиеисблизилокомьюнитиобоихфреймворков. TurboGears по-прежнемудержиткурснаиспользование сторонних, дружественныхкпользователюкомпонент, Pylons жеконцентрируетусилиянакомпонентах, составляющихего«ядро». Обастараютсяиспользоватьобщие компонентыдляобщихнужд(например, хотяPylons и используетпоумолчаниюдляшаблоновMako, онтакже поддерживаетиспользованиеGenshi, которыйхарактерен дляTurboGears). Наданныймоментподдерживаютсяобе ветки: 1.хи2.х, норекомендуетсяповозможностипереходитьна2.x.

Недостатки:

Недальновиднаяставкана«лучшиесегодня» компоненты(современемситуацияможетизмениться);

Неполнаясовместимость1.x и2.x версий;

ПосравнениюсDjango: нетакаяполнаядокументация

(местамисодержитрецептыипримеры, анесправочники); менеепрозрачнаясхемаurlов.

ZOPE

Какужеупоминалось, Zope былпервымизполноценных питоновскихвеб-фреймворков, иегоархитектурадостаточносильноотличаетсяотархитектурысобратьев. ОсобенностьюZope являетсяобъектно-ориентированность: вседанныепредставляютсяввидекомпонентов, занимающихопределенноеместовобщейиерархии ихранящихсявовстроеннойобъектнойбазеданных

098

XÀÊÅÐ 09 /129/ 09

Соседние файлы в папке журнал хакер