.NET kullanarak WhatsApp’dan mesaj göndermek

Aşağıdaki yazıyı 2014 Haziranında yazmıştım. O zamanlar bu yazıdaki yöntemi kullanarak WhatsApp protokolünden mesaj gönderebiliyorduk. Ama yöntemin sahibi venomous0x isimli github kullanıcısının DMCA ile başı derde girdiğinden repo’sunu kaldırdı. Muhtemelen yöntem artık çalışmıyordur ama kendime hatırat olsun diye silmiyorum. Yine de ısrarla çalışan bir kod arayan arkadaşları şöyle alalım. ;)

500 Milyona yakın aktif kullanıcısı olan WhatsApp iletişim için XMPP protokolünün özelleşmiş bir şeklini kullanıyor. Günde 50 milyardan fazla mesaj hacmi olan uygulamada, 2011 yılında client ile server arasındaki iletişimin şifrelenmiş olmadığı ortaya çıkmıştı. 2012'de, giderdikleri bu açığın yerine daha büyük bir açık koydular. Artık bir başkasının yerine kimlik doğrulayabiliyor ve uygulama fonksiyonlarını çalıştırabiliyoruz.

Mart 2014'deki DMCA’nın telif ihlali bildirisi ‘nden de anlaşılacağı üzere, ciddi güvenlik problemleri olan bu popüler uygulama, bugün haklarını hukuki yollarla arıyor.

Ben bu yazımda .NET kullanarak, kendi WhatsApp hesabınızdan nasıl mesaj gönderebileceğimizi anlatacağım.

WhatsApp şifresini edinme

WhatsApp her aktivasyon işleminde bir şifre oluşturur. Bir kişinin kimliğini kullanarak mesaj göndermek için bu şifreyi bilmek zorundayız.(Ya da yeni bir numara ile register işlemi yapabilirsiniz.) Bu şifreyi edinebilmek için aktivasyon sürecini sniff etmeliyiz. Sağolsun Max Kovaljov isimli vatandaşın yazdığı MissVenom ,Wireshark kullanmadan basitçe şifreyi edinebilmemizi sağlıyor.

  1. Buradan MissVenom programını indirin.
  2. Mobil cihazınızı bilgisayarınızla aynı kablosuz ağa bağlayın.
  3. 443 nolu portun kullanılmadığından emin olun. 
    *Bunu `netstat -a` komutu ile ya da TCPView programı ile kontrol edebilirsiniz. IIS, Skype ya da Dropbox kullanıyor olabilir.*
  4. Mobil cihazınızda WhatsApp programından çıkış yapın. 
    *IOS için WhatsApp->Settings->Account->Delete My Account*
  5. MissVenom programını çalıştırın. Hata vermediğine emin olun.
  6. Mobil cihazınızın DNSine MissVenom programının belirttiği ip’yi giriniz.
    *IOS için Settings->Wifi->[Ağ ismi]->DHCP->DNS*
  7. Mobil cihazınızın browser’ı ile https://cert.whatsapp.net adresini açarak root sertifikasını kurun.
  8. Şimdi mobil cihazınızla tekrar WhatsApp’a register olun.
  9. MissVenom programında `FOUND PASSWORD!: z*********************=` gibi bir ibare belirecek. Bu şifre WhatsApp şifresi oluyor. Bir kenara not edin, bir sonraki aşamada kullanacağız.

NET kullanarak mesaj gönderme

Artık kod kısmı için hazırız. WhatsApp’dan mesaj atabilmek için öncelikle WhatsApi kütüphanesini kullanan WhatsApiNet isimli projeyi bilgisayarımıza indirip build ediyoruz. Ardından WhatsAppApi->bin altındaki WhatsAppApi.dll kütüphanesini projemizin referanslarına ekliyoruz.
Basitçe ilk mesajınızı atmak için aşağıdaki kodu kullanabilirsiniz.

Tel No alanları alan kodu ile (TR için 90) başlamalı. Nick kısımları ise önemsiz, istediğiniz herşeyi yazabilirsiniz. Bir de projenizde kullanırken her seferinde yeni socket oluşturmamak için WhatsApp objesini singleton kullanmanız faydalı olabilir. Bunun dışında kodda açıklanacak birşey yok.

Diğer fonksiyonlar

WhatsApiNet kütüphanesi birçok eventi de beraberinde getiriyor. Örneğin OnGetMessageReceivedClient eventi ile alıcıya mesajınızın iletilip iletilmediğini anlayabilirsiniz.

WhatsApi event listesine https://github.com/shirioko/WhatsAPI/wiki/WhatsApi-events linkinden ulaşabilirsiniz. İyi bir dökümantasyon olmasa da kurcalayarak öğrenmek gayet basit duruyor.

Kolay gelsin.

Bu yazıyı bilgilendirme amaçlı yazdım.Nitekim burada anlatılanları bir production ortamında kullanmanın illegal olduğu aşikar. Kullanmayınız efenim!