Experimental HitagS support
[proxmark3-svn] / include / hitagS.h
1 //-----------------------------------------------------------------------------
2 // This code is licensed to you under the terms of the GNU GPL, version 2 or,
3 // at your option, any later version. See the LICENSE.txt file for the text of
4 // the license.
5 //-----------------------------------------------------------------------------
6 // HitagS emulation (preliminary test version)
7 //
8 // (c) 2016 Oguzhan Cicek, Hendrik Schwartke, Ralf Spenneberg
9 // <info@os-s.de>
10 //-----------------------------------------------------------------------------
11
12
13 #include <stdio.h>
14 #include <stdlib.h>
15 #include <string.h>
16 #include <hitag2.h>
17
18 #ifndef _HITAGS_H_
19 #define _HITAGS_H_
20
21 typedef enum PROTO_STATE {READY=0,INIT,AUTHENTICATE,SELECTED,QUIET,TTF,FAIL} PSTATE; //protocol-state
22 typedef enum TAG_STATE {NO_OP=0,READING_PAGE,WRITING_PAGE_ACK,WRITING_PAGE_DATA,WRITING_BLOCK_DATA} TSATE; //tag-state
23 typedef enum SOF_TYPE {STANDARD=0,ADVANCED,FAST_ADVANCED,ONE,NO_BITS} stype; //number of start-of-frame bits
24
25 struct hitagS_tag {
26 PSTATE pstate; //protocol-state
27 TSATE tstate; //tag-state
28 uint32_t uid;
29 uint32_t pages[16][4];
30 uint64_t key;
31 byte_t pwdl0,pwdl1,pwdh0;
32 //con0
33 int max_page;
34 stype mode;
35 //con1
36 bool auth; //0=Plain 1=Auth
37 bool TTFC; //Transponder Talks first coding. 0=Manchester 1=Biphase
38 int TTFDR; //data rate in TTF Mode
39 int TTFM; //the number of pages that are sent to the RWD
40 bool LCON; //0=con1/2 read write 1=con1 read only and con2 OTP
41 bool LKP; //0=page2/3 read write 1=page2/3 read only in Plain mode and no access in authenticate mode
42 //con2
43 //0=read write 1=read only
44 bool LCK7; //page4/5
45 bool LCK6; //page6/7
46 bool LCK5; //page8-11
47 bool LCK4; //page12-15
48 bool LCK3; //page16-23
49 bool LCK2; //page24-31
50 bool LCK1; //page32-47
51 bool LCK0; //page48-63
52 } ;
53
54 #endif
Impressum, Datenschutz