Fso El Kitabi - Turkhackteam.org/net - Ethical Hacking & Cyber Security Platform
Fso El Kitabi
FileSystemObject (kısaca fso diyeceğiz) ASP�nin dolayısıyla VBScriptin bize sağladığı sihirli bir değnektir. fso ile çalıştığı bilgisayarın üzerindeki tüm dosya ve klasörlere ulaşabilir, onlarla kolayca istediğiniz işlemleri yapabiliriz. Bunun içinde dosyaları kopyalamak, silmek, taşımak, listelemek, text dosyaları düzenlemek, yeni dosyalar oluşturabilmek,dosyaların özelliklerini değiştirebilmek vardır. Yani bilgisayarınızda dosyalar üzrinde yaptığınız işlemlerin aynılarını yapabilirsiniz. fso çok geniş bir konu aslında.Bir çok özelliği ve metodu var. Bunları gruplayarak anlatmak en doğrusu olacaktır. Böylece konu içinde neyin nerede olduğunu bulabilirsiniz. Ben öncelikle fso�nun özelliklerini ve metotlarını anlatacağım. Sonrada dosya işlemleri,klasör işlemleri,sürücü işlemleri olarak anlatacağım.
fso�yu kullanabilmek için önce Set komutu ile bir fso nesnesi oluşturmak gerekir. Bu nesne olmadan işlem yapamayız.
Burda hatırlanması kolay olsun diye nesnemize de fso ismi verdik. Bundan sonraki örneklerde tekrar tekrar bu nesneyi oluşturmayacağız. Ama siz fso gördüğünüz yerde bunun daha önceden yukarıdaki şekilde oluşturulduğunu bilmelisiniz.
Verdiğiniz bir yol üzerine verdiğiniz isimde yeni yol ekler. Yol ifadesinin geçerli bir yol ifadesi olması gerekmez. String üzerinde işlem yapar.
YeniYol = fso.BuildPath(yol,eklenecek isim)
YeniYol değişkeninin değeri "C:Inetpubwwwrootimages" olur.
Çıktısı "MetinAksu" olur.
Sadece tek bir isim kullanmak zorunda değilsiniz. "images" yerine "imagesdeneme" şeklinde de verebilirsiniz. Bu durumda da çıktı "C:Inetpubwwwrootimagesdeneme" olacaktır. Bu metodun yaptığı işi aşağıdaki şekilde de yapabilirsiniz.
Ama sizin ana ve eklenecek yolunuz fazladan slashlar içeriyorsa yada değişkenler başka yerden alınıyor ve nasıl geldiğini bilmiyorsanız BuildPath sizi bunları temizleme derdinden kurtarır.
Çıktısı "C:Inetpubwwwrootimages" olur.
Belirtilen bir hedeften yine belirtilmiş bir başka hedefe bir veya daha çok dosyayı kopyalar.
fso.CopyFile KaynakDosya(yada Dosyalar),Hedef,Overwrite
Kaynak kopyalanacak olan dosya yada dosyaların ismidir. Hedef ise ya kopyalanacak olan klasör ismi yada farklı bir isimle kopyalanacak ise yeni dosya ismidir. Overwrite ise eğer kopyalanacak dosya hedefte zaten var ise üzerine yazıp yazılmayacağını belirler. True olursa dosyanın üzerine yazar.False olursa dosyanın zaten var olduğunu söyleyip hata verir. Eğer belirtilmez ise varsayılan olarak True kabul edilir. Kopyalanmak istenen klasör var olmalıdır. Yoksa yol bulunamadı hatası verir.
Bu kod c sürücündeki resim.bmp dosyasını D sürücüsünde ki Resimler klasörüne kopyalar. Eğer dosya var ise üzerine yazar.
Bu kodda C sürücündeki resim.bmp dosyasını D sürücüsünde ki Resimler klasörüne kopyalar. Ama eğer dosya var ise hata verir ve kopyalamaz. Eğer True yada False olarak belirtmezseniz varsayılan olarak True kabul edilir.
tamamen aynı işi yapar.
Bu kod ise C sürücündeki resim.bmp dosyasını D sürücüsündeki Resimler klasörüne picture.bmp ismiyle kopyalar. Bir nevi farklı kaydet olayı yani.
CopyFile metodu ile birden çok dosyayı da aynı anda kopyalayabilirsiniz.
Burda *.* demekle C sürücünde ki tüm dosyaları D sürücüsündeki Deneme klasörüne kopyalıyoruz. Tabi ki burada yeni isim belirtme seçeneğimiz yok. Sadece hedef klasör belirtebiliyoruz.
*.* yerine joker karakterler kullanarak kopyalanacak dosyalar için değişik seçenekler oluşturabiliriz.
*.txt = sadece txt uzantılı olanlar
b*.* = isminin ilk harfi b olanlar
boot.* = ismi boot olan dosyalar
?a*.* = isminin 2. harfi a olan dosyalar
?b?.ini = 3 harfli ve isminin 2. harfi b olan ini uzantılı dosyalar.
NOT : fso ile bu şekilde dosya kopyalayacağınız gibi "fso ile dosya işlemleri" konusunda göreceğiniz gibi GetFile ile dosyayı bir nesneye atayıp "DosyaNesnesi.Copy Hedef" şeklinde de kopyalayabilirsiniz. Ancak bu şekilde tek bir dosya kopyalayabilirsiniz.
aynı işi görür.
Belirtilen bir hedef klasörü tüm alt klasörleri ve dosyaları ile birlikte belirtilen bir hedef klasöre kopyalar.
KaynakKlasor kopyalanacak olan klasör, Hedef kaynak klasörün kopyalanacağı hedef klasördür. Overwrite ise True veya False değerlerini alarak eğer klasör var ise klasörün üzerine yazılıp yazılmayacağını belirler. True olursa üzerine yazılır. False olursa yazılmaz. Eğer belirtilmez ise varsayılan olarak True kabul edilir.
Bu kod C sürücüsündeki Windows klasörünü tüm içeriğiyle beraber D sürücüsündeki Deneme isimli klasörün içine kopyalar.Hedef belirtilirken sonunda slash kullanıldığına dikkat edin. Eğer slash kullanmazsanız Windows klasörünün içeriği(kendisi değil) Deneme klasörüne kopyalanır.
Bu şekilde C sürücüsündeki Deneme klasörünün sadece alt klasörleri D sürücüsündeki Deneme klasörüne kopyalanır.
Eğer hedef olarak verdiğiniz klasör yok ise oluşturulur ve kaynak klasörün içeriği buraya kaydedilir. Yani farklı kaydetme olayı. Mesela D sürücüsünde WinXP isimli bir klasör yok diyelim.
Bu durumda C sürücüsündeki Windows klasörü D sürücüsüne WinXP ismiyle kaydedilir. Hedef klasör belirtilirken yine slash kullanılmadığına dikkat edin.
Eğer XYZ klasörü yoksa
derseniz hata alırsınız. fso sizin için bir XYZ klasörü oluşturup bunun içine WinXP�yi oluşturmaz. Ama eğer XYZ klasörü varsa WinXP klasörü yoksa bu oluşturulur ve kaynak klasör içeriği bunun içine kopyalanır. Eğer WinXP klasörü de varsa bu durumda, yukarda belirtildiği gibi, sonda slash kullanılıp kullanılmadığına bağlı olarak kaynak klasör aynı isimle klasör yapısı korunarak veya sadece içeriğiyle bu klasör içine kopyalanır.
NOT : fso ile bu şekilde klasör kopyalayacağınız gibi "fso ile klasör işlemleri" konusunda göreceğiniz gibi GetFolder ile klasörü bir nesneye atayıp "KlasorNesnesi.Copy Hedef" şeklinde de kopyalayabilirsiniz. Ancak bu şekilde tek bir klasör kopyalayabilirsiniz.
Adından anlayacağınız gibi verdiğiniz klasör içinde verdiğiniz isimde boş bir klasör oluşturur.
True/False şeklinde bir argümanı yoktur. Eğer oluşturulmak istenen klasör varsa hata verir.
C sürücüsünde Deneme isimli bir klasör oluşturur.
Eğer C sürücünde Metin isimli bir klasör varsa içine Aksu isminde bir klasör oluşturur. Eğer yoksa yol bulunamadı hatası verir.
System32 klasörü içinde MetinAksu isminde bir klasör oluşturur.
Belirttiğiniz bir dosya yada dosyaları siler.
Siz direk dosya ismi yerine fso/?temel#CopyFile"> color=#c79f03 CopyFile konusunda işlediğimiz gibi joker karakterler kullanarak birden fazla dosyayı silebilirsiniz.
C sürücüsünde ki Deneme klasörü içindeki tüm dosyaları siler.
NOT : Siz bu şekilde dosya silebileceğiniz gibi GetFile ile oluşturduğunuz dosya nesnesinin Delete yöntemiyle nesnenin tuttuğu dosyayı silebilirsiniz.
Böylece Resim.bmp dosyası silinmiş oldu.
Verdiğiniz bir klasörü tüm alt dosya ve klasörleri ile birlikte siler.
Klasör ismi sonunda yada / işareti kullanmamalısınız.Yoksa hata alırsınız.
C sürücüsündeki Deneme klasörünü tüm içeriğiyle beraber siler.
NOT : Siz bu şekilde klasör silebileceğiniz gibi GetFolder yöntemiyle oluşturduğunuz klasör nesnesinin Delete metodu ile de nesnenin tuttuğu klasörü silebilirsiniz.
C sürücüsündeki Deneme klasörü silinmiş oldu.
Belirttiğiniz sürücünün var olup olmadığını test eder. Eğer var ise True yoksa False değeri döndürür.
Verilecek değer Windows�un sürücüleri isimlendirme kurallarına uymalıdır. Yani bir sürücüyü ifade etmek için harf kullanmalısınız. Aksi takdirde çıktı olarak her zaman False değeri döndürür.
Ekrana True yazdıracaktır.
Eğer hard diskinizi paramparça etmediyseniz False değeri döndürecektir. olmalıdır.
Hepsinin çıktısı "z:" olur.
Çıktısı "C:" olur.
NOT : Siz bu şekilde bir yol ifadesi için sürücü harfini aldığınız gibi GetFile ile oluşturulmuş dosya nesnesinin veya GetFolder ile oluşturulmuş klasör nesnesinin Drive özelliği ile de sürücü harfini alabilirsiniz. Ama bu yöntemde yol ifadesi dolayısıyla dosya veya klasör geçerli, yani var olmalıdır.
Verdiğiniz string içinde en son bileşenin uzantısını verir. Verdiğiniz stringin geçerli bir yol ifadesi olması yada dosya uzantısının geçerli bir uzantı olması gerekmez. Kısacası verdiğiniz string içindeki son noktadan sonraki kısmı verir.
Belirttiğiniz bir dosya için üzerinde işlemler yapılabilen bir dosya nesnesi oluşturur. Dosya geçerli olmalıdır.
Set Dosya = fso.GetFile("Dosya Yolu")
Bu konunun ayrıntılarını "fso ile dosya işlemleri" konusuna bırakıp geçiyoruz.
Verdiğiniz bir string ifadesi içinde ki en son bileşenin uzantısıyla beraber ismini verir. Eğer uzantı yoksa sadece ismini verir. fso/?temel#GetBaseName"> color=#c79f03 GetBaseName dosya ismini veriyor, uzantısını vermiyordu. GetFileName uzantısıyla beraber dosya ismini verir. Verdiğiniz stringin geçerli bir yol ifadesi olması gerekmez. Bu yöntemde string üzerinde işlem yapar.
Çıktıları "index.asp" olur.
Çıktıları "index" olur.
Exe, dll gibi dosya versiyonu bilgisini taşıyan dosyalarda dosyanın sürüm numarasını verir. Verilen dosya yolu ifadesi geçerli olmalıdır. Eğer yol geçerli değilse yada dosya sürüm bilgisi taşımıyorsa boş değer döner.
Benim sistemimde çıktısı "2.0.0.2" şeklinde.
Çıktı "5.5.9.9" şeklinde.
Belirttiğiniz bir klasör için üzerinde işlemler yapılabilen bir klasör nesnesi oluşturur. Klasör geçerli olmalıdır.
Set Klasor = fso.GetFolder("Klasör Yolu")
Bu konunun ayrıntılarını "fso ile klasör işlemleri" konusuna bırakıp geçiyoruz.
Verdiğiniz bir yol ifadesi için o yolun en son dosyasının veya klasörünün içinde bulunduğu klasör ismini döndürür. Yol ifadesinin geçerli olması gerekmez.
Her ikisinin de çıktısı "C:MetinAksu" olur.
Üçünün de çıktısı "C:Metin" olur.
Çıktıları "GiresunMetin" olur.
Siz bu şekilde bir yol ifadesi için ana dizini aldığınız gibi GetFile ile oluşturulmuş dosya nesnesinin veya GetFolder ile oluşturulmuş klasör nesnesinin ParentFolder özelliği ile de ana dizini alabilirsiniz. Ama bu yöntemde yol ifadesi dolayısıyla dosya veya klasör geçerli, yani var olmalıdır.
Çıktısı "C eneme" olur.
Vereceğiniz 0,1 veya 2 sayısı için Windows özel dizinlerini döndürür. Bu üç sayı dışında argüman kabul etmez.
0 = "C:WINDOWS"
1 = "C:WINDOWSsystem32"
2 = "C:WINDOWSTemp"
Çıktısı "C:WINDOWSsystem32" olur.
Geçici bir dosya için .tmp uzantılı rastgele bir dosya adı üretir. Dosya ismi başında "rad" sözcüğü bulunur. Bu rastgele uzantılı dosya oluşturulmaz. Sadece dosya adı üretir. Siz bu ismi CreateTextFile ile dosya oluştururken kullanabilirsiniz.
Çıktısı "A9932" kısmı her seferinde değişmek kaydıyla "radA9932.tmp" gibi olur.
Verdiğiniz bir veya daha fazla dosyayı belirttiğiniz klasöre taşır.
fso.MoveFile KaynakDosya(lar), Hedef
Kaynak Dosya tek veya joker karakterle belirlediğiniz birden çok dosya, Hedef ise bunların taşınacağı klasördür. Eğer taşımaya çalıştığınız dosyalar hedef klasörde zaten var ise hata verir ve taşınmaz.
Her iki kodda C sürücüsündeki tüm dosyaları Deneme klasörüne taşır.
C sürücüsündeki "deneme.txt" dosyasını "Deneme" klasörüne aynı isimle taşır.
C sürücüsündeki "deneme.txt" dosyasını "Deneme" klasörüne index.asp ismiyle taşır. Yani farklı kaydetmiş olursunuz.
fso/?temel#CopyFile"> color=#c79f03 CopyFile konusunda okuduğunuz gibi joker karakterleri kullanarak taşınacak dosyalar için farklı seçenekler oluşturabilirsiniz.
Bir veya daha çok klasörü vereceğiniz bir hedef klasöre taşır.
fso.MoveFolder TaşınacakKlasör(ler), Hedef
Bu kodun kullanımında birkaç küçük ayrıntı var. Örneklerle görelim.
a klasörünü aynı dizindeki b klasörü içine taşır. Bu işlem için taşınacak kaynak klasörü belirtirken sonuna slash() koymuyoruz. Koyarsak yol bulunamadı hatası verir. Taşınacak klasör için bu sınırlama yok. "C eneme" yada "C eneme" şeklinde yazabilirsiniz.