Ogłoszenie

Zwiń
No announcement yet.

Pytania o protokół

Zwiń
X
 
  • Filtr
  • Czas
  • Pokaż
Wyczyść wszystko
new posts

    Pytania o protokół

    Witam. Ponieważ coś zepsuliście przy ostatniej aktualizacji wdrażającej "niby 2FA" (prawdziwe 2FA to dzisiaj np. TOTP, passkey) i z użyciem libgadu nie da się dłużej zalogować do nowego konta (lub do starego po zmianie hasła, jak mniemam), a opiekuni libgadu nie są zainteresowani udzielaniem wsparcia, zacząłem analizować protokół używany w wersji webowej. Mam już własną bibliotekę umożliwiającą dostęp do katalogu użytkowników (z kodu GG desktopowego musiałem wyjąć definicje statusów czy tajnych pól api w rodzaju 'onlyAvailable', ale to było proste), ale troszkę mnie spowolniło wysyłanie wiadomości. Okazuje się, że zamiast wystawić normalne API, ktoś zadał sobie trud, żeby używając biblioteki sunrise połączyć się z serwerem prosody (xmpp) po websocketach. Oczywiście nic mnie nie powstrzyma przed naśladowaniem tego protokołu po swojej stronie, ale czy nie moglibyście po prostu normalnie wystawić serwera xmpp po HTTP, podać informację jak się z niego łączyć z Psi lub Gajima i oficjalnie przyznać się, że nie ma już czegoś takiego jak "protokół GG"? Dodam, że w kodzie jest też kilkunastoletnie ogłoszenie o poszukiwaniu pracowników – choćby po zamieszczonej przy nim dacie zgaduję, że chyba już nieaktualne?

    #2
    Cześć

    Zanim odwołam się do Twojego posta, chciałbym tylko zaznaczyć, że nie udzielamy informacji na temat działania protokołu GG i nie publikujemy takich informacji na świat.


    Zamieszczone przez jaworsk Zobacz posta
    Ponieważ coś zepsuliście przy ostatniej aktualizacji wdrażającej "niby 2FA" (prawdziwe 2FA to dzisiaj np. TOTP, passkey) i z użyciem libgadu nie da się dłużej zalogować do nowego konta
    libgadu jest to nieoficialna biblioteka i nie zapewniamy dla niej wsparcia - protokół modyfikujemy w taki sposób by działał on z naszymi oficjalnymi aplikacjami.


    Zamieszczone przez jaworsk Zobacz posta
    z kodu GG desktopowego
    Jeśli mogę spytać, skąd posiadasz taki dostęp i jakiej wersji "desktopowego" GG to dotyczy?


    Zamieszczone przez jaworsk Zobacz posta
    ale czy nie moglibyście po prostu normalnie wystawić serwera xmpp po HTTP, podać informację jak się z niego łączyć z Psi lub Gajima i oficjalnie przyznać się, że nie ma już czegoś takiego jak "protokół GG"?
    GG działa na podstawie swojego własnego autorskiego protokołu, który jest zgodny z obecnie wspieranymi przez nas oficjalnymi aplikacjami. Nie udzielamy szczegółowych informacji na temat jego działania.


    Zamieszczone przez jaworsk Zobacz posta
    Dodam, że w kodzie jest też kilkunastoletnie ogłoszenie o poszukiwaniu pracowników – choćby po zamieszczonej przy nim dacie zgaduję, że chyba już nieaktualne?
    Obecnie wszelkie ogłoszenia znajdziesz na https://www.gg.pl/info/praca/

    Tutaj ponawiam też pytanie, o jakim kodzie mówimy? Jakiej wersji klienta i skąd uzyskałeś taką informacje.


    Do zobaczenia na GG!
    GG Team
    IT - Desktop, GG Chat (Widget & AI)


    Sprawdź:
    http://ggchat.com

    Nie pomogę Ci w zakresie obsługi klienta, sprzedaży i moderacji.

    Komentarz


      #3
      Zamieszczone przez Norx Zobacz posta
      Jeśli mogę spytać, skąd posiadasz taki dostęp i jakiej wersji "desktopowego" GG to dotyczy?
      Zwykle za takie porady wystawiam fakturę, ale może komuś z czytelników się przyda.
      Na każdym linuxie:
      Kod:
      $ tar xjf gg_64bit.tar.bz2
      $ cd GG/
      $ grep ^Version application.ini
      Version=12.4.112.12218
      $ cd chrome/
      $ unzip core.jar
      # tutaj przyda się dowolne narzędzie do otwierania przestarzałego bajtokodu mozilla spider-monkey version 34, ja użyłem irelance/jsc-decompile-mozjs-34
      $ php ~/github/jsc-decompile-mozjs-34/run.php core/GGServerClient/GGProtocol.js.jsc | grep GGProtocol.STATUS | head -n 5
      GGProtocol.STATUS_AVAILABLE=2;
      GGProtocol.STATUS_AVAILABLE_DESCRIPTION=4;
      GGProtocol.STATUS_AWAY=3;
      GGProtocol.STATUS_AWAY_DESCRIPTION=5;
      GGProtocol.STATUS_BLOCKED=6;
      ...
      $ php ~/github/jsc-decompile-mozjs-34/run.php client/PubDir/PubDir.js.jsc | grep -o "PARAM_[^,]*," | tail -n 5
      PARAM_AGE_FROM:"ageFrom",
      PARAM_AGE_TO:"ageTo",
      PARAM_LIMIT:"limit",
      PARAM_OFFSET:"offset",
      PARAM_ONLY_AVAILABLE:"onlyAvailable",
      ...
      Obstawiam, że aplikacja na Androida ma dokładnie tego samego jara w środku, w końcu komu chciałoby się robić osobne wersję na różne platformy.

      Ogłoszenie o pracę znajduje się np. w pliku https://s1.gg.pl/6.45.0/js/start.js:
      Zaglądasz do kodu? To świetnie! Każdy dobry webdeveloper to robi
      Szukasz ciekawej pracy? pisz na adres praca@gadu-gadu.pl z dopiskiem PAI

      (c) 2006-2013 GG Network S.A.
      Jeżeli ten kod nie był aktualizowany od 2013 roku, to nic dziwnego, że nikt nie pamięta tego komentarza. Ja absolutnie nie szukam pracy ani zarobku.

      Kiedyś, gdy GG było kompilowane, być może dekompilacja była jakimś sposobem "zabezpieczania" protokołu przed światem. Dzisiaj, skoro i tak jest cały kod jawnie podany jest w javascript (np. w przeglądarce jest to DGG-Sunrise/6.45.0), trzeba jednak stosować coś więcej niż "security by obscurity". Taki na przykład Instagram czyta każdą wiadomość, analizuje pod kątem spamu i prowadzi rozbudowaną politykę shadowbanów. Jabber z kolei w ogóle nie ingeruje w to, do czego ludzie wykorzystuje protokół i decyzje w tym zakresie pozostawia adminom homeserverów. Pozostaje pytanie, czy GG chce być bardziej jak Instagram czy jak Jabber. I dlaczego podczas logowania hasło jest hashowane przestarzałym MD5, przecież to ma już znane podatności.

      Komentarz


        #4
        Witam ponownie!
        Czy poniższa metoda wysyłania wiadomości z frontendu webowego będzie najwłaściwsza? Nie chciałbym czegoś zepsuć.

        W konsoli dewelopera dowolnej przeglądarki wpisujemy:
        Kod:
        mojsender = B.k().Ja.ld().items.items[0]
        mojsender.Ca = '123456' // UIN odbiorcy
        mojsender.Bg = () => void 0; // żeby nie pluł błędem
        mojsender.eua("Witam!")
        ​
        Przyznam, że trochę ta obfuskacja kodu była żmudna do rozwiązania, ale jakoś sobie poradziłem. Byłoby prościej, gdyby XULrunner z desktopowego klienta pozwalał na otwarcie Inspectora, ale to naprawię jak już opublikujecie kod (założyłem osobny wątek).
        Mam już w zasadzie wszystko, co potrzebuję, żeby użyć protobufa do wysłania wiadomości poza przeglądarką, jednak wolę się upewnić, że nie robię czegoś "na około".

        Komentarz


          #5
          Jaki jest Twój przypadek użycia? Jeśli potrzebujesz zrobić automat, który wysyła wiadomości, to mamy do tego API: https://boty.gg.pl/

          Komentarz


            #6
            Zamieszczone przez Wasky Zobacz posta
            Jeśli potrzebujesz zrobić automat, który wysyła wiadomości, to mamy do tego API: https://boty.gg.pl/
            Nie zrobi się takiego automatu bo w GG najpierw użytkownik musi pierwszy napisać do bota, bot nie będzie rozsyłał wiadomości do kogo popadnie

            Poza tym ja chciałem zrobić sobie czat na nr gg 65357531, testowałem go, wyłączyliście mi go i nie da sie go włączyć z powrotem

            Komentarz


              #7
              Mateuszol bot został ponownie włączony – możesz go teraz testować. Obserwujemy sprawę i w razie problemów będziemy reagować.


              Komentarz

              Pracuję...
              X