BOOL get_interpreted_tag_uid(BYTE *response, BYTE tagtype) { BYTE tmp[MAXUID + 1]; if(get_tag_uid(tmp)) { if(interpret_uid(response, tmp, tagtype)) return write_wiegand_uid(response); } return FALSE; }
/// show contents of vtag void vtag_dump(void) { BYTE tmp[MAXBLOCKSIZE + 1], interpret; unsigned int i; UserMessage(" Type: %s", (BYTE *) TagTypes[RFIDlerVTag.TagType]); UserMessage("\r\n Emulating: %s", (BYTE *) TagTypes[RFIDlerVTag.EmulatedTagType]); UserMessage("\r\n Raw UID: %s", RFIDlerVTag.UID); // show interpreted UID if(RFIDlerVTag.EmulatedTagType == TAG_TYPE_NONE) interpret= RFIDlerVTag.TagType; else interpret= RFIDlerVTag.EmulatedTagType; UserMessage("\r\n UID: %s", interpret_uid(tmp, RFIDlerVTag.UID, interpret) ? tmp : (BYTE *) "invalid!"); // show config block if present if(config_block_number(&i, RFIDlerVTag.TagType)) { UserMessage("%s","\r\n\r\n"); config_block_show(&RFIDlerVTag.Data[HEXDIGITS(RFIDlerVTag.BlockSize * i)], RFIDlerVTag.TagType); } if(RFIDlerVTag.DataBlocks == 0) { UserMessage("%s", "\r\n\r\n"); return; } UserMessage("%s", "\r\n Data:"); tmp[HEXDIGITS(RFIDlerVTag.BlockSize)]= '\0'; for(i= 0 ; i < RFIDlerVTag.DataBlocks ; ++i) { memcpy(tmp, &RFIDlerVTag.Data[HEXDIGITS(RFIDlerVTag.BlockSize * i)], HEXDIGITS(RFIDlerVTag.BlockSize)); if(tmp[0]) { UserMessageNum("\r\n %d: ", i); UserMessage("%s", tmp); } } UserMessage("%s", "\r\n\r\n"); }
// convert current vtag to new type BOOL vtag_convert(BYTE *tagtype) { BYTE tmp[MAXUID + 1], newtag; if(RFIDlerVTag.TagType == TAG_TYPE_NONE) return FALSE; // get current interpreted uid if(RFIDlerVTag.EmulatedTagType == TAG_TYPE_NONE) newtag= RFIDlerVTag.TagType; else newtag= RFIDlerVTag.EmulatedTagType; // check UID is valid if(!interpret_uid(tmp, RFIDlerVTag.UID, newtag)) return FALSE; // create new VTAG from UID return vtag_create_from_uid(tagtype, newtag, tmp); }
static fs_node_t * file_from_ustar(struct tarfs * self, struct ustar * file, unsigned int offset) { fs_node_t * fs = malloc(sizeof(fs_node_t)); memset(fs, 0, sizeof(fs_node_t)); fs->device = self; fs->inode = offset; fs->impl = 0; char filename_workspace[256]; memcpy(fs->name, filename_workspace, strlen(filename_workspace)+1); fs->uid = interpret_uid(file); fs->gid = interpret_gid(file); fs->length = interpret_size(file); fs->mask = interpret_mode(file); fs->nlink = 0; /* Unsupported */ fs->flags = FS_FILE; if (file->type[0] == '5') { fs->flags = FS_DIRECTORY; fs->readdir = readdir_tarfs; fs->finddir = finddir_tarfs; } else if (file->type[0] == '1') { debug_print(ERROR, "Hardlink detected"); /* go through file and find target, reassign inode to point to that */ } else if (file->type[0] == '2') { fs->flags = FS_SYMLINK; fs->readlink = readlink_tarfs; } else { fs->flags = FS_FILE; fs->read = read_tarfs; } free(file); #if 0 /* TODO times are also available from the file */ fs->atime = now(); fs->mtime = now(); fs->ctime = now(); #endif return fs; }