README.md 5.17 KB
Newer Older
axel.maurer's avatar
axel.maurer committed
1
## KIT-Card Reader  
axel.maurer's avatar
axel.maurer committed
2
3
4
5
6

Voraussetzung zur Nutzung dieser Software ist ein [ELATEC Multitech oder Mifare TWN4](https://www.elatec-rfid.com/de-de/produktdetail/twn4-multitech) und das zugehörige [Dev-Kit](https://www.elatec-rfid.com/de-de/twn4-dev-pack). Die Kosten für einen Leser liegen bei ca 100 € zzgl MwSt (Stand Juli 2021).
Das Dev-Kit muss installiert sein, der Leser über USB angeschlossen. Das Dev-Kit ist nur unter Windows nutzbar. Die Programmierung des Leser muss damit immer unter Windows erfolgen, auch dann, wenn die Nutzung des Lesers unter Linux erfolgen soll.
Der KIT-Card Reader kennt zwei Modi:

axel.maurer's avatar
axel.maurer committed
7
- reader mode --> USB Tastatur (HID Device, engl. Tastaturlayout)
axel.maurer's avatar
axel.maurer committed
8
- serial mode --> Serial device (über VCOM Treiber)
axel.maurer's avatar
axel.maurer committed
9

axel.maurer's avatar
axel.maurer committed
10
In beiden Fällen muss der Leser an einen Rechner angeschlossen sein. Ein Stand-Alone Betrieb ist nicht möglich, auch dann nicht, wenn der Leser so programmiert ist, dass er die Funktionen eigenständig ausführt. Die Treiber für beide Varianten werden von Windows und Linux mitgeliefert. Eine Treiber-Installation ist in der Regel nicht erforderlich. Vor dem Übersetzen müssen in `make.bat` die `init`-Parameter entsprechend der lokalen Installation gesetzt werden.<br />
axel.maurer's avatar
axel.maurer committed
11
12
Zur Übersetzung und zum Laden der Firmware wird `make.bat` aufgerufen. Folgende Parameter können angegeben werden:

axel.maurer's avatar
axel.maurer committed
13
```
axel.maurer's avatar
axel.maurer committed
14
15
16
17
18
19
20
21
22
23
24
USAGE:
  make.bat [flags] "serial|reader"

  -?, --help                   shows this help
  -v, --version                shows the version
  -e, --verbose                shows detailed output
  -d, --debug                  debug messages on
  -s, --secure                 set secure mode
 -ek, --english_keyboard       set keyboard emulation mode in reader mode to english (default is german)
  -r, --reader_action "action" set the reader action
                               This option is mandatory in reader mode
axel.maurer's avatar
axel.maurer committed
25
```
axel.maurer's avatar
axel.maurer committed
26
> Defines:<br />
axel.maurer's avatar
axel.maurer committed
27
> READER_ACTION --> Standardfunktion, die ausgeführt werden soll, wenn eine Karte aufgelegt wird. Dabei ist zu beachten, dass im reader mode nur Funnktionen angegeben werden können, die nur Daten ausgeben.<br />
axel.maurer's avatar
axel.maurer committed
28
> SECURE --> Nur im serial mode verfügbar. Damit werden nur Funktionen im SECURE-Mode freigeschaltet (siehe unten). Funktionen im Normalmodus (<100) können nicht mehr ausgeführt werden.<br />
axel.maurer's avatar
axel.maurer committed
29
> GERMAN_KEYBOARD --> Nur im reader mode verfügbar. Stellt den Reader auf deutsche Tastatur (Standard ist englische Tastatur).
axel.maurer's avatar
axel.maurer committed
30

axel.maurer's avatar
axel.maurer committed
31
Im serial mode kennt der Leser folgende Befehle, die über die serielle Schnittstelle an den Leser übergeben werden. Die seriellen Parameter sind:
axel.maurer's avatar
axel.maurer committed
32
33
34
35
36
37
38
39
40

    baudrate=9600,
    parity=NONE,
    stopbits=ONE,
    bytesize=EIGHTBITS
Unter Windows wird der Leser mit "comx" angesprochen unter Linux unter "/dev/ttyACMx", wobei x der Nummer der Schnittstelle entspricht.
Alle Befehle werden mit `0x0D`abgeschlossen. Zeichen dahinter werden ignoriert.
Alle Angaben sind als Zeichen zu übermitteln, wenn nichts anderes vermerkt ist.

axel.maurer's avatar
axel.maurer committed
41
Im serial mode werden alle Befehle direkt ausgeführt. Sollte zum Zeitpunkt der Ausführung keine Karte aufliegen, so kommt die Meldung "09,no card for action 1". Das heißt die Anwendung muss selbst die Warteschleife implementieren.
axel.maurer's avatar
axel.maurer committed
42
43
Fehlermeldungen haben immer folgenden Aufbau: 
`<fehlernummer>,<Erläuterungen zum Fehler>`
axel.maurer's avatar
axel.maurer committed
44
45
|Befehl| App | Return | Parameter
|--|--|--|--|
axel.maurer's avatar
axel.maurer committed
46
47
48
49
| 1 | bwCard old (becaad) | bwCard-Nummer |
|10|bwCard old (becaad)|bwCard-Nummer encrypted (Hex)
|11|bwCard old (becaad)|bwCard-Nummer;readerUID (Hex)
|12|bwCard old (becaad)|cardUID (Hex);readerUID (Hex)
axel.maurer's avatar
axel.maurer committed
50
|13|bwCard old (becaad)|bwCard-Nummer encrypted (Hex)>;<readerUID (Hex)
axel.maurer's avatar
axel.maurer committed
51
|19|bwCard old (becaad)|<check for file 1>;TRUE or FALSE|date in sec
axel.maurer's avatar
axel.maurer committed
52
53
54
55
56
57
|20|Success Beep|Kein Returnwert
|20|Success Beep|Kein Returnwert
|21|Special Success Beep|Kein Returnwert
|30|Error Beep|Kein Returnwert
|31|Special Error Beep|Kein Returnwert
|50|read device UID|readerUID (Hex)
axel.maurer's avatar
axel.maurer committed
58
|51|Generate Login Data for secure mode|token for secure mode
axel.maurer's avatar
axel.maurer committed
59
|60| bwCard (F58860) | bwCard-Nummer |
axel.maurer's avatar
axel.maurer committed
60
61
62
63
64
65
66
67
68
69
70
71
|61|bwCard (F58860)|bwCard-Nummer encrypted (Hex)
|62|bwCard (F58860)|bwCard-Nummer;readerUID (Hex)
|63|bwCard (F58860)|cardUID (Hex);readerUID (Hex)
|64|bwCard (F58860)|bwCard-Nummer encrypted (Hex)>;<readerUID (Hex
|65|bwCard (F58860)|bwCard-Nummer;Scope;UID;ESCN
|70|OSS/SIPORT (F51773)|create OSS App  --> 0,app created *)
|71|OSS/SIPORT (F51773)| OSS Info File

*)Liest die bwCard Nummer (aus 0xbecaad oder 0xcc1580), legt die OSS App an, falls erforderlich und schreibet die bwCard Nummer in die OSS APP

#### Secure Mode
Zusätzlich zu obigen Funktionen ist noch eine "SECURE-Mode" implementiert. Im Secure Mode folgen die Befehle dem in der Abbildung gezegten Modus.
axel.maurer's avatar
axel.maurer committed
72
![coding_sequence](https://www.plantuml.com/plantuml/png/bPF1JiCm38RlUGhV0G4xJW9Dsc0gI81W4qSK6jD5QvsHk1jxUqfQigYBgBXjzkVVzkzcubXQhgiISgCq5MyEFska78MObXg9uUmQfjAgPvGABOmXUyWM8ehqy-sFfLRdIuTs9bdswLPt33UKs_s6KS6133rVq6wzNcaAJKcuGnhuv--xTDZWqnNcQ_WmrdCYP299du77-o0GfUP8Q2KZi5aZNGGa6llkTG4xpIl8519hte_1_kuC9u1Xq4uYxUCn9uJCMMybOzTBbCPiG9DcBKjmw9msbCtWwj3lj2s-R6AT2W10maMpkQsfaJVaYSJc1SQRZoAivx1ZOuUfEJ8yILivZnoV8QwCtVKr84br7IAVlEdjlhuwPUp_5FxuZ1NwebOjBlJA-8LvpHZPEgGNkmRI0U4kFKdiHXYzoRcwv6YEKVhIwPB1QnN8WHawLmZ6DhND1ZwQD1MMjUt06JMljvBUL2Gb5FRVnQG9rrKflW40 "coding_sequence")
axel.maurer's avatar
axel.maurer committed
73

axel.maurer's avatar
axel.maurer committed
74
Die implementierten Befehle im Secure Mode werden auf Nachfrage beschrieben.
axel.maurer's avatar
axel.maurer committed
75