<UserCid>.dat

UsrCid.dat.md

Header:

Header size = 0x218
    typedef struct _HEADER {
        uint32    Version;
        uint32    unknown;
        uint32    unknown1;
        char       syncTokenData[516]; // Applies to personal accounts only
        uint32    syncTokenData_size;
        uint32    unknown2;
} HEADER;

<UsrCid>.dat versions

dat version = 29

Data structure size = 0x418

OneDrive versions = 17.3.6673.1011
                                    17.3.6915.0529

#define BLOCK_CONSTANT 1048
#define FOLDER_CONSTANT 299
#define DELETE_CONSTANT 1032
#define LSCOPE_CONSTANT 208
#define LFOLDER_CONSTANT 825
#define VAULT_CONSTANT 320
#define ASCOPE_CONSTANT 176

dat version = 2a

Data structure size = 0x438

OneDrive versions = 17.3.6931.0609
                                    17.3.7131.1115

#define BLOCK_CONSTANT 1080
#define FOLDER_CONSTANT 331
#define DELETE_CONSTANT 1064
#define LSCOPE_CONSTANT 240
#define LFOLDER_CONSTANT 857
#define VAULT_CONSTANT 352
#define ASCOPE_CONSTANT 208

dat version = 2b

Data structure size = 0x438

OneDrive versions = 17.3.7289.1207
                                    18.091.0503.0003

#define BLOCK_CONSTANT 1080
#define FOLDER_CONSTANT 331
#define DELETE_CONSTANT 1064
#define LSCOPE_CONSTANT 240
#define LFOLDER_CONSTANT 857
#define VAULT_CONSTANT 352
#define ASCOPE_CONSTANT 208

dat version = 2c

Data structure size = 0x448

OneDrive versions = 18.095.0510.0001
                                    19.074.0416.0001

#define BLOCK_CONSTANT 1096
#define FOLDER_CONSTANT 347
#define DELETE_CONSTANT 1080
#define LSCOPE_CONSTANT 256
#define LFOLDER_CONSTANT 873
#define VAULT_CONSTANT 368
#define ASCOPE_CONSTANT 224

dat version = 2d

Data structure size = 0x450

OneDrive versions = 19.086.0502.0003
                                    20.064.0329.0008

#define BLOCK_CONSTANT 1098
#define FOLDER_CONSTANT 347
#define DELETE_CONSTANT 1082
#define LSCOPE_CONSTANT 258
#define LFOLDER_CONSTANT 875
#define VAULT_CONSTANT 370
#define ASCOPE_CONSTANT 226

dat version = 2e

Data structure size = 0x468

OneDrive version = 20.084.0426.0006
 

#define BLOCK_CONSTANT 1128
#define FOLDER_CONSTANT 371
#define DELETE_CONSTANT 1112
#define LSCOPE_CONSTANT 288
#define LFOLDER_CONSTANT 905
#define VAULT_CONSTANT 400
#define ASCOPE_CONSTANT 256

dat version = 2f

Data structure size = 0x468

OneDrive versions = 20.103.0521.0002
                                    20.174.0830.0002

#define BLOCK_CONSTANT 1128
#define FOLDER_CONSTANT 371
#define DELETE_CONSTANT 1112
#define LSCOPE_CONSTANT 288
#define LFOLDER_CONSTANT 905
#define VAULT_CONSTANT 400
#define ASCOPE_CONSTANT 256

dat version = 30

Data structure size = 0x480

OneDrive versions = 20.189.0920.0005
                                    21.002.0104.0004

#define BLOCK_CONSTANT 1152
#define FOLDER_CONSTANT 395
#define DELETE_CONSTANT 1136
#define LSCOPE_CONSTANT 312
#define LFOLDER_CONSTANT 929
#define VAULT_CONSTANT 424
#define ASCOPE_CONSTANT 280

dat version = 31

Data structure size = 0x488

OneDrive versions = 21.011.0117.0001
                                    21.020.0128.0002

#define BLOCK_CONSTANT 1160
#define FOLDER_CONSTANT 403
#define DELETE_CONSTANT 1144
#define LSCOPE_CONSTANT 320
#define LFOLDER_CONSTANT 937
#define VAULT_CONSTANT 432
#define ASCOPE_CONSTANT 288

dat version = 32

Data structure size = 0x488

OneDrive versions = 21.025.0204.0003
                                    21.200.0926.0001

#define BLOCK_CONSTANT 1160
#define FOLDER_CONSTANT 403
#define DELETE_CONSTANT 1144
#define LSCOPE_CONSTANT 320
#define LFOLDER_CONSTANT 937
#define VAULT_CONSTANT 432
#define ASCOPE_CONSTANT 288

dat version = 33

Data structure size = 0x488

OneDrive versions = 21.205.1003.0002
                                    21.215.1017.0001

#define BLOCK_CONSTANT 1160
#define FOLDER_CONSTANT 403
#define DELETE_CONSTANT 1144
#define LSCOPE_CONSTANT 320
#define LFOLDER_CONSTANT 937
#define VAULT_CONSTANT 432
#define ASCOPE_CONSTANT 288

dat version = 34

Data structure size = 0x488

OneDrive versions = 21.220.1024.0001
                                    22.077.0410.0007

#define BLOCK_CONSTANT 1160
#define FOLDER_CONSTANT 403
#define DELETE_CONSTANT 1144
#define LSCOPE_CONSTANT 320
#define LFOLDER_CONSTANT 937
#define VAULT_CONSTANT 432
#define ASCOPE_CONSTANT 288

dat version = 35

Data structure size = 0x498

OneDrive versions = 22.082.0417.0001
                                    22.116.0529.0003

#define BLOCK_CONSTANT 1176
#define FOLDER_CONSTANT 419
#define DELETE_CONSTANT 1160
#define LSCOPE_CONSTANT 336
#define LFOLDER_CONSTANT 953
#define VAULT_CONSTANT 448
#define ASCOPE_CONSTANT 304

dat version = 36

Data atructure size = 0x4D0

OneDrive versions = 22.121.0605.0002
                                    23.216.1017.0001

#define BLOCK_CONSTANT 1232
#define FOLDER_CONSTANT 475
#define DELETE_CONSTANT 1216
#define LSCOPE_CONSTANT 392
#define LFOLDER_CONSTANT 1009
#define VAULT_CONSTANT 504
#define ASCOPE_CONSTANT 360

syncTokenData:

URL encoded data
LM%3d63635913785420%3bID%3dA3936C317AC1474E!101%3bLR%3d63636004635103%3bEP%3d16%3bSI%3d53%3bTD%3dTrue%3bSG%3d1%3bSO%3d2%3bPI%3d3
LM=63635913785420;ID=A3936C317AC1474E!101;LR=63636004635103;EP=16;SI=53;TD=True;SG=1;SO=2;PI=3




























Data Structure Types

First data structure starts at 0x218

01 = File

02 = Folder

03 = Deleted

09 = libraryScope

0A = libraryFolder

0B = vault

0C = AddedScope

File Structure:

    typedef struct _DAT_FILE_v29 {
        uint32    header; // 01 = File
        uint32    entry_offset;
        uint64    unknown1;
        char       resourceID[39];
        char       parentResourceID[39];
        char       eTag[56];
        uint16    unknown2;
        uint64    volumeID;
        uint64    itemIndex;
        uint64    unknown3;
        char       localHashDigest[20]; // quickXor, SHA1
        uint32    unknown4;
        uint64    size;
        wchar    fileName[260];
        uint8      unknown5;
        uint16    fileStatus;
        uint8      unknown6;
        char       unknown7[308];
        uint32    spoPermissions;
        char       unknown8[4];
} DAT_FILE_v29;

    typedef struct _DAT_FILE_v2a {
        uint32    header; // 01 = File
        uint32    entry_offset;
        uint64    unknown1;
        char       resourceID[39];
        char       parentResourceID[39];
        char       eTag[56];
        uint16    unknown2;
        uint64    volumeID;
        uint64    itemIndex;
        uint64    unknown3;
        char       localHashDigest[20]; // quickXor, SHA1
        uint32    unknown4;
        uint64    size;
        wchar     fileName[260];
        uint8      unknown5;
        uint16    fileStatus;
        uint8      unknown6;
        char       unknown7[308];
        uint32    spoPermissions;
        char       unknown8[36];
} DAT_FILE_v2a;

    typedef struct _DAT_FILE_v2b {
        uint32    header; // 01 = File
        uint32    entry_offset;
        uint64    unknown1;
        char       resourceID[39];
        char       parentResourceID[39];
        char       eTag[56];
        uint16    unknown2;
        uint64    volumeID;
        uint64    itemIndex;
        uint64    unknown3;
        char       localHashDigest[20]; // quickXor, SHA1
        uint32    unknown4;
        uint64    size;
        wchar     fileName[260];
        uint8      unknown5;
        uint16    fileStatus;
        uint8      unknown6;
        char       unknown7[308];
        uint32    spoPermissions;
        char       unknown8[36];
} DAT_FILE_v2b;

    typedef struct _DAT_FILE_v2c {
        uint32    header; // 01 = File
        uint32    entry_offset;
        uint64    unknown1;
        char       resourceID[39];
        char       parentResourceID[39];
        char       eTag[56];
        uint16    unknown2;
        uint64    volumeID;
        uint64    itemIndex;
        uint32    unknown3;
        uint32    bitMask;
        char       localHashDigest[20]; // quickXor, SHA1
        uint32    unknown4;
        uint32    lastChange;
        uint32    unknown5;
        uint64    size;
        wchar     fileName[260];
        uint8      unknown6;
        uint16    fileStatus;
        uint8      unknown7;
        char       unknown8[308];
        uint32    spoPermissions;
        char       unknown9[44];
} DAT_FILE_v2c;

    typedef struct _DAT_FILE_v2d {
        uint64    header; // 01 = File
        uint64    entry_offset;
        uint64    unknown1;
        char       resourceID[39];
        char       parentResourceID[39];
        char       eTag[56];
        uint16    unknown2;
        uint64    volumeID;
        uint64    itemIndex;
        uint32    unknown3;
        uint32    bitMask;
        char       localHashDigest[20]; // quickXor, SHA1
        uint32    unknown4;
        uint32    lastChange;
        uint32    unknown5;
        uint64    size;
        wchar     fileName[260];
        uint8      unknown6;
        uint16    fileStatus;
        uint8      unknown7;
        char       unknown8[308];
        uint32    spoPermissions;
        char       unknown9[44];
} DAT_FILE_v2d;

    typedef struct _DAT_FILE_v2e {
        uint64    header; // 01 = File
        uint64    entry_offset;
        uint64    unknown1;
        char       resourceID[39];
        char       parentResourceID[39];
        char       eTag[56];
        uint16    unknown2;
        uint64    volumeID;
        uint64    itemIndex;
        uint32    unknown3;
        uint32    bitMask;
        char       localHashDigest[20]; // quickXor, SHA1
        uint32    unknown4;
        uint32    lastChange;
        uint32    unknown5;
        uint64    size;
        wchar     fileName[260];
        uint8      unknown6;
        uint16    fileStatus;
        uint8      unknown7;
        char       unknown8[308];
        uint32    spoPermissions;
        char       unknown9[68];
} DAT_FILE_v2e;

    typedef struct _DAT_FILE_v2f {
        uint64    header; // 01 = File
        uint64    entry_offset;
        uint64    unknown1;
        char       resourceID[39];
        char       parentResourceID[39];
        char       eTag[56];
        uint16    unknown2;
        uint64    volumeID;
        uint64    itemIndex;
        uint32    unknown3;
        uint32    bitMask;
        char       localHashDigest[20]; // quickXor, SHA1
        uint32    unknown4;
        uint32    lastChange;
        uint32    unknown5;
        uint64    size;
        wchar     fileName[260];
        uint8      unknown6;
        uint16    fileStatus;
        uint8      unknown7;
        char       unknown8[308];
        uint32    spoPermissions;
        char       unknown9[68];
} DAT_FILE_v2f;

    typedef struct _DAT_FILE_v30 {
        uint64    header; // 01 = File
        uint64    entry_offset;
        uint64    unknown1;
        char       resourceID[39];
        char       parentResourceID[39];
        char       eTag[56];
        uint16    unknown2;
        uint64    volumeID;
        uint64    itemIndex;
        uint32    unknown3;
        uint32    bitMask;
        char       localHashDigest[20]; // quickXor, SHA1
        uint32    unknown4;
        uint32    lastChange;
        uint32    unknown5;
        uint64    size;
        wchar     fileName[260];
        uint8      unknown6;
        uint16    fileStatus;
        uint8      unknown7;
        char       unknown8[308];
        uint32    spoPermissions;
        char       unknown9[92];
} DAT_FILE_v30;

    typedef struct _DAT_FILE_v31 {
        uint64    header; // 01 = File
        uint64    entry_offset;
        uint64    unknown1;
        char       resourceID[39];
        char       parentResourceID[39];
        char       eTag[56];
        uint16    unknown2;
        uint64    volumeID;
        uint64    itemIndex;
        uint32    unknown3;
        uint32    bitMask;
        char       localHashDigest[20]; // quickXor, SHA1
        uint32    unknown4;
        uint32    lastChange;
        uint32    unknown5;
        uint64    size;
        wchar     fileName[260];
        uint8      unknown6;
        uint16    fileStatus;
        uint8      unknown7;
        char       unknown8[308];
        uint32    spoPermissions;
        char       unknown9[100];
} DAT_FILE_v31;

    typedef struct _DAT_FILE_v32 {
        uint64    header; // 01 = File
        uint64    entry_offset;
        uint64    unknown1;
        char       resourceID[39];
        char       parentResourceID[39];
        char       eTag[56];
        uint16    unknown2;
        uint64    volumeID;
        uint64    itemIndex;
        uint32    unknown3;
        uint32    bitMask;
        char       localHashDigest[20]; // quickXor, SHA1
        uint32    unknown4;
        uint32    lastChange;
        uint32    unknown5;
        uint64    size;
        wchar     fileName[260];
        uint8      unknown6;
        uint16    fileStatus;
        uint8      unknown7;
        char       unknown8[308];
        uint32    spoPermissions;
        char       unknown9[100];
} DAT_FILE_v32;

    typedef struct _DAT_FILE_v33 {
        uint64    header; // 01 = File
        uint64    entry_offset;
        uint64    unknown1;
        char       resourceID[39];
        char       parentResourceID[39];
        char       eTag[56];
        uint16    unknown2;
        uint64    volumeID;
        uint64    itemIndex;
        uint32    unknown3;
        uint32    bitMask;
        char       localHashDigest[20]; // quickXor, SHA1
        uint32    unknown4;
        uint32    lastChange;
        uint32    unknown5;
        uint64    size;
        wchar     fileName[260];
        uint8      unknown6;
        uint16    fileStatus;
        uint8      unknown7;
        char       unknown8[308];
        uint32    spoPermissions;
        char       unknown9[100];
} DAT_FILE_v33;

    typedef struct _DAT_FILE_v34 {
        uint64    header; // 01 = File
        uint64    entry_offset;
        uint64    unknown1;
        char       resourceID[39];
        char       parentResourceID[39];
        char       eTag[56];
        uint16    unknown2;
        uint64    volumeID;
        uint64    itemIndex;
        uint32    unknown3;
        uint32    bitMask;
        char       localHashDigest[20]; // quickXor, SHA1
        uint32    unknown4;
        uint32    lastChange;
        uint32    unknown5;
        uint64    size;
        wchar     fileName[260];
        uint8      unknown6;
        uint16    fileStatus;
        uint8      unknown7;
        char       unknown8[308];
        uint32    spoPermissions;
        char       unknown9[100];
} DAT_FILE_v34;

    typedef struct _DAT_FILE_v35 {
        uint64    header; // 01 = File
        uint64    entry_offset;
        uint64    unknown1;
        char       resourceID[39];
        char       parentResourceID[39];
        char       eTag[56];
        uint16    unknown2;
        uint64    volumeID;
        uint64    itemIndex;
        uint32    unknown3;
        uint32    bitMask;
        char       localHashDigest[20]; // quickXor, SHA1
        uint32    unknown4;
        uint32    lastChange;
        uint32    unknown5;
        uint64    size;
        wchar     fileName[260];
        uint8      unknown6;
        uint16    fileStatus;
        uint8      unknown7;
        uint32    unknown8;
        uint64    serverSize;
        uint64    serverLastChange;
        char       serverHashDigest[20];
        uint64    unknown9;
        char       localWaterlineData[27];
        char       unknown10[49];
        uint32    spoPermissions;
        char       localWriteValidationToken[20];
        char       localCobaltHashAlgorithm[20];
        char       localSyncTokenData[24];
        char       unknown11[212];
        uint32    mediaDateTaken;
        uint64    unknown12;
        uint32    unknown13;
        uint32    mediaWidth;
        uint32    mediaHeight;
} DAT_FILE_v35;

    typedef struct _DAT_FILE_v36 {
        uint64    header; // 01 = File
        uint64    entry_offset;
        uint64    unknown1;
        char       resourceID[39];
        char       parentResourceID[39];
        char       eTag[56];
        uint16    unknown2;
        uint64    volumeID;
        uint64    itemIndex;
        uint32    unknown3;
        uint32    bitMask;
        char       localHashDigest[20]; // quickXor, SHA1
        uint32    unknown4;
        uint32    lastChange;
        uint32    unknown5;
        uint64    size;
        wchar     fileName[260];
        uint8      unknown6;
        uint16    fileStatus;
        uint8      unknown7;
        uint32    unknown8;
        uint64    serverSize;
        uint64    serverLastChange;
        char       serverHashDigest[20];
        uint64    unknown9;
        char       localWaterlineData[27];
        char       unknown10[49];
        uint32    spoPermissions;
        char       localWriteValidationToken[20];
        char       localCobaltHashAlgorithm[20];
        char       localSyncTokenData[24];
        char       unknown11[268];
        uint32    mediaDateTaken;
        uint64    unknown12;
        uint32    unknown13;
        uint32    mediaWidth;
        uint32    mediaHeight;
} DAT_FILE_v36;

bitMask

0x0 = EmptyMask
0x1 = unknown
0x2 = unknown
0x4 = sharedItem
0x8 = ocsiModified
0x10 = unknown
0x20 = unknown
0x40 = unknown
0x80 = unknown
0x100 = unknown
0x200 = lastModifiedViaOcsi
0x400 = unknown
0x800 = unknown
0x1000 = unknown
0x2000 = isOneNoteShortcut
0x4000 = unknown
0x8000 = unknown
0x10000 = unknown
0x20000 = mediaFileMetadataUpToDate

fileStatus

2 = available on this device
  5 = Excluded
6 = not synced
7 = not linked
8 = available when online

Folder Structure:

    typedef struct _DAT_FOLDER_v29-v2c {
        uint32    header; // 02 = Folder
        uint32    entry_offset;
        uint64    unknown1;
        char       resourceID[39];
        char       parentResourceID[39];
        char       eTag[56];
        uint16    unknown2;
        uint64    volumeID;
        uint64    itemIndex;
        uint32    unknown3;
        uint32    bitMask;
        wchar    folderName[260];
        uint32    jumpLinkType;
        char       parentScopeID[40];
        uint8      folderStatus;
        uint8      unknown4;
        uint8      syncChildrenFiles;
        uint8      unknown5;
        uint8      spoPermissions;
        uint8      unknown6;
        uint8      unknown7;
        uint8      unknown8;
        uint8      unknown9;
        char       unknown10[FOLDER_CONSTANT];
} DAT_FOLDER_v29-v2c;

    typedef struct _DAT_FOLDERv2d_v36 {
        uint64    header; // 02 = Folder
        uint64    entry_offset;
        uint64    unknown1;
        char       resourceID[39];
        char       parentResourceID[39];
        char       eTag[56];
        uint16    unknown2;
        uint64    volumeID;
        uint64    itemIndex;
        uint32    unknown3;
        uint32    bitMask;
        wchar    folderName[260];
        uint32    jumpLinkType;
        char       parentScopeID[40];
        uint8      folderStatus;
        uint8      unknown4;
        uint8      syncChildrenFiles;
        uint8      unknown5;
        uint8      spoPermissions;
        uint8      unknown6;
        uint8      unknown7;
        uint8      unknown8;
        uint8      unknown9;
        char       unknown10[FOLDER_CONSTANT];
} DAT_FOLDERv2d_v36;

bitMask

0x0 = EmptyMask
0x1 = unknown
0x2 = unknown
0x4 = sharedItem
0x8 = unknown
0x10 = unknown
0x20 = unknown
0x40 = unknown
0x80 = unknown
0x100 = teamsChannelFolder
0x200 = unknown
0x400 = unknown
0x800 = unknown
0x1000 = unknown
0x2000 = unknown
0x4000 = unknown
0x8000 = unknown
0x10000 = unknown
0x20000 = unknown

folderStatus

    5 = Excluded
   7 = visible
   9 = synced
10 = not synced
11 = not linked
     12 = ???

Deleted Structure:

    typedef struct _DAT_DELETED {
        uint64    header; // 03 = Deleted
        uint64    entry_offset;
        char       unknown[DELETE_CONSTANT];
} DAT_DELETED;

libraryScope:

    typedef struct _DAT_LIBRARY_SCOPE {
        uint64    header; // 09 = LibraryScope
        uint64    entry_offset;
        uint32    unknown1;
        uint32    unknown2;
        char       scopeID[39];
        char       unknown3[117];
        uint32    flags;
        char       siteID[39]; // The SiteId is the unique GUID for the site collection.
        char       webID[39]; // The WebId is the ID for a site (or subsite) in a site collection.
        char       listID[39]; // Document library
        char       unknown4[3];
        uint32    libraryType;
        uint32    unknown5;
        uint32    unknown6;
        char       syncTokenData[516];
        uint32    syncTokenData_size;
        uint32    spoPermissions;
        char       unknown7[LSCOPE_CONSTANT];
} DAT_LIBRARY_SCOPE;

syncTokenData:

URL encoded data
3;%234;%231;3;639f5341-a86e-44e5-bd04-56ade4724bad;638040335274070000;812462148;%23;%23;%230
3;#4;#1;3;639f5341-a86e-44e5-bd04-56ade4724bad;638040335274070000;812462148;#;#;#0





































libraryFolder Structure:

    typedef struct _DAT_LIBRARY_FOLDER {
        uint64    header; // 0A = libraryFolder
        uint64    entry_offset;
        uint32    unknown1;
        uint32    unknown2;
        char       resourceID[39];
        char       unknown4[121];
        char       listID[39]; // Document library
        char       unknown5[LFOLDER_CONSTANT];
} DAT_LIBRARY_FOLDER;

vault Structure:

    typedef struct _DAT_VAULT {
        uint64    header; // 0B = Unknown
        uint64    entry_offset;
        uint32    unknown1;
        uint32    unknown2;
        char       resourceID[39];
        char       unknown3[649];
        uint64    shortcutVolumeID;
        uint64    shortcutItemIndex;
        char       unknown6[VAULT_CONSTANT];
} DAT_VAULT;

AddedScope:

    typedef struct _DAT_ADDED_SCOPE {
        uint64    header; // 0C = AddedScope
        uint64    entry_offset;
        uint32    unknown1;
        uint32    unknown2;
        char       scopeID[39];
        char       unknown3[117];
        uint32    flags;
        char       siteID[39]; // The SiteId is the unique GUID for the site collection.
        char       webID[39]; // The WebId is the ID for a site (or subsite) in a site collection.
        char       listID[39]; // Document library
        char       sourceResourceID[39]; // Document library
        uint32    libraryType;
        uint32    unknown5;
        char       syncTokenData[516];
        uint32    syncTokenData_size;
        uint32    spoPermissions;
        char       unknown6[LSCOPE_CONSTANT];
} DAT_ADDED_SCOPE;

No comments:

Post a Comment