Ich habe serverseitige Verifizierungs-Google IAP-Kauftoken implementiert. Meine mobile App sendet mir dieses Token, wie es von Google abgerufen wird.
Ein normales Token sieht aus wie
minodojglppganfbiedlabed.AO-J1OyNtpooSraUdtKlZ_9gYs0o20ZF_0ryTNACmvaaaG5EwPX0hPruUdGbE3XejoXYCYzJA2xjjAxrDLFhmu9WC4fvTDNL-RDXCWjlHKpzLOigxCr1QhScXR8uXtX8R94iV6MmMHqD
aber manchmal bekomme ich so ein kurzes token
korpimulxmslxissnschtkdb
Wenn ich dieses Token über die Google Play Developer API verifiziere: https://www.googleapis.com/androidpublisher/v2/applications/packageName/purchases/subscriptions/subscriptionId/tokens/token , bekomme ich ein kurzes Token 404 Fehler.
Wo ist das Problem? Ist es möglich, dass dieses kurze Token echte Transaktionen darstellt?
Ich habe die gleichen ungültigen Token in unserer App erhalten, ohne den Grund für eine Weile zu kennen. Die Token sind in verschiedenen Formaten erhältlich, darunter 24 alphanumerische Zeichen (z. B. glvnqnpjqslcagyimgxeuybk
), 15 Ziffern (z. B. 781871156762279
, siehe diese Frage ) und sogar Token mit der richtigen Länge, die ein etwas anderes Format als die gültigen haben (z. B. xdavcuvdnniwwrhwemleqjdz.rSQozm...
siehe diese Frage ).
Dies sind die Fehlermeldungen, die ich von der In-App-Abrechnungs-API für diese verschiedenen Token zu der einen oder anderen Zeit erhalten habe:
"code": 404, "message": "The purchase token was not found."
"code": 400, "message": "Invalid Value"
"code": 400, "message": "Your request is invalid for this subscription purchase."
Die Antwort von Marc Greenstock gab mir eine Idee, um zu versuchen, das Problem zu reproduzieren.
Ich habe zwei Apps getestet, die behaupten, In-App-Käufe zu hacken: Freedom und Lucky Patcher , auf einem gerooteten Gerät. Ersteres hat nicht funktioniert: Obwohl festgestellt wurde, dass unsere App Einkäufe tätigen kann, wurde mir beim Versuch, eine Fälschung zu erstellen, mitgeteilt, dass "die Einkäufe dieser App nicht gefälscht werden können". Letzteres funktionierte jedoch nach einigem Hin und Her und erzeugte genau wie in der Frage einen kurzen Kauf-Token. Als ich versuchte, das Token über die In-App-Abrechnungs-API zu verifizieren, erhielt ich dieselbe exakte Meldung "Ungültiges Token" wie zuvor.
Ich habe auch damit begonnen, den Root-Status von Geräten zu protokollieren, die ungültige Token generieren, und zwar mit diese Methode . Dies ist zwar kein Beweis für irgendetwas, aber die Tatsache, dass fast alle ungültigen Token von gerooteten Geräten stammten, ließ mich verdächtigen, dass sie schlecht gespielt haben.
Ich glaube, der Angriff funktioniert wie folgt. Wer mehr darüber weiß, meldet sich bitte!
Intent
ab, das für den legitimen Service bestimmt istHast du das am Ende gelöst?
Der einzige Grund, den ich vorschlagen kann, ist, dass das Token von einem In-App Purchase Cracker generiert wurde, z.
Ich bin daran interessiert zu sehen, ob Sie einen kurzen Wert für Testkäufe erhalten haben, die Sie selbst gemacht haben.
Ein weiterer Hinweis, dass das Token falsch ist, ist das Format der orderId, die Sie nach dem Kauf in der App erhalten.
Wenn es nicht dem in Verwalten der In-App-Fakturierung docs angegebenen Format entspricht, ist dies höchstwahrscheinlich ein betrügerischer Kauf.
Ich habe eine teilweise Minderung gefunden, die bei einigen falschen IAP-Providern funktioniert: Überprüfen Sie die digitale Signatur manuell. Was auch immer der IAP-Simulator tut, er hat keine Kopie des privaten RSA-Schlüssels von Google. Ich habe meine eigene Signaturprüfung gerollt und fängt zumindest einige dieser gefälschten Transaktionen ein.