rust-cfb
rust-cfb copied to clipboard
Malformed FAT entries mismatch
Is it possible that #1 regressed at some point? I am getting:
Malformed FAT (FAT has 30208 entries, but file has only 18279 sectors)
I intend to try this with a few different versions but have not yet had the opportunity
@tgross35 hello! Could you send a file?
Er... Unfortunately not this specific one since it's a work thing, but I'm trying to get a minimal reproduction that I will send. The file is pretty large (>10MB) and is produced by Altium (not that that helps on its own).
Hey @ikrivosheev I never got a minified file but here are two header & footer dumps:
File 1, 9539584 bytes (9.1M), produces `io error: Malformed FAT (FAT has 30208 entries, but file has only 18631 sectors).` :
00000000: d0cf 11e0 a1b1 1ae1 0000 0000 0000 0000 ................
00000010: 0000 0000 0000 0000 3e00 0300 feff 0900 ........>.......
00000020: 0600 0000 0000 0000 0000 0000 9200 0000 ................
00000030: ec46 0000 0000 0000 0010 0000 5a00 0000 .F..........Z...
00000040: b700 0000 8842 0000 0100 0000 5400 0000 .....B......T...
00000050: 8300 0000 5c01 0000 8301 0000 2802 0000 ....\.......(...
00000060: 8802 0000 0603 0000 8103 0000 0104 0000 ................
00000070: 8304 0000 0305 0000 9005 0000 0406 0000 ................
00000080: b706 0000 0107 0000 9e07 0000 0508 0000 ................
00000090: 8308 0000 0609 0000 8a09 0000 020a 0000 ................
000000a0: 820a 0000 030b 0000 810b 0000 0d0c 0000 ................
000000b0: 810c 0000 170d 0000 810d 0000 1a0e 0000 ................
000000c0: 840e 0000 020f 0000 810f 0000 0310 0000 ................
000000d0: 8210 0000 0711 0000 d411 0000 0212 0000 ................
000000e0: 8612 0000 0213 0000 2942 0000 2a42 0000 ........)B..*B..
000000f0: 2b42 0000 2c42 0000 2d42 0000 2e42 0000 +B..,B..-B...B..
00000100: 2f42 0000 3042 0000 3142 0000 3242 0000 /B..0B..1B..2B..
00000110: 3342 0000 3442 0000 3542 0000 3642 0000 3B..4B..5B..6B..
00000120: 3742 0000 3842 0000 3942 0000 3a42 0000 7B..8B..9B..:B..
00000130: 3b42 0000 3c42 0000 3d42 0000 3e42 0000 ;B..<B..=B..>B..
00000140: 3f42 0000 4042 0000 4142 0000 4242 0000 [email protected]..
00000150: 4342 0000 4442 0000 4542 0000 4642 0000 CB..DB..EB..FB..
00000160: 4742 0000 4842 0000 4942 0000 4a42 0000 GB..HB..IB..JB..
00000170: 4b42 0000 4c42 0000 4d42 0000 4e42 0000 KB..LB..MB..NB..
00000180: 4f42 0000 5042 0000 5142 0000 5242 0000 OB..PB..QB..RB..
00000190: 5342 0000 5442 0000 5542 0000 5642 0000 SB..TB..UB..VB..
000001a0: 5742 0000 5842 0000 5942 0000 5a42 0000 WB..XB..YB..ZB..
000001b0: 5b42 0000 5c42 0000 5d42 0000 5e42 0000 [B..\B..]B..^B..
000001c0: 5f42 0000 6042 0000 6142 0000 6242 0000 _B..`B..aB..bB..
000001d0: 6342 0000 6442 0000 6542 0000 6642 0000 cB..dB..eB..fB..
000001e0: 6742 0000 6842 0000 6942 0000 6a42 0000 gB..hB..iB..jB..
000001f0: 6b42 0000 6c42 0000 6d42 0000 6e42 0000 kB..lB..mB..nB..
00000200: f8a6 0000 7c48 4541 4445 523d 5072 6f74 ....|HEADER=Prot
[... main file contents ...]
000769a0: 0000 0102 0000 0000 0100 0000 0000 0000 ................
000769b0: 0104 380a 00a0 004c ff00 0000 0005 4c53 ..8....L......LS
000769c0: 4e53 3002 3236 0003 7c26 7c00 2900 0001 NS0.26..|&|.)...
000769d0: 0200 0000 0001 0000 0000 0000 0001 0438 ...............8
000769e0: 0a00 a000 1aff 0000 0000 054f 5554 4d31 ...........OUTM1
File 2, 1387520 bytes (1.4M), produces `io error: Malformed FAT (FAT has 30208 entries, but file has only 14524 sectors).` :
00000000: d0cf 11e0 a1b1 1ae1 0000 0000 0000 0000 ................
00000010: 0000 0000 0000 0000 3e00 0300 feff 0900 ........>.......
00000020: 0600 0000 0000 0000 0000 0000 1600 0000 ................
00000030: ea09 0000 0000 0000 0010 0000 2000 0000 ............ ...
00000040: 3a00 0000 feff ffff 0000 0000 1b00 0000 :...............
00000050: 8100 0000 1d01 0000 b201 0000 1002 0000 ................
00000060: 9002 0000 2003 0000 8203 0000 0204 0000 .... ...........
00000070: 8204 0000 0b05 0000 8105 0000 0406 0000 ................
00000080: 9606 0000 0907 0000 8207 0000 0308 0000 ................
00000090: 0709 0000 0809 0000 8109 0000 930a 0000 ................
000000a0: 940a 0000 ffff ffff ffff ffff ffff ffff ................
000000b0: ffff ffff ffff ffff ffff ffff ffff ffff ................
000000c0: ffff ffff ffff ffff ffff ffff ffff ffff ................
000000d0: ffff ffff ffff ffff ffff ffff ffff ffff ................
000000e0: ffff ffff ffff ffff ffff ffff ffff ffff ................
000000f0: ffff ffff ffff ffff ffff ffff ffff ffff ................
00000100: ffff ffff ffff ffff ffff ffff ffff ffff ................
00000110: ffff ffff ffff ffff ffff ffff ffff ffff ................
00000120: ffff ffff ffff ffff ffff ffff ffff ffff ................
00000130: ffff ffff ffff ffff ffff ffff ffff ffff ................
00000140: ffff ffff ffff ffff ffff ffff ffff ffff ................
00000150: ffff ffff ffff ffff ffff ffff ffff ffff ................
00000160: ffff ffff ffff ffff ffff ffff ffff ffff ................
00000170: ffff ffff ffff ffff ffff ffff ffff ffff ................
00000180: ffff ffff ffff ffff ffff ffff ffff ffff ................
00000190: ffff ffff ffff ffff ffff ffff ffff ffff ................
000001a0: ffff ffff ffff ffff ffff ffff ffff ffff ................
000001b0: ffff ffff ffff ffff ffff ffff ffff ffff ................
000001c0: ffff ffff ffff ffff ffff ffff ffff ffff ................
000001d0: ffff ffff ffff ffff ffff ffff ffff ffff ................
000001e0: ffff ffff ffff ffff ffff ffff ffff ffff ................
000001f0: ffff ffff ffff ffff ffff ffff ffff ffff ................
00000200: 4534 0000 7c48 4541 4445 523d 5072 6f74 E4..|HEADER=Prot
00000210: 656c 2066 6f72 2057 696e 646f 7773 202d el for Windows -
[... main file contents ...]
001529b0: 6d0a 0000 6e0a 0000 6f0a 0000 700a 0000 m...n...o...p...
001529c0: 710a 0000 720a 0000 730a 0000 740a 0000 q...r...s...t...
001529d0: 750a 0000 760a 0000 770a 0000 780a 0000 u...v...w...x...
001529e0: 790a 0000 7a0a 0000 7b0a 0000 7c0a 0000 y...z...{...|...
001529f0: 7d0a 0000 7e0a 0000 7f0a 0000 800a 0000 }...~...........
00152a00: 810a 0000 820a 0000 830a 0000 840a 0000 ................
00152a10: 850a 0000 860a 0000 870a 0000 880a 0000 ................
00152a20: 890a 0000 8a0a 0000 8b0a 0000 8c0a 0000 ................
00152a30: 8d0a 0000 8e0a 0000 8f0a 0000 900a 0000 ................
00152a40: 910a 0000 920a 0000 feff ffff fdff ffff ................
00152a50: fdff ffff ffff ffff ffff ffff ffff ffff ................
00152a60: ffff ffff ffff ffff ffff ffff ffff ffff ................
00152a70: ffff ffff ffff ffff ffff ffff ffff ffff ................
00152a80: ffff ffff ffff ffff ffff ffff ffff ffff ................
00152a90: ffff ffff ffff ffff ffff ffff ffff ffff ................
00152aa0: ffff ffff ffff ffff ffff ffff ffff ffff ................
00152ab0: ffff ffff ffff ffff ffff ffff ffff ffff ................
00152ac0: ffff ffff ffff ffff ffff ffff ffff ffff ................
00152ad0: ffff ffff ffff ffff ffff ffff ffff ffff ................
00152ae0: ffff ffff ffff ffff ffff ffff ffff ffff ................
00152af0: ffff ffff ffff ffff ffff ffff ffff ffff ................
00152b00: ffff ffff ffff ffff ffff ffff ffff ffff ................
00152b10: ffff ffff ffff ffff ffff ffff ffff ffff ................
00152b20: ffff ffff ffff ffff ffff ffff ffff ffff ................
00152b30: ffff ffff ffff ffff ffff ffff ffff ffff ................
00152b40: ffff ffff ffff ffff ffff ffff ffff ffff ................
00152b50: ffff ffff ffff ffff ffff ffff ffff ffff ................
00152b60: ffff ffff ffff ffff ffff ffff ffff ffff ................
00152b70: ffff ffff ffff ffff ffff ffff ffff ffff ................
00152b80: ffff ffff ffff ffff ffff ffff ffff ffff ................
00152b90: ffff ffff ffff ffff ffff ffff ffff ffff ................
00152ba0: ffff ffff ffff ffff ffff ffff ffff ffff ................
00152bb0: ffff ffff ffff ffff ffff ffff ffff ffff ................
00152bc0: ffff ffff ffff ffff ffff ffff ffff ffff ................
00152bd0: ffff ffff ffff ffff ffff ffff ffff ffff ................
00152be0: ffff ffff ffff ffff ffff ffff ffff ffff ................
00152bf0: ffff ffff ffff ffff ffff ffff ffff ffff ................
Is this enough to go off of? I need to try to get a minified file that I can share still, but it only happens with fairly large files so it's not easy to make a sample.
@tgross35 I reproduced your problem and found a sample. But it's malware file... Well, I will try to fix it.
Well, now I understand what happens with python implementation. It skips continue parsing: https://github.com/decalage2/olefile/blob/master/olefile/olefile.py#L903C1-L903C92
@mdsteele what can we do with this problem? Maybe on Permissive validation mode we can truncate fat?