Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding support for RAR 5.0 format #35

Open
DoggoKt opened this issue Aug 29, 2024 · 6 comments
Open

Adding support for RAR 5.0 format #35

DoggoKt opened this issue Aug 29, 2024 · 6 comments

Comments

@DoggoKt
Copy link

DoggoKt commented Aug 29, 2024

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
Copy link
Collaborator

1313 commented Aug 31, 2024

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 🤘

@jaruba
Copy link
Contributor

jaruba commented Dec 4, 2024

bump, we hit this case recently too..

@jaruba
Copy link
Contributor

jaruba commented Dec 4, 2024

@DoggoKt oh, i just saw you said "but I've thought about adding stremio support (with a similar system to rar-http)", so i guess we are working for the same goal 😅

@DoggoKt
Copy link
Author

DoggoKt commented Dec 4, 2024

@jaruba Oh hey. I'm still working on the RAR5 parsing, I have about 20 commits not pushed. Lot of them are also just fixes and little tweaks to the main source code. It should be integrated and of course backwards-compatible so if you're up to adding features, feel free :)

Cheers!

@jaruba
Copy link
Contributor

jaruba commented Dec 4, 2024

@DoggoKt i am very limited in my understanding of the archive related logic and RAR5, i can tell you where we are at after a very long time:

  • we can stream a video file from a nntp engine (usenet) with range support (so seeking works with the video)
  • we can stream RAR files (but not RAR5) with multi-part (through a nntp engine or http) and range support
  • we can (probably) stream zip files (no multi-part support) and without range support (no video seeking) through nntp or http(s) with zip-http

i think that my conclusion months ago was that there is a technical limitation to range requests for zip streams, but i am not knowledgeable enough in the field to ever be sure, i have found some cases of zip and multi-part 7z on usenet too

i have also played around a bit with par2 parchive parsing and verification, maybe repairs too

i have implemented multi-server support for usenet, so if a chunk is missing a backbone would be used..

there is a lot of refactoring to be done, but RAR5 (which seems pretty common) is probably the biggest roadblock for Stremio atm

@DoggoKt
Copy link
Author

DoggoKt commented Dec 4, 2024 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants