27.01.2010

Samsung 40B653 ve Ubuntu Karmic arasında DLNA bağlantısı

Samsung 40B653 model LCD televizyonun sunduğu DLNA desteği ilgimi çekti. Önce Windows Vista üzerine Samsung'un PC Share Manager yazılımını yükleyerek bilgisayarımdaki filmleri Samsung'a gösterdim. Daha sonra Linux için de bir DLNA sunucu yazılımı ararken How to choose a DLNA Media Server for Windows, Mac OS X or Linux başlıklı yazı ilgimi çekti. Bu yazıda hem Windows, hem Linux hem de Mac için çeşitli ücretli ve ücretsiz DLNA sunucu yazılılarından bahsediliyordu. Burada önemli bir nokta da bazı medya paylaşım yazılımlarının transcoding özelliğinin olmasıydı. Bu özellik ile DLNA istemcinin desteklemediği bir formattaki medyanın anında başka bir formata dönüştürülmüş halinin sununlması mümkün olacaktı. Yani, Samsung için örnek vermek gerekirse bu, DTS sesi olan bir filmin sesini anında çevrirerek AC3 veya desteklenen başka bir formatta Samsung'a paylaştırılması demek. Kesinlikle çok güzel bir özellik!

Server Price Windows Mac Linux Music Photo Video Transcoding
Allegro Media

Server
39.95 x x
x


Cidero Internet Radio Station

Server (Java)
Free x x x x x x
Cyber Media Gate (Java) Free x x x x x x
Cyberlink Digital Home Enabler Kit 79.95 x

x x x
Elgato Eyeconnect 49.95
x
x x x
Fuppes Free x
x x x x x
Geexbox Free


x x x
GMediaServer Free

x x x x
JRiver Media Center
39.95 X

x x x
MediaTomb Free
x x x x x x
Mezzmo 24.95 x

x x x x
MiniDLNA Free

x x x x ?
MythTV Free

x x x x x
Nero

MediaHome
79.99 x

x x x x
Nullriver Medialink 20.00
x
x x x x
On2Share 19.95 x

x x x
PS3 Media Server Free x x x x x x x
Rhapsody 12.99/month x x x x


SimpleCenter Premium 19.99 x

x x x x
Tversity Free x

x x x x
TwonkyMedia 39.95 x x x x x x x
uShare Free

x x x x
Winamp Remote Free x

x ? x ?
Windows Media Connect Free x

x x x x
Yahoo Music Jukebox Free x

x



Henüz transcoding'i deneyemedim ama Ubuntu Karmic Koala üzerinde miniDLNA adlı DLNA sunucu yazılımını denedim, gayet güzel sonuç verdi. PC Share Manager'dan aşağı kalmayacak bu yazılım ile ilgili kurulum adımları şöyle:
  1. SourceForge'daki proje sayfasından sıkıştırlmış dosyayı indirin.
  2. Sıkıştırlmış dosyayı açınca bir tane yapılandırma dosyası (minidlna.conf) ile asıl çalıştırılabilir dosya (minidlna) çıkacak, bir klasör yapısın altında. Bu iki dosyayı klasörlerin içinden alıp, örneğin ev klasörünün içinde yaratılan bir minidlna klasörünün içine kopyalayın.
  3. Yapılandırma dosyasında birkaç küçük değişiklik yapmak gerekecek. Örneğin paylaşıma açacağınız medya dosyalarının konumunu belirtmek gibi. Bunu media_dir değişkeni ile belirtmek gerek. Mesela ben
    media_dir=/home/metin/vid
    friendly_name=karmic
    ayarlarını yaptım.

  4. Daha sonra DLNA sunucuyu çalıştmak için şu komutu verdim (minidlna klasörünün içinden):
    ./minidlna -f minidlna.conf 
Bundan sonra televizyonumun kumandasının MediaPlay butonuna bastığımda direk DLNA sunucuya verdiğim ismi, karmic'i gördüm. Hem videolarıma hem de altyazılarıma erişebildim. Ama PC Share Manager'da olduğu gibi televizyona izin vermek gerekmedi; galiba gelen her isteği olumlu yanıtlıyor. Ortak bir ağda bulunuyorsanız ve yetkilendirme gibi bir derdiniz varsa bu programla bunu yapamayabilirsiniz.

25.01.2010

Samsung 40B653 ve Nokia N79 arasında DLNA bağlantısı

Daha önceki bir yazımda Samsung 40B653 LCD TV ile bilgisayar arasında DLNA yöntemiyle bağlantı kurarak medya paylaşımını anlatmıştım. Bilgisayarın HDMI çıkışını doğrudan televizyona bağlayarak izlemeye kıyasla DLNA bağlantısı yapmanın şu farkları vardı:
  • DLNA, ağ tabanlı bir bağlantı yöntemi. Dolayısıyla LCD ile bilgisayarın arasında bir çeşit ağ bağlantısı (TCP/IP) olmalı. Televizyonun ethernet portunun (ve DLNA desteğinin) olması bu iş için yeterli. Daha fazla bir donanıma gerek yok.
  • HDMI ile bağlanırken, filmi oynatacak cihaz bilgisayar olacaktır. Bu sebeple bilgisayarda gerekli codec'ler yüklü olmalı. DLNA yönteminde ise buna gerek yok. Bilgisayar sadece bir yazılım ile dosyayı televizyonun erişimine "açacak", medyayı televizyon oynatacak.
  • Her bilgisayarın HDMI çıkışı olmayabilir. Ama neredeyse her bilgisayarın bir ethernet portu olduğundan DLNA daha çok kullanılabilme ihtimali olan bir yöntem.
  • Hepsinden önemlisi de HDMI bağlantısı ile film izlerken, eğer televizyonun optik ses çıkışını kullanarak ses sistemine çıkış veriyorsanız, sadece 2 kanal ses duyacağınızdan, DLNA yöntemi ile 5+1 kanal sesi ses sisteminize aktarabilecek olmanız.

Şimdi de bir HDMI çıkışı olma ihtimali olmayan bir cihazdan, bir cep telefonundan, DLNA yöntemi ile Samsung 40B653 televizyonuma paylaşımını yapacağım. Bunun için şu adımları yaptım (bakınız yukarıdaki şekil):
  • Televizyonumu bir kablosuz erişim noktasına, ki bu bir kablosuz modem de olabilir, "kablo ile" bağladım. Kablosuz erişim noktamın DHCP sunucusu aktif olmalı. Televizyonuma IP atamasını elle yapabilirim. Ama telefonum için bu mümkün değil.
  • Telefonumun kablosuz bağlantısını açarak erişim noktamın SSID'sini girdim. Telefonum erişim noktasına bağlandıktan sonra televizyonla arasında bir ağ bağlantısı oluştu.
  • Telefonumun üzerinden menüyü açarak Araçlar>Bağlantı>Ana Medya yolunu izleyerek içerik paylaşımını yapacağım bölüme geldim. Burada İçeriği Paylaşı tıklayarak gelen ekranda ilk olarak Şebeke Görünürlük kısmındaki ayarı "Telefonu Göster" olarak yaptım. Ardından yapmak istediğim paylaşıma göre alttaki Görüntü ve Resim ile Müzik alanlarından birini veya ikisini "Paylaş" olarak ayarladım (resim ve/veya videoları bir albüme atıp albümü paylaşıma açmak gerekebilir).
  • Daha sonra televizyonumun kumandasından MediaPlay tuşuna basarak DLNA üzerinden bağlantı kuracağım sayfaya geçtim. Bu sayfada da bağlanılabilecek cihaz listesini görmek için kumandadaki kırmızı tuşa bastım. Aşağıdaki şekilde görüldüğü gibi N79 karşıma geldi.





  • Televizyonumda N79'u seçerken telefonda da "Samsung size bağlanmak istiyor, onaylıyor musunuz?" gibi bir mesaj çıktı. Bunu da onayladıktan sonra telefonumdaki resim ve videoların listesi göründü.
 Telefonumdaki medyaları televizyonda izlemek için bu kolay bir yöntem. Buna alternatif yöntemler:
  • Telefonun hafıza kartını çıkartıp bir USB kart okuyucu ile televizyonun USB girişine bağlamak,
  • Telefondaki resimleri bilgisayara aktarıp (Bluetooth, USB gibi bir yöntemle), bilgisayarı HDMI ile televizyona bağlamak,
  • Nokia'nın USB kablosunu kullanarak telefonu USB Memory modunda televizyona bağlamak
olabilir. Bunlara göre daha basit bir yöntem. Ama şu da var ki, N79'un kamerası ile çekilen videoları Samsung oynatmıyor. Ama B653'ün oynatabileceği başka formatta videoları hafıza kartına kopyalarsanız, onları oynatacaktır.

20.01.2010

Virtualbox sanal disk boyutunu sıkıştırmak (shrink)

Virtualbox'ta sanal diskleri dinamik olarak büyüyen yapıda yaratmak çok avantajlı oluyor. Sanal makine 20 GB'lık diski varmış gibi görüyor, ama aslında ev sahibi (host) işletim sistemindeki vdi dosyası ne kadar kullanılıyorsa o kadar yer kaplıyor. Ne zaman daha fazlasına ihtiyaç olursa disk boyutu otoamatik büyütülüyor. Ama bunun tersi mümkün değil. Sanal makinenin diskini boşaltsam da ev sahibi işletim sistemindeki dosya sisteminde kapladığı yer azalmıyor. Bunu yapmak için biraz "el işçiliği" gerekiyor. Sanal makinenin Windows ve Linux olmasına göre farklılık gösteren adımlar şu şekilde:

Windows Sanal Makine
Windows'ta önce diskin içindeki dosyaları sildikten (ve tercihen disk birleştirme yaptıktan) sonra Windows Sysinternals'ın sdelete aracını kullanmak gerekiyor Diskten güvenli olarak dosya silmek için tasarlanan bu aracın ikincil işlevi de sanal makinelerin disklerini küçültmek amacıyla kullanılmayan disk bölümlerine sıfır yazmak. Bunun için komut satırında
sdelete -c E:
yazmak yeterli.

Linux Sanal Makine
Diskteki ihtiyaç duyulmayan dosyalar silindikten sonra
sudo dd if=/dev/zero of=/tmp/gecici.sifir
gibi bir komutla diskteki bütün boş alanı kullanan bir gecici.sifir dosyası yaratıp, içeriğini sıfırlarla doldurmak ve ardından bu dosyayı silmek için
sudo rm /tmp/gecici.sifir
komutunu kullanmak gerek. Alternatif olarak önerilen başka bir yöntem de zerofree programının kullanılması. Bu ilk kurulumla gelmeyen bir program. Kurmak için
sudo apt-get install zerofree
komutunu verin. Ardından boş alanı sıfırlamak için
sudo zerofree /dev/sda1
komutu kullanılabilir (/dev/sda1 yerine sizin diskinizi yazın).

Bundan sonra sanal makineyi kapatıp ev sahibi işletim sisteminde komut satırında
vboxmanage modifyvdi E:\vbox\disk\sanaldiskadi.vdi compact
komutunu vermek gerek. Burada ev sahibi işletim sisteminin Windows olduğu varsayıldı. Eğer Virtualbox'ın kurulduğu klasör PATH değişkenine eklenmemişse (ki varsayılan kurulumlarda böyledir) bu komutu Virtualbox'ın kurulu olduğu klasörden (bunun da varsayılanı C:\Program Files\Sun\Virtualbox'tır) vermeniz gerekir. Eğer ev sahibi makina Linux ise bunun yerine
vboxmanage modifyvdi /vbox/disk/sanaldiskadi.vdi compact
gibi birşey yazmak gerek (vdi dosyasının tam yolu verilmeli). Bunları yaparken snapshot'ınız olmamalı. (Virtualbox'ın 4.0 sürümünün elkitabında modifyvdi yerine modifyhd kullanılmış. Ayrıca modifyhd'nin snapshot'larla da çalıştığı yazılmış. Ama bir denememde başarısız oldum)

Son bir not, sdelete'i diskteki boş alanları sıfırlamak için kullanırken -z anahtarını değil (zero çağrışımı yanlış) -c anahtarını kulanmak gerek. Forumlardaki birçok "yaptım ama olmadı" benzeri hatanın bu şekilde çözülebileceği görüldü.

19.01.2010

ADS : Alternate Data Streams

NTFS dosya sisteminde bir dosya birden fazla veri akışından (data stream) oluşabilir. Bir akış güvenlik bilgilerini tutarken, diğeri asıl dosya verisini tutar. Bunların dışında bir dosyaya bağlı başka veri akışları da olabilir. Böyle karışık teknik bir cümlenin özeti, Windows Gezgini ile veya dir komutu ile gördüğünüzden daha fazla bilgi diskinizde bulunabilir. Bunlara alternate data streams (diğer veri akışları) denir, ADS diye kısaltılır. Bu aslında sadece NTFS'e özgü bir nitelik değildir. Diğer gelişmiş dosya sistemlerinde de bu veri bölümleri vardır ve genel olarak fork olarak adlandırılırlar.

ADS'lerli ilginç yapan nokta, bu veri akışlarında yaratılan/saklanan verilerin "görünmez" olmasıdır. Windows Gezgini'nde dosyaları gizlemek gibi değil bu; biraz daha farklı. Genelde işletim sistemi ile ilgili özel bilgiler burada tutulur (örneğin Windows XP, SP2'den sonra internetten download edilen dosyaların nereden download edildiği bilgisini ADS'de tutar). Ama bazen de bir virüsün veya başka zararlı bir kodun saklanacağı bir yer haline gelebilir.

Bir ADS, bir dosya veya klasöre bağlı yaratılır. Bağlı olduğu nesne silinirse ADS de silinir. Ama Windows, ADS'lerle ilgilenebilmek için yeterli araçları sunmaz. Yani bağlı olduğu nesneye dokunmadan ADS'yi silmek için başka araçlar kullanmak gerekir.

Örnek olarak Windows Hesap Makinesini, Not Defteri'nin ADS'sine yazalım ve bu şekilde çalıştıralım. Orijinal sistem dosyalarını bozmamak için iki dosyanın da birer kopyasını masaüstünde Deneme adlı bir klasöre kopyalayıp burada çalışalım.


Yukarıdaki resimde de görüldüğü gibi Deneme klasörüne iki araç ve bir dll daha kopyaladı. Bu araçlar, muhteşem Sysinternals araçlarından ikisi: streams.exe ve psexec.exe. Streams, ADS'lerin varlığından bizi haberdar edip, aynı zamanda onları silebiliyor da. psexec.exe çok faydalı bir araçkiti olan pstools'un bir parçası. Genel olarak uzak bilgisayarlarda bir süreç başlatmak için kullanılıyor. Ama ben bunu yerel bilgisayarda ADS'deki calc.exe'yi çalıştırmak için kullanacağım. pdh.dll ise pstools'un ortak dll dosyası; psexec'in çalışması için gerekli. Yukarıdaki resimde streams'i kullanarak mevcut durumda notepad.exe ve calc.exe dosyalarının ADS'leri olmadığını gösterdim. Bunun için şu komutu kullandım:
streams *
Bundan sonraki adımda calc.exe'yi, notepad.exe'nin ADS'sine gizleyeceğim. Bunun için şu komutu kullandım:
type calc.exe > notepad.exe:calca.exe
Notepad.exe'nin ADS'sinde yarattığım hesap makinesinin ismi için özellikle calca.exe (calc.exe yerine) kullandım, ayırt edebilmek için. Daha sonra da ADS'nin varlığını yine streams.exe'yi kullanarak doğruladım, aşağıdaki resmimde görüldüğü gibi.

ADS'e yerleşen calca.exe'nın boyutunun, orijinal Windows Hesap Makinesi calc.exe'nin boyutuna eşit olduğuna dikkat. Şimdi psexec'i kullanarak calca.exe'yi başlatalım.
psexec -d notepad.exe:calca.exe


psexec için kullandığım -d switch'i don't wait, yani bekleme anlamındadır. Yani komut satırında enter'a bastığımızda çalıştırmak istediğimiz programın sonlanmasını beklemeden hemen geri döner. Daha sonra şu şekilde çalıştırılabileceğini de öğrendim:
start ./notepad.exe:calca.exe
Bu resimde Task Manager ile Process Explorer'da listelenen notepad.exe:calca.exe sürecine dikkat! Görüldüğü gibi Windows Hesap Makinesi çalışıyor, ama bu hesap makinesi Deneme klasöründeki calc.exe değil, notepad.exe'ye bağlı olarak yaratılan ADS'nin içindeki calca.exe. Ayrıca süreç listesinde notepad.exe de görülüyor ama çalışan notepad'in kendisi değil, ADS'sindeki dosya.

Şimdi, istenmeyen bir ADS verisi tespit ettik. Ne yapmak gerek? Bunun için de streams aracını -d anahtarı ile kullanacağız. Öncelikle bu sürecin halen çalışıp çalışmadığını kontrol etmek gerek. Eğer çalışıyorsa çalışan süreci sonlandırmalıyız.
streams -d notepad.exe
Bu komut, notepad.exe dosyasına bağlı ADS'leri siler. Verilen bir klasörün içindeki ve alt klasörlerindeki tüm dosyaların (varsa) ADS'lerini silmek için şu komut uygun olacaktır:
streams -d -s D:\Veriler
Bir de text dosyaları ile uğraşmak var. Örneğin gorunur.txt adındaki normal bir dosyanın ADS'sinde gizli.txt adında bir dosya oluşturmak için şunları yapmak gerek:

echo Bu dosya normal bir txt dosyasi > gorunur.txt
echo BU GIZLI BIR DOSYA > gorunur.txt:gizli.txt
Aşağıdaki komutla önce ADS'nin varlığını doğrulayalım:
streams *
  :gizli.txt:$DATA 21
Şimdi de önce gorunur.txt'nin içeriğini komut satırından görelim:
type gorunur.txt
Bu dosya normal bir txt dosyasi
Ancak, gizli.txt dosyasının içeriğini görmek istediğimizde aynı yöntem işe yaramayacak.
type gorunur.txt:gizli.txt
Dosya adı, dizin adı veya birim etiketi sözdizimi hatalı.
Bunun yerine şu şekilde içeriği görüntüleyebiliriz:
more < gorunur.txt:gizli.txt
BU GIZLI BIR DOSYA
Peki, elimizde ADS dosyası tek başına bir dosya sistemi nesnesi olarak bulunmuyorsa bu veriyi nasıl bir dosyaya kopyalarız? Şunu demek istiyorum: Hiçbir dosya veya klasörün ADS'si olmayan, normal bir dosya sistemi dosyası gizli.txt'yi nasıl yaratırız? Veya elimizde orijinal calc.exe yoksa notepad.exe'nin ADS'sindeki çalıştırılabilir dosyayı nasıl alıp normal bir dosya yaparız? Eğer konu text dosyasıysa çözümü Windows içinde bulabiliriz:
more < gorunur.txt:gizli.txt > gizli.txt
Bulunduğumuz klasörde gizli.txt adında bir dosya oluşturuldu. Peki ikilik veri durumunda ne yapılabilir? Benim bulduğum çözümlerden biri, NirSoft'un AlternateStreamView aracını kullanmak. Bu araç, grafik arayüze sahip bir araç. Programı çalıştırdıktan sonra bir klasör belirtip içindeki ADS'leri tarayarak, bulunanlardan birini sağ tıklayarak açılan menüden "Export Selected Streams to..."yu seçerek bunu yapabiliriz.


Bu işlermin sonucunda notepad.exe_calca.exe dosyası oluşturuldu. Yeni dosyamız da orijinal calc.exe'nin byte byte kopyası. Bunu şu şekilde doğrulayabiliriz:
fc calc.exe notepad.exe_calca.exe
Comparing files calc_orig.exe and NOTEPAD.EXE_CALCA.EXE
FC: no differences encountered

Şu adreste bir ADS'nin bir dosya nesnesine bağlı olmadan aşağıdaki şekilde yaratılacağı söylenmiş.
ECHO "This is a really invisible stream file." > :invisible.txt
Evet, streams ile taratılınca şu şekilde bir sonuç çıkıyor:
streams *
C:\Documents and Settings\admin\Desktop\Deneme\.:
   :invisible.txt:$DATA 44
C:\Documents and Settings\admin\Desktop\Deneme\gorunur.txt:
       :gizli.txt:$DATA 21
C:\Documents and Settings\admin\Desktop\Deneme\notepad.exe:
       :calca.exe:$DATA 114688
Ama aslında bu ADS verisi hiçbir dosya nesnesine bağlı değil gibi görünse de, aslında Deneme adında yarattığımız klasöre bağlı olarak oluştu. Bunu, Deneme'nin bir üst klasörüne (Desktop) çıkıp buradan taratarak doğrulayabiliriz.
cd ..
Deneme\streams *
C:\Documents and Settings\admin\Desktop\Deneme:
   :invisible.txt:$DATA 44
Çok uğraşmaya gerek yoktu, tek noka zaten mevcut klasör demek olduğu için bu ilk adımda belliydi. Ama denemiş olduk. Şimdi bir de Deneme klasörüne bağlı yaratılmış bu ADS'yi silelim:
Deneme\streams -d Deneme
C:\Documents and Settings\admin\Desktop\Deneme:
   Deleted :invisible.txt:$DATA

Windows XP SP2 ve sonrasında download edilen dosyalara bir Zone Identifier verisi ADS olarak eklenir demiştik. Şimdi bir de bunu doğrulayalım. Microsoft Sysinternals'dan download ettiğim ProcessExplorer.zip dosyasına bakalım:
streams ProcessExplorer.zip
C:\Documents and Settings\admin\Desktop\ProcessExplorer.zip:
   :Zone.Identifier:$DATA       26
Acaba bu verinin içinde ne yazıyor?
more < ProcessExplorer.zip:Zone.Identifier
[ZoneTransfer]
ZoneId=3

Meğer sadece Zone ID'si yazıyormuş. Ben de ilk kez denedim. Bunun dışında Windows, şu verileri ADS'de saklar:
  • IE Sık Kullanılanlar'daki bir sitenin ikonu (:favico:$DATA)
  • Dosya hakkındaki özet bilgisi (dosya özelliklerinden erişilen Özet sekmesinde gösterilen veriler, :SummaryInformation:$DATA)
Windows Vista ile dir komutu bir anahtar daha kazandı: /R anahtarı. Bu anahtarı kullanarak komut satırından ADS'leri listeyelebilirsiniz.
dir /R
19.01.2010  10:38    15 gorunen.txt
                     12 gorunen.txt:gorunmeyen.txt:$DATA
Peki, bir ADS yaratıyoruz, ama ADS'nin bağlı olduğu dosyanın boyutu değişmiyor. O zaman nerede saklanıyor bu veri? Diskte bir yer kaplamıyor gibi gözükebilir ama aslında kaplıyor. Bir-iki byte'lık verilerle bunu anlamak zor. 720.156.672 byte'lık Pardus 2009 CD kalıbını pardus.txt dosyasına ekleyelim de görelim, disk boyutumuzda nasıl bir değişiklik olacak. Önce dir komutunu kullanarak diskteki boş yeri görelim.
dir
 Volume in drive C has no label.
 Volume Serial Number is 6C41-A8FD
 Directory of C:\Documents and Settings\admin\Desktop\Deneme

        19.01.2010  10:18            .
        19.01.2010  10:18            ..
        19.01.2010  10:18        498 AlternateStreamView.cfg
        10.12.2009  17:56     34.816 AlternateStreamView.exe
        04.08.2004  14:00    114.688 calc_orig.exe
        19.01.2010  09:52         34 gorunur.txt
        19.01.2010  09:07     69.120 notepad.exe
        19.01.2010  10:11    114.688 notepad.exe_calca.exe
        29.08.2008  15:10    155.960 pdh.dll
        01.12.2009  10:53    381.304 psexec.exe
        27.04.2007  10:17     87.424 streams.exe
                      9 File(s)        958.532 bytes
                      2 Dir(s)   9.864.273.920 bytes free

Görüldüğü gibi diskte 9.864.273.920 byte boş yer var. Şimdi işlemin geri kalanını yapalım. Ancak maalesef type komutu bu büyüklükte bir dosya için işe yaramadı. Onun için FlexHex sitesinden streamtools paketini indirip kullanmak zorunda kaldım. Bu paketten cs komutu bir dosyayı, başka bir dosya nesnesinin ADS'si olarak yazıyor.
cs Pardus_2009.iso pardus.txt:Pardus_2009.iso
Bu işlem sonundaki boş disk alanı:

dir
 Volume in drive C has no label.
 Volume Serial Number is 6C41-A8FD

 Directory of C:\Documents and Settings\admin\Desktop\Deneme

19.01.2010  11:14           .
19.01.2010  11:14           ..
19.01.2010  11:13           498 AlternateStreamView.cfg
10.12.2009  17:56           34.816 AlternateStreamView.exe
04.08.2004  14:00           114.688 calc_orig.exe
01.10.2005  20:21           49.152 CS.exe
19.01.2010  09:52           34 gorunur.txt
19.01.2010  09:07           69.120 notepad.exe
19.01.2010  10:11           114.688 notepad.exe_calca.exe
30.10.2009  11:22           12 pardus.txt
29.08.2008  15:10           155.960 pdh.dll
01.12.2009  10:53           381.304 psexec.exe
27.04.2007  10:17           87.424 streams.exe
              11 File(s)      1.007.696 bytes
               2 Dir(s)   9.143.562.240 bytes free

Görüldüğü gibi boş disk alanı  9.143.562.240 byte'a inmiş. Basit bir hesapla bu 720.711.680 byte yapıyor. Aradaki fark tam olarak Pardus_2009.iso'nun boyutu değil; olmasını da beklemiyoruz. Çünkü bu arada FlexHex internet sitesine bağlandım, streamtools paketini indirdim, içinden cs.exe'yi çıkardım vs. derken bir sürü disk işlemi yaptım. Ard arda bile işlem yapsak arada fark olabilir. Neyse, amaç bu değil. Amacımız, ADS'ye kopyalanan verinin de diskte bir yer işgal etttiğiydi. Bunu da doğruladık.

Özet olarak ADS'ler işletim sisteminin bir parçası. Kapatılması mümkün değil. Bazı zararlı içerik (şu yazımda bir örneği var) kendini ADS altında saklasa da, bunlar diğer virüslere göre daha zararlı veya daha korkulacak şeyler değil. Üçüncü parti araçlarla bunları kontrol altına alabiliyoruz. Asıl korkulacak şey rootkit'ler. Bu tip bileşenlerin tespit edilmesi de, temizlenmesi de tam bir baş ağrısı! Bu da başka bir yazının konusu olur artık :)

12.01.2010

ADSL hat kalitesi

Bazen ADSL modemlerin bağlanmaması, hattın sık sık kesilmesi gibi sorunlarla karşılaşılır. Sebepleri çeşitli olmakla birlikte hat kalitesi ile ilgili bakılması gereken iki önemli alan var:
  1. Downstream Attenuation (Gelen sinyal zayıflaması)
  2. Downstream SNR Margin (Gelen sinynal sinyal/gürültü oranı)
Birçok modemin bir durum sayfası vardır. Bunun adı her modemde farklı olabilir. Genelde WAN, Status gibi bir sayfadan ulaşılır. Örneğin Airties RT-111 için bu sayfa sol menüden Rapor'dadır. Aşağıdaki gibi bir ekran gelir.

Veya bir Zyxel Prestige HW661-D1 içinse bu sayfa soldaki menüden Maintenance>Diagnostic>DSL Line açılarak çıkar. Aşağıdaki gibi bir sayfa gelir.

Bu iki resimde de bahsettiğim önemli kısımları kırmızı ile çerçeve içine aldım. Sorunsuz bir hatta bu iki değerin belli sınırlar içinde olması gerekir.


Downstream Attenuation hattaki kayıp miktarıdır. TT santralinden ne kadar uzaktaysak o kadar büyüktür. Bunun birimi dB'dir (desibel) ve ne kadar küçükse o kadar iyidir.

  0 dB - 20 dB : Santrale çok yakın
20 dB - 30 dB : Santrale yakın
30 dB - 40 dB : Santrale mesafesi iyi
40 dB - 60 dB : Santrale mesafesi ortalama
60 dB - 65 dB : Santrale uzak

Downstream SNR Margin ise hattaki sinyalin gürültüye oranıdır (bazen basitçe Gürültü Oranı diye de geçebilir). Dolayısıyla büyük olması demek hatta daha az gürültü var demektir. Bunun da birimi dB'dir.

  0 dB -   6 dB : Tekrarlayan hat kesilmeleri olur
  7 dB - 14 dB : Bağlanır, ama zaman zaman kesilebilir
15 dB - 25 dB : Hat kalitesi iyi
26 dB - 30 dB : Hat kalitesi çok iyi
31 dB - 35 dB : Hat kalitesi mükemmel

Modeminizin okuduğu değerleri yukarıdaki değerler ile karşılaştırıp bir karara varabilirsiniz. Buna göre yukarıdaki ilk resimde okunan 27 dB SNR değeri hat kalitesinin çok iyi olduğunu gösteriyor. 9 dB'lik hat zayıflaması da modemin bulunduğu konumun TT santraline çok yakın olduğunu gösteriyor. Çok güzel bir bağlantı.

İkinci resimde ise 6 dB'lik bir SNR değeri var ki bu hattın sorunlu olduğunu gösteriyor. Zaten 63 dB'lik hat zayıflaması da modemin bulunduğu konumun TT santraline çok uzak olduğunu da gösteriyor. Bu da kötü bir bağlantı.

11.01.2010

Google'ın anlamsız kullanımı

Google nedir? Bir arama motoru. Ne zamana kullanılır? Bir anahtar kelime araması yapmak istediğinizde. Hadi en fazla bir soru sormak için (mesela "Bir mil kaç kilometredir?" gibi).

Bu benim ekskiliğim, farkındayım. Ama böyle bir kullanıcı grubunun varlığından son zamanlarda haberim oldu.

Bazı kullanıcılar, Google'ı tarayıcılarının açılış sayfası yapıyor. Ne güzel. Her daim aramaya hazır! Ama şaşırdığım nokta bundan sonra başlıyor. Girecekleri sayfayı adres satırına yazmak yerine Google'ın arama kutusuna yazıyorlar ve "Google'da Ara" butonuna basıyorlar.


Örneğin Ekşi Sözlük'e girmek isteyen bir kullanıcı önce tarayıcısını açıyor, tarayıcı varsayılan açılış sayfası olan Google için DNS çözümlemesi yapıyor. Sonra Google'ın web sunucusundan Google'ın sayfası isteniyor. Bilmem kaç kilobyte'lık veri taa Amerikalardan kullanıcının bilgisayarına aktarılıyor. Sonra kullanıcı yavaş yavaş, hiç acele etmeden Ekşi Sözlük yazmaya başlıyor. Google da hiç üşenmeden E harfindan başlayarak en çok yapılan aramaları süzüyor ve girilen metne uyan aramaları getiriyor. Bu her harf girişinden sonra tekrarlanan birşey. Yani her harfe bastıkan sonra tarayıcı arama kutusundaki metni taa Amerika'daki sunucuya gönderiyor, sunucu sorgu yapıyor, geri cevap dönüyor. Bu, eğer boşluk karakteri kullandıysak, "ekşi sözlük" yazana kadar 11 kez oluyor.


Sonra kullanıcı elini klavyeden kaldırıp fareye götürüyor. Farenin okunu yavaş yavaş olduğu yerden, "Google'da Ara" butonunun üzerine getiriyor ve bir (muhtemelen çift) tıklama yapıyor. Google asıl aramasını yapıyor ve sonuçları getiriyor. Bir de övüne övüne 0,20 saniye sürdü gibi bir mesaj ve içinde ekşi sözlük geçen 2.230.000 sayfa bulduğunu da yazıyor. Ama beyhude: kullanıcının istediği sadece ilki.


Tabi bunlar olurken kullanıcının tarayıcısındaki "Sık Kullanılanlar" (Favorites) ya da "Yer İmleri" (Bookmarks) kısmı hiç kullanılmıyor. Kullanıcı bulduğu sonuçları buraya kaydetme ihtiyacı duymuyor. Duysa bile onları tekrar kullanmak yerine her seferinde Google'a danışıyor. Bana çok değişik geliyor bu. Bunu da yazmak istedim işte.

Başka bir "Mail Gönderemiyorum" şikayeti ve sorunun tespiti

En sık duyduğum şikayettir bu. Birisi arar ve şikayet eder, "mail gönderemiyorum", "maillerim gitmiyor" veya "mail alamıyorum", "maillerim gelmiyor" der. Çoğunlukla kalıcı bir sorun yoktur ve tekrar denendiğinde sorun çözülür. Yine öyle bir durum sandım. Uzaktan destek verdiğim bir firmanın yetkilisi telefonla aradı ve mail gönderemediklerini söyledi. Meğer gönderilen her mesaj için karşı taraftan bir hata mesajı alınıyormuş. Hata mesajını görünce şaşırdım. Şöyle bir not vardı:
451 http://www.spamhaus.org/query/bl?ip=xxx.xxx.xxx.xxx
451 kodunun ne anlama geldiğine bile bakmadan olay anlaşılıyordu: Firmanın IP adresi Spamhaus tarafından karalisteye alınmıştı. Gözüken bağlantıyı açtığımda daha başka bilgilere de ulaştım. Bir gün öncesinin tarihinde yüksek miktarda spam trafiğinin bu IP adresinden yaratıldığını söylüyordu. Yani ağdaki bilgisayarlardan birisi zararlı bir kodun esiri olmuştu. Sayfasında belirtildiği gibi Spamhaus'un karalisteden çıkma prosedürü basit. Eğer bu karalisteye ilk girişinizse ve ilk defa listeden çıkarılma talebinde bulunuyorsanız sayfanın altındaki bağlantıyı tıklayarak küçük bir formu doldurmanız yeterli. Ama eğer ağınızdaki virüsü tespit edip zararsız hale getiremediyseniz ve spam trafiği durmadıysa, tekrar karalisteye gireceksiniz demektir. Bunu birkaç kez yaparsanız artık internet üzerinden başvuru şansınız kalmayacak, Spamhaus'a doğrudan başvuru yapmanız gerekecek. Onların da hemen listeden çıkarmak yerine birkaç gün bekleyerek tekrarlamayacağını garantiye almaları da muhtemel. Böyle bir durumda kalmamak için önce bu trafiği durdurmak lazım. Uzaktaki yetkiliye bilgisayarları virüs yazılımıyla taratmasını söyledim. İşin ironik kısmı da bu: Bütün bilgisayarlarda lisanslı ve güncel bir antivirüs yazılımı bulunuyor. Ama virüs bu engeli bir kez aştıysa bir daha yakalanmayacaktır düşüncesiyle bir de MSRT (Microsoft Malicious Software Removal Tool) ile taratılmasını istedim. Bunların hiçbirisinden sonuç çıkmadığını öğrenince hiç şaşırmadım. Nasıl bulacağımı düşünürken aklıma firmanın Small Business Server'ı geldi. Üzerinde ISA 2000 olan bir sunucu bilgisayarları vardı. ISA'nın birkaç günlük firewall loglarına bakarak hangi makinanın 25 numaralı portu bu kadar yoğun kullandığını bulabilirdim. Hemen bir uzak masaüstü bağlantısı ayarladım ve ISA'nın son birkaç gününe ait log dosyalarını sıkıştırıp kendi bilgisayarıma aktardım. Son birkaç günün log dosyaları zaten diğer günlere kıyasla çok daha büyük boyuttaydı ki bu da bir sorun olduğunun başka bir göstergesi.

Log dosyalarını spreadsheet programı ile açıp birleştirdikten sonra SMTP trafiğinde göze çarpan artışı tek bir IP adresi yarattığını farkettim. Bu IP adresinden son iki gün içinde 272,000'den fazla mesaj gönderilmişti! Bunu gördükten sonra Spamhaus'un ne kadar hayırlı bir iş yaptığını bir kez daha anladım. Sanal dünyanın arsızlarının masum kullanıcıları rahatsız etmemesinin en basit yoluydu bu.


Bu işin sonunda bilgisayarı bana gönderdiler. Bilgisayarı ilk açtığımda sıradışı bir şeyle karşılaşmadım. Antivirüs yazılımı çalışıyordu, bilgisayarın performansında olağanüstü bir düşüş yoktu. Ama Process Explorer ile çalışan süreçlere ve Autoruns ile de sistemin açılışında başlatılan bileşenlere baktığımda suçlu ortaya çıktı. Aşağıdaki resimde Process Explorer ve Autoruns çalışırken aldığım ekran görüntüsü var.


Kırmızı ile altını çizdiğim userini.exe, gerçekte bir sistem dosyası olan userinit.exe'ye ismen benzemeye çalışmış. Autoruns'da (sağda, önde duran pencere) 4 farklı yerde görünen bu dosya, kendini garantiye alarak çalışmayı şansa bırakmamış. Ayrıca Process Explorer'da (solda, arka planda kalan pencere) altını çizdiğim sürec(ler)e ise dikkat: bir ADS'ye sahip. ADS, alternate data streams'in kısaltması. Dosya sisteminin bir özelliği bu. Ama virüsler ve diğer zararlı yazılımların kendini gizlemesi için de ideal bir yöntem. Bu konuyu hakkında ayrıntıyı şu yazımda bulabilirsiniz.. ADS'nin ayrıntılarına girmeden konumuza dönelim.

Process Explorer'da explorer.exe:userini.exe olarak gözüken süreç, aslında normal bir Windows dosyası olan Explorer gibi gözüken, ama aslında zararlı bileşenimiz olan userini.exe'yi çalıştıran satır. Komut satırında sfind.exe'yi (bir Foundstone güvenlik aracı) kullanarak bu userini.exe'nin ADS altına gizlendiğini doğruladım:

C:\Windows\Prefetch'in altındaki satır önemsiz. Ama onun üstündeki Explorer.exe:userini.exe bizim ilgilendiğimiz satır. Sadece Explorer.exe'nin üzerine yamanmış userini.exe'yi silip bundan kurtulabilirim ama sistemde başka virüsler var mı, önce bunu bulmam gerek. Bu makinayı üzerinde yüklü olan antivirüs yazılımı McAfee Virusscan Enterprise'ın 8.5i'nin son tanım dosyalarıyla (o gün için 5853) güncelledikten ve antispyware bileşenini yükledikten sonra tekrar tarattım, 4 tane cookie'den başka birşey bulmadı! Diskini söküp başka bir makinaya taktım. Linux'ta açıp clam ile tarattığımda 50'den fazla zararlı dosya buldu. Bu dosyaların bazıları bana "pek virüs gibi" görünmediği için başka bir taramayı da Kaspersky ile yaptım. Bu ise topu topu 8 tane zararlı içerik tespit etti. Bu sefer benim "pek virüs gibi" görmediğim dosyaları bulmadı. Bunun üzerine bu dosyaların yeni kurulmuş bir makinadan alarak tekrar clam ile tarattığımda bunları yine virüs olarak gördü. Buradan clam'in bazı durumlarda yanlış alarm ürettiği sonucuna vardım. Eğer clamscan için detect-pua anahtarını (Possibly Unwanted Applications-muhtemelen istenmeyen uygulamları da bul) kullanırsam, bu gibi durumlarda yanlış alarm üretebiliyor. Kısaca Kaspersky en güvenilir sonuçları verdi. Nihayetinde McAfee Virusscan Enterprise hiç bir zararlı bileşen tespit etmezken, Clam userini.exe'yi Trojan.Fraudpack-2378 olarak, Kaspersky ise Trojan.Win32.FraudPack.ajqk olarak tespit etti. Sistemin temiz olduğuna kanaat getirdikten sonra Spamhaus'a gereken başvuru yapıldı ve herşey normale döndü. Buradan çıkan sonuç: Yüklü antivirüs yazılımına hiçbir zaman tam olarak güvenme!