1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

SD-Karte: KartenID ermitteln

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von skoschke, 24.06.2011.

  1. skoschke, 24.06.2011 #1
    skoschke

    skoschke Threadstarter Erfahrener Benutzer

    Beiträge:
    175
    Erhaltene Danke:
    16
    Registriert seit:
    18.02.2011
    Hallo,

    trotz intensiven Googlens habe ich nichts gefunden, vielleicht hat jemand einen Tip zu folgendem Problem:

    Meine Anwendung (zur Zeit Windows Mobile 6.1) soll auf Android portiert werden.
    Zur Lizensierung habe ich bisher (wie auch einige Naviprogramme) das Programm an die SD-KartenID (nicht die VolumeID der Karte!) gekoppelt.

    Damit kann der Anwender das Programm auf beliebigen PDA's benutzen, nur Karte einstecken und los geht's ;-)
    Eine Kopplung au die Seriennummer des Devices oder an die IMEI wird nicht gewünscht!

    So, aber wie komme ich unter Android an diese Nummer?
    Kann mir bitte jemand mit einem Codeschnipsel oder Link weiterhelfen?

    Danke
    Ciao
    Stefan
     
  2. Thyrion, 24.06.2011 #2
    Thyrion

    Thyrion Ehrenmitglied

    Beiträge:
    11,849
    Erhaltene Danke:
    2,452
    Registriert seit:
    21.07.2009
    Phone:
    Nexus 5X
    Meinst du evtl. die CID der SD-Karte?

    $ cat /sys/class/mmc_host/mmc1/mmc1:*/cid

    Die kannst du mit dem obigen Befehl ermitteln (mmc1 kann variieren). Wie sich das mit Androiden verhält, die eine interne SD-Karte haben (das sind in der Regel die Samsung Handys), kA.
     
  3. skoschke, 26.06.2011 #3
    skoschke

    skoschke Threadstarter Erfahrener Benutzer

    Beiträge:
    175
    Erhaltene Danke:
    16
    Registriert seit:
    18.02.2011
    Hallo Thyrion,

    danke erst mal,
    ja, die CID meine ich.
    Wenn der von Dir angegebene Pfad variieren kann, ist das nicht unbedingt die "ultimative" Lösung:winki:
    Es geht immer um die externe SD-Karte, auf der sitzt mein Programm und soll den Programm-Schlüssel gegen die CID prüfen.

    Das (bei Windows Mobile geht es) soll auf allen Devices automatisch gehen, gibt es noch einen anderen Ansatz an die CID der SD-Karte zu kommen?

    Ciao
    Stefan
     
  4. Thyrion, 26.06.2011 #4
    Thyrion

    Thyrion Ehrenmitglied

    Beiträge:
    11,849
    Erhaltene Danke:
    2,452
    Registriert seit:
    21.07.2009
    Phone:
    Nexus 5X
    Dein Programm sitzt aber bei Android im internen Speicher und kann auf die SD-Karte hölchstens zugreifen und dort Daten ablegen/lesen - hier könnte dann dein Schlüssel ins Spiel kommen.

    Nur zum Verständnis. Wie kommt dein Schlüssel/Programm auf die ext. SD-Karte? Wie gesagt, es gibt Handys mit eingebauter SD-Karte.

    Der Befehl oben funktioniert so. Du musst evtl. lediglich mmc1 ersetzen. Jetzt müssen wir nur noch herausfinden, welcher mmc die externe SD-Karte ist.
     
  5. skoschke, 27.06.2011 #5
    skoschke

    skoschke Threadstarter Erfahrener Benutzer

    Beiträge:
    175
    Erhaltene Danke:
    16
    Registriert seit:
    18.02.2011
    Hallo Thyrion,

    wie kommt der Schlüssel auf die SD-Karte?
    Unter Windows Mobile hatte ich folgenden Ablauf:
    Ein Spezialtool auf dem Device wird gestartet, mit jedem SD-Kartenwechsel wird die gelesene CID als Textdatei auf die SD geschrieben.
    Danach kommen die SD-Karten in einen Kartenleser am PC, ein Schlüsselprogramm am PC berechnet die Schlüsseldatei, schreibt diese auf die SD-Karte und kopiert danach alle erforderlichen Programminstallationsdateien.
    Der erste Schritt im PDA ist erforderlich, da per USB-Kartenleser am PC die CID nicht gelesen werden kann, zumindest habe ich keinerlei Möglichkeit dafür gefunden :angry:
    Das Programm selbst liest beim Starten die CID ebenfalls aus, verifiziert diese mit der Schlüsseldatei und startet, wenn alles paßt.
    Somit ist die erstellte SD-Karte in jedem beliebigen Gerät nutzbar, im Gegensatz zur Bindung an IMEI, Mac-Adresse oder ähnlichem...
    Das gleiche (oder eben analog dazu) möchte ich nun auch auf einem Android-Device machen.

    Wenn ich Dich nun richtig verstanden habe, ist nicht das "mmc1" nicht auf verschiedenen Devices unterschiedlich sondern ich muß nur das "richtige mmc#" für die externe SD-Karte benutzen?

    Interne SD-Karten (gibts die überhaupt oder meinst Du internen Flash-Speicher?) sollen, wie Du am obigen Verfahren siehst, auch nicht unterstützt werden.

    Ciao
    Stefan
     
  6. Thyrion, 27.06.2011 #6
    Thyrion

    Thyrion Ehrenmitglied

    Beiträge:
    11,849
    Erhaltene Danke:
    2,452
    Registriert seit:
    21.07.2009
    Phone:
    Nexus 5X
    Ob du die CID am PC auslesen kannst, hängt vom Kartenleser ab. Mit meinem FuSi Amilo Pro Laptop geht's :smile: -> jo0ls' .Net stuff: Read SD Card CID (serial number) und Mein Post hier
    Aber das ist eher die Ausnahme als die Regel.

    Das Verfahren kannst du im Prinzip genauso machen, nur dass du dein Programm vermutlich schon auf dem Handy haben musst, statt es auf die SD-Karte zu legen. Aber weitere Programmdaten können da ruhig liegen.

    Nein, ich meine nicht die Flash-ROMs (naja, eine SD-Karte ist ja strenggenommen auch nichts anderes). Samsung verbaut z.B. embedded SD-Cards. Davon stehen z.B. beim I7500 dem Benutzer 7 GB zur freien Verfügung, als wenn es eine SD-Karte wäre (und die wird an den Ort gemountet (/sdcard), wo bei anderen Handys die externen SD-Karten sind. Die externe SD-Karte liegt dort dann unter /sdcard/sd).

    Und richtig, du musst nur die richtige mmc# verwenden. mmc1 ist es z.B. beim HTC Desire - bei anderen Geräten muss ich spekulieren, aber ich vermute mal, bei den meisten Smartphones ohne fest verbaute SD-Karte ist das identisch.
     
    skoschke bedankt sich.
  7. skoschke, 27.06.2011 #7
    skoschke

    skoschke Threadstarter Erfahrener Benutzer

    Beiträge:
    175
    Erhaltene Danke:
    16
    Registriert seit:
    18.02.2011
    Hallo Thyrion,

    jetzt habe ich das mit der "internen/externen" SD-Karte verstanden :biggrin:
    Danke für den Link, genau diesen Weg über Net CF bin ich bei der Windows-Mobile-Variante auch gegangen.
    Leider habe ich immer nur USB-Kartenleser, denke aber, mich direkt mal auf die Suche nach PCI-Lösungen umzusehen, damit könnte der Zwischenschritt der Seriennummer-Ermittlung entfallen und die SD-Karte komplett am PC erstellt werden...

    Jetzt wo Du fragst, da merke ich einen Denkfehler:
    Wenn ich eine SD-Karte mit der Programm-apk und der Schlüsseldatei ausliefere, kann der Anwender ja nicht sofort loslegen wie bei meiner Windows-Variante, er müßte sich ja noch irgendeinen Datei-Explorer (z.B. ES-Dateiexplorer) installieren.

    Dafür sind unsere Kunden meist schon "zu unbedarft", die können meist nur "fertige Geräte bedienen..." :huh:

    Fällt Dir dazu etwas ein, wie man das lösen könnte?

    Ciao
    Stefan
     

Diese Seite empfehlen

Besucher kamen mit folgenden Begriffen auf unsere Seite:

  1. sd-karte Seriennummer