IMSI nicht eindeutig???

T

txbarth

Ambitioniertes Mitglied
0
Hallo,

zur Identifizierung eines Teilnehmers fragt meine App die IMSI der SIM-Karte ab. Die IMSIs der Teilnehmer sind auf Server-Seite hinterlegt. Das hat bisher gut funktioniert. Der Emulator aus AS liefert für die Entwicklung die IMSI 310260000000000, diese habe ich daher für mich reserviert. Jetzt meldet sich ein Teilnehmer, er hätte ein neues Smartphone und bittet um die Freischaltung der IMSI 310260000000000. Wie kann das denn sein??? Alle echten IMSIs, die ich bisher freigeschaltet habe, beginnen mit den Ziffern 2620... Und selbst wenn die IMSI 310260000000000 von einer SIM-Karte stammen sollte, dann soll bei einer 15stelliger Zahl eine Doppelung auftreten zwischen zwei Teilnehmen, die beruflich miteinander zu tun haben? Es sind nur eine handvoll Teilnehmer, die die App nutzen. Wie wahrscheinlich ist das denn? Es heißt doch: " Die IMSI-Nummer wird weltweit einmalig pro SIM von den Mobilfunknetzbetreibern vergeben" (International Mobile Subscriber Identity – Wikipedia)

Ich habe dem Teilnehmer die Freigabe verweigert und unterstellt, das da jemand versucht, eine eigene App zu entwickeln.

Weiß jemand mehr zur IMSI 310260000000000?
 
Es sei ein Huawei Smartphone. Android wird auf dem Gerät demnach nur im Emulator gestartet? Ist das typisch für ein chinesisches Produkt?
 
Also, dass Android dort in einem Emulator läuft, bezweifle ich. Dass die chinesische Firmware die IMSI fest verdrahtet? Durchaus vorstellbar - aber dann hätten alle Huawei oder zumindest das Modell die gleiche IMSI - das dürfte zu Problemen, nicht nur bei deiner App, führen.

Es ist aber immer noch möglich, dass die IMSI vom Gerät echt ist und der Emulator keine "offizielle" IMSI hat.
 
Hallo tx,

ich habe zwar noch keine IMEI ausgelesen , aber irgend eine Klasse/Routine verwendest du ja da.

Ich kann nur vermuten :

Es könnte sein , dass die Klasse Probleme hat, unter seinem Device & Betriebssystem seine eigentliche IMEI zu lesen und somit als Defaultwert die "übliche" Emulator IMEI zurück liefert .

P.S frag ihn mal , was er drauf hat , und zwar alle details ...
Vielleicht hat er ja ein Custom-Rom drauf, oder gar gerootet oder irgend einen dubiosen Scanner
 
Zuletzt bearbeitet:
Ich bringe gerade mal in Erfahrung, ob nur das Smartphone ausgetauscht wurde und die alte SIM-Karte weiter verwendet wird, oder ob auch eine neue SIM-Karte eingesetzt wird. Und diese neue SIM spuckt die IMSI aus, die ich beim AS Emulator für die Entwicklung bekomme... Das will mir noch nicht in den Kopf. Bei Verwendung der alten SIM-Karte hätte das neue Gerät auch die bereits freigeschaltete IMSI ausgeben müssen.

@swa00 IMSI nicht IMEI, IMSI ist die Subscriber-ID, die auf der SIM-Karte gespeichert ist, IMEI die Device-ID des Gerätes
Code:
TelephonyManager manager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
String imei = manager.getDeviceId();
String imsi = manager.getSubscriberId();
 
@swa00 IMSI nicht IMEI, IMSI ist die Subscriber-ID, die auf der SIM-Karte gespeichert ist, IMEI die Device-ID des Gerätes

Sorry, habe mich vertippt - ich meine trotzdem das Gleiche ....
Was gibt der Telephony-Manager zurück, wenn eine gültige IMSI nicht zu ermitteln wäre ?

Ich gehe mal davon aus , dass du die Release-Version schickst
 
Das Problem trat bisher ja noch nicht auf. Alle Teilnehmer haben mir bisher eine gültige IMSI beginnend mit 2620.... mitteilen können. Wenn es nichts liefert, hätte ich auch nichts freischalten können, dann kann die App nicht genutzt werden. Ich wollte mit dieser Art eine Identifizierung per Login-Activity mit Benutzernamen und Paßwort vermeiden.
Kann ich dem Teilnehmer sagen, dass das Huawei Smartphone wahrscheinlich einen Defekt hat und umgetauscht werden müsste?
 
@tx,

Dein Problem ist schon bekannt und auch verstanden , ich bin allerdings einen Schritt weiter... ich such den Fehler im Source bei dir.

Nochmal : schickst du eine signed - release Ja / Nein
Was hat er an seinem Device "verändert" ?
Welche Betriebssystem hat er drauf , vielleicht fängst du das noch nicht ab

usw.
 
Ich berücksichtige die Version

Code:
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            doAllRequests();

        } else {
            TelephonyManager mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
            String imsi = mTelephonyMgr.getSubscriberId();
            Data.setImsi(imsi);
            ...
        }

Code:
private void doAllRequests() {
        // only for gingerbread and newer versions
        int permissionCheck = ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_PHONE_STATE);

        if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
          givePermissionHint();
        
        } else {
          permission_read_phone_state = true;
        }

[hier noch weitere Erlaubnisse zur Sicherheit abfragen]

if(permission_read_phone_state && permission_internet && permissen_wake_lock) {
    TelephonyManager mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    String imsi = mTelephonyMgr.getSubscriberId();
    Data.setImsi(imsi);

Ich hatte noch nie einen Leerstring mit Data.getIMSI() erhalten. Entweder wird es gesetzt oder nicht.
 
txbarth schrieb:
Alle echten IMSIs, die ich bisher freigeschaltet habe, beginnen mit den Ziffern 2620... Und selbst wenn die IMSI 310260000000000 von einer SIM-Karte stammen sollte,

Irgendwas ist da faul! 262 ist der Code für Deutschland. 310 wäre es wenn es eine US SIM wäre. -> IMSI Code List | GeveyStore (Nicht aktuell, aber für nen schnellen Überblick reicht es)
Mittels: Mobile country codes (MCC) / IMSI - MVNO Dynamics egibt sich für die IMSI 310 260
Code:
310    260    310260    GSM    T-Mobile        T-Mobile USA (formerVoicestream)    Operational    22.03.2011

Thyrion schrieb:
Dass die chinesische Firmware die IMSI fest verdrahtet? Durchaus vorstellbar - aber dann hätten alle Huawei oder zumindest das Modell die gleiche IMSI - das dürfte zu Problemen, nicht nur bei deiner App, führen.
Weiter ist die Ziffernfolge: 000000000 garantiert nicht fest im Gerät verdrahtet, denn die Auswirkungen wären, wie oben bemerkt, irre.

Ergo: Der User nutzt einen Emulator! Und da will ich nicht wissen, was er mit der App vorhat. ;)
 
  • Danke
Reaktionen: swa00
Nur so ein Gedanke: Was bekommst du zurück, wenn keine SIM eingelegt ist?
 
Ich versuche ein Foto von dem Smartphone zu bekommen, das genau diese Standard-IMSI anzeigt, ohne dass das Smartphone per USB-Kabel irgendwo angeschlossen ist.
 
@txbarth Das ist wohl das Beste, was Du machen kannst. Wenn nichts mehr kommt, dann dürfte der Fall klar sein. ;)
 
@ Thyrion
Dann liefert mTelephonyMgr.getSubscriberId() null zurück.
 
Ein Foto werde ich wohl nicht bekommen. Der Teilnehmer hat nun die alte SIM in sein Smartphone eingesetzt und das Gerät ist in der Lage, die echte IMSI der Karte auszulesen, die bereits auf dem Server freigeschaltet ist. Also echt merkwürdig!
 
Ob das "merkwürdig" ist , wage ich zu bezweifeln :)
Ich würde es eher als "da hat mich einer erwischt" bezeichnen :)
 
Wie gesagt: "TMobile USA SIM" ohne Kennung? :flapper::lol::lol:
 
Darf ich fragen wie du diese funktion genau nutzt? Also jeder der diese App benutzen will muss dir vorher seine IMSI sagen die du dann am Server freischaltest?
 
Ja, genau. Sie wurden mir per Mail mitgeteilt. Das konnte ich so machen, weil es nur ein paar Kollegen sind, die diese App als Info-Service für firmeninterne Zwecke nutzen. Würden regelmäßig Benutzer dazu kommen, hätte ich wahrscheinlich im Dialog die IMSI zusammen mit einer vom User eingegebenen Mail-Adresse zum Server übertragen. Der User hätte dann noch eine Mail mit einem Link zur Bestätigung der Mail-Adresse erhalten. Diese Bestätigung hätte dann die IMSI freigeschaltet.
 

Ähnliche Themen

SaniMatthias
Antworten
19
Aufrufe
997
swa00
swa00
O
Antworten
15
Aufrufe
3.006
ORHUX
O
D
Antworten
3
Aufrufe
469
jogimuc
J
Zurück
Oben Unten