doom-fish / rar-stream

Library for "unpacking" and reading files inside rar archives as node Readable streams.
MIT License
17 stars 6 forks source link

Adding support for RAR 5.0 format #35

Open DoggoKt opened 3 months ago

DoggoKt commented 3 months ago

Hey, I really like this projcet and I've studied a bunch of the RAR format lately. I've tried using your package on a rar5 file and realized it didn't work because, well, there's a few main changes in parsing 5.0 files. The spec is https://www.rarlab.com/technote.htm, but honestly reading the unrar source is a little easier.

  1. CRC-32 instead of CRC-16, meaning the CRC parts of headers are 4 bytes, not 2 anymore.
  2. The order is different. They kept the "old" rar4.0 order in the signature aka magic bytes for obvious reasons.
  3. There is not a fixed size for anything except for the CRC signatures - you read seven bits from a byte, and the top one says if to read more or not. Not difficult to implement, just very different.
  4. The signature is one more byte longer (not the fixed string, anymore, there's an extra 0x01)

This is not a feature request, more of an announcement that I'll be adding the support for it. It should be also automatically detectable from the first 7 bytes due to different signatures. As said, kudos to you, really cool projet and good work. I'll try to work on it as much as I can. Not that interested in making it browser-ready, but I've thought about adding stremio support (with a similar system to rar-http).

1313 commented 3 months ago

Cool, thanks for letting me know, should be fairly simple to write a new set of header parsers. I'm afraid I don't have the time at the moment but feel free to submit a PR and I can guide you on the way.

Thanks for the kind words 🤘