Bu makale, yazarın Lyft bisikletlerini uzaktan açmak için gerçekleştirdiği tersine mühendislik sürecini detaylandırıyor. San Francisco'da bisiklet bulmakta zorlanan yazar, Lyft'in özel API'sini çözmek ve SSL şifrelemesini aşmak için bir ay harcadı. Süreç, iOS uygulamasının şifreli trafiğini yakalamak, değiştirilmiş kilit açma isteğini tekrar oynatmak ve bisiklet ID'lerini kaba kuvvetle bulmak gibi adımları içeriyor.
Yazar, Charles Proxy kullanarak iPhone'daki Lyft uygulamasından giden istekleri yakaladı. Charles'ın SSL Proxying özelliği sayesinde, geçici sertifikalar enjekte edilerek şifreli trafik çözüldü ve okunabilir hale geldi. Yakalanan trafikten, bisiklet kiralama isteğinin https://layer.bicyclesharing.net/mobile/v2/fgb/rent adresine yapılan bir POST isteği olduğu, api-key, authorization başlıkları ve userLocation, qrCode (bisiklet ID'sini içeren) gibi veri alanları olduğu anlaşıldı. Bu bilgilerle, yazar basit bir Python betiği kullanarak isteği yeniden oynatabildi.
Bisiklet ID'leri uzaktan erişilebilir olmadığından, yazar kaba kuvvet (brute-force) yöntemine başvurdu. Beş haneli ID'lerin genellikle 10000 ile 20000 arasında olduğunu tespit eden yazar, başlangıçta 10.000 ID'yi denemek için yaklaşık 3 saat süren bir betik geliştirdi. Ancak, asyncio ve aiohttp kütüphanelerini kullanarak bu süreyi yaklaşık 15 saniyeye indirmeyi başardı. Bu sayede, yazar coğrafi kısıtlamaları aşarak bisikletleri uzaktan kiralayabildi ve hatta bu durumdan bir miktar kâr elde etti.
Bu çalışma, bir uygulamanın güvenlik mekanizmalarının nasıl aşılabileceğini ve API'lerin tersine mühendislikle nasıl kullanılabileceğini gösteriyor.