Ortadaki adam saldırısı

Bildiğiniz üzere internete bağlanmak için arada bir sürü adımlar, bir sürü zıplamalar var. Bu adımların/taleplerin arasına kötü niyetli insanlar girebilir. Hatta siz bile girebilirsiniz. Manyak mısın lan? Ben ne istediğimi dünyadan ne talep ettiğimi biliyorum diyor olabilirsiniz. Fakat diyelim Tinder uygulaması seviyorsunuz. Ama tuvalette insanları tek tek beğenmek yerine, ya bi uygulama olsa da tüm kızları bi hamlede beğensek diyorsunuz. Doğru yerdesiniz.

Bunun için önce Tinder uygulamanın olduğu bir “Smart”phone’unuzun olması lazım. Ben yine zengin taraftan yürüyüp iPhone üzerinden örnekleyeceğim. (Daha ne kadar zenginim kızlar espirisi yapacağım bilmiyorum.)

Sonra bir vekil (Proxy, Türkçesi hiç olmamış bunun) uygulamasına ihtiyacınız var. Bunu pahalı MacBook’umuza kuruyoruz. Benim tercihim Charles Proxy uygulaması.

Sağ panelde yapılan HTTP talepleri, sol da ise bu taleplerin detayları mevcut. Lakin bizim isteğimiz bilgisayarımızı değil de, telefonumuzu dinlemek.

O yüzden ilk yapmanız gerek şey macOS proxy seçeneğini iptal etmek.

Şekil A:

Sonra yine Şekil A da görünen süpürgeye tıklayarak eski talepleri temizleyebilirsiniz. (Temizlik imandan gelir)

Sonra yine Şekil A daki “SSL Proxying Settings…” e tıklayıp;

“Enable SSL Proxying” seçeneğini aktif edin. Sonra “Add” düğmesine basıp yeni bir alan eklemeliyiz. Bu alanı “*” olarak belirleyince tüm bağlantılar için aktif etmiş oluyoruz.

Sonraki adım da iPhone’umuzun bilgisayarımız ile aynı ağa bağlı olduğuna emin olun. Bunu bağlantı ayarlarından kontrol edebilirsiniz. Hazır ordayken o yerel IP adresinizi de bir yere kaydedin.

Sonra iPhone’umuzdan bu IP’yi vekil atamamız gerekiyor.

 

Simdi de http://www.charlesproxy.com/getssl/ adresine girip SSL sertifikasini kurmamiz gerekli.

 

Hazırlıklar bittikten sonra artık Charles uygulamasına dönebiliriz. Kaydet tuşuna basıp (Kırmızı düğme), iPhone’dan da Tinder uygulamasını açıp trafiği dinlemeye başlayabiliriz. Yeterince dinledikten sonra kaydetmeyi bırakıp incelemeye başlayalım.

Bu sırada çok fazla talep olmuş fakat kafamızı kullanarak bize gerekli olanları ayırmamız gerekli.

Mesela yukarıdaki şekilde görünen adres ilgi çekici geliyor. (Bilerek adresi yazmıyorumki tinder polisi evi basmasın)

Hm auth login falan, sanırsam bu şekilde giriş yapıyoruz. https://api.gotinder.com/v2/auth/login/accountkit (ACAB!)

Şimdi v2/activity/feed neymiş onu çözelim. Sanki profilimizi çevrim içi yapan ya da çevrim içi tutan bir şey. Header kısmında da login cevabından dönen token ı alıyor.

Sonra tekrar proxy’imizi açıp uygulamayı tekrar kullanmaya çalışalım. Bir kaç kişiyi sağa sola çekelim falan…

Hop o da ne! /v2/recs diye bir şek çıktı. Recs dediği belki recommended olabilir belki de records dur. İçeriğe baktığımızda JSON olarak bize kullanıcı detayları veriyor. Bu ablanın adı “Rose” muş doğum tarihi falan her şey var.

Hadi bir python script yazıp bu talepleri çalıştırabilecek miyiz bakalım.

import requests
import json
import time
import sqlite3
import os

# Charles proxyden ogrendigimiz tokenlar ve idler
refresh_token = "X"
ID = "X"
client_version = "X"
token = "X"

def login():
    url = "https://api.gotinder.com/v2/auth/login/accountkit"
    headers = {
        "Content-type":"application/json",
        "Accept":"*.*",
        "app-version":"2585",
        "x-client-version":"10000102",
        "Accept-Language":"en-GB;q=1, de-DE;q=0.9, en-DE;q=0.8, tr-DE;q=0.7, zh-Hans-DE;q=0.6",
        "Accept-Encoding":"br, gzip, deflate",
        "platform":"ios",
        "appsflyer-id":"1517423376246-2922211",
        "install-id":"X", # bu da sanirsam her telefona ozel bir sey. Kendi ID nizi kendiniz bulun!
        "User-Agent":"Tinder/10.0.1 (iPhone; iOS 11.2.5; Scale/2.00)",
        "os_version":"110000200005",
    }
    data = {"refresh_token":refresh_token,"id":ID,"client_version":client_version,"token":token}
    r = requests.post(url, data=json.dumps(data), headers=headers)
    return json.loads(r.text)


def feed(token):
    #nextToken da charles proxyden bulunuyor.
    url = "https://api.gotinder.com/v2/activity/feed/count?nextToken=XXXXXX&eventTypes=39"
    headers = {
        "X-Auth-Token":token,
        "Accept":"*.*",
        "Connection":"keep-alive",
        "platform":"ios",
        "os_version":"110000200005",
        "x-client-version":"10000102",
        "User-Agent":"Tinder/10.0.1 (iPhone; iOS 11.2.5; Scale/2.00)",
        "Accept-Language":"en-gb",
        "app-version":"2585",    
    }
    r = requests.get(url,headers=headers)
    return json.loads(r.text)

def recs(token):
    url = "https://api.gotinder.com/v2/recs/core?fast_match=1&locale=en-GB" 
    headers = {
        "Authorization":"Token token="+token,
        "x-client-version":"10000102",
        "app-version":"2585",
        "Accept-Language":"en-gb",
        "Accept-Encoding":"br, gzip, deflate",
        "platform":"ios",
        "appsflyer-id":"1517423376246-2922211",
        "install-id":"X", # bu da sanirsam her telefona ozel bir sey. Kendi ID nizi kendiniz bulun!
        "User-Agent":"Tinder/10.0.1 (iPhone; iOS 11.2.5; Scale/2.00)",
        "os_version":"110000200005",
        "Connection":"keep-alive",
        "X-Auth-Token":token
    }
    r = requests.get(url,headers=headers)
    return json.loads(r.text)

login_response = login()
print(login_response)
api_token = login_response["data"]["api_token"]

feed_response = feed(api_token)
print(feed_response)
recs_response = recs(api_token)
print(recs_response)

 

Hohoho!

GET /like/XXXX?content_hash=XXXX&s_number=XXX

Kullanıcı beğenme scripti de size ödev olsun. Loopa alıp alıp beğenirsiniz. Öptüm

 

Leave a Reply