(Μη)επίσημη εφαρμογή Habr - HabrApp 2.0: απόκτηση πρόσβασης

Ένα βραδυπέστατο και ήδη αρκετά βαρετό, ξεφυλλίζω επίσημος Εφαρμογή Habr, για άλλη μια φορά λύγισα τα δάχτυλά μου, ένα για κάθε μη λειτουργική λειτουργία. Εδώ για παράδειγμα δεν μπορείς να σχολιάσεις, εδώ σου αρνούνται το δικαίωμα ψήφου και γενικά γιατί δεν φαίνονται οι τύποι στην οθόνη;

(Μη)επίσημη εφαρμογή Habr - HabrApp 2.0: απόκτηση πρόσβασης
Αποφασίστηκε: χρειαζόμασταν κάτι άνετο, ευχάριστο, κάτι δικό μας. Τι γίνεται με τη δική σας αίτηση για το Habr;
Επιτρέψτε μου να σας δώσω μερικά στιγμιότυπα οθόνης για να καταλάβετε την κατάσταση.

(Μη)επίσημη εφαρμογή Habr - HabrApp 2.0: απόκτηση πρόσβασηςΚάπως έτσι μοιάζει αυτό - από. εφαρμογή habr.com

Λίστα με "ενόχληση"

  • Δεν μπορείτε να βαθμολογήσετε μια δημοσίευση της οποίας η βαθμολογία είναι διαφορετική από το 0
  • Δεν είναι πάντα δυνατό να γράψετε ένα σχόλιο
  • Οι δημοσκοπήσεις δεν λειτουργούν
  • Οι τύποι δεν είναι ορατές σε σκούρο θέμα (μαύρο σε μαύρο)
  • Δεν είναι όλοι οι σελιδοδείκτες διαθέσιμοι

Ναι, η εφαρμογή δεν έχει ενημερωθεί από τον περασμένο Αύγουστο, αλλά εξακολουθεί να είναι κακή. Γενικά πρέπει να διορθωθεί.

Μέρος πρώτο. Ψάχνετε για πρόσβαση.

Γρήγορο ερώτημα Google "habrahabr API" λέει ότι είναι ήδη αρκετά ξεπερασμένο αποθήκη στο Github, δεν ενημερώθηκε έκτοτε Νοέμβριος 21 2016, και αυτό, για μια στιγμή, δυόμισι χρόνια.

Αγνοώντας το γεγονός ότι πρόκειται για PHP, μετακινηθείτε προς τα κάτω και διαβάστε:

Λήψη του αναγνωριστικού εφαρμογής

Εκμεταλλεύομαι Αυτή η μορφή στο Habrahabr, πρέπει να περιγράψετε εν συντομία την ουσία της νέας εφαρμογής και τον σκοπό για τον οποίο χρειάζεται ένα API.

Δεν τίθεται θέμα, αν πρέπει να αποκτήσετε πρόσβαση, τότε το χρειάζεστε. Γράφουμε μια επιστολή (συντομογραφία):

Επιστολή

Υπάρχει η επιθυμία να υποβληθεί αίτηση για το Habr με βάση το PWA. Υπάρχουν διάφοροι λόγοι για αυτό. 

Το πρώτο και πιο προφανές: η εφαρμογή Android δεν ανταποκρίνεται στις προσωπικές μου απαιτήσεις.

Δεύτερον: δεν υπάρχουν αρκετές εγγενείς ειδοποιήσεις για όλα τα είδη των πραγμάτων που συνήθως έρχονται μέσω email (σχόλια, για παράδειγμα).

Τρίτον: προσωπικές αναλύσεις (ως προοπτική) για άτομα/κόμβους που με ενδιαφέρουν, λαμβάνοντας υπόψη τα ενδιαφέροντά μου.

Η απάντηση, φυσικά, δεν ήταν πολύ ευχάριστη, αλλά τουλάχιστον ειλικρινής:

Δυστυχώς, η πρόσβαση στο API μας δεν είναι προς το παρόν διαθέσιμη. Σκοπεύουμε να συνεχίσουμε την παροχή πρόσβασης αφού ολοκληρώσουμε την οριστικοποίηση του API, αλλά δεν έχουμε ακόμη ακριβείς ημερομηνίες, επειδή Αυτήν τη στιγμή είμαστε απασχολημένοι με την επίλυση άλλων εργασιών προτεραιότητας.

"Εντάξει κανένα πρόβλημα! Κάτι θα καταλήξουμε!». - είπα στον εαυτό μου και άρχισα να ψάχνω.

Μέρος δεύτερο. Βαθιές ανασκαφές.

Με βάση τη λογική, εάν η εφαρμογή εκτελείται, τότε έχει πρόσβαση στο API και είναι ενσωματωμένη στην εφαρμογή. Ας αναλύσουμε.

Δεδομένου ότι έχουμε να κάνουμε με κίνηση, το Wireshark είναι η επιλογή μας. Όχι χωρίς πόνους, έχοντας συνδέσει το τηλέφωνο στο Διαδίκτυο μέσω επιτραπέζιου υπολογιστή, ανοίγουμε την εφαρμογή και εξετάζουμε τα αιτήματα:

(Μη)επίσημη εφαρμογή Habr - HabrApp 2.0: απόκτηση πρόσβασης
Είναι σαφές ότι τίποτα δεν είναι σαφές

Ναι, όλα είναι κρυπτογραφημένα, αλλά δεν θέλω να μπλέξω με την κρυπτογραφία. Στη συνέχεια, πρέπει να κοιτάξετε μέσα στην ίδια την εφαρμογή.

Απομεταγλωττισμένο .apk, ας αρχίσουμε να ψάχνουμε. Τι χρειάζεται οποιοδήποτε API; Σωστά, καταληκτικό σημείο, το μέρος όπου πηγαίνουν όλα τα αιτήματα. Αυτό είναι πιθανώς http(s), ας προσπαθήσουμε να βρούμε το "https://":

Στο αρχείο AuthLinkManager.smali εύρημα

.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"

Αυτός είναι ο κώδικας για την εικονική μηχανή Android (Dalvik VM), όχι πολύ κατανοητό για τον άνθρωπο, αλλά εξακολουθεί να είναι αρκετά κατατοπιστικό. Αυτές οι τρεις σταθερές, κρίνοντας από το περιεχόμενο και το όνομά τους, καθώς και από το αποθετήριο GitHub, χρησιμοποιούνται για να ζητήσουν ένα διακριτικό πρόσβασης χρησιμοποιώντας τη μέθοδο GET.

Ας δούμε περαιτέρω. Το αρχείο που εμφανίζεται στη συνέχεια στην αναζήτηση είναι NetworkModule.smali:

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

Και εδώ είναι το μέρος που πρέπει να πάτε με τα αιτήματά σας!

Για να λειτουργήσει σωστά ο πελάτης που γράφει ο ίδιος, μένει μόνο ένα πράγμα να καταλάβει - client_id, το οποίο είναι πιθανότατα ένα μοναδικό αναγνωριστικό για την εφαρμογή.

Ωστόσο, η αναζήτηση αυτού του κειμένου στον πηγαίο κώδικα δεν οδήγησε στην εύρεση σχετικών πληροφοριών...

Αλλά ξαφνικά σε ένα από τα αρχεία τα μάτια μου έπιασαν μερικές ενδιαφέρουσες γραμμές:

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

Αυτό, όπως καταλαβαίνετε, είναι μια καταχώρηση αρχείου καταγραφής. Αλλά τι ηχογράφηση;

Μέρος τρίτο. Αυτά είναι τα κούτσουρα!

Χρησιμοποιούμε adb logcat για να δείτε τα αρχεία καταγραφής εφαρμογών.

(Μη)επίσημη εφαρμογή Habr - HabrApp 2.0: απόκτηση πρόσβασης

Απροσδόκητα, τα αρχεία καταγραφής αποδείχθηκαν ακόμη πιο λεπτομερή από το αναμενόμενο.

Εδώ δεν έχουμε μόνο ό,τι χρειαζόμαστε client_idΑλλά token χρήστη/εφαρμογή και σύνδεση и пароль σε απλό κείμενο!

Μερικές θεωρίες συνωμοσίαςΗ απλή παρουσία σύνδεσης και κωδικού πρόσβασης στα αρχεία καταγραφής δεν βλάπτει τίποτα, καθώς αυτά τα αρχεία καταγραφής μπορούν να διαβαστούν μόνο είτε με δικαιώματα root είτε με σύνδεση μέσω adb. Αλλά λόγω του γεγονότος ότι μεταξύ των ανθρώπων που διαβάζουν Habr υπάρχουν προγραμματιστές Android που μπορεί να έχουν ενεργοποιημένο τον εντοπισμό σφαλμάτων, αυτό γίνεται πρόβλημα.

Σε αυτήν την περίπτωση, η "δωρεάν χρέωση" στο αεροδρόμιο μπορεί να οδηγήσει σε κλοπή λογαριασμού, αλλά ποιος τη χρειάζεται;
Από αυτά τα αρχεία καταγραφής μπορούμε να εξαγάγουμε:

  • client_id и apikeyαπαιτείται πρόσβαση api;
  • URL εξουσιοδότησης χρήστη (περίεργο, αλλά δεν υπάρχει τίποτα στο χώρο αποθήκευσης σχετικά με αυτήν τη μέθοδο, ίσως δεν παρέχεται;)

Έτσι έγινε. Με βάση αυτή τη μικροσκοπική έρευνα, οι εργασίες βρίσκονται ήδη σε εξέλιξη για ένα μικρό έργο - τη δική μας υλοποίηση μιας εφαρμογής για κινητά. Ζητώ από όσους θέλουν να βοηθήσουν να γράψουν ένα μήνυμα, και όλους τους άλλους - να ψηφίσουν (γιατί θέλω να καταλάβω αν κάποιος χρειάζεται αυτό).

Спасибо за внимание!

Μόνο εγγεγραμμένοι χρήστες μπορούν να συμμετάσχουν στην έρευνα. Συνδεθείτε, Σας παρακαλούμε.

Χρησιμοποιείτε την εφαρμογή για κινητά Habr;

  • Ναι, το χρησιμοποιώ, είμαι ευχαριστημένος με αυτό

  • Ναι, το χρησιμοποιώ, η εφαρμογή προκαλεί ταλαιπωρία

  • Όχι, χρησιμοποιώ την έκδοση web στο τηλέφωνό μου

  • Όχι, χρησιμοποιώ το Habr από τον υπολογιστή μου

Ψήφισαν 357 χρήστες. 30 χρήστες απείχαν.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο