diff --git a/armsrc/hitagS.c b/armsrc/hitagS.c index 00d204ce3..2f07a3468 100644 --- a/armsrc/hitagS.c +++ b/armsrc/hitagS.c @@ -889,9 +889,12 @@ void SimulateHitagSTag(bool tag_mem_supplied, uint8_t *data) { } tag.uid = ((tag.pages[0][3]) << 24) | ((tag.pages[0][2]) << 16) | ((tag.pages[0][1]) << 8) | tag.pages[0][0]; - tag.key = ((tag.pages[3][3]) << 24) | ((tag.pages[3][2]) << 16) | ((tag.pages[3][1]) << 8) | tag.pages[3][0]; - tag.key <<= 16; - tag.key += ((tag.pages[2][3]) << 8) + tag.pages[2][2]; + tag.key = (((uint64_t)tag.pages[3][3]) << 40) | + (((uint64_t)tag.pages[3][2]) << 32) | + (((uint64_t)tag.pages[3][1]) << 24) | + (((uint64_t)tag.pages[3][0]) << 16) | + (((uint64_t)tag.pages[2][3]) << 8) | + (((uint64_t)tag.pages[2][2])); tag.pwdl0 = tag.pages[2][0]; tag.pwdl1 = tag.pages[2][1]; tag.pwdh0 = tag.pages[1][3];