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.

Reply via email to