OpenSolaris network performance problems with Intel e1000g network card

OpenSolaris 2008.11 has a faulted e1000g driver which results in very poor upload performance: download speeds are around 400Mbit/sec but upload speed is just about 25Mbit/sec with 1Gbps link.

There’s a workaround which involves getting older version of the driver, or user could install SXCE snv_103 (bug report here)

Instructions to apply the workaround:

  1. Download ON BFU Archives (non-debug) from older distribution
  2. Unpack the archive (bunzip2 and tar)
  3. Unpack the generic.kernel package (in archives-nightly-osol-nd/i386) with cpio -d -i generic.kernel
  4. Create new Boot Environment (read more about this from here): beadm create opensolaris-e1000gfix
  5. Mount the new environment mkdir /mnt/be and beadm mount opensolaris-e1000gfix /mnt/be
  6. You need to copy these three files into respecting places UNDER /mnt/be/: kernel/drv/e1000g  (to /mnt/be/kernel/drv/e1000g), kernel/drv/e1000g.conf and  kernel/drv/amd64/e1000g
  7. Make the new BE active: beadm activate opensolaris-e1000gfix
  8. Boot and hope for best :)

Hosting virtual machines on Solaris

Hosting virtual machines inside an OpenSolaris box is very easy with VirtualBox. Here’s a quick tutorial how to install an ubuntu into a virtual machine:

  1. Download VirtualBox from here.
  2. Open the manual into a tab from here.
  3. Follow the installation manual at chapter 2.4. The installation scripts will install VirtualBox under /opt, so if you want, you can now create a new zfs filesystem for /opt so that it wont pollute your root installation partition.
    Note: If you are using Nexenta, you need to use /usr/sun/sbin/pkgadd instead of simply pkgadd.

    Note:If you receivere this error:

    ## Waiting for up to <300> seconds for package administration commands to become available (another user is administering packages)
    pkgadd: ERROR: Unable to acquire package administration lock for this system; try again later
    pkgadd: ERROR: Unable to lock this zone for administration

    The sollution is to “cp /usr/sun/bin/pkgadm /usr/bin” and repeat the step.

  4. After these steps the VirtualBox host environment is installed.

So, you have now installed the server stuff, now it’s time to install the ubuntu into a virtual machine. If you are using Windows as your desktop follow the steps in chapter 7.4. Otherwise consult the manual to find a proper installation way. The chapter 7.4 guides you to use the headless installation where you connect to the virtual machine using windows remote desktop (which is quite nice). You can download the 32-bit ubuntu iso from here, or use some other cd/dvd image to boot up your system.

If you don’t want to use nat for your virtual machine and prefer a direct ip instead, replace step

VBoxManage modifyvm "Windows XP" -memory "256MB" -acpi on -boot1 dvd -nic1 nat


/usr/lib/vna e1000g0 0:0:0:0:10:01
ifconfig vnic0 plumb
ifconfig vnic0 dhcp
VBoxManage modifyvm "Windows XP" -memory "256MB" -acpi on -boot1 dvd -nic1 hostif -hostifdev1 vnic0

where e1000g0is the name of your physical network interface (use <em>ifconfig -a</em> to look it up) and0:0:0:0:10:01is an unique MAC address you invented from your hat. The VRDP (remote desktop server) will be binded to the ip of vnic0 interface which you can check with "ifconfig vnic0".

After setting up the VM you can finally start it by typing “VBoxHeadless -s <vm name>” and then connecting into it using remote desktop. Notice that the guest operating system might have different IP, so you need to check the guest IP after installation if you wish to connect into the guest with SSH.

Miten ZFS toimii levyjen kanssa ja storagepoolin anatomia.

ZFS koostuu yhdestä levypoolista (storagepool). Levypool voi sisältää yhden tai useampia tiedostojärjestelmiä, jotka jakavat yhdessä koko levypoolin tilan. Tiedostojärjestelmien luonti on helppoa ja kevyttä, eli esimerkiksi jokaiselle käyttäjälle voidaan helposti luoda oma tiedostojärjestelmä. Tiedostojärjestelmät voivat muodostaa hierarkioita, tiedostojärjestelmille voidaan asettaa tilarajoituksia (quota), varata tietty miminimäärä tilaa (reserve space) ja tiedostojärjestelmiä voidaan jakaa (export) helposti esimerkiksi windowsiin CIFS-protokollalla (tunnetaan myös nimillä smb ja samba), tai nfs protokollalla. Yhdessä tietokoneessa voi olla useita eri levypooleja. Solaris (ja grub) osaa käynnistyä ZFS:ltä, kunhan levypoolissa ei ole raidz-virtuaalilevyjä.

Yksi levypool koostuu vähintään yhdestä virtuaalilevystä (VDEV). Virtuaalilevyjä voidaan lisätä vapaasti jälkeenpäin levypooliin, mutta niitä ei voida toistaiseksi ottaa pois storagepoolista. Levypoolin koko on sen virtuaalilevyjen kokojen summa. Levyn lisäyksen jälkeen olemassaolevaa dataa ei automaattisesti jaeta tasaisesti kaikille virtuaalilevyille, vaan ainoastaan virtuaalilevyn lisäyksen jälkeen kirjoitettu data jaetaan tasaisesti. Virtuaalilevyn lisäys siis nopeuttaa levyjärjestelmän toimintaa, mutta nopeushyöty ei tule heti esiin vanhalla datalla.

Jos virtuaalilevyssä on useampi kuin yksi levy, virtuaalilevyn koko määräytyy pienimmän fyysisen levyn koon mukaan. Eli jos levyssä on kahden, kolmen ja viiden gigatavun levyt, virtuaalilevyn koko on 2 GT * 3 = 6 GT (tässä ei oteta huomioon peilausta tai raidz:n käyttöä, jolloin levytilaa kuluu virheenkorjauksessa käytettävän pariteettidatan säilytykseen). Kuitenkin jos pienin levy vaihdetaan isommaksi (olettaen, että virtuaalilevy tukee virheenkorjausta, eli on joko peilattu, tai varmennettu raidz:lla), virtuaalilevyn koko kasvaa automaattisesti. Eli jos kahden gigatavun levy vaihdetaan neljän gigatavun levyksi, niin virtuaalilevyn koko muuttuu 12 gigatavuksi (4 GT * 3 levyä).

Virtuaalilevy (VDEV) voi olla:

  • Tiedosto (iso tiedosto joka toimii “levynä”)
  • Levyn slice tai partitio.
  • Kokonainen levy (suositeltavin tapa)
  • Joukko levyjä, joiden välillä tieto peilataan (eli mirror-levysetti)
  • Joukko levyjä jotka muodostavat RAIDZ1 tai RAIDZ2 virtuaalilevyn.
  • Erikoislevy (cache-levy, log-levy tai spare-levy)

Yhdessä levypoolissa voi olla sekoitettuna erilaisia virtuaalilevyjä, mutta tätä ei suositella. Esimerkiksi levypoolissa voi olla raidz1 ja raidz2 -virtuaalilevypakat, mutta tälläisen luonnin yhteydessä käyttäjää varoitetaan ja pyydetään erikseen hyväksymään eri vdev tyyppien sekoittaminen keskenään.

raidz (eli raidz1): Vähintään kolme levyä (jossa levy on tiedosto, slice, partitio tai kokonainen levy (suositeltavin tapa)) ja kestää yhden levyn hajoamisen. Virheenkorjaukseen käytettävä data vie yhden levyn kapasiteetin verran tilaa ja virheenkorjaukseen käytetty data jaetaan tasaisesti kaikille levyille (toimii samalla periaatteella kuin RAID-5). Tällä hetkellä levyjä ei voida lisätä tai poistaa virtuaalilevypakasta, mutta levyjä voidaan vaihtaa yksi kerrallaan isompiin levyihin, jolloin virtuaalilevypakan koko kasvaa. Mikäi virtuaalilevypakka koostuu erikokoisista levyistä, kaikki levyt käyttäytyvät levypakan pienimmän levyn koon mukaan.

raidz2: Vähintään neljä levyä ja kestää kahden levyn hajoamisen. Virheenkorjaukseen käytettävä pariteettidata käyttää kahden levyn kapasiteetin verran tilaa. Nopeampi kuin raidz1, toimii samalla tavalla kuin RAID-6. Käyttäytyy muuten kuten raidz1.

mirror, eli peilattu levysetti: Vähintään kaksi levyä. Kaikki data kopioidaan kaikille levyille, eli levypakasta voi hajota kaikki paitsi yksi levy. Levypakkaan voidaan lisätä levyjä (kunhan ne ovat vähintään samankokoisia kuin levypakan pienin levy) tai poistaa levyjä.

spare, eli varalevy: Oltava vähintään samankokoinen kun koko levypoolin pienin levy (jotta levyä voidaan käyttää varalevynä)

log ja cache -levyt: Erikoistapauksia, kotikäyttäjä ei tarvitse näitä.

Fixing ZFS CIFS share video lagging problems

I had some bad performance problems with my new NAS box running ZFS which resulted terrible video and audio lagging problems in windows when I tried to stream video from zfs share via CIFS to a media player running in windows. Even playing mp3 music files from CIFS share in Winamp resulted with very bad lagging, like I was playing a very scratched CD.

I asked help from opensolaris forums (very friendly people there!) and ended up bying a new Intel Gigabit Ethernet PCI card for 25 € which replased the Gigabyte motherboard onboard Realtek 8111B network chip and fixed my problems.

Sharing iSCSI volumes from Solaris to Windows XP

I just noticed that I could create iSCSI volumes onto my ZFS pool and share them easily over network to other machines. And I mean easily!

  1. Enable the iSCSI service:
    # svcadm enable iscsitgt
  2. Create a zfs stub for your volumes:
    # zfs create storagepool/volumes
    # zfs set shareiscsi=on storagepool/volumes
  3. Create a volume
    # zfs create -V 20g storagepool/volumes/test
  4. Verify that sharing was successfull:
    # iscsitadm list target
    Target: storagepool/volumes/test
        iSCSI Name:
        Connections: 0
  5. Install Microsoft iSCSI Software Initiator Version from here
  6. Go to Control Panel -> iSCSI Initiator -> Discovery, add the solaris server ip to Target Portals, then go to Targets tab and Log On to the volume.
  7. Go to the Computer Management and format the new iSCSI partition and you’re ready to go.

I benchmarked read speeds of 70 to 80 MB/sec with access time of about 2.3 ms over a 1GBps ethernet network. Not bad, could be a bit faster, but the network will anyway be a bottleneck compared to local drivers. My 160 GB RAID-0 stripe gives 260 MB/sec read times with 18.4 ms access time and 300 GB RAID-1 mirror gives 110 MB/sec with 19 ms access time (both are local drivers)

So what I can do with iSCSI volumes? I could for example use them as virtual machine disks, which would allow me to move virtual machines more easily across my network (though I dont have that many machines where to move them). Also the access time is blazingly fast, so I will also try to use them as video editing storage, as suggested in this article.

NAS projekti OpenSolariksella ja ZFS:llä


  • Nexenta OpenSolaris distribuutio
  • Tukee ZFS:ää
  • Aluksi neljä kappaletta 750 gigan Seagate Barracuda 7200.11 levyjä, joista kolme levyä muodostaa raidz1 (Solariksen RAID-5) -setin ja yksi levyistä on varalevy (spare).
  • Hotswap tuki, levyt voidaan vaihtaa lennossa.
  • Boottaus ja itse käyttöjärjesetlmä CompactFlash kortilta. /var osio on levypoolissa, jolloin CF kortille ei tarvitse juuri kirjoitella.
  • Laajennettavissa 13 SATA-levyyn asti.
  • Levytilan jako CIFS (Windowsin levyjako), FTP:n, NFS:n, SSH:n ja WWW:n yli (vain luku).
  • Tukee useita eri käyttäjiä ja tarvittaessa toimii Windows Domainissa.

Setti on kasattu isoon Antecin pelikoteloon, joka valittiin isojen tuulettimien ja ennenkaikkea runsaiden 5.25″ laitepaikkojen takia, joita kotelossa on yhdeksän. Levytilaa jaetaan CIFS:n (eli Samba, eli Windowsin levyjako) avulla ja tarvittaessa myös NFS:llä ja ehkä tulevaisuudessa myös iSCSI:llä (SCSI over Internet).

Nexenta on OpenSolaris-distribuutio, joka on käytännössä Debian OpenSolariksen kernelillä, eli ohjelmia saa helposti apt-get:llä, joka oli merkittävä valintakriteeri itselleni. Tietenkin kaikki asiat eivät toimi kuten Linuxissa, mutta Debianmaisuus teki Solarikseen siirtymisestä helpompaa.

Testeissä ZFS on toiminut erinomaisesti. Kirjoitusnopeus levypakkaan on 120 Mt/s ja lukunopeus noin 180 Mt/s. Verkon yli yhdeltä XP koneelta kirjoitusnopeus on noin 60 Mt/s gigabitin verkon yli (tässä on varmaan vielä parantamisen varaa). Testeissä yhden levyn irroitus on toiminut erinomaisesti, uuden levyn voi lisätä lennossa sisään ja itseasiassa yksi kolmesta levyistä ehti jo hajota ja ZFS hanskasi tilanteen erinomaisesti ilman ongelmia. Levyrikon sattuessa järjestelmä ottaa automaattsisesti varalevyn käyttöön ja lähettää ilmoituksen sähköpostitse. Nykyinen configuraatio antaa 1.3 TB käyttötilaa ja tilaa voi laajentaa helposti lisäämällä uusia kolmen levyn settejä järjestelmään.

Kotelosta on muutamia kuvia kamerassa, lisään ne jossakin välissä. Kokoonpano ei ole erityisen hiljainen, mutta se ei nykyisessä sijoituspaikassa ole ongelma.

Komponenttilista (verkkokaupan tuotekoodit):

  • 0266: Antec Nine Hundred ATX kotelo. 9 5.25″ laitepaikkaa ja ärsyttävät siniset ledit tuulettimissa, jotka sai helposti pimeäksi. 108.90 €
  • 5017: Corsair Twin2X 2x1GB DDR2 800Mhz KIT -muistimodulipari. 43.90 €
  • 8322: Intel Dual Core E2180 2,0GHz -prosessori LGA775-kantaan. 57.90 €
  • 8865: Sandisk 2GB CompactFlash Ultra II muistikortti. 24.90 €
  • 16539: Gigabyte GA-P35-DS3P Intel P35 ATX-emolevy LGA775 -prosessoreille. 8 SATA-väylää. 127.90 €
  • 20028: Antec NeoPower HE High Efficiency 430W -virtalähde. 60.90 €
  • 24126: Seagate Barracuda 7200.11 750GB SATA-II 4 kpl * 120.90 = 483.60 €
  • 30332: Chieftec SNT-2131SATA SATA-kiintolevykehikko. 2 * 61.90 = 123.80 €
  • Lisäksi CompactFlash to IDE adapteri noin 4 euroa.

Yhteensä: 1035.80 €, levytilaa 1.3 TB, noin 80 senttiä per gigatavu (jos on spare-levy), 70 senttiä ilman sparea. Levytilan laajennus nykyhinnoilla 2.6 TB: 424.6, jolloin hinta olisi 56 senttiä per gigatavu, 51 senttiä ilman sparea.

Vertailun vuoksi: Buffalo TeraStation Live 2TB, jolloin hyötytilaa RAID-5-setupissa olisi 1.35 TB. Hinta 731.90 €, hinta per gigatavu: 54 senttiä. Laajennus tapahtuisi ostamalla toinen boksi, jolloin tilaa olisi 2.7 TB ja hinta per gigatavu pysyisi samana, jolloin buffalo olisi omaa NAS boksiani kalliimpi.

Buffalo olisi halvempi, mutta huomattavasti hitaampi ja buffaloa ei voi laajentaa. Buffalo ei myöskään mahdollista spare-levyn käyttöä, eli levyrikon sattuessa järjestelmä on vaarassa kunnes käyttäjä vaihtaa itse rikkinäisen levyn. Solariksen ZFS mahdollistaa myös RAIDZ2:en, joka sallii kahden levyn samanaikaisen hajoamisen. Erään testin mukaan Buffalo lukee 20Mt/s ja kirjoittaa vaivaiset 3.3 Mt/s. Oma NAS boksini hakaa tämän siis nopeudessa 6-0.

FAQ: Mitä etuja ZFS tarjoaa?

Solaris tarjoaa ZFS:än, joka on monella tavalla parempi kuin Linuxin RAID ja sen tiedostojärjestelmät:
ZFS koostuu storagepoolista. Yksi pooli sisältää yhden tai useamman levysetin. Levysetti voi olla joko yksittäinen levy, peilattu levypari (tai usempi levy peilattuna keskenään), kolme tai useampi levy laitettuna raidz1:llä (Solariksen vastine RAID-5:lle), tai neljä tai useampi levy laitettuna raidz2:lla (mahdollistaa kahden levyn hajoamisen). Jos poolista loppuu levytila, niin tarvitsee ainoastaan lisätä uusi levysetti pooliin ja avot. ZFS tarjoaa myös tiedostojärjestelmän, joita on helppo muodostaa lennossa, vaikka oma jokaiselle käyttäjälle.

Linuxissa vastaava vaatisi RAID:in, LVM:n ja tiedostojärjestelmän käyttöä yhdessä. Jos linuxissa loppuu levytila, niin pitäisi lisätä uusi levysetti, liittää levysetti LVM:ään, kasvattaa LVM:ssä luodun partition kokoa ja lopuksi kasvattaa partitiolla olevan tiedostojärjestelmän kokoa. Hankalaa ja monivaiheista. Lisäksi ZFS:ssä kaikki tiedostojärjestelmät jakavat yhdessä levypoolin levytilan. Linuxissa eri tiedostojärjestelmät tarvitsevat oman partition (joka tehtäisiin LVM:llä) ja jos yksi tiedostojärjestelmä sisältää paljon hukkatilaa, mutta muut ovat täynnä, niin on pakko lisätä uutta levytilaa ja kasvattaa täysien partitioiden kokoa LVM:llä. ZFS:llä siis kaikki tiedostojärjestelmät jakavat saman tilan, jolloin hukkatilaa ei jää (ellei erikseen määritellä tiedostojärjestelmäkohtaisia quotoja, eli levytilarajoituksia)

Lisäksi ZFS suojaa paremmin levyvirheiltä.

Message Truncation UTF-8 Problems With PHP and Sajax library

I recently had a long night debugging this: My application using PHP, Sajax and MySQL truncated messages from the first non-ascii character to the end of the message. For example: if I typed “yö tulee” (finnish sentence means that “night is coming”) only “y” was inserted into the database.

The problem was with Sajax library. Sajax does not handle UTF-8, but there’s an easy fix for it: open the Sajax.php, locate the code in the following snippet and add the bolded line to your Sajax.php:

// Bust cache in the head
header (“Expires: Mon, 26 Jul 1997 05:00:00 GMT”); // Date in the past
header (“Last-Modified: ” . gmdate(“D, d M Y H:i:s”) . ” GMT”);
// always modified
header (“Cache-Control: no-cache, must-revalidate”); // HTTP/1.1
header (“Pragma: no-cache”); // HTTP/1.0
header (“Content-type: charset=UTF-8”);
$func_name = $_GET[“rs”];

This forces the Sajax library to use UTF-8 charset when it transmits data between the browser and the server. Also if you are using MySQL with UTF-8 you need to read this. Also encoding the SQL query string with $sql = utf8_encode($sql); might help.


Tämä artikkeli on varattu 17.3.2008 pidettävän esitelmän webbimateriaaliin.

Luentokalvot PDF ja PPT muodoissa.


[1] Joka kymmenes suuryritys joutunut vakoilun kohteeksi. SUPO., julkaistu 22.2.2008
[2] Kannettavan näppäimistön alta löytyi Britannian sisäministeriön salaisia tietoja.…/20086181/66, julkaistu 29.2.2008
[3] Krakkerit veivät Norjassa 60 000 henkilön tiedot.…/200719298/66, julkaistu 13.8.2007
[4] Security Engineering, Ross Anderson. Chapter 2. Sivu 14.
[5] On the Reliability of Electronic Payment Systems, Ross Anderson, S. Johann Bezuidenhoudt. Julkaistu toukokuussa 1996.
[6] Misplaced Trust: Kerberos 4 Session Keys. B Dole, S Lodin, E Spafford, Internet Society Symposium on Network and Distributed System Security; IEEE, ISBN 08186-7767-8 sivut 60-70.[7] Havard servers hacked,contents placed on Torrent sites. 13.3.2008.

[8] Suomalaisten nettitunnuksia julki – salasanat vaihdettava heti. 13.10.2007.

[9] Uraanikaivos: Suomalaisien salasanojen ylellisyys. Viitattu 15.3.2008.

[10] Traditional crypt, viitattu 13.3.2008

[11] Collisions for Hash Functions. Xiaoyun Wang, Dengguo Feng, Xuejia Lai, Hongbo Yu1. 17.8.2004.

[12] Enough With The Rainbow Tables: What You Need tTo Know About Secure Password Schemes. Thomas Ptacek. 10.9.2007.…/

[13] NSA@home. Raudalla toteutettu MD5 ja SHA1 läpikäyntijärjestelmä.

[14] Easy Nova Data Box PRO-25UE RFID, salattu ulkoinen kovalevy. Tuotteen kotisivut

[15] Enclosed, but not encrypted. Christiane Rutten, Heise Security. 18.2.2008.

[16] Access to protected data areas without the right fingerprint. Daniel Bachfeld, Heise Security. 12.3.2008.

[17] Hacking the iUSB. Sprite mods. Viitattu 15.3.2008.

[18] Secustick gives false sense of security., 12.4.2007

[19] 0wned by an iPod – Hacking by Firewire. Maximillian Dornseif. PacSec 2004.

[20] Hit By A Bus: Physical Access Attacks with Firewire. Adam Boileau, 2006.

[21] Automated OS X macintosh password retrieval via firewire. Juho Mäkinen, 29.2.2008.

[22] Data Remanence in Semiconductor Devices. Peter Gutmann, IBM.

[23] Cold Boot Attacks on Disk Encryption, Ed Felten. 21.2.2008., paperi:

[24] Flylogic blog.

[25] Extracting a 3DES key from an IBM 4758. Richard Clayton, Mike Bond.

[26] Hacking IBM ThinkPad BIOS Password.,

Englannin ammattitermien suomennoksen loputtomat ongelmat

Lopputyötä kirjoittaessani törmään jatkuvasti seinään, kun pitäisi suomentaa jokin englanninkielinen ammattitermi. Kaikki IT-alalla työskentelevät osaavat puhua saumattomasti suoraan englannista lainatuilla sanoilla. Esimerkiksi tämän tapauksen “template engine” vääntyy nätisti osaksi puhuttua lausetta “sitten käytetään template engineä renderöimään ulkoasu valmiiksi.”

Eli minun pitäisi keksiä hyvä suomennos sanalle template engine ja selittää mikä Smarty on. Kysyin kahdelta eri IRC-kanavalta ehdotuksia hyviksi suomennoksiksi ja tässä poimintoja:

  • asetteluhärveli
  • sisältöpohjageneraattori
  • ulkoasukomponentti
  • pohjamoottori
  • mallinnejärjestelmä

Myös seuraavat vastaukset olivat suosittuja: “tarviiko sitä edes yrittää suomentaa?”, “karmea suomennos” ja “ulkoasuttaja on aika hot.” Välillä tuntuu, että helpoin ratkaisu olisi kirjoittaa koko lopputyö englanniksi.

Näiden lisäksi suositeltiin vierailemista Tekniikan sanastokeskuksen sivuilla. Toinen hyvä idea on vierailla termin englanninkielisellä Wikipedia-sivulla ja siirtymään sivun suomenkieliseen vastineeseen vasemman reunan languages-valikon avustuksella. Valintaa voi vielä kokeilla varmistaa tekemällä siitä Google-haun ja katsomalla ovatko muut päätyneet samaan termiin. Ehkäpä hakkaan vielä hetken päätä seinään ja päädyn johonkin todella huonoon suomennokseen – eihän näitä töitä kukaan kuitenkaan koskaan lue.

Automated os x macintosh password retrieval via firewire

I’ve successfully created a Python script which can extract username and login password from a mac running OS X tiger (going to test with leopard asap) via firewire using a linux laptop, based on great paper Hit By A Bus: Physical Access Attacks with Firewire by Adam Boileau. Once the attackers Linux laptop is connected to target machine via firewire, the password can be automaticly extracted from memory via firewire in about 10 seconds.

Thisosx-memory-password hack exploits the fact that OS X keeps username and password in memory, even after a macbook is resumed from hibernation. Usin this technique a cracker can open the screen of a suspended macbook, wait until the unlock screen is displayed, plugin the linux laptop used for the attack to the firewire bus and run the password download script which extracs the password in under ten seconds.

The username and password is located in a memory page which can be identified by multiple static byte sequences. One of these sequences is a string dsAttrTypeStandard:UserShell which is located 1448 bytes from the start of the memory page. The attacker can simply iterate over every memory page and to look if this string exists 1448 bytes from the start of the memory page being iterated. Once this memory page has been identified and downloaded the script searches for string username inside this page. The actual username is a null ending string which starts at starting_offset_of_username_string + 12 bytes. The password can be found by searching string password and retrieving the actual password at starting_offset_of_password_string + 12 bytes.

This attack is very dangerous because it allows the attacker to gain access to a mac which is turned of into hibernation or suspend-to-disk mode. As Maximillian Dornseif presented in his keynote 0wned by an iPod the attacker can install Linux to a normal iPod and setup needed programs to implement a firewire memory attack. This means that the attacker needs just to carry an ipod with him, which is much less prone to attract security aware personels. Just wait for a goot moment, insert an iPod from your pocket into the target mac and login within a few seconds with the password you just extracted from the target machine memory.

EDIT: Some people have asked if similar attacks works in other operating systems. The answer is yes. I can also bypass a Windows XP SP2 login screen, just for an example. This was already proven by Adam Boileau last year (check out the link on the first chapter)

Multiple monitors in desktop – is two monitors enough?

Daniel (the author of Daily Blogging Tips) inspired me to write about my current desktop setup and in particular the multihead setup I’ve got. Currently I got three TFT displays (see the related image) and I just love it. I do a lot of image processing, programming, video editing and audio multitrack mastering and the three displays help a lot to increase my productivity.

But tripleheadthere’s more about it: I’ve found out that normally I don’t bother to power up the left display and I just use two out of three displays. Buying a second display increases productivity a lot but buying 3rd display doesn’t increase it that much. One of my friend has also three displays and he has found out the same: normally he uses only two of them.

What do you think? Does three displays increase productivity just as much as buying the second display? Is two displays enough for most of the daily tasks?

Eroon firefoxin tahmaisuudesta

Varsinkin viimeaikoina on puhuttu Firefoxin muistinkäyttöongelmista ja miten niitä on parannettu tulevaan kolmosversioon, mutta harvemmin puhutaan Firefoxin tahmaisuudesta, mikä on ainakin itseäni raivostuttanut huomattavasti (muistai itselläni riittää, joten se ei ole koskaan ollut ongelma). Tajusin, että sivuilla olevat Flash-mainokset voisivat aiheuttaa tätä tahmaisuutta ja asensin kokeeksi koneeseeni Flashblockin ja hups, tahmaisuus on tiessään!

Itselläni ei ole mitään mainoksia vastaan, jos ei lasketa muutamia Flash-mainoksia jotka soittavat ääntä ilman lupaa. Onneksi mainosala on pyrkinyt minimoimaan nämä, sillä liian ärsyttävät mainokset saavat käyttäjät asentamaan mainosblokkausohjelmia. Moni surffaaja unohtaa sivustojen pääasiallisen tulonlähteen olevan mainokset. Ilman mainoksia ei sivun ylläpitäjät saa tuloja ja ilman tuloja ei tule sisältöä! Itse en suosittele kenellekkään AdBlockin yms mainostenpoisto-pluginin hankkimista, sillä mainokset ovat pieni paha suhteessa hyvien sivujen sisältöön, mutta surffauskokemustani ne ei silti saa häiritä.

Ensimmäinen tilaukseni Amazon-kirjakaupasta

Jokainen netissä vähänkään liikkunut tietää eBayn ja Amazonin (UK), mutta ainakaan itse en ole näitä käyttänyt, ennen kuin nyt. Olen jo pitkään etsinyt Davig Brinin Startide Rising (suom. Tähtisumu Täytyy) -kirjaa englanniksi. Itselläni on suomennettu versio, mutta olen kaivannut sitä alkuperäisellä kielellä (ja suomenkielinen nide on lainassa siskollani) – vaikka olen lukenut kirjan jo ainakin kymmeneen kertaan.

Isäni kirja-david-brinn-startide-risingtilasi saman kirjasarjan ensimmäisen kirjan (David Brin – Sundiver) Suomalaisesta Kirjakaupasta, mutta lupasivat sille yli kuuden viikon toimitusajan, eikä muita sarjan kirjoja saanut heille edes tilaamalla. Amazonista löysin Startide Risining käytettynä erinomaisessa kunnossa muutaman euron hintaan ja David Brinin Brightness Reef (Uplift) uutena myöskin noin kahdeksan euron hintaan. Eipä ole hinnalla pilattu. Startide Rising saapui juuri postiluukusta viidentenä arkipäivänä tilauksen tekemisestä, mutta Brightness Reef:iä joutuu Amazonin mukaan odottamaan todennäköisesti yli joulun, ainakin heidän lähettämän sähköpostin perusteella. Ei haittaa minua, sillä en tilannutkaan noita lahjaksi vain itselleni.

Koko tilauksen tekemiseen meni noin 10 minuuttia ja rahat menevät kätevästi visalla. Helppoa!

Ylen sivustot kehityksen kärkijoukossa

Olen jo pitkän aikaa ihaillut YLE:n kykyä uudistaa Internet-palveluitansa. Mobiilisivut, RSS-syötteet, Yle-Areena (joka tosin on mielestäni toteutettu väärällä formaatilla) ja viimeisimpänä Delicious, Digg ja Facebook-linkit ovat jokainen olleet mielestäni fiksuja ja ennenkaikkea pirteitä päätöksiä muuten kankealta ja byrokraattiselta organisaatiolta.


Viimeisimpänä YLE uudisti sivustojensa ulkoasua, mikä näkyi itselleni heti -sivuston yläreunaan ilmestyneenä räikeänä navigointipalkkina. YLE kuitenkin osoittaa jälleen olevansa ajan hermoilla ja ilmoittaa, että kehittäjät ottavat vastaan kommentteja YLE:n blogissa.

Jätin palautetta blogiin ja sainkin hyvän ja rakentavan vastauksen heti seuraavana päivänä blogin kommentteihin ja vielä kopion sähköpostiini, että varmasti luen vastauksen. Loistavaa toimintaa, YLE! Vielä kun organisaationne hallinto saataisiin samalle tasolle!

OpenTTD – Transport Tycoon Deluxe

Löysin sattumalta uuden version vanhasta pelistä Transport Tycoon Deluxe. Pelin ideana on kuljettaa tavaroita ja ihmisiä tehtaiden, tuotantolaitoksien ja kaupunkien välillä rakentamalla kuljetukseen sopivaa infrastruktuuria: rautateitä, rekkareittejä, lentokenttiä ja satamia. Simppeli ja koukuttava idea. kuvaa peliä seuraavasti:

TTD on vuonna 1996 ilmestynyt peli, jossa johdetaan kuljetusalan yritystä. Tarkoituksena on siis yksinkertaisesti kuljettaa eri välinein tavaraa ja ihmisiä paikasta toiseen. Käytettäviä kulkuvälineitä on monenlaisia: junia, autoja, laivoja ja lentokoneita. Tekniikka kehittyy ajan kuluessa ja yhä parempia kulkupelejä tulee saataville, mutta samalla täytyy pitää vanhat asiat otteessa.

TTD:stä on ilmestynyt nykyaikainen versio OpenTTD, joka lisää peliin uusia ominaisuuksia ja parantaa hieman käyttöliittymää. Jos olet joskus kuluttanut luvattoman monta tuntia alkuperäisen TTD:n parissa kannattaa muistella menneitä tovin tämän parissa.

WPG2 patch to display random images from a specified album

I recently installed WPG2 and Gallery2 to my block to manage the photos and images which are related to my blog entries and generally to store the photos taken by me. I found WPG2 quite good, but it lacked a feature I missed: To display random images from an album which is related to a specified blog entry. What I mean, that I take a bunch of photos, import them into my gallery2 installation and then write a blog entry about them. This patch allows to add a “related-gallery” -custom field to the blog article, which the Sidebar Grid Block then picks up and it displays random images from that album.

Usage instructions:

  1. Install WPG2 (I’m using 3.0.2)
  2. Apply the patch: WPG2 patch against WPG to add support for Related Gallery to Sidebar Grid Block
  3. Add the Sidebar Grid Block to your layout from Presentation -> Widgets
  4. Configure the Sidebar Grid Block from WPG2 -> Sidebar Grid Block
  5. Upload some photos to your Gallery2 installation
  6. Obtain the album id where you uploaded your images. The album id can be found from the URL of the album. This is an example from my album: “”. In this url the album id is 37. Obtain this numeric id.
  7. Write a blog entry and add a custom field from the bottom: key is related-gallery and value is the id you just obtained from the step 6.
  8. All done, go and see the results.

Known problems and limitations:

  • Currently you need to obtain the album id manually by looking the Gallery2 urls. This could be made easier by some kind of wizard.
  • You need to use the Custom Fields -feature.

I’ve asked Ozgreg, the founder/programmer of the WPG2 project, if he could add my patch to the main trunk of WPG2. Let’s hear if he likes this :)