Well I solved it. Short answer : the cards are physically
bad.
I have come up with an easier way to show this too. Here's what the
sample program does:
- provides credentials
- erases card
- creates a DF and an EF of 1979 bytes (a prime number)
- initializes a 1979 byte array in memory, writing 0x80 through 0xFF to
the first 128 bytes, and leaving the rest of them zeros.
- writes this array to the card
- reads from the card and compares to what it told the card to
write.
[drumroll]
And the result is below (you'll have to disable word wrap to see it
properly, or copy it to notepad)
the short : bytes are being duplicated throughout the card, but only
after a write operation has occurred. For example, if I write
the first 128 bytes of the array and read the entire 1979 bytes from the
file, I will get exactly what you'd expect: 0x80 though 0xFF and
the rest zeros. But if I write zeros to the range offset 296
through 383 and then read that data in again I will not get zeros
in return, but 0xA8 through 0xFF as shown below.
As far as I can tell the only way for this to happen is either a really
screwed up driver/API, or a problem with the card. Unfortunately I
do not have any other types of cards to try (I have 4 of these GPK8000
which all give the same results).
Does anyone know why this happens, or have had something similar happen
too?
As far as I can tell these are sample cards...
-- Sean
Erase Card
Creating DF :3F00:D000
Creating 1979 byte EF :3F00:D000:D001
Reading Certificate from disk...
Writing 1979 bytes of data to :3F00:D000:D001....
Reading data.
Verifying data:
------Read
Data--------------------------------
------Original Data----------------------------
0000: 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F --- 80
81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F
0016: 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F --- 90
91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F
0032: A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF --- A0
A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF
0048: B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF --- B0
B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF
0064: C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF --- C0
C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF
0080: D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF --- D0
D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF
0096: E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF --- E0
E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF
0112: F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF --- F0
F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF
0128: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --- 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0144: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --- 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --- 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0176: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --- 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0192: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --- 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0208: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --- 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0224: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --- 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0240: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --- 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0256: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --- 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0272: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --- 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0288: 00 00 00 00 00 00 00 00 A8*A9*AA*AB*AC*AD*AE*AF* --- 00 00 00
00 00 00 00 00 00*00*00*00*00*00*00*00*
0304: B0*B1*B2*B3*B4*B5*B6*B7*B8*B9*BA*BB*BC*BD*BE*BF* ---
00*00*00*00*00*00*00*00*00*00*00*00*00*00*00*00*
0320: C0*C1*C2*C3*C4*C5*C6*C7*C8*C9*CA*CB*CC*CD*CE*CF* ---
00*00*00*00*00*00*00*00*00*00*00*00*00*00*00*00*
0336: D0*D1*D2*D3*D4*D5*D6*D7*D8*D9*DA*DB*DC*DD*DE*DF* ---
00*00*00*00*00*00*00*00*00*00*00*00*00*00*00*00*
0352: E0*E1*E2*E3*E4*E5*E6*E7*E8*E9*EA*EB*EC*ED*EE*EF* ---
00*00*00*00*00*00*00*00*00*00*00*00*00*00*00*00*
0368: F0*F1*F2*F3*F4*F5*F6*F7*F8*F9*FA*FB*FC*FD*FE*FF* ---
00*00*00*00*00*00*00*00*00*00*00*00*00*00*00*00*
0384: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --- 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0400: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --- 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0416: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --- 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0432: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --- 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0448: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --- 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0464: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --- 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0480: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --- 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0496: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --- 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0512: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --- 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0528: 00 00 00 00 00 00 00 00 98*99*9A*9B*9C*9D*9E*9F* --- 00 00 00
00 00 00 00 00 00*00*00*00*00*00*00*00*
0544: A0*A1*A2*A3*A4*A5*A6*A7*A8*A9*AA*AB*AC*AD*AE*AF* ---
00*00*00*00*00*00*00*00*00*00*00*00*00*00*00*00*
0560: B0*B1*B2*B3*B4*B5*B6*B7*B8*B9*BA*BB*BC*BD*BE*BF* ---
00*00*00*00*00*00*00*00*00*00*00*00*00*00*00*00*
0576: C0*C1*C2*C3*C4*C5*C6*C7*C8*C9*CA*CB*CC*CD*CE*CF* ---
00*00*00*00*00*00*00*00*00*00*00*00*00*00*00*00*
0592: D0*D1*D2*D3*D4*D5*D6*D7*D8*D9*DA*DB*DC*DD*DE*DF* ---
00*00*00*00*00*00*00*00*00*00*00*00*00*00*00*00*
0608: E0*E1*E2*E3*E4*E5*E6*E7*E8*E9*EA*EB*EC*ED*EE*EF* ---
00*00*00*00*00*00*00*00*00*00*00*00*00*00*00*00*
0624: F0*F1*F2*F3*F4*F5*F6*F7*F8*F9*FA*FB*FC*FD*FE*FF* ---
00*00*00*00*00*00*00*00*00*00*00*00*00*00*00*00*
0640: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --- 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0656: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --- 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0672: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --- 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0688: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --- 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0704: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --- 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0720: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --- 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0736: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --- 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0752: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --- 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0768: 00 00 00 00 00 00 00 00 88*89*8A*8B*8C*8D*8E*8F* --- 00 00 00
00 00 00 00 00 00*00*00*00*00*00*00*00*
0784: 90*91*92*93*94*95*96*97*98*99*9A*9B*9C*9D*9E*9F* ---
00*00*00*00*00*00*00*00*00*00*00*00*00*00*00*00*
0800: A0*A1*A2*A3*A4*A5*A6*A7*A8*A9*AA*AB*AC*AD*AE*AF* ---
00*00*00*00*00*00*00*00*00*00*00*00*00*00*00*00*
0816: B0*B1*B2*B3*B4*B5*B6*B7*B8*B9*BA*BB*BC*BD*BE*BF* ---
00*00*00*00*00*00*00*00*00*00*00*00*00*00*00*00*
0832: C0*C1*C2*C3*C4*C5*C6*C7*C8*C9*CA*CB*CC*CD*CE*CF* ---
00*00*00*00*00*00*00*00*00*00*00*00*00*00*00*00*
0848: D0*D1*D2*D3*D4*D5*D6*D7*D8*D9*DA*DB*DC*DD*DE*DF* ---
00*00*00*00*00*00*00*00*00*00*00*00*00*00*00*00*
0864: E0*E1*E2*E3*E4*E5*E6*E7*E8*E9*EA*EB*EC*ED*EE*EF* ---
00*00*00*00*00*00*00*00*00*00*00*00*00*00*00*00*
0880: F0*F1*F2*F3*F4*F5*F6*F7*F8*F9*FA*FB*FC*FD*FE*FF* ---
00*00*00*00*00*00*00*00*00*00*00*00*00*00*00*00*
0896: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --- 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0912: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --- 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0928: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --- 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0944: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --- 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0960: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --- 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0976: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --- 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0992: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --- 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1008: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --- 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1024: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --- 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --- 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1056: 00 00 00 00 00 00 00 00 00 00 00 00 AC*AD*AE*AF* --- 00 00 00
00 00 00 00 00 00 00 00 00 00*00*00*00*
1072: B0*B1*B2*B3*B4*B5*B6*B7*00 00 00 00 00 00 00 00 ---
00*00*00*00*00*00*00*00*00 00 00 00 00 00 00 00
1088: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --- 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
<------------snip--------------->
Bytes 1104 through 1979 are zeros.
---
> Visit the OpenCard web site at http://www.opencard.org/ for more
> information on OpenCard---binaries, source code, documents.
> This list is being archived at http://www.opencard.org/archive/opencard/
! To unsubscribe from the [EMAIL PROTECTED] mailing list send an email
! to
! [EMAIL PROTECTED]
! containing the word
! unsubscribe
! in the body.
- [OCF] new PC/SC wrapper Karl Scheibelhofer
- Re: [OCF] new PC/SC wrapper Cedric HUET
- RE: [OCF] new PC/SC wrapper Karl Scheibelhofer
- Re: [OCF] new PC/SC wrapper Christophe Muller
- [OCF] crazy problem writing files and... Sean Graham
- Sean Graham
