Comments (5)
Those are the actual entry names.
MS-CFB 2.6.1 asserts the names are encoded in UTF-16. Here are the actual bytes from the first four directory entries:
5200 6f00 6f00 7400 2000 4500 6e00 7400
7200 7900 0000
"Root Entry" (this is not included in the output)
3042 2743 6438 be41 6441 0000
"䈰䌧㡤䆾䅤"
0500 5300 7500 6d00 6d00 6100 7200 7900
4900 6e00 6600 6f00 7200 6d00 6100 7400
6900 6f00 6e00 0000
"\u0005SummaryInformation"
4048 ff3f e443 ec41 e445 ac44 3148 0000
"䡀㿿䏤䇬䗤䒬䠱"
Since both the Root Entry and the standard \u0005SummaryInformation
stream appear, I'm inclined to believe that MSI is doing something funky with the filenames.
And if this blog post is to be believed, MSI is in fact doing something funky with the filenames:
The Windows Installer actually compresses the stream names to double the space available to 62 or 63 characters (plus one extra for the null terminator, but again, who's counting?). That compression is why if you open a MSI file with dfview.exe you'll see a bunch of gobbledygook names. That compression algorithm is not documented so I can't comment on it.
from js-cfb.
We added the display to the website, reversing the algorithm based on the expected names in the Installer Database documentation:
from js-cfb.
Awesome, thanks!
from js-cfb.
can you describe the algorithm used to encode the names?
from js-cfb.
Thanks for your help. This worked quite well.
from js-cfb.
Related Issues (17)
- build fail when including cfb 1.0.3 HOT 1
- Infinite loop in get_sector_list with damaged .doc file HOT 1
- Write performance issue & fix (rebuild_cfb) HOT 2
- XLSX broken file HOT 2
- Bad parenting / hierarchy construction when parent is after R / L sibling tree
- fs.readFileSync is not a function HOT 1
- stream names should be limited to 32 UTF-16 code points, including the terminating null character HOT 2
- cfb_add and write performance issues HOT 6
- TypeError: file.slice is not a function
- How to update xml file in CFB file?
- Able to remove Seed file item
- parsing files in container.content HOT 2
- build_full_paths does not prepend "root_entry/" if child is before parent
- Infinite loop in build_full_paths with some files HOT 2
- Problematic file giving infinite loop / OOM in make_sector_list
- process out of memory Exception HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from js-cfb.