Jak pewnie wiecie (albo i nie), w zeszły tydzień na jaw wyszła luka w API aplikacji Żabki. W skrócie: można było sobie nabić nielimitowaną liczbę punktów - Żappsów, po czym wymienić je na kupony i odebrać ukraść produkty.
Jednakże inne portale ([1], [2]) przytaczają jeden i ten sam fragment skryptu do nabijania sobie punktów. Skrypt, który otrzymałem ja, był troszkę inny...
Przede wszystkim, token
generowany był przez użytkownika "na żywo", nie było żadnego "gotowca" już w skrypcie.
def fetch_token(email, passwd):
uuids = "" # tu wrzuc wlasne losowe uuid
deviceId = "" # tu tez
# wywal jak zmienisz
resp = requests.post("https://zabka-snrs.zabka.pl/sauth/v3/auth/login/client", headers={
"Accept": "application/json",
"Api-Version": "4.4",
"Application-Id": "%C5%BCappka",
"Mobile-Info": "", # to tez zmien na cos losowego
"User-Agent": "Synerise Android SDK 4.8.0"
}, json={
"identityProvider": "SYNERISE",
"apiKey": "b646c65e-a43d-4a61-9294-6c7c4385c762",
"uuid": uuids,
"email": email,
"password": passwd,
"deviceId": deviceId,
}).json()
if 'token' in resp:
return resp['token']
else:
print(resp)
raise ValueError(resp['message'])
Token ten był potem wykorzystywany w każdych późniejszych zapytaniach - w tym od nabijania Żappsów.
Dodatkowo w mojej wersji pojawiło się pobieranie eventów
. Są to wszystkie akcje związane z kontem użytkownika.
# pobierasz wszystkie eventy
with open('events.json', 'wb') as file:
file.write(requests.get("https://zabka-snrs.zabka.pl/v4/events?limit=1000", headers={
"Authorization": f"Bearer {token}",
"Api-Version": "4.4",
"Content-Type": "application/json"
}).content)
No cóż, w pobranym pliku można odnaleźć kilka ciekawych smaczków!
- Na moim koncie od 22:43 zaczęły pojawiać się wpisy
"[SW] Nano antifraud - check v2"
. Pewnie za pomocą swojego gotowego systemu zaczęli szukać oszukanych Żappsów na kontach wszystkich użytkowników. - Widać historię doładowanych Żappsów. W moim przypadku o 23:23 dodałem sobie
"points":"99999"
. Oczywiście poinformowałem wcześniej Żabkę o dostępnym exploicie, a punktów nie miałem zamiaru wykorzystywać. Szanujmy się. - Zbierane są informacje nt. kliknięć w aplikacji (
"action":"dashboard.scroll"
) m.in"card-linkowanie-z-card-with-link"
(oof!) czy też"card-drink"
. - Kliknąłeś w promocję? Oni też to wiedzą!
"promotion.view"
i"Black Wild Strawberry Zero Sugar"
mówi samo za siebie. - Lokalizację też znają.
"client.location"
zawiera w sobie dokładne koordynaty GPS. - Wszystkie wysłane powiadomienia również są przechowywane.
"title":"Zdobywasz 8 żappsów!"
- Czasem występują bliżej nieokreślone... testy Na Produkcji.
"promotions":["000600161626","TEST DZIALANIA","000600161984 - wydmuszka","000600162038 - wydmuszka"]}
- Dokładna lista zakupów? Prosz bardzo:
"$name":"BULKA PSZENNA 65g ODPIEK",
- Nie wiem co to jest, ale brzmi zabawnie:
"[Żabu] Sum of points"
. Czasem pojawia się także"[WERSJA 3.3] ZGODA ALKO + SAMPLING + MH1"
. - Są i opisy przyczyn blokowania kont -
potencjalny fraud 22.01.2023
. Tak, to ja! 😍 - Zaraz po tym odbywa się wyłączanie kuponów. Też wygląda zabawnie. URL requestu to
"https://api.synerise.com/v4/promotions/promotion/deactivate-all-for-client/clientId/1660142019?excludeTags=nie_wygaszac_kuponu"
. dobrze_nie_bede_wygaszal_obiecuje - Punkty można dodać, albo odjąć!
points.downcharge
i gotowe."description":"Fraud - wykorzystanie API"
- ja bym to nazwał testowaniem, ale okej. 😥 - Później został jeszcze do mojego konta dodany tag
"usuniecie_konta"
oraz zabrany"blokada_konta"
. Aż tak mnie nie lubią! Dziwne, że tag od usuwania konta de facto konta nie usuwa. Dalej mogę się logować do aplikacji Żappka i przeglądać promocje oraz wykonywać requesty do API. - Podczas wykonywania akcji
"multiaccount.checkCatalog"
, która ma chyba zabezpieczać przed tworzeniem multikont, w polubody.data[0].bag.author
widać imię i nazwisko pana Szymona. Pozdrawiam serdecznie!
Ogółem, troszkę tych danych jest. Ostatnie 1000 akcji zapisanych w JSONie zajmuje w Wordzie 160 stron. Oczywiście, wiele danych się powiela (nazwy pól itd.), ale to i tak więcej niż się spodziewałem.
Ale i tak za najgorsze w tym wszystkim uważam to, że ceny produktów trzymają w float
. Dramat!

rzapka odblkójcie mi konto pls