SD-Karte: KartenID ermitteln

S

skoschke

Fortgeschrittenes Mitglied
22
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
 
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.
 
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
 
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.
 
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
 
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.
 
  • Danke
Reaktionen: skoschke
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
 

Ähnliche Themen

E
Antworten
0
Aufrufe
699
enrem
E
J
  • JoEntwickler
Antworten
0
Aufrufe
974
JoEntwickler
J
FabianDev
Antworten
5
Aufrufe
557
swa00
swa00
Zurück
Oben Unten