Trinder – Chrome клиент для Tinder

Наверное, многие видели приложение Tinder. Не секрет, что с ПК им пользоваться нельзя, а есть только мобильная версия.

В развлекательных целях сделал Chrome-extension Trinder для этих целей: Chrome Webstore и GitHub.

В процессе научился перехватывать SSL-трафик с Android-устройства чтобы выяснить интерфейс REST-api у Tinder. Знаю, что есть отладочные прокси, например Fiddler, но это мне показалось слишком частным случаем и хотелось уметь перехватывать именно SSL-траффик (в том числе и HTTPS).

Если кратко, то алгоритм перехвата SSL следующий:

  1. Android-устройство и ПК с Linux должны быть в одной WiFi-сети и должны быть видны друг другу. Предположим, что ПК имеет IP-адрес 192.168.0.100, а Android – 192.168.0.105.
  2. Сгенерировать CA-сертификат, которым будет шифроваться SSL-трафик.
    openssl genrsa -out ca.key 4096
    openssl req -new -x509 -key ca.key -out ca.crt
  3. Рутовать Android-девайс чтобы закинуть сертификат.
  4. Установить сертификат на Android-устройство, как описано тут в разделах creating и importing (пересохранить со специальным именем и закинуть в /system/etc/security/cacerts/). После этого на девайсе сертификат должен появиться в списке корневых сертификатов.
  5. На устройстве Android в настройках сети выключить DHCP и прописать параметры сети руками. В поле “Адрес шлюза” установить адрес ПК – в нашем случае 192.168.0.100, в поле DNS-сервер – любой публичный DNS-сервер, например, 8.8.8.8.
    В этот момент интернет на Android устройстве перестанет работать.
  6. На ПК собрать/установить/заполучить програму SSLSplit. Под Archlinux я не встретил каких либо проблем. На OS X потребовалось поставить дополнительно libevent2.
  7. На ПК с Linux включить форвардинг пакетов, настроить MASQUERADE в iptables и запустить SSLSplit. После этого интернет на Android-устройстве должен снова заработать. А все соединения будут логироваться на ПК.
    Если ПК с Linux нет, то же самое можно настроить и в OSX.
    Если и OS X нет, то можно настроить, например, на OpenVPN сервере.

    sudo bash -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'
    sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
    sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8443
    sudo iptables -t nat -A PREROUTING -s 192.168.0.105 -j MASQUERADE
    ./sslsplit -D -l connections.log -S connections/ -k ca.key -c ca.cer http 0.0.0.0 8080 https 0.0.0.0 8443
    

    И в директории connections будет полная история соединений с данными.

Leave a Reply

Your email address will not be published.