(Nie)oficjalna aplikacja Habr - HabrApp 2.0: uzyskiwanie dostępu

Przeglądam jeden leniwy i już dość nudny wieczór фициальное Aplikacja Habr, po raz kolejny zginałem palce, po jednym dla każdej niedziałającej funkcji. Tutaj na przykład nie można komentować, tutaj odmawia się prawa do głosowania i w ogóle, dlaczego formuły nie są widoczne na ekranie?

(Nie)oficjalna aplikacja Habr - HabrApp 2.0: uzyskiwanie dostępu
Zdecydowano: potrzebowaliśmy czegoś wygodnego, przyjemnego, czegoś własnego. A co powiesz na własną aplikację dla Habr?
Pozwól, że dam ci kilka zrzutów ekranu, aby zrozumieć sytuację.

(Nie)oficjalna aplikacja Habr - HabrApp 2.0: uzyskiwanie dostępuJakoś tak to wygląda to - z. aplikacja habr.com

Lista „niedogodności”

  • Nie możesz ocenić publikacji, której ocena jest różna od 0
  • Nie zawsze można napisać komentarz
  • Sondaże nie działają
  • Formuły nie są widoczne w ciemnym motywie (czarny na czarnym)
  • Nie wszystkie zakładki są dostępne

Tak, aplikacja nie była aktualizowana od sierpnia ubiegłego roku, ale nadal jest źle. Generalnie trzeba to naprawić.

Część pierwsza. Szukam dostępu.

Szybkie zapytanie Google „habrahabr API” mówi, że jest już dość przestarzały magazyn na Githubie, od tego czasu nieaktualizowany Listopada 21 2016, i to przez chwilę dwa i pół roku.

Ignorując fakt, że jest to PHP, przewiń w dół i przeczytaj:

Pobieranie identyfikatora aplikacji

Wykorzystując ten formularz na Habrahabr trzeba krótko opisać istotę nowej aplikacji i cel, do jakiego potrzebuje API.

Nie ma wątpliwości, że jeśli potrzebujesz dostępu, to go potrzebujesz. Piszemy list (w skrócie):

List

Istnieje chęć zrobienia aplikacji dla Habr w oparciu o PWA. Jest tego kilka powodów. 

Pierwsza i najbardziej oczywista: aplikacja na Androida nie spełnia moich osobistych wymagań.

Po drugie: nie ma wystarczającej liczby natywnych powiadomień o wszelkiego rodzaju rzeczach, które zwykle przychodzą e-mailem (na przykład komentarze).

Po trzecie: osobiste zestawienie (jako perspektywy) osób/centrów, które mnie interesują, biorąc pod uwagę moje zainteresowania.

Odpowiedź oczywiście nie była zbyt przyjemna, ale przynajmniej szczera:

Niestety, dostęp do naszego API nie jest aktualnie dostępny. Planujemy wznowić zapewnianie dostępu po zakończeniu prac nad interfejsem API, ale nie znamy jeszcze dokładnych dat, ponieważ Obecnie jesteśmy zajęci rozwiązywaniem innych priorytetowych zadań.

"Dobra, nie ma problemu! Wymyślimy coś!” - powiedziałem sobie i zacząłem szukać.

Część druga. Głębokie wykopaliska.

W oparciu o logikę, jeśli aplikacja jest uruchomiona, ma dostęp do interfejsu API i jest na stałe połączona z aplikacją. Przeanalizujmy.

Ponieważ mamy do czynienia z ruchem, Wireshark jest naszym wyborem. Nie bez pewnych trudów, po podłączeniu telefonu do Internetu za pośrednictwem komputera stacjonarnego, otwieramy aplikację i przeglądamy żądania:

(Nie)oficjalna aplikacja Habr - HabrApp 2.0: uzyskiwanie dostępu
Jasne, że nic nie jest jasne

Tak, wszystko jest szyfrowane, ale nie chcę mieszać się z kryptografią. Następnie musisz zajrzeć do samej aplikacji.

Zdekompilowano . Apk, zacznijmy szukać. Czego potrzebuje każde API? Prawidłowy, Punkt końcowy, miejsce, do którego trafiają wszystkie prośby. Prawdopodobnie jest to http(s), spróbujmy znaleźć „https://”:

W pliku AuthLinkManager.smali znaleźliśmy

.field OAUTH:Ljava/lang/String; = "https://habrahabr.ru/auth/o/%s/"
.field OAUTH_PARAMS:Ljava/lang/String; = "?client_id=%s&response_type=token&redirect_uri=%s"
.field OAUTH_REDIRECT_URL:Ljava/lang/String; = "http://cleverpumpkin.ru"

To jest kod maszyny wirtualnej Androida (Maszyna wirtualna Dalvik), niezbyt zrozumiałe dla ludzi, ale wciąż dość pouczające. Te trzy stałe sądząc po ich zawartości i nazwie oraz repozytorium GitHub, służą do żądania tokena dostępu metodą GET.

Spójrzmy dalej. Plik, który pojawi się jako następny w wyszukiwaniu to NetworkModule.smali:

const-string v0, "https://habr.com/api/v1/"

A tu jest miejsce, w którym możesz przekazać swoje prośby!

Aby samodzielnie napisany klient działał poprawnie, pozostaje tylko jedna rzecz do ustalenia - client_id, który najprawdopodobniej jest unikalnym identyfikatorem aplikacji.

Poszukiwanie tego tekstu w kodzie źródłowym nie doprowadziło jednak do znalezienia istotnych informacji...

Ale nagle w jednym z plików moje oczy dostrzegły kilka interesujących linijek:

const-string p8, "log-tag"
invoke-static {p8, p2}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I

Jak możesz zrozumieć, jest to wpis w dzienniku. Ale nagrywanie czego?

Część trzecia. To są logi!

Używamy adb logcat aby wyświetlić dzienniki aplikacji.

(Nie)oficjalna aplikacja Habr - HabrApp 2.0: uzyskiwanie dostępu

Nieoczekiwanie logi okazały się jeszcze bardziej szczegółowe niż oczekiwano.

Tutaj mamy nie tylko to, czego potrzebujemy client_idAle token użytkownik/aplikacja oraz login и hasło zwykłym tekstem!

Niektóre teorie spiskoweSama obecność loginu i hasła w logach niczemu nie szkodzi, ponieważ logi te można odczytać tylko z uprawnieniami roota lub połączeniem poprzez adb. Jednak ze względu na fakt, że wśród osób czytających Habr są programiści Androida, którzy mogą mieć włączone debugowanie, staje się to problemem.

W takim przypadku „darmowe ładowanie” na lotnisku może skutkować kradzieżą konta, ale komu to potrzebne?
Z tych dzienników możemy wyodrębnić:

  • client_id и apikeywymagane do uzyskania dostępu api;
  • Adres URL autoryzacji użytkownika (dziwne, ale w repozytorium nie ma nic na temat tej metody, może nie jest podany?)

Tak to się stało. Na podstawie tego maleńkiego badania trwają już prace nad małym projektem - naszym własnym wdrożeniem aplikacji mobilnej. Proszę tych, którzy chcą pomóc, o napisanie wiadomości, a pozostałych - o oddanie głosu (bo chcę zrozumieć, czy komukolwiek to jest potrzebne).

Dziękuję za uwagę!

W ankiecie mogą brać udział tylko zarejestrowani użytkownicy. Zaloguj się, Proszę.

Korzystasz z aplikacji mobilnej Habr?

  • Tak, używam, jestem zadowolony

  • Tak, korzystam, aplikacja powoduje niedogodności

  • Nie, korzystam z wersji internetowej na telefonie

  • Nie, używam Habr z mojego komputera

Głosowało 357 użytkowników. 30 użytkowników wstrzymało się od głosu.

Źródło: www.habr.com

Dodaj komentarz