iPhone hacks 2

Posted by Kiril Kirov Thu, 02 Apr 2009 19:14:00 GMT

Имам си GCC toolchain!
iPhone:~ root# gcc -v
Using built-in specs.
Target: arm-apple-darwin9
Configured with: ../llvm-gcc-4.2/configure --build=x86_64-unknown-linux-gnu --host=arm-apple-darwin9 --enable-static=no --enable-shared=yes --prefix=/usr --localstatedir=/var/cache/iphone-gcc --enable-languages=c,c++,objc,obj-c++ --enable-wchar_t=no --with-gxx-include-dir=/usr/include/c++/4.0.0
Thread model: posix
gcc version 4.2.1 (Based on Apple Inc. build 5555)
I can has debugger. На iPhone разработчиците английския им е като втори майчин език!
iPhone:~ root# cat hello.c 
#include 
int main() {
    printf("hello\n");
    return 0;
}
iPhone:~ root# gcc hello.c
iPhone:~ root# ./a.out 
Killed
iPhone:~ root# dmesg | tail -1
seatbelt: hook..execve() killing pid 242: outside of container && !i_can_has_debugger
iPhone:~ root# ldid -S a.out
iPhone:~ root# ./a.out 
hello
Добре познатото xnu ядро върху ARM S5L8900X
iPhone:~ root# uname -a
Darwin iPhone 9.4.1 Darwin Kernel Version 9.4.1: Sat Nov  1 19:09:48 PDT 2008; root:xnu-1228.7.36~2/RELEASE_ARM_S5L8900X iPhone1,2 arm N82AP Darwin
Процесор 412Mhz , little endian, 32 Kb cache, памет 128 Mb
iPhone:~ root# sysctl hw
hw.ncpu: 1
hw.byteorder: 1234
hw.memsize: 121634816
hw.activecpu: 1
hw.optional.floatingpoint: 1
hw.packages: 1
hw.tbfrequency: 6000000
hw.fixfrequency: 24000000
hw.prffrequency_max: 51500000
hw.prffrequency_min: 51500000
hw.prffrequency: 51500000
hw.memfrequency_max: 137333333
hw.memfrequency_min: 137333333
hw.memfrequency: 137333333
hw.l1dcachesize: 16384
hw.l1icachesize: 16384
hw.cachelinesize: 32
hw.cpufrequency_max: 412000000
hw.cpufrequency_min: 412000000
hw.cpufrequency: 412000000
hw.busfrequency_max: 103000000
hw.busfrequency_min: 103000000
hw.busfrequency: 103000000
hw.pagesize: 4096
hw.cachesize: 0 0 0 0 0 0 0 0 0 0
hw.cacheconfig: 0 16384 16384 1 32 4 0 0 0 0
hw.cpufamily: -1879695144
hw.cpu64bit_capable: 0
hw.cpusubtype: 6
hw.cputype: 12
hw.logicalcpu_max: 1
hw.logicalcpu: 1
hw.physicalcpu_max: 1
hw.physicalcpu: 1
hw.machine = iPhone1,2
hw.model = N82AP
hw.ncpu = 1
hw.byteorder = 1234
hw.physmem = 121634816
hw.usermem = 91435008
hw.pagesize = 4096
hw.epoch = 1
hw.vectorunit = 0
hw.busfrequency = 103000000
hw.cpufrequency = 412000000
hw.cachelinesize = 32
hw.l1icachesize = 16384
hw.l1dcachesize = 16384
hw.tbfrequency = 6000000
hw.memsize = 121634816
hw.availcpu = 1
feedface и асемблер за ARM
iPhone:~ root# objdump -D a.out | head

a.out:     file format mach-o-le

Disassembly of section LC_SEGMENT.__TEXT:

0000000000001000 :
    1000:    feedface     cdp2    10, 14, cr15, cr13, cr14, {6}
    1004:    0000000c     andeq    r0, r0, ip
    1008:    00000000     andeq    r0, r0, r0
    100c:    00000002     andeq    r0, r0, r2
8 Gb флаш
iPhone:~ root# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/disk0s1          523M  489M   29M  95% /
devfs                  25K   25K     0 100% /dev
/dev/disk0s2          7.1G  1.2G  6.0G  16% /private/var
Процеси и yellowsn0w
iPhone:~ root# ps ax    
  PID   TT  STAT      TIME COMMAND
    1   ??  Ss     0:02.60 /sbin/launchd
   12   ??  Ss     0:01.55 /usr/sbin/mDNSResponder -launchd
   13   ??  Ss     0:02.38 /usr/sbin/notifyd
   14   ??  Ss     0:03.03 /usr/sbin/syslogd
   15   ??  Ss     0:13.70 /usr/sbin/configd
   17   ??  Ss     2:07.40 /System/Library/CoreServices/SpringBoard.app/SpringBoard
   18   ??  Ss     0:00.70 /usr/bin/yellowsn0w
   20   ??  Ss     0:00.44 /Applications/MxTube.app/MxT2d
   22   ??  Ss     0:00.72 /usr/sbin/update
   23   ??  Ss     0:28.78 /usr/libexec/lockdownd
   24   ??  Ss     0:32.73 /usr/sbin/mediaserverd
   26   ??  Ss     0:02.83 /System/Library/PrivateFrameworks/IAP.framework/Support/iapd
   27   ??  Ss     0:00.29 /usr/sbin/fairplayd
   30   ??  Ss     0:07.88 /System/Library/PrivateFrameworks/CoreTelephony.framework/Support/CommCenter
   31   ??  Ss     0:01.11 /usr/sbin/BTServer
   43   ??  Ss     0:03.12 /Applications/MobilePhone.app/MobilePhone
   77   ??  Ss     0:10.22 /Applications/MobileMail.app/MobileMail
   80   ??  Ss     0:58.92 /Applications/MobileSafari.app/MobileSafari
  100   ??  Ss     0:00.59 /System/Library/Frameworks/SystemConfiguration.framework/SCHelper
  105   ??  Ss     0:00.27 /usr/libexec/ptpd -t usb
  110   ??  S      0:00.38 /usr/libexec/afcd --lockdown -d /var/mobile/Media -u mobile
  112   ??  S      0:00.11 /usr/libexec/notification_proxy
  230   ??  S      0:01.48 /usr/sbin/sshd -i
  271   ??  Ss     0:00.11 /usr/libexec/securityd
  231 s000  Ss     0:00.42 -sh
  272 s000  R+     0:00.02 ps ax
Nmap
iPhone:/ root# nmap 192.168.1.1

Starting Nmap 4.76 ( http://nmap.org ) at 2009-04-02 22:26 EEST
mass_dns: warning: Unable to open /etc/resolv.conf. Try using --system-dns or specify valid servers with --dns-servers
mass_dns: warning: Unable to determine any DNS servers. Reverse DNS is disabled. Try using --system-dns or specify valid servers with --dns-servers
Interesting ports on 192.168.1.1:
Not shown: 997 filtered ports
PORT     STATE  SERVICE
80/tcp   open   http
1900/tcp closed upnp
8080/tcp open   http-proxy
MAC Address: xx:xx:xx:xx:xx:xx (Tp-link Technologies Co.)

Nmap done: 1 IP address (1 host up) scanned in 16.17 seconds
TinyScheme след преправяне на makefile и компилиране
iPhone:~/tinyscheme1.39 root# make
gcc -I. -c -Os  scheme.c 
gcc -I. -c -Os  dynload.c 
gcc  -shared   scheme.o dynload.o  -ldl 
gcc -o scheme -Os scheme.o dynload.o  -ldl 
iPhone:~/tinyscheme1.39 root# ldid -S scheme
iPhone:~/tinyscheme1.39 root# ls -al scheme
-rwxr-xr-x 1 root staff 46224 Apr  2 22:37 scheme*
iPhone:~/tinyscheme1.39 root# ./scheme 
TinyScheme 1.39
> (eval (car (list (quote (display "scheme baby!")))))
scheme baby!#t
Debian rulez
iPhone:~ root# apt-get update
Ign http://www.ispaziorepo.com ./ Release.gpg
Ign http://apt9.ihazsupper.com ./ Release.gpg                                                                                                                                     
Get:1 http://apt.bigboss.us.com stable Release.gpg [186B]                                                                                                                         
Ign http://apt9.yellowsn0w.com ./ Release.gpg                                                                                                                                     
Hit http://www.ispaziorepo.com ./ Release                                                                                                                                         
Get:2 http://apt.modmyi.com stable Release.gpg [189B]                                                                                                                             
Get:3 http://repo.smxy.org xena Release.gpg [189B]                                                                                                                                
Ign http://apt9.ihazsupper.com ./ Release                                                                                                                                         
Ign http://mspasov.com stable Release.gpg                                                                                                                                         
Get:4 http://www.zodttd.com stable Release.gpg [189B]                                                                                                                             
Ign http://www.ispaziorepo.com ./ Packages/DiffIndex                                                                                                                              
Get:5 http://apt.saurik.com tangelo Release.gpg [189B]                                                                                                                      
Ign http://apt9.yellowsn0w.com ./ Release                                                                                                                                         
Hit http://apt.bigboss.us.com stable Release                                                                                                                                      
Get:6 http://apt.modmyi.com stable Release [483B]                                                                                                                                 
Ign http://apt9.ihazsupper.com ./ Packages/DiffIndex                                                                                                                              
Hit http://repo.smxy.org xena Release                                                                                                                                             
Ign http://apt9.yellowsn0w.com ./ Packages/DiffIndex                                                                                                                              
Hit http://www.ispaziorepo.com ./ Packages                                                                                                                                        
Hit http://www.zodttd.com stable Release                                                                                                                                          
Get:7 http://apt.saurik.com tangelo Release [566B]                                                                                                                                
Get:8 http://mspasov.com stable Release [2938B]                                                                                                          
Hit http://apt9.ihazsupper.com ./ Packages                                                                                
Hit http://apt9.yellowsn0w.com ./ Packages                                                    
Ign http://mspasov.com stable/main Packages/DiffIndex                                                               
Ign http://apt.bigboss.us.com stable/main Packages/DiffIndex                                                        
Ign http://apt.modmyi.com stable/main Packages/DiffIndex                                                                                            
Ign http://apt.bigboss.us.com stable/main Packages                                                                                                  
Hit http://repo.smxy.org xena/main Packages/DiffIndex                                                                                                         
Get:9 http://mspasov.com stable/main Packages [1753B]                                                                                                         
Hit http://www.zodttd.com stable/main Packages/DiffIndex                                                                                                       
Ign http://apt.modmyi.com stable/main Packages                                                                                     
Hit http://apt.bigboss.us.com stable/main Packages                                                  
Ign http://apt.saurik.com tangelo/main Packages/DiffIndex                                       
Hit http://www.zodttd.com stable/main Packages                                                  
Hit http://apt.modmyi.com stable/main Packages                   
Hit http://apt.saurik.com tangelo/main Packages                  
Fetched 5745B in 4s (1260B/s)     
Reading package lists... Done

D-Link DWL-G122 и KisMAC

Posted by Kiril Kirov Sun, 14 Dec 2008 14:01:00 GMT

Преди време си взех тази WLAN карта, защото имаше поддръжка за Linux и Mac OS X. Лошото беше, че не успях да я подкарам в KisMAC. Преди няколко дни с радост установих, че са сложили драйвер за нея. Тръгна без ядове в KisMAC trunk r319 с USB RT73 device. Очевидно е с някакъв Ralink чип. За целта обаче трябва да се махнат “официалните” драйвери на D-Link. Повече информация по въпроса има тук. Върши очудващо добра работа за auth/deauth активни DoS атаки срещу WPA, докато в същото време вградената карта стои в пасивен режим. KisMAC си работи чудесно с двете карти едновременно, при чупене на WEP могат да се ползват заедно, като активната прави packet injection. Доста приятни занимания (в стил прееби другарчето) за мрачен неделен следобед.

Apple MacBook - Top Case 4

Posted by Kiril Kirov Tue, 16 Sep 2008 16:46:00 GMT

Днес след чакане от около 2 месеца, моят Apple MacBook най-накрая беше ремонтиран. Проблемът му беше ето този, или както ми беше обяснено от разбирачи на Apple – дефектирал Top Case. Този проблем е доста масов и се отстранява гаранционно от Apple без много шум. За съжаление в България трябваше да се преборя с няколко типично български, сервизни идиотщини за да получа нов Top Case. В последствие се оказа, че той върви заедно с клавиатура и trackpad. За това в момента съм с нова клавиатура. Най-напред в сервиза ми обясниха колко трудно се доставяли тези части от Унгария и как унгарците били несериозни. После се оказа, че сервиза излиза в отпуска. В последствие стана ясно, че по някакви причини, преди да излязат в отпуска не са ми поръчали частта. Както и да е, важното е, че все пак накрая я смениха. Чудя се обаче колко ли време ще издържи новата. Според моите наблюдения, този Top Case е абсолютно същия като стария. Само след няколко затваряния на пластмасата се вижда къде точно лепне капака. Освен това бях предупреден да внимавам като го разнасям, защото задната част се крепяла на някакви щифтове. Понеже си използвам лаптопа доста интензивно, чудя се колко ли клавиатури ще сменя за тези 2 години, през които ми важи гаранцията.

Mac OS X local privilege escalation

Posted by Kiril Kirov Mon, 23 Jun 2008 18:03:00 GMT

На 18 юни стана ясно, че в Mac OS X 10.5.3 има един много неприятен бъг, благодарение на който човек много лесно може да стане root. Дупката много лесно се вижда със следната команда:
osascript -e 'tell app "ARDAgent" to do shell script "whoami"'
Това е проблем, който рано или късно се е случвал на повечето операционни системи. Дразнещото в този случай е реакцията на Apple, или по-скоро липсата на реакция от страна на Apple. Вече минаха 5 дни от както тази дупка в сигурността беше обявена публично. Писа се какво ли не в най-различни блогове и форуми. Хората очевидно се притесняват от този проблем. Едно елементарно решение е да се махне SUID бита от ARDAgent. Но това е по-скоро кръпка от колкото решение, възможно е и други стандартно работещи услуги със SUID бит да изпълняват толкова услужливо AppleScript. Най-малкото, което можеха да направят от Apple е да пуснат някаква информация до потребителите за какво става дума и в какъв срок ще бъде оправено. По някакво стечение на обстоятелствата днес се появиха 4-5 възможни, подобни дупки в Ruby. Няколко часа по-късно бяха пуснати пачове. Малко след това пуснах един portupgrade във FreeBSD и тези проблеми вече са в миналото. Може би проблемите в Ruby са били доста по елементарни, но не трябва да забравяме, че те са една отворена общност и едва ли могат да се сравняват с Apple по финансови възможности например. Сигурен съм, че Apple ще оправят този проблем, въпросът е кога. Всичко това потвърждава една стара теория. Ако Apple имаха толкова машини работещи с Mac OS, колкото Microsoft имат с Windows, проблемите със сигурността на Mac OS щяха да са също толкова много колкото тези в Windows.

Копане на данни из улиците на София

Posted by Kiril Kirov Wed, 21 May 2008 08:07:00 GMT

Обикаляйки с новия ми MacBook по улиците на София и други големи градове ми прави впечатление следното нещо. Безплатен Интернет достъп може да се използва почти навсякъде. Има огромно количество 802.11 станции, които използват WEP или просто предлагат отворен достъп. Голяма част от тези точки са на някакви частни лица, които очевидно не са си направили труда да ги направят сигурни. По-голяма част са на фирми, които главно поради незнание и несъобразяване на последиците също не са ги направили сигурни. Една много голяма част от тези точки са БТК ADSL модеми, които предлагат 802.11, като допълнителна екстра, с някаква промоция на БТК, която стартира преди време. Много съм благодарен на БТК за тази промоция, вече мога да ползвам ADSL в целия град. Ползването на безплатна Интернет връзка е по-малкото зло в случая.

Много по-голям проблем, особено за фирмите, е неправомения достъп до информация. Освен, че всеки може да се свърже (асоциира) към дадена станция с отворен достъп, всеки може да подслушва трафика между станцията и отделните компютри свързани към нея. В случая с БТК ADSL модемите, това вклюва целия Интернет трафик на всички компютри в мрежата на станцията. По-важната част от този трафик, би трябвало да е криптиран сигунрно през HTTPS – комуникация с НОИ/НАП, както и банкови операции. Друг трафик, който може да представлява интерес е този между отделните компютри в мрежата. Оказва се, че голяма част от компютрите в такива мрежи се използват за обмен на файлове. Няколко пъти срещах цели споделени (shared) дискове с Windows XP. Естествено няма никакво значение дали те са споделени с парола или без, тъй като трафика между компютърите не е криптиран. Цялата тази работа ми е много интересна. След случая с болницата Токуда, чудя се до каква ли още информация може да се достигне с минимални усилия в тази посока. Сетих се за няколко доста прости, но ефективни неща, които ще опиша тук.

Подходящите точки за достъп (802.11 станции) са много, и са разпръснати из града. Необходимото време, което човек трябва да престои в обхвата на една точка се определя от броя на компютрите в нея, както и информацията на тях, която ни интересува. Идеалният вариант за обхождане е с кола, карайки бавно из задръстванията на София. Нещо като комбинация от wardriving и piggybacking. За да бъде ефективна тази работа, тя трябва да бъде автоматизирана. Би било глупаво човек да цъка на мака в колата и да рови папките на нещастниците, които са ги споделили. Хубавото на тази “атака” е, че тя може да бъде проведена на няколко пъти. Например може минавайки първия ден с компютъра през задръстването на Граф Игнатиев, човек да събере информация колко са интересните точки и да си опише кои компютри от тях ще сканира. На следващия ден може да си свали част от необходимата му информация и така нататък. Вероятността собствениците да се усетят е доста малка.

Първото нещо, което ни е необходимо е програма от сорта на iStumbler или KisMAC. Втората може много повече неща, но пък не е толкова удобна за ползване. Една такава програмка може да ни подскаже коя мрежа/станция би била интересна за нас. Също така може да ни сортира отделните станции по определени критерии, така че да можем да ги ровим наред. Няма да говоря за кракване на WEP, защото материали на тази тема бол, а и отворените мрежи са предостатъчно. След като си харесаме мрежа, можем се асоциираме към нея. Почти със сигурност ще получим IP адрес от мрежата, но това не е толкова важно. Вече асоциирани в нея можем да използваме tcpdump или Wireshark за да видим какво “тече” по нея и кои компютри са активни. Всички Windows машини се познават веднага благодарения на NetBIOS broadcast съобщенията. От тях става ясно кой/къде/какво е споделил, както и имената на отделните компютри в мрежата. Ето защо, каквото и да искаме да правим за повечето мрежи ще е много полезно да имаме Samba. По този начин ще можем да работим лесно с отделните споделени неща. Друго полезно нещо в случая, което вече имаме при положение, че ползваме Mac OS – MacFUSE. Някакъв Linux също би свършил добра работа в това отношение, идеята е да можем да закачваме файлови системи в user space на операционната система. Това предлага бърз, лесен и сигурен достъп до файловете, които ни вълнуват.

И така, до тук елементарно можем да напишем програма, която намира подходяща мрежа, намира подходящ компютър в нея и закачва част от неговата файлова система към нашата. Колко елементарно се пише тя няма да коментирам тук, само ще кажа, че подобна програма може да бъде написана на Apple Script или да бъде направена с помощта на Automator, без човек да е чувал що е то програмиране. Най-интересната част от тази мой идеи е какво да правим от тук нататък. Би било глупаво просто да ровим файловете или да преписваме на локалния диск всичко, което намерим. Всъшност няма никаква нужда да преписваме каквото и да било, поради простата причина, че информацията ще си бъде там и на следващия ден – просто е необходимо да отидем да си я вземем, стига да решим, че ни трябва. Някъде около 90% от намерената информация изобщо няма да ни интересува (не съм сигурен за процента, написах го наизуст). Трябва някакси да подберем информацията, а защо не и да търсим в нея. Този проблем адски много напомня за проблема за търсене и класифициране на информация в Интернет. Разбира се, този той е решен много елегантно от Google. Как точно – те си знаят. Всъшност нас не ни интересува, нашата задача може да бъде решена с техните алгоритми, просто трябва да използваме Google Desktop Search for Mac. Това е една доста добра и удобна програма, която ни позволява да направим индекс на файловата система и да използваме алгоритмите на Google за търсене в този индекс. По този начин много удобно можем да ровим локално из чат логове, PDF документи, man страници, сорсове на програми и още какво ли не. Тъй като споделените файлове на хората стават част от нашата файлова система, необходимо е само да пуснем индексирането на Google. Когато то приключи, можем да се развържем от съответната машина и да преминем към следваща. Разбира се, всичко това може да става автоматично, чрез програмата, която ще напишем. Резултатът е, една хубава SQLite база данни, която ние си пазим върху хард диска на мака. Ако сме били достатъчно хитри да си закачваме файловите системи на отделните компютъри към директории с точно определени имена – вече знаем кой файл, на кой чужд компютър се намира. След време, ако търсейки в индекса от вкъщи си харесаме нещо – просто можем да отидем и да си го копираме цялото. Какво ли би излезнало от едно такова търсене, например за – “пин код”, “договор”, “пълномощно”, “фактура”, “строго секретно”, ...

И така, оставям останалите подробности на читателите. Много съм любопитен какво би станало, ако някои с MacBook и такава програма се поразходи около Президентството, Народно Събрание, или пък около БНБ. Може би дори Министерство на Вътрешните Работи? ДСК на Плиска също е една интересна дестинация. Очаквам коментари, препоръки и отзиви.

Скорост на OpenSSL

Posted by Kiril Kirov Sat, 10 May 2008 13:35:00 GMT

Като един стар потребител на GBDE и GELI под FreeBSD, трябваше да реша дали да ползвам криптография на хард диска под Mac OS X. Такава опция се предлага под името FileVault, за съжаление не се предлага криптиране на всичко, а само на директорията на потребителя. Може би е по-добре от нищо, въпреки че този софтуер не е с отворен код, не е много ясно колко е сигурен и дали няма някакви задни вратички. Тъй като не съм ползвал GELI на новите Intel процесори реших да изпробвам скоростта на криптографията за да добия представа колко бързо биха се движили нещата на един MacBook. Резултатите определено ме изненадаха. Това е изхода от командата openssl speed на Intel Core 2 Duo T7500 @2.2 Ghz под Mac OS X:

OpenSSL 0.9.7l 28 Sep 2006
built on: Sun Sep 23 16:08:24 PDT 2007
options:bn(64,32) md2(int) rc4(ptr,char) des(idx,cisc,16,long) aes(partial) blowfish(ptr) 
compiler: cc -arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe -arch ppc -arch ppc64 -arch i386 -arch x86_64 -pipe -DOPENSSL_NO_IDEA -DFAR=
available timing options: TIMEB USE_TOD HZ=100 [sysconf value]
timing function used: getrusage
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
md2               1552.85k     3271.94k     4524.06k     5004.22k     5164.34k
mdc2              4204.74k     4619.19k     4757.31k     4799.52k     4809.07k
md4              15855.41k    52902.28k   142198.50k   246969.80k   317057.24k
md5              14586.42k    49474.84k   135840.67k   240148.54k   310968.00k
hmac(md5)        23251.10k    67720.57k   162782.12k   248777.43k   295469.61k
sha1             13182.11k    38272.95k    84104.41k   120792.72k   138000.81k
rmd160           10561.06k    29464.19k    61316.10k    84022.98k    94703.13k
rc4              95640.12k   101646.10k   103312.30k   104252.21k   104393.09k
des cbc          16022.67k    16444.10k    16548.69k    16572.95k    16563.80k
des ede3         14062.49k    14317.53k    14461.25k    14502.85k    14512.43k
idea cbc             0.00         0.00         0.00         0.00         0.00 
rc2 cbc          20614.51k    21266.65k    21172.40k    21248.60k    21301.63k
rc5-32/12 cbc   108723.99k   127935.88k   136458.55k   142723.90k   140491.69k
blowfish cbc     54604.80k    58116.54k    58851.96k    59112.73k    59182.62k
cast cbc         36548.64k    38542.89k    38942.15k    39032.53k    39075.71k
aes-128 cbc      42344.46k    43862.27k    44255.02k    44202.57k    44116.52k
aes-192 cbc      36427.04k    37333.01k    37566.63k    37475.22k    37503.20k
aes-256 cbc      31756.28k    32454.77k    32637.07k    32536.94k    32590.66k
                  sign    verify    sign/s verify/s
rsa  512 bits 0.001318s 0.000088s    758.8  11322.0
rsa 1024 bits 0.006495s 0.000284s    154.0   3523.2
rsa 2048 bits 0.038285s 0.000990s     26.1   1010.2
rsa 4096 bits 0.245003s 0.003464s      4.1    288.7
                  sign    verify    sign/s verify/s
dsa  512 bits 0.000852s 0.001004s   1173.1    996.4
dsa 1024 bits 0.002756s 0.003275s    362.9    305.4
dsa 2048 bits 0.009637s 0.011214s    103.8     89.2

Изненадващото тук са флаговете, с които е компилирана OpenSSL библиотеката. Многото архитектури са необходими, защото формата е Mach-O Universal Binary, но защо по дяволите са им debugging symbols и оптимизация по размер на мен не ми е ясно. За да сравня скоростите пуснах същата команда под FreeBSD на подобен AMD процесор – Athlon 64 BE-2350 @2.1 Ghz. Ето резултатите:

OpenSSL 0.9.7e-p1 25 Oct 2004
built on: Tue Jan 15 23:14:00 UTC 2008
options:bn(64,64) md2(int) rc4(ptr,int) des(ptr,risc2,4,int) aes(partial) blowfish(idx) 
compiler: cc
available timing options: USE_TOD HZ=128 [sysconf value]
timing function used: getrusage
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
md2               1450.30k     3046.74k     4234.28k     4708.83k     4860.78k
mdc2              6157.28k     7144.84k     7452.65k     7531.02k     7556.85k
md4              16149.12k    52186.87k   138171.42k   232540.73k   290777.63k
md5              12785.97k    40424.24k    98705.48k   156653.62k   188383.28k
hmac(md5)        16880.80k    48613.17k   110836.90k   164453.99k   190657.17k
sha1             12315.62k    35868.05k    79622.37k   114612.21k   130918.83k
rmd160           10203.07k    26992.17k    55980.67k    76481.20k    85377.83k
rc4             159730.21k   167051.92k   172490.07k   173262.90k   173469.21k
des cbc          41227.53k    42887.93k    43608.70k    43793.49k    43847.37k
des ede3         16126.92k    16532.56k    16658.32k    16737.51k    16669.78k
idea cbc             0.00         0.00         0.00         0.00         0.00 
rc2 cbc          22156.48k    22952.47k    22989.78k    23065.41k    22981.71k
rc5-32/12 cbc    97653.25k   106976.49k   109700.90k   110490.45k   110563.13k
blowfish cbc     72234.94k    77850.37k    78994.44k    79397.11k    79810.08k
cast cbc         55748.97k    58467.84k    59135.72k    59470.92k    59308.97k
aes-128 cbc      93595.45k    97407.40k    99297.23k    99676.31k    99890.51k
aes-192 cbc      83154.82k    86677.42k    88213.47k    88343.16k    88592.05k
aes-256 cbc      75277.20k    78369.54k    79912.43k    79991.79k    80222.88k
                  sign    verify    sign/s verify/s
rsa  512 bits   0.0003s   0.0000s   3800.2  44370.9
rsa 1024 bits   0.0008s   0.0001s   1254.2  19837.2
rsa 2048 bits   0.0042s   0.0001s    238.2   7371.1
rsa 4096 bits   0.0264s   0.0004s     37.9   2430.1
                  sign    verify    sign/s verify/s
dsa  512 bits   0.0002s   0.0002s   6090.2   5498.6
dsa 1024 bits   0.0004s   0.0005s   2614.9   2185.4
dsa 2048 bits   0.0011s   0.0014s    875.9    713.2

Тук флагове за компилатора няма и архитектурата е само AMD64. Но разликите в скоростите са много големи. Казано накратко, вторите резултати показват около 2.5 пъти по-бърз AES, 8 пъти по-бърз DSA и RSA. Това е доста интересен факт, очаквах да има някакви разлики в скоростта, но не и толкова големи. Този факт може да се дължи на много неща, тъй като между двете машини има прекалено големи разлики в софтуера и хардуера. Дори OpenSSL версийте са различни. Мисля, че и паметите играят някаква роля в случая, лаптопа по традиция е с DDR2 667, a другата машина е с доста бърза DDR2 800. За сметка на това пък Core 2 има доста повече кеш. Глупаво е да се правят заключения за каквото и да било от тези резултати, не знам как биха се отразили и на скороста на FileVault. Публикувам ги тук просто, като интересен факт.

Apple MacBook - изборът 2

Posted by Kiril Kirov Sun, 23 Mar 2008 10:50:00 GMT

След дълги години използване на FreeBSD върху почти всички машини, с които работя се сблъсках с доста неприятен проблем – поддръжката на лаптопи. През последните месеци смених един лаптоп Fujitsu-Siemens и два лаптопа Dell. Всичките бяха с еднакви диагнози – няма поддръжка за sleep/wakeup и wireless картите не работят (или пък работят с драйвер за Windows). Промяната в честотата на процесора работи избирателно и на моменти. Проблемите стават повече, когато човек реши да използва amd64 архитектурата. Най-различни дребни нещица, които човек очаква да ползва, просто спират да работят (QEMU например не работи със SMP ядро на amd64). За голяма част от тези проблеми са виновни производителите на компютрите с нежеланието си да поддържат операционни системи с отворен код, както и с нежеланието си свободно да предоставят документация за хардуера, който използват. Проблемите се задълбочават от подобна политика от страна на производителите на въпросния хардуер, главно Intel, NVidia, Marvell и Broadcom. Аз продължавам да съм голям фен на FreeBSD, това е моята операционна система, но ето че се принудих да я сменя. Това е една доста интересна история, която показва абсурдната ситуация на компютърната индустрия в момента.

Реших, че имам нужда от лаптоп, който се поддържа напълно от някаква операционна система различна от Windows. Първото нещо, което на човек му хрумва е Linux. Всички производители в момента раздуват как техните компютри поддържат Linux. Като никога не е много ясно какво се има предвид под поддръжка на Linux. След дълго проучване става ясно, че те поддържат Linux, при положение, че в ядрото се заредят някакви техни си драйвери, binary only, със затворен код. При това положение ядрото започва да работи в т.нар. “tainted” режим. Това означава, че при възникване на някакъв проблем в ядрото човек няма начин да разбере какво точно се случва, защото в kernel mode работи някаква чужда програма, която никой не знае какво върши. Използването на такова ядро много добре комбинира всички недостатъци на работата с Windows с всички недостатъци на работата с Linux. Друг проблем е, че въпросните драйвери работят с точно определени версии на Linux ядрото. Има вероятност лаптопа да има по-добра поддръжка за нещо в някаква по-нова версия, но да не може да я ползва поради други драйвери, които поддържат по-старата. Мога още доста да пиша за подобни малоумия, които възникват при ползване на Linux с драйвери със затворен код, но основните моменти вече ги написах. При това положение, за кратко време се бях примирил – ще ползвам Windows, върху който ще пусна някаква виртуализация, в която ще работя с FreeBSD. Реших, че избора ще е лесен – всички лаптопи поддържат Windows, нали? Е да, ама не! Оказва се, че всички нови лаптопи са Windows Vista Capable/Compatible/Designed for. Това означава, че на тях човек може да пусне някаква версия на Windows Vista (не е много ясно каква, по този повод в момента се водят поредните дела срещу Microsoft). Аз никога не съм работил с Windows Vista, но чувам главно лоши работи за него. Не знам дали това се дължи на феновете на отворения код, с който комуникирам или на предубежденията ми към Microsoft. Всеки случай е ясно, че това е един нов Windows, който страда от типичните за всички нови продукти на Microsoft проблеми – BSOD, липса на драйвери, несъвместимост с добре работещи под XP програми и хиляди нови глупави функционалности добавени от MS. Не благодаря, предпочитам да работя с XP (ако ще е Windows). Това се оказва кофти вариант, защото повечето нови машини не го поддържат. е е много ясно и колко още ще го поддържат от Microsoft. Едно е ясно – спре ли да се кърпи ще настане ад от “злонамерени програми” (много глупав термин). Който и да бях избрал от тези варианти, както и до момента, кърпенето на операционната система и поддръжката щеше да ми отнема повече време от действителната работа, която върша на нея.

Оказва се, че единствената алтернатива на гореспоменатите проблеми е Apple MacBook. Като единствен възможен избор се хвърлих на тях малко на доверие. Е не точно, изчетох камара документация на тема Mac OS X. Решителния момент в тази докуметация беше поддръжката на UNIX 03 стандарта. И така, машинката ми пристигна онзи ден, за впечатленията от нея ще пиша допълнително.