Bir belediye uygulamasının anatomisi ve tersine mühendislik!

Bu açık bulma ve açığı bildirme işlerinden az buçuk paralar elde edebilirsin. İyi bir aktivite olur.
İzmirim Kart kısmını da "kopyaladım". Aslında açıktan ziyade uygulamanın altyapısını kullanmak, herhangi bir kullanıcı bilgisi elde edilemiyor. Ancak mesela İzmirim Kart'tan yapılan son harcamaları vs. görebiliyorsunuz kartın numarasını belirterek. Belirtebileceğim düzgün bir yer olarak ESHOT'un sitesi var sanırım.

1676633673727.png


Mesajınız için minnettarım.

Son harcanan tarih, bakiye, son harcama miktarı, kart tipi (öğrenci vs.) görülebiliyor.
 
İzmirim Kart kısmını da "kopyaladım". Aslında açıktan ziyade uygulamanın altyapısını kullanmak, herhangi bir kullanıcı bilgisi elde edilemiyor. Ancak mesela İzmirim Kart'tan yapılan son harcamaları vs. görebiliyorsunuz kartın numarasını belirterek. Belirtebileceğim düzgün bir yer olarak ESHOT'un sitesi var sanırım.

Eki Görüntüle 1672078

Mesajınız için minnettarım.

Son harcanan tarih, bakiye, son harcama miktarı, kart tipi (öğrenci vs.) görülebiliyor.
Ne demek, forumlar bunun için değil mi?
 
İzmirim Kart kısmını da "kopyaladım". Aslında açıktan ziyade uygulamanın altyapısını kullanmak, herhangi bir kullanıcı bilgisi elde edilemiyor. Ancak mesela İzmirim Kart'tan yapılan son harcamaları vs. görebiliyorsunuz kartın numarasını belirterek. Belirtebileceğim düzgün bir yer olarak ESHOT'un sitesi var sanırım.

Eki Görüntüle 1672078

Mesajınız için minnettarım.

Son harcanan tarih, bakiye, son harcama miktarı, kart tipi (öğrenci vs.) görülebiliyor.
Hocam belediyeler genelde uygulamalarını özel şirketlere ihale şeklinde yaptırıyor. Aslında kendileri açıkça API sunsa güzel olurmuş.
 
Emegine saglik guzel calisma ama kod seviyesinde reverse engineering sanirim uygulanmamis. Sadece gelen giden istekler incelenmis.
Bu açık bulma ve açığı bildirme işlerinden az buçuk paralar elde edebilirsin. İyi bir aktivite olur.
Herhangi bir guvenlik acigi soz konusu degil.
 
Proxyman ile belediye uygulamalarını kullanmak çok hoş oluyor, ne kadar güvensiz inşa edildiklerini görebiliyorsunuz. Eğer hatam yoksa 24 saatlik tokenlar ile otobüslerin koordinatları veriliyor, 24 saat aralıkla da kafanıza göre yeni token alabiliyorsunuz. Bunu otomatikleştirip kendi sunucunuzda bir kopya API oluşturarak belediyenizin servislerinden yararlanabiliyorsunuz. Ahoy! 🏴‍☠️

Nasıl yaptığıma gelirsek, Mac'te iPad destekleyen bazı uygulamalar indirilebilir oluyor, M1'den dolayı. Bu uygulama da onlardan birisiydi, indirip oynamaya başladım.

Eki Görüntüle 1665673
Öncelikle "uygulamaurli/token" adresine bir istek gönderiliyor, 86399 saniye (24 saat'e denk gelmekte.) süreniz oluyor. Masa 13'ü 24 saatlik açtırmış oluyorsunuz 😉
Zaten 24 saat sonra işe yaramayacak bur token, dolayısıyla 24 saatte bir token almanız gerek. O token'ı almak için de bu gönderilen isteği kopyalayıp 24 saatte bir tekrar göndermeniz yeterli.

Her cihaza özel bir ID var anladığım kadarıyla, onunla gönderiyorsunuz. Ardından, "access_token" özelliğini kopyalayıp dilediğiniz işlemi gerçekleştirmeye devam edebiliyorsunuz.

Örneğin, bir otobüs durağına yaklaşan otobüsleri görmek için "uygulamaurli/api/YaklasanOtobusler/duraknumarası" şeklinde bir istek gönderiliyor. Durak numarasını kontrol etmek için "uygulamaurli/api/DurakAra/duraknumarası" şeklinde istek gönderiliyor ve o durak var mı yok mu emin oluyor uygulama. Bu "duraknumarası" dediğim alan şehirdeki otobüs duraklarındaki tabelalarda yazan 5 haneli bir numara, örneğin 20063, Karşıyaka'daki bir durağa denk geliyor. "duraknumarası" yerine 20063 giriyoruz ve "access_token"ımızla bu işlemi rahatça gerçekleştiriyoruz. Ancak unutmayın, bunu otomatik yenilemeniz gerek. Her token 1 gün sürelendirilmiş. Ardından reddedileceksinizdir.
Eki Görüntüle 1665684
Örneğin bu, duraktan geçen otobüs numaraları, durak koordinatları, durak numarası, durak adı gibi bilgileri görüyoruz ve bu durağın varlığından emin oluyoruz.

Şimdi, zurnanın "ZART!" dediği yere geliyoruz!..

Size anlattığım şeyler zaten İzmir belediyesinin Açık Veri projesi portalı ile sunduğu şeylerdi. Bu verileri kullanarak hazırladığım uygulamaya GitHub - efe3535/eshot-react-native: Izmir'deki otobus duraklarini arayabilen, konuma en yakin duragi bulabilen bir mobil uygulama. linkinden ulaşmanız mümkün, bu açık veri servisinin nasıl çalıştığını inceleyebileceğiniz dökümanı da bırakıyorum:

Zurnanı zart dediği yer şu, açık veri kısmında gerçek zamanlı olarak otobüslerin bulunduğu koordinatlar yani resimde gördüğünüz:
Eki Görüntüle 1665686
Bunlar bulunmuyor, bunları belli aralıklarla çekerek uygulamanızda oluşturduğunuz haritada otobüslerin konumlarını gösterebilirsiniz.

Bir diğer Açık Veri portalında bulunmayan özellik ise ilgili durağa otobüsün gelmesine kaç durak olduğu. Bu bilgi de bulunmuyor Açık Veri'de.

Ayrıca, bir uygulama üzerinden eklenen İzmirimkart bakiyesini görebiliyorsunuz, fakat bunu paylaşmam uygun olmayacaktır.

Şu anda üzerinde çalışıyorum bunların, biraz daha fikir sahibi olup 24 saatten uzun bir süre (token muhabbeti) test ettikten sonra bunları belediye ile paylaşacağım, sitedeki öneri / şikayet kısmından.

Buraya kadar gelen varsa; gözlerine sağlık, teşekkürler. Okuduğunuz için teşekkür ederim.
Android uygulaması yapabilme şansınız var mıdır?
 
Hocam Adana Büyükşehir Belediyesi'nin uygulaması için de yapabilir misininiz? Siz böyle anlatınca reverse engineering'i merak etmedim değil. :D
 
Ben de Kayseri Ulaşım üzerinde çalışmaya çalışıyorum ancak başarısız oldum. Proxy sunucusu olarak Mitm'i bilgisayarımda çalıştırdım ve Android telefonumda proxy'i bilgisayarım olarak ayarladım. mitim.it kısmından sertifikayı da kurdum. Ancak uygulamadaki sayfa bomboş ve ekrandaki istekleri kontrol ettiğimde "client disconnected" yazıyor.

Sanırım sebebi Kayseri Ulaşım yalnızca belediyenin güvendiği sertifikalara güveniyor.
 

Technopat Haberler

Yeni konular

Geri
Yukarı