Yeni
Yükleniyor..

Who Am I

Merhaba Hoşgeldiniz ben İbrahim Gültepe Yazılım ve Siber Güvenlik uzmanıyım bu bloğu açmamdaki neden C# eğitimi ve güncel olan virüs donanım sorunlarını çözmek ve sizinde yapabileceğiniz hack çalışmalarını öğretmek.

Android Mesajlarınızı Bilgisayarda Cevaplayıp Görüntülenmesi



Şimdi burada yapacağımız işlem şudur, iphone macbook kullanıcıları bilir, iphone ile mac i birbirine senkronize ettiğinizde iphone unuza gelen sms leri macbook üzerinden cevaplayabilirsiniz.

Bende geçen gece otururken neden android kullanıcılarıda aynısını yapamasın demiştim, özellikle pc de işlerimizle ilgilenirken sürekli telefona bakmak can sıkıcı olabiliyor.

Bende bunun için en kolay yöntem olan python (qpython3) ile telefonda ufak bir script yazdım , bilgisayarda da bunu karşılayacak başka bir script yazdım. Aslında deneme amaçlı yaptığım için sms gönderme ve alma işlemlerini ayrı ayrı scriptlerde yaptım , birleştirecektim fakat birleştirmedim sebebini birazdan anlatacağım.

Öncelikle projede yaptığımız işlem şu , android uygulaması yazan arkadaşlar bilir , sms - arama - alarm vs gibi işlemleri dinlemek için androidin broadcast listener ı vardır. Bu sınıfı extend edip amacınıza göre kullanırsınız. Ama maalesef python için böyle bir şey yok, pythonda anlık olarak gelme bilgisini alamıyorsunuz , bunu farklı bir yolla çözdüm.

Ama pythonun bu işlem için eksik kalmasının tek sebebi bu da değil , android 6 dan kaynaklanıyor olsa gerek , sms i okundu olarak işaretleyemiyoruz , aslında bunun fonksiyonu var fakat çalışmıyor.
Ve bir diğer eksik ise gene android 6 dan kaynaklı ''olabilir'' python scriptini backgroundda çalışıtramıyoruz , console ekranı açık kalmak zorunda ki bu da istenmeyecek bir durum.

Bunlar dışında bütün işlemi bilgisayarınızdan yaparken ,telefonunuzun ekranıda console açık olması sizler için pekte sorun olmayabilir.

Şimdi gelelim programın çalışma mantığına :

- Python scripti ''okunmamış sms sayısını'' sonsuz bir döngüde kontrol ediyor, eğer okunmamış sms sayısı 0 dan büyük olursa socket bağlantısı kurarak bu sms i pc ye gönderiyor

- Sms i okundu olarak işaretleyemediğimizden dolayı sürekli aynı sms i pc ye göndermemek için pc ye gönderdiğimiz sms in id sini bir dizide tutuyoruz ve eğer döngüde kontrol edilen sms id si bu dizide yoksa sms i pc ye gönderiyoruz.

(Bu yazıyı yazarken scripti biraz daha geliştirdim, gönderme ve alma işlemini tek scriptte hallettim aslında bu işlemi size bırakacaktım fakat basit anlamda thread kullanımınıda göstermiş olayım)
- Scriptimiz 2 parça olacak, sms gönderme işlevini yapan, ve sms alma işlevini yapan şeklinde.

Şimdi gelelim scriptimizin parça parça kodlanmasına :

-----ANDROID TELEFONUMUZDA Kİ KISIM-----

öncelikle gerekli kütüphanelerimizi import ediyoruz ve android nesnemizi oluşturuyoruz

Kod:
import android , socket, threading ,json

droid = android.Android()
şimdi bağlanacağımız bilgisayarımızın yerel ağ ip ver port adresini yazıyoruz client socketimizi oluşturuyoruz

altınada server socketimizi oluşturuyoruz

Kod:
host = '192.168.0.x'
port = 4595

#client (bilgisayara bağlanacak) socketimiz
sock = socket.socket()
sock.connect((host,port))

#server (bilgisayardan sms alacak) socketimiz
server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server.bind(('',2595))
şimdi gelen sms leri bilgisayar gönderirken aynı zamanda bilgisayarımızdan sms alabilmek için bir thread oluşturuyoruz ki işlemimiz kesintiye uğramasın
Kod:
def cevapBekle():
      server.listen(5);
      while True:
            client,address = server.accept()
            gelen = client.recv(1024)
            if gelen:
                  msj = json_dumps(gelen.decode('utf-8'))
                  print('numara : ' + msj['numara'] + ' msj : ' + msj['msj'])
                  droid.smsSend(msj['numara'],msj['msj']);
                  client.close()
şimdi de threadımızı başlatıyoruz
Kod:
threading.Thread(target=cevapBekle)
sıra geldi mesajlarımızı bilgisayar göndermeye. Bunun için öncelikle okunmamış mesajları bulmamız gerekiyor.
Kod:
gelen_id = droid.smsGetMessageIds(True,'inbox') #gelen kutusundaki okunmamış sms lerin id lerini alıyoruz. Eğer False deseydik okunmuş smslerin id lerini alırdık

okunanlar = [] #bir kere bilgisayara gönderdiğimiz sms i tekrar göndermemek için okunan sms lerin listesini bir dizide tutuyoruz

while len(gelen_id) > 0:
       for id in gelen_id:
            if id not in okunanlar:
                  msj = droid.smsGetMessageById(id,['address','body']) #okunmamış sms in gönderen bilgisini ve msj içeriğini alıyoruz
                  sock.sendall(str(msj[1]).encode()) #sms i bilgisayara gönderiyoruz
                  okunanlar.append(id) #sms i okunanlar listesine alıyoruz
Evet arkadaşlar android telefonumuzdan bilgisayarımıza sms leri göndermek için gerekli işlemi hallettik. Şimdi bilgisayarımızdan bu sms leri dinleyecek ve cevap verecek scriptimizi hazırlayalım.

-----Bilgisayar için olan kodlar-----
Sms almak için

Kod:
import socket

s = socket.socket()

port = 4595
#host = socket.gethostname()
host = ''
s.bind((host,port))

s.listen(1)

while True:
 c,addr = s.accept()
 print 'got connection from' , addr
 gelen = c.recv(2048)
 while (gelen):
            print gelen
            gelen = c.recv(2048)
 c.close()
Sms gönderme
Kod:
import socket,json

s = socket.socket()

port = 2595
host = '192.168.0.16'

s.connect((host,port))

cevap = {'numara':'1234','msj':'adsfsadf'}

s.sendall(json.dumps(cevap).encode('utf-8'));
s.close();
Bu kodu açıklama gereği duymuyorum zaten. Bunu parametrik hale getirmeyi size bırakıyorum.



 numarayı gizledim sorun olmaması için

Aslında bu script çok daha geliştirilebilir, örneğin ufak bir gui yapıp telefondaki rehberi oraya gönderip numarayı elle yazmak yerine ufak mouse hareketleriyle bu işlemi yapabilirsiniz.

Ben size yazdığım kodun büyük bir çoğunluğunu veriyorum.

Bende bu uygulamayı android için java ile baştan yazıyorum. Çünkü broadcast listener lazım , socketlerin arkaplanda çalışması için service lazım. Uygulamayı yazıp android markette yayınlayacağım inşaAllah.

Ve bilgisayar için olanı da java ile tekrardan yazacağım, aslında bir kısmını yazdım, notification ekranı ve rehber olayı gibi ayrıntılar kaldı.

Bu scripti python sevenler kullanır, parametrik hale getirebilir rahatlıkla. Hatta sl4a yı birazcık kurcalayarak hali hazırda size verdiğim kodlara bir kaç ekleme yaparak rehberinizdeki numaraları bilgisayar aktarıp ufak bir gui sayesinde notification veya benzeri bir şey uygulayıp rahatlıkla pc den mesajlaşabilirsiniz.

Ayrıca pc ye aktarılan mesajları scripti açıp kapattığınızda kaybolmamsı için ''gonderilenler'' isimli diziyi bir dosyaya kaydedip tekrar okutabilirsiniz.

konu notları : telefonunuz ve bilgisayarınız aynı ağa bağlı olmalıdır, ve ip bilgisine kendi ip nizi yazmalısınız. telefonunuzda bu scripti çalıştırmak için qpython3 yüklü olmalıdır , apk sını internetten rahatlıkla bulabilirsiniz.

Güzel bir eğitim yazısı olduğunu düşünüyorum, artık bilgisayarınızdan sms gönderip alabilirsiniz, hepinize hayırlı olsun.
Google Plus'da Paylaş

Yazar Unknown

Yazar hakkında bilgi yazılacak.
    Blogger Yorumları
    Facebook Yorumları

0 yorum :

Yorum Gönder

Ziyaretçi Sayısı

15.08.2015 den itibaren Toplam 1.982.258 Kişi Tarafından Ziyaret Edildi