[VB 6.0] Kartenlesegerät

floppe

Ensign
Registriert
Sep. 2005
Beiträge
186
Hallo!

Ich habe ein Problem, ich will eine Chipkarte mit einem Kartenlesegerät auslesen. Dabeii fang ich von 0 an. Erstmal will ich die Karte komplett auslesen. Danach will ich eine Bestimmte Variable in eine Datei schreiben, wenn eine neue Karte reingesteckt wird soll gefragt werden, ob wieder die neue Nummer in die Textdatei geschrieben werden soll.
Leider weiss ich nciht genau wie die Variable heisst. Es koennte KV sein.

Worauf muss ich achten? Ist es wichtig welches Kartenlesegerät ich benutze?


Eine sehr große Hilfe wäre natürlich eine Funktion oder ein Programm, das die komplette Karte ausliest.

Ich benutze Winnt 4.0 ;) und das Gerät ist auf dem Comport erreichbar.

Danke im Vorraus!
 
Am einfachsten wäre es wenn der Hersteller ein API mitliefert. Mit Winnt4.0 und seriellem Anschluss wird es heutzutage vermutlich eher schwierig, da was zu finden.

Ausserdem gibt es viele verschiedene Chipkarten und dementsprechend viele Lesegeräte.

Und was du mit der Variablen meinst ist auch nicht klar. Du setzt ein bisschen viel voraus, was man durch erraten leider nicht wissen kann :-).

Willst Du Karten selber beschreiben oder existierende auslesen? Das Format z.B. der Krankenversicherungskarten ist vermutlich nicht öffentlich zugänglich. Um was für Karten geht es denn?

MfG

Arnd
 
Ich arbeite bei einer Krankenversicherungsfirma ;) deshalb ist das legal. Ich habe auch ein Programm das alles auslesen kann, es soll aber ein neues Programm her, das die Krankenversicherungsnummer ausliest und in eine Textdatei schreibt.
Leider ahbe ich im Moment keinen Schimmer wie ich das machen soll.
Ports öffnen und verbinden kann ich ja, nur muss ich noch irgendwie eine verbindung zum Gerät bekommen. Bedienungsanleitung ´hilft auch net viel.

Könnte man Funktionen aus dem vorhandenen Programm auch in meinem VB Programm benutzen? sourcecode des vorhanden progs nicht vorhanden :rolleyes: . Es ist eine kleine DOS Anwendung.



EDIT
Ich habe herausgefunden, das die Kommunikation per ASN.1 stattfinde´t, welches eine C ,C++ ähnliche Notation sein soll.
 
Zuletzt bearbeitet:
Wenn Du die Beschreibung der Daten in ASN.1 Notation hast, hast Du damit doch halbe Miete. Ports kannst Du auch öffnen, lesen und schreiben wird dann wohl auch gehen.

Lies Dir mal das hier durch:

http://support.microsoft.com/default.aspx?scid=kb;de;252648

Was noch fehlt ist wie die Daten in ASN.1 in das Gerät hinein und heraus kommen. Es wird sicher noch ein Kommando geben das die Karte bzw. das Kartenlesegerät veranlasst die Daten über den Comport an den PC zu senden. Dieses Kommando benötigst Du noch.

Oder das Kartenlesegerät sendet konstant Daten. Das lässt sich aber einfach rausfinden indem Du einfach ein Programm schreibst das den Comport öffnet und anzeigt was da gesendet wird. Notfalls klemm mal das Windows Terminalprogramm dran und schau ob und was da kommt.

Wenn Du keine Informationen über das Protokoll hast, könntest Du auch die Kommunikation des DOS Programms auf der seriellen Schnittstelle tracen. Das geht entweder über einen Protokollanalyzer oder über einen zweiten PC der in die serielle Kommunikation dazwischengeklemmt wird und die Daten abgreift.

Da das Format der Nutzdaten bekannt ist, lässt sich damit relativ einfach rausfinden welche Kommandos zum lesen der Karte benutzt werden :-).

Noch Fragen :-) ?

Da Du aber bei einer KV arbeitest solltest Du eigentlich auch auf eine Dokumentation dazu Zugriff haben. Falls nicht forder die bei Deinem Chef an.
Den Weg des Reverse Engineering den ich hier beschrieben habe führt zwar auch zum Ziel, ist aber vermutlich nicht legal und auch nicht Sinn der Sache. Bei Deinem Kenntnisstand würde das sicher auch länger dauern als Dein Chef bereit ist dafür Zeit zu geben.

D.h. ohne Protokoll Dokumentation nicht machbar oder nur mit sehr viel Zeit zu lösen.

MfG

Arnd
 
Zuletzt bearbeitet:
Das Problem ist, das wenn ich eine Karte reinsteck erstmal nichts passiert. Erst wenn ich das Programm öfnne und die Option zum ´Kartenauslesen benutze tut sich etwas. Doch wärend er etwas ausliest, kann ich doch ncihts auslesen ?

Dabei stürzt er immer ab. Also wie kann ich das schaffen? liegt das an Windows NT 4.0 `?


edit

Mit welchem Programm kann ich die serielle schnittstelle tracen?


edit

tracer gefunden. Nur wie kann cih die Daten selber auslesen ohne dabei einen Port zu belegen?


000001 >> COM1 09:53:40.178 FF 03 08 FF 03 08 FF 03 08 FF 03 08 FF 03 08 FF ÿ..ÿ..ÿ..ÿ..ÿ..ÿ
03 08 FF 03 08 FF 03 08 FF 03 08 ..ÿ..ÿ..ÿ..
000003 << COM1 09:53:40.178 12 C0 00 D2 .À.Ò
000004 >> COM1 09:53:40.188 FF 03 08 21 E0 00 C1 FF 03 08 FF 03 08 FF 03 08 ÿ..!à.Áÿ..ÿ..ÿ..
FF 03 08 FF 03 08 FF 03 08 FF 03 08 FF 03 08 FF ÿ..ÿ..ÿ..ÿ..ÿ..ÿ
03 08 FF 03 08 ..ÿ..
000007 << COM1 09:53:40.218 12 C0 00 D2 .À.Ò
000008 >> COM1 09:53:40.238 21 E0 00 C1 FF 03 08 !à.Áÿ..
000009 << COM1 09:53:40.238 12 00 ..
000010 >> COM1 09:53:40.248 FF 03 08 FF 03 08 FF 03 08 FF 03 08 FF 03 08 FF ÿ..ÿ..ÿ..ÿ..ÿ..ÿ
03 08 FF 03 08 FF 03 08 FF 03 08 FF 03 08 FF 03 ..ÿ..ÿ..ÿ..ÿ..ÿ.
08 FF 03 08 FF 03 08 FF 03 08 FF 03 08 FF 03 08 .ÿ..ÿ..ÿ..ÿ..ÿ..
FF 03 08 FF 03 08 FF 03 08 ÿ..ÿ..ÿ..
000014 << COM1 09:53:40.248 06 20 12 01 00 01 01 27 . .....'
000015 >> COM1 09:53:40.258 FF 03 08 ÿ..
000016 >> COM1 09:53:41.159 21 00 02 90 00 B3 FF 03 08 FF 03 08 FF 03 08 FF !...³ÿ..ÿ..ÿ..ÿ
03 08 FF 03 08 FF 03 08 FF 03 08 FF 03 08 FF 03 ..ÿ..ÿ..ÿ..ÿ..ÿ.
08 FF 03 08 FF 03 08 .ÿ..ÿ..
000019 << COM1 09:53:41.159 02 40 0B 00 A4 04 00 06 D2 .@..¤...Ò
000020 >> COM1 09:53:41.169 FF 03 08 FF 03 08 FF 03 08 FF 03 08 FF 03 08 FF ÿ..ÿ..ÿ..ÿ..ÿ..ÿ
03 08 FF 03 08 FF 03 08 FF 03 08 FF 03 08 FF 03 ..ÿ..ÿ..ÿ..ÿ..ÿ.
08 FF 03 08 FF 03 08 FF 03 08 FF 03 08 FF 03 08 .ÿ..ÿ..ÿ..ÿ..ÿ..
FF 03 08 FF 03 08 FF 03 08 FF 03 08 FF 03 08 FF ÿ..ÿ..ÿ..ÿ..ÿ..ÿ
03 08 ..
000025 << COM1 09:53:41.169 76 00 00 01 01 4B v....K
000026 >> COM1 09:53:41.199 20 40 02 90 00 F2 FF 03 08 FF 03 08 FF 03 08 FF @..òÿ..ÿ..ÿ..ÿ
03 08 FF 03 08 FF 03 08 ..ÿ..ÿ..
000028 << COM1 09:53:41.199 02 00 05 00 B0 ....°
000029 >> COM1 09:53:41.209 FF 03 08 FF 03 08 FF 03 08 FF 03 08 FF 03 08 FF ÿ..ÿ..ÿ..ÿ..ÿ..ÿ
03 08 FF 03 08 FF 03 08 FF 03 08 FF 03 08 ..ÿ..ÿ..ÿ..ÿ..
000031 << COM1 09:53:41.209 00 00 00 B7 ...·
000032 >> COM1 09:53:41.259 20 00 81 60 7D 80 09 42 4B 4B 20 41 6B 74 69 76 .`}€.ZENSIERT
81 07 33 35 32 34 33 38 33 8F 05 30 30 30 32 30 .ZENSIERT.00020
82 0A 32 30 32 39 33 36 36 30 30 35 83 04 35 30 ‚.ZENSIERTƒ.50
30 30 90 01 31 85 06 4C 6F 74 68 61 72 87 09 4B 00.1….ZENSIERT‡.ZENSIERT
65 73 73 65 62 6F 68 6D 88 08 32 39 30 31 31 39 ZENSIERTˆ.ZENSIERT
34 30 89 0E 48 65 63 6B 6C 65 6E 62 72 75 63 68 40‰.ZENSIERT
20 31 8B 05 34 34 35 37 35 8C 0E 43 61 73 74 72 1‹.ZENSIERT
6F 70 2D 52 61 75 78 65 6C 8D 04 31 32 30 38 8E ZENSIERT.1208Ž
01 2E 62 82 41 FF 03 08 FF 03 08 FF 03 08 FF 03 ..b‚Aÿ..ÿ..ÿ..ÿ.
08 FF 03 08 FF 03 08 FF 03 08 .ÿ..ÿ..ÿ..
000042 << COM1 09:53:41.410 12 40 06 20 15 01 00 01 .@. ....
000043 >> COM1 09:53:41.420 FF 03 08 FF 03 08 FF 03 08 FF 03 08 FF 03 08 FF ÿ..ÿ..ÿ..ÿ..ÿ..ÿ
03 08 FF 03 08 FF 03 08 FF 03 08 FF 03 08 FF 03 ..ÿ..ÿ..ÿ..ÿ..ÿ.
08 FF 03 08 FF 03 08 FF 03 08 FF 03 08 .ÿ..ÿ..ÿ..ÿ..
000046 << COM1 09:53:41.420 01 60 .`
000047 >> COM1 09:53:41.530 21 40 02 62 00 01 !@.b..
000048 >> COM1 09:53:42.551 FF 03 08 FF 03 08 FF 03 08 FF 03 08 FF 03 08 FF ÿ..ÿ..ÿ..ÿ..ÿ..ÿ
03 08 FF 03 08 FF 03 08 FF 03 08 FF 03 08 FF 03 ..ÿ..ÿ..ÿ..ÿ..ÿ.
08 FF 03 08 FF 03 08 FF 03 08 .ÿ..ÿ..ÿ..
000051 << COM1 09:53:42.551 12 00 06 20 15 01 00 01 ... ....
000052 >> COM1 09:53:42.561 FF 03 08 FF 03 08 FF 03 08 FF 03 08 FF 03 08 FF ÿ..ÿ..ÿ..ÿ..ÿ..ÿ
03 08 FF 03 08 ..ÿ..
000054 << COM1 09:53:42.561 01 20 .
000055 >> COM1 09:53:42.571 21 00 02 62 00 41 !..b.A
000056 >> COM1 09:53:43.603 FF 03 08 FF 03 08 FF 03 08 FF 03 08 FF 03 08 FF ÿ..ÿ..ÿ..ÿ..ÿ..ÿ
03 08 FF 03 08 FF 03 08 FF 03 08 FF 03 08 FF 03 ..ÿ..ÿ..ÿ..ÿ..ÿ.
08 FF 03 08 FF 03 08 .ÿ..ÿ..
000059 << COM1 09:53:43.603 12 40 06 20 15 01 00 01 01 60 .@. .....`
000060 >> COM1 09:53:43.613 FF 03 08 FF 03 08 FF 03 08 FF 03 08 FF 03 08 FF ÿ..ÿ..ÿ..ÿ..ÿ..ÿ
03 08 FF 03 08 FF 03 08 FF 03 08 21 40 02 90 01 ..ÿ..ÿ..ÿ..!@..
F2 ò
 
Zuletzt bearbeitet:
In dem Du einen zweiten PC mit zwei seriellen Schnittstellen nimmst, auf dem ein Programm läuft das von einer seriellen Schnittstellen die Daten empfängt und geradewegs an die zweite serielle Schnittstelle weiterleitet. Oder Du baust in deinen PC drei serielle Schnittstellen ein. Dann würde das auch mit einem PC gehen.

Zusätzlich kann das Programm aber die Daten jetzt analysieren und am Bildschirm ausgeben. Das Programm ist kein Hexenwerk das solltest Du hinbekommen. Die Analyse der Daten ist dann etwas komplexer.

Deine Beschreibung des Verhaltens, bestätigt die Annahme das um das Datenformat (in ASN.1) noch ein Protokoll existiert. D.h. es ist ein Kommando nötig um das Kartenlesegerät dazu zu bringen etwas zu senden. Entweder fummelst Du Dir das aus dem Hexoutput heraus oder Du suchst Dir die dazu passende Dokumentation.

MfG

Arnd
 
Zuletzt bearbeitet:
DIe passende Dokumentation habe ich ja, nur leider steht da nichts von einem weiteren Protokoll. Ich tappe also im Dunklen!

Der Hex-Code wird mir nicht viel Helfen denk ich ma :( da nur "y.y....yy.." Dabei raus kommt, oder kann ich mir die Sachen zu nutze mahcen?.


Außerdem hast du recht in dem vorhandenen Programm muss erst eine Option (Karte Lesen) gewählt werden, dann wird so zu sagen der Weg für die Daten geöffnet und man muss die Karte reinstecken. Danach ist wieder kein Informationsfluss festzustellen.


:( Falls jrmand anders in einer anderen Programmiersprache soetwas hat, kann er sich gerne bei mir melden!
 
Mit dem Hexoutput kann man sehr viel anfangen :-). Du musst nur die Zuordnung von den Bytes zu den Stellen in der Dokumentation hinbekommen.
Da ich die Dokumentation nicht kenne kann ich Dir da nicht viel weiterhelfen. Irgendwo muss beschrieben sein, was man schicken muss um eine Karte auszulesen.
D.h. du sendest eine bestimmte Abfolge von Bytes an das Kartenlesegerät, daraufhin kommt eine Abfolge von Bytes zurück. Siehe Dein hexlisting. Diese Daten musst Du dann parsen an welcher Stelle welche Information steht. Und et voila hast Du die Kartennummer.

Wenn Du gar nicht weiterkommst, poste doch mal das Inhaltsverzeichnis der Doku, vielleicht kommt man damit weiter.

Nach ein bisschen googlen :-) mal ein paar Links zu dem Thema:

https://www.secure.trusted-site.de/Download/CTAPI/CTAPI11.pdf
http://www.kobil.de/d/support/downl...smartcard&id=12&file=kaan-professional&faq=11

http://forum.fachinformatiker.de/showthread.php?t=78445
http://www.administrator.de/index.p...rungskarte_per_CT-API_auslesen_macht_Probleme

Das Zauberwort heisst wohl CT-API, damit und dem passenden Lesegerät müsste man die Karte auslesen können.

MfG

Arnd
 
Zuletzt bearbeitet:
Vielen Dank Arnd!

Die Vorgehensweise ist mir schon klar ;) nur war das mein erstes mal serielle Schnittstelle etc bzw. ist ;)

Danke das du dir soviel Mühe machst! Werde mir gleich mal die Links einziehen :)

Leider steht in der Dokumentation ncihts drin, sonst wäre es ein Leichtes gewesen :(. Die is 15 Jahre alt :rolleyes:, achja ich arbeite bei der BKK-Aktiv :rolleyes: :)

Naja ich werd mal was suchen und vom Hersteller eventuell nochmal Infos einholen.




Nachtrag!


Habe folgendes gefunden: KVK-Spezifikationen

in dieser Doku steckt einiges an Info drin nur weiss ich net wie ich die Daten und acuh welche ich übermiteln soll, wäre sehr nett wenn du mir da mal wieder ein Stück weiterhelfen könntest :)
 
Zuletzt bearbeitet:
Die Doku ist schon mal nicht schlecht. Aber wirklich weiterhelfen tut sie auch nicht.
Kapitel 6.2 ist ganz interessant.

Eventuell kann man mit dem Answer to Reset Header ja die Daten anfordern, aber unter einer Protokoll Spezifikation verstehe ich eigentlich etwas ausfühlicheres.
Vor allem ist die Bedeutung mancher Elemente nicht erklärt.

In den Hexdaten oben von Dir ist dieser Answer To Reset Header aber nicht enthalten.

MfG

Arnd
 
Zuletzt bearbeitet:
Ich habe mir am Wochenende diverse Threads angeguckt und sogar einen gefunden in dem jemand mein Vorhaben erfolgreich abgeschlossen hat ;)

Da der Thread 1 Jahr alt war hatte ich nochmal glück, das er mir das Programm samt Quelltext geschickt hat. Ob es funktioniert hat, werde ich demnächst posten. Ich denke mal im Laufe des Tages :)

Drück mir mal die Daumen :P



Nachtrag

Das Programm ist für mich verständlich geworden jedoch muss ich noch QT runterladen und Visual studio damit einrichten. Das ganze erscheint nun größer als vorher gedacht :)


Nachtrag 2 :(
#

Leider habe ich es immernoch nciht geschafft eine Kommunikation mit der sch.. schönen KVK zu beginnen. deshalb bin ich immer noch um jede antwort dankbar die reinkommt. Am dankbarsten wäre ich wenn einer sogar ein Programm hätte, das bereits eine KVK ausliest und mir den Quelltext geben könnte, dem jenigen würde ich auch die Füße küssen !

danke schonmal im vorraus! Bin im moment etwas deprimiert :(
 
Zuletzt bearbeitet:
Wenn Du jetzt schon Quellcode hast, poste den doch mal und beschreibe wo es hakt.
Dann kommen wir vielleicht weiter :-).

MfG

Arnd
 
Das Problem ist, der Quelltext ist mit QT verbunden und wenn, dann kann ich ihn dir nur schicken wegen Lizenzen usw. also waere nett wenn du mir deine E-Mail addy geben könnts ;)
 
Wenn es da Lizenzprobleme gibt, lassen wir es besser. Da ich kein Kartenlesegerät habe kann ich es sowieso nicht ausprobieren.

Versuch doch mal die Probleme näher zu beschreiben.

MfG

Arnd
 
Zurück
Oben