MD5 Checksum Değerleri Ne Kadar Güvenilir?

April 30th, 2011 No comments

Kriptografik bir hash yöntemi olan MD5, bilgisayar ve yazılım dünyasında oldukça fazla şekilde kullanılır. En basit anlatımıyla “hash” işlemi, bir veriyi tek yönlü olarak değiştirerek bir değer elde etmektir. Teoride, iki farklı verinin hash değerinin birbirini tutması mümkün değildir. MD5′de çok yaygın kullanılan bir hash yöntemidir. Kullanım yerlerine gelince, yoğunluklu olarak veritabanlarında şifrelerin depolanması için kullanılır. Kullanıcı şifresini belirlediğinde hash değeri hesaplanıp veritabanına yazılır. Daha sonraki girişlerde tekrar hash değeri hesaplanarak veritabanındaki kayıtla kaşılaştırılır. Bu sayede herhangi bir saldırıda veritabanı ele geçirilse dahi geri dönüşümsüz hash değeri barındıran şifre alanı saldırganın işine yaramaz.

Diğer bir kullanım alanı da download sitelerinde veya doğrudan download veren ürün sitelerinde, ürünlerin belirli bir sürümünün orijinal-dokunulmamış olduğunu kullanıcının teyit edebilmesi içindir. Orijinal dosyanın “MD5″ hash değeri açık olarak verilir. Kullanıcı dosyayı çektikten sonra, MD5 hesaplayan araçlarla çektiği dosyanın hash’ini hesaplar ve bulduğu değerin tutup tutmadığını kontrol eder.

Geçtiğimiz günlerde bulduğum, çok da yeni tarihli olmayan bir makale, örnekli olarak MD5′in nasıl kandırılabileceğini ortaya koyuyor. Hatta birbirinden tamamen farklı iki exe dosyasının, özel geliştirilmiş bir algoritma ile nasıl aynı hash değeri verecek hale getirildiği gösteriliyor.

Her ne kadar bu, kendimizi güvende hissetmemizi sağlayacak bir çok tabuyu yerle bir etse de, bir yazılımcı için gerçekten son derece ilgi çekici ve olağanüstü güzellikte bir durum. Jeoloji uzmanlarının deprem için olağanüstü güzellikte bir doğa olayı tanımını kullanması ile aynı ruh hali diye düşünüyorum :)

Makaleyi okuyan bütün yazılımcıların hoşuna gideceğine eminim: http://www.mscs.dal.ca/~selinger/md5collision

Categories: Programming Tags: ,

Çevrimiçi Amazon SES Bakım Aracı Yayında!

April 21st, 2011 No comments

Amazon Simple E-Mail Service, Amazon Web Services üzerinde koşan bir e-posta gönderim servisi. Servis, API arabirimi aracılığı ile toplu e-posta gönderimi yapmanızı sağlıyor. Geliştirmeler için, Amazon AWS pek çok farklı programlama dili için kütüphaneler sağlıyor.

Sistemi kullanabilmek için, öncelikle bir hesap oluşturmanız gerekiyor. Kayıt sonrası, “sandbox” ortamında kısıtlı bir hesaba sahip oluyorsunuz. Geliştirme sürecinizi tamamlamanızın ardından, üretim ortamına taşınma isteğinizi Amazon AWS’ye iletmeniz gerekiyor. Genellikle bir gün içerisinde isteğiniz onaylayıp, üretim ortamını aktive ediyorlar. Üretim ortamında Amazon SES, ihtiyaçlarınıza göre, günlük gönderim kotası, saniyede izin verilen gönderim sayısı gibi parametrelerinizi dinamik olarak arttırıyor (dinamik olarak artan kota işlemlerinde şu anda bazı sıkıntılar yaşıyorlar).

Amazon SES ile ilgili detaylı bilgi için lütfen buraya tıklayarak sayfalarını ziyaret edin.

Servisin ana hedef kitlesi yazılımcılar olduğu için, kotalarınızı görebileceğiniz, e-posta onaylarını yapabilecğeiniz veya test gönderimleri gerçekleştirebileceğiniz bir arabirim mevcut değil. Bunları yapmak için kodlama yapmanız gerekiyor.

Aşağıdaki köprüyü kullanarak bu işlemleri gerçekleştirebileceğiniz, benim geliştirdiğim çevrimiçi bir araca erişebilirsiniz. Sadece yetki bilgilerinizi girip, istediğiniz köprülere tıklamanız yeterli. Yetki bilgileriniz hiç bir şekilde uygulama tarafından kaydedilmemektedir. Kodlama esnasında ana olarak Amazon tarafından sağlanan AWSSDK.DLL kütüphanesini kullandım. Ancak geliştirmeyi kolaylaştırmak ve hızlandırmak için kendim bir ara katman kütüphanesi daha geliştirdim. Bu kütüphaneyi ve daha yetenekli bir konsol uygulamasını bir kaç hafta içerisinde burada ücretsiz olarak yayınlayacağım. Konsol uygulaması, aynı zamanda bir mail süpürme servisi olarak da kullanılabilecek özellikler içermekte.

Çevrimiçi Amazon SES aracına erişmek için buraya tıklayın.

Aracın, bütün Amazon SES kullanıcılarının işlerini kolaylaştırmasını dilerim…

Online Amazon SES Tool is live now!

April 21st, 2011 No comments

Amazon Simple E-Mail Service is an e-mail sending service which is running by Amazon Web Services. Service allows you to send bulk e-mails, through their API interface. Amazon AWS provides libraries for many different programming languages.

In order to use system, you need to register an account. After registration, you’ll get an account in “sandbox” environment with limited access. As you complete your development process, you need to escalate your “production environment transfer” request to Amazon AWS. They usually approve your request within a day and activate your production environment. In production environment, Amazon SES increase your daily sending quota and maximum number of e-mails allowed within a second limits depending on your needs dynamically (they’re currently having difficulties while lifting quotas).

For detailed information about Amazon SES, please click here and navigate to their page.

As this service’s target audience is mainly developers, there is no interface for querying quotas, validating e-mails or performing test dispatches. You need to write code to perform any of these.

Using the link below, you can access an online tool, coded by me to perform these operations. You just need to enter your credentials and click desired links. Your credentials are not stored on the system. I mainly used AWSSDK.DLL provided by Amazon. But coded a middle-tier dll, to ease up coding process. I’ll put this dll, and a more talented console app within a few weeks here for users who need for free. Console app can be used as a mail-sweeping service also.

Please click here to access to Online Amazon SES Tool

I hope this tool makes life easier for all Amazon SES users…

RIM’den Başarılı BlackBerry Playbook Manevrası

January 27th, 2011 1 comment

Sabah gördüğüm bir haber, gerçekten çok ilgimi çekti. Yakın zamanda piyasada olması beklenen BlackBerry Playbook tabletlerin, Android uygulamalarını çalıştırması ile ilgili çalışmaların son zamanlarda RIM’i ciddi şekilde meşgul ettiği söyleniyor.

RIM’in, Playbook için gönüllü developer arayışları fiyaskoyla sonuçlandırdıktan sonra ürünün tutunma sıkıntısı çekmemesi için çok akıllıca bir manevra gibi görünüyor.

Bilindiği gibi Android, tabanı Linux olan mobil bir işletim sistemi. RIM’in bütün BlackBerry cihazlarında kullandığı ve Playbook’ta da farklı bir sürümünü kullanacağını duyurduğu OS ise QNX tabanlı bir işletim sistemi. Bu yüzden eğer bu dedikodular doğru çıkarsa, RIM’in önünde iki seçenek var;

  1. Yerleşik olarak Android uygulamaları desteklemek ve Playbook’u bir Android-Uyumlu cihaz olarak Google’a etiketletmek.
  2. Sanal olarak Dalvik VM gibi bir yöntem ile Android uygulamaları çalıştırmak.

Geliştirme olarak ikinci yöntem çok daha kolay olmasına rağmen birinci yöntemin yayılma kapasitesine erişmesi çok zor görünüyor. Arkanıza Google Android Market gibi bir gücü almadan yayılmak gerçekten zor olacaktır.

Ama daha genel bir bakış açısından bakıldığında, bu hareket bile Anroid’in ne kadar bir “platform” olduğunun ispatı bence. Apple’ın züppe ve bencil yaklaşımı sebebiyle iOS uygulamaları “i” cihazlara çakılı kalacak gibi görünüyor. Böyle olsa bile teknolojilerinin ileri olması ve korkunç bir kullanıcı potansiyeline sahip olmaları (her ne kadar büyük bir kısmı bilinçsiz, görsele odaklı olsa bile) yakın bir gelecekte Android’in iOS’u yakalamasının hatta yanına yaklaşmasının bile çok zor olduğunu ispatlıyor gibi.

Yine de Android platformuna bir “yatırım” olarak bakılmalı ve popülist-taktik hareketler yerine stratejik-vizyoner hareketler arayanlar için önemli bir seçenek olduğu yadsınmamalı…

Haberin detaylarına bu siteden ulaşabilirsiniz…

Kanada’da Yeni Telif Hakları Yasası

January 21st, 2011 No comments

Kanada, göründüğü kadarıyla iyi tasarlanmamış bir telif hakları yasası sebebiyle yakında çok sıkıntı çekecek gibi görünüyor. Halkın Ocak sonuna kadar itiraz hakkı bulunsa da durumun vahameti anlaşılmadığı için itirazlar yükselecek gibi görünmüyor.

Bu aralar bir çok kaynakta konuşulan konuyu güzel özetleyen bir tabloyu aşağıda bulabilirsiniz.

Kanada Yeni Telif Yasası

Tabloyu aldığım ve konuyu güzel özetleyen TNW makalesine de bu bağlantıya tıklayarak ulaşabilirsiniz.

Burada asıl korkum ve bu yazıyı yazma sebebim; Kanada’da bu yasa hayata geçerse, diğer ülkeler için de emsal teşkil eder mi? Özellikle bizim gibi “hakları korumak” ile “yasakçı zihniyet” arasındaki kalın çizgiyi çok ince olarak gören yapıdaki ülkeler için…

Categories: Uncategorized Tags:

Line Phone

January 20th, 2011 2 comments

Son zamanlarda gördüğüm en iyi konsept telefon. Çin’den gelen konsept tasarımı, gitgide kopyalamaya yönelen telefon sektörüne farklılaşmayı gösterecek gibi duruyor.

Bence özellikle fark yaratan tasarım öğeleri;
1. Dokunmatik ve tepkili kenar bantları,
2. Message re-editing mantığı,
3. Web sayfalarını keserek zoom yapma,
4. Saat kadranına dönen kenar bantları üzerinde görselleştirilen ajanda (çok çok başarılı)
5. Share Mode ve PC Mode

Ne zaman üretilir veya üretime geçer mi bilinmez. Ama ufuk açıcı, ezber bozan bir tasarım…

Categories: Mobile, Prototype Devices, Technology Tags:

iPhone Push-Notification ve Donanım

January 20th, 2011 No comments

Donanıma bağımlı olarak push mesaj gönderen bir sistem prototipi. iPhone üzerinde push kullanılmış ancak uygun push server ve cihazlarla diğer cihazlarda olmaması için bir sebep yok.

Android device with 3 flexible touchscreens…

January 20th, 2011 No comments

Kristian Ulrich Larson tarafından tasarlanan, 3 ekranlı ve etkileşimi yüksek bir Android tabanlı cihaz… Cihaz diyorum, telefon olarak adlandırmak haksızlık olur zannederim…

.NET Platformundan Windows Fax ile Faks Göndermek

August 5th, 2010 10 comments

Bir müşterimizin isteği/ihtiyacı ile geliştirdiğimiz internet tabanlı uygulamanın, doğrudan faks göndermesi ihtiyacı doğdu. İlk önce uzunca bir süre farklı Fax Server arayışlarında bulundum. Ancak Windows platformu için başarılı (mümkünse açık kaynak kodlu veya ücretsiz) bir Fax Server bulmak mümkün olmadı.
Daha sonra odağımı, Windows’un kendi faks çözümü olan Windows Fax’a kaydırdım. Biraz araştırma sonrası, faxcom.dll kütüphanesi aracılığı ile (Windows 2000 kurulu bir bilgisayarın c:\WINNT dizininden bulabilir veya Windows 2000 CD’sinden deflate edebilirsiniz) gönderim yapmanın mümkün olacağını öğrendim. Çok umutlu olmasam da denemelere başladım. İlk önce denemeleri bir masaüstü uygulamada yaptım. Aşağıdaki kod parçasıyla yaptığım denemeler kesin bir başarıyla sonuçlandı;

FaxServerClass fs = new FaxServerClass();
fs.Connect(machineName);
object obj = fs.CreateDocument(documentPath);
FaxDoc fd = (FaxDoc)obj;
fd.FaxNumber = dialPrefix + faxNumber;
fd.SenderName = senderName;
fd.RecipientName = recName;
int result = fd.Send();
fs.Disconnect();
fs = null;

Kodda kullanılan değişkenler;

  • documentPath: Faks gönderilecek dokümanın tam yolu.
  • machineName: Windows Fax’ın kurulu olduğu makinenin adı. Aynı makine üzerindeyseniz Environment.MachineName de kullanabilirsiniz (sadece desktop uygulamalarında)
  • dialPrefix: Faks gönderileri santral üzerinden çıkacaksa ihtiyaç duyacağınız hat alma ön eki.
  • faxNumber: Alıcı faks numarası.
  • senderName: Gönderenin isim bilgisi (faks ile beraber gönderiliyor).
  • recName: Alıcının görünecek ismi (faks konsolunda görünür).

Bu basit kod parçası ile geliştirme ve deneme ortamım Windows 7′de faks gönderimi başarıyla sonuçlandı, faks kuyruğuna dokümanlarım düştü. Daha sonra web uygulaması üzerinden denemeler başladım. Aşağıda bahsedeceğim bir kaç yetki probleminden sonra onda da (Windows 2003 üzerinde) tam başarı elde ettim. Ancak bazı noktaları belirtmekte fayda var;

  1. Faks göndermek istediğiniz dokümanın faks olarak gönderilebilmesi için, bu format ile birlikte açılmaya ayarlanmış bir uygulamanın kurulu olması gerekiyor. Aynı zamanda bu uygulamanın Shell-Print destekliyor olması gerekiyor. Küçük bir tavsiye; göndereceğiniz formatı açıp yazdıran uygulamayı ne kadar hafif seçerseniz o kadar az kaynak kullanırsınız. Örneğin PDF’te Adobe Acrobat’ın bazen bellekte kaldığına şahit oldum.
  2. Gönderimi yapacak faks sunucusunun normalde aynı makinede olması gibi bir zorunluluk söz konusu değil. Fully-qualified ağ adı sağladığınız sürece bu kodun çalışması beklenir. Ancak ben yaptığım hiç bir denemede farklı sunucuya erişim için gerekli yetki ayarlarını bulamadım. E_ACCESSDENIED hatasından öteye gitmem mümkün olmadı. Büyük ihtimalle RPC tüneli gereken bu uygulama için eğer zorunlu değilseniz çok uğraşmayın derim. Eğer çözümünü bulup yorum olarak postalayan olursa da memnuniyetle yayınlarım.

    Aynı makine üzerine kurulu bir ASP.NET web uygulamasından aynı kodla gönderim yapmak istediğimde yine E_ACCESSDENIED hatası aldım. Impersonation ile sorunu çözmeye muvaffak olamayınca kurulu faksın yetkileri ile ilgilenmeye başladım ve çözüme ulaştım. Windows 2003′te, “Printers and Faxes” üzerinden eriştiğim Faks simgesine çift tıkladığınızda görüntülenen konsoldan “Tools” menüsünden “Fax Service Manager…” seçin.

    Daha sonra açılacak “Microsoft Fax Service Manager” üzerinde, kök “Fax (Local)” yaprağını bulup sağ tık ile “Properties” ekranına erişin ve “Security” sekmesinden, ekleyeceğiniz “NETWORK SERVICE” kullanıcısına yetki verin. Web uygulaması olduğu için bu kullanıcıyı seçtik. Farklı bir uygulama olsa çağıdan kullanıcıyı seçecektik tabi ki. Bu ayardan sonra Windows 2003 üzerinde ASP.NET uygulamam da sorunsuz olarak faks gönderebilmeye başladı. Ancak bu çözümü Windows 7 üzerinde uygulama şansım olmadı, zira “Microsoft Fax Service Manager”a karşılık gelen uygulamayı bulamadım. İhtiyacım olan Windows 2003 olduğu için bu çözüm bana yeterli oldu.

  3. Faksı santral üzerinden çıkacaksanız ve hat alma ön eki kullanıyorsanız, ön ekten sonra çevir sesini beklemek için bir veya daha fazla defa virgül (,) kullanmanız gerekebilir. Kaç virgül kullanacağınızı santralinizin hat verme hızına göre tespit etmelisiniz. Bir virgül yaklaşık 0.5 saniye beklemeye sebep oluyor. Yani çevirdiğiniz faks numarası sonuç olarak (prefixiniz 9 ise) 9,,,4445566 gibi olmalı. Bu örnek yaklaşık 1.5 saniye hat bekleyecektir.
  4. Alıcı ve gönderici isimlerinin gönderi üzerinde çıkıp çıkmaması, hem sizin fax-modem kartınıza, hem de alıcı cihazın özelliklerin bağlı. İki bilgi de çıktıya eklenebileceği gibi ikisi de görünmeyebilir.
  5. Faks nesnesinde benim burada değinmediğim daha bir çok seçenek mevcut (kapak sayfasından alıcı/gönderici detay bilgilerine kadar). Bunları da gözden geçirmenizi tavsiye ederim.

Son olarak belirtmek istediğim bir nokta var. Normalde fax server’a faksı basmak senkron bir işlem değil. Asenkron olarak komut basılıp geçiyor. Ancak uygulamalarımda şunu gördüm ki; faks servisinin durumuna, dokümanın büyüklüğüne vb. göre faks’ın kuyruğa basılması kimi zaman bir kaç saniyeyi geçebiliyor. Bu yüzden uygulamalarda faks gönderimini (işlem unattanded gerçekleşecekse) doğrudan yapmak, uygulamanın yavaşlamasına ve web uygulamlarının zaman aşımına düşmesine sebep olabilir. Bunun önüne geçmek için bir Windows servis veya periyodik çalışacak bir konsol uygulaması geliştirmeyi düşünebilirsiniz.

Müşterimiz için olan uygulamamızda ben bunu tercih ettim. Windows servisin bakım ve idamesi daha zor olduğu için bir konsol uygulaması yapıp, bunu “Scheduled Job” ile periyodik çalıştırıp bir dizinde çekilecek faksları tarayıp göndermeyi tercih ettim. Size de tavsiyem bu yönde olur.

Umarım siz de yandaki gibi dolu bir faks konsolu giden kutusuna sahip olursunuz.

Herkese keyifli fakslamalar :)

Sordu.com ve Uzman Lobisi

July 22nd, 2010 1 comment

Sordu.com, kardeş şirket Selp’in, sektöre hızlı giren online bireysel danışmanlık sistemi. Kendi sloganıyla “canlı bilgi kaynağı” da diyebiliriz. Eğer bir konuda eğitim verebilecek kadar donanımlı olduğunuzu düşünüyorsanız (iyi düşünmenizi tavsiye ederim, başvurular çok ince elenip sık dokunarak onaylanıyor) Sordu.com üzerinde uzman olmak için başvuruda bulunabilirsiniz. Başvurunuz onaylandıktan sonra, sisteme giriş yapıp, uzman lobisine girerek site kullanıcılarının sizden danışmanlık talep etmesini bekleyebilirsiniz.
Site üzerinde arzu ederseniz, kontenjan sınırı ve zamanı belli eğitimler de planlayabilirsiniz. Bu eğitimleri ve danışmanlığı, kendi belirleyeceğiniz bir tutar üzerinden ücretlendirebilirsiniz.

Bu yazıyı yazmamdaki asıl amaç, kendiminde uzman olduğu sordu.com üzerindeki uzman lobisine erişimde pratik bir yoldan bahsetmek. Sistem üzerinde online olup, danışmanlık isteklerini kabul edebilmek için uzman lobisinde olmanız gerekiyor. Uzman lobisi de bir web sayfası. Tarayıcınız içinde sayfayı açtığınızda kazara kapatma riskiniz olabiliyor. Bunun önüne geçmek için Chromium ve Google Chrome da bulunan “Create application shortcut” özelliğini kullanmak çok pratik bir çözüm oluyor. Bu yöntemle uzman lobisine bir kısayol yaratmak ve ardından sitede login olurken “beni hatırla” seçeneğini seçmek yeterli. Bundan sonra artık isteğinize göre masa üstüne, başlat menüsüne ve/veya başlat çubuğuna yerleştirebileceğiniz simgeye yapacağınız tek bir tıklama ile uzman lobisinde oluyorsunuz.

Adım adım ilerlersek (ekran görüntülerini de aşağıda bulabilirsiniz);
1. Önce Sordu.com‘a uzman hesabınızla giriş yapın, giriş yaparken “bu bilgisayarda girişimi hatırla” seçeneğini seçin.
2. Uzman lobisine normal şekilde giriş yapın.
3. Uzman lobisi penceresinin başlığına sağ tıklayıp “Show as tab” seçeneğini seçin.
4. Yeni pencerede “Control the current page” butonuna tıklayıp, “Create application shortcuts…” seçeneğini seçin.
5. Açılan pencereden kısayolun nerede oluşturulmasını istediğinizi seçin.

Bu adımları tamamladıktan sonra kısayol linkine tıkladığınızda lobi ekranınız doğrudan açılacak. Bir defaya mahsus boyutunu istediğiniz gibi ayarladıktan sonra ayarlarınız hep korunacaktır.

Bugüne kadar denemediyseniz hem uzman hem kullanıcı olarak sordu.com‘u tavsiye ederim. Sistem ile ilgili gelişmeleri kendi blogundan takib edebilirsiniz: http://blog.sordu.com. Ayrıca sordu.com, düzenli olarak sistem üzerinde uzman olmakla ilgili ücretsiz online eğitimler düzenliyor. En yakın eğitim 22.07.2010 tarihinde saat 20:00‘de. Eğitime katılım için link: http://sor.io/cR1. Umarım bu yazıyı eğitim saatinden önce okuyup, eğitimi online olarak takip etme şansınız olur.

Uzman olarak kabul edilirseniz de yukarıda yazdıklarımın faydasını göreceğinize eminim…