Giter Site home page Giter Site logo

0xilis / libneoapplearchive Goto Github PK

View Code? Open in Web Editor NEW
17.0 3.0 0.0 255 KB

Unfinished cross-compat library for parsing Apple Archive (the .aar/.yaa file format).

License: MIT License

C 100.00%
apple apple-archive library linux macos open-source c compression

libneoapplearchive's Introduction

libNeoAppleArchive

Unfinished cross-compat library for parsing Apple Archive (and, by extension, YAA).

What isn't finished:

  • Any archive with a type other than directory, regular file or symlink. Be aware this is rare however.
  • Readable code, the current version is stable but could be easier to read.
  • LZMA and LZ4 compressed .aars; only RAW, LZFSE, and ZLIB are currently supported.
  • Multi-Threadded support.

What is:

Limited functions for messing around with headers and extracting apple archives. There are functions for manually creating apple archives (or modifying existing ones), however there currently is no functions for easy archiving of a directory from a file path. Do be aware that it should be possible to do this though with the provided functions in the library. YAA is also supported, as it is just legacy Apple Archive, and all YAA files are just Apple Archives with a different header essentially.

Roadmap:

  • Support all compression types for Apple Archive
  • Support AEA, at least the AEA_PROFILE__HKDF_SHA256_HMAC__NONE__ECDSA_P256 and AEA_PROFILE__HKDF_SHA256_AESCTR_HMAC__SYMMETRIC__NONE profiles.
  • An "IPSWDecrypt" CLI tool for Linux and Darwin platforms that can decrypt IPSW/OTA AEAs.
  • Convienience functions for archiving / extracting files and directories.
  • Making code more readable
  • CLI for macOS/Linux (Will be on a seperate repo)
  • GUI for Windows/macOS/Linux (If this happens, this won't be for a while, just an fyi)
  • Native Windows support (While planned, do be aware this is at the bottom of the list of the roadmap).

Compatibility:

  • Most Darwin Operating Systems (macOS, iOS, watchOS, visionOS etc.)
  • Linux

NOTE

This is not a reimplementation of libAppleArchive, rather it's own library, created from the ground up. It is not compatible with libAppleArchive APIs, look at the header and code for clues. There is also docs available at docs/ for types and functions.

liblzfse is owned by Apple Inc. Find it here: https://github.com/lzfse/lzfse. Currently a compiled version is statically linked at libNeoAppleArchive/compression/lzfse/lzfse.a for macOS, but you can just compile it yourself on Linux and replace it. In the future, it will be a submodule rather than pre-compiled.

ZLIB is not linked in the final executable line liblzfse but rather dynamically linked, as it is already on the OS itself.

libneoapplearchive's People

Contributors

0xilis avatar

Stargazers

jian avatar JNA avatar CaiRuJi avatar  avatar Eric Gallager avatar Jevin Sweval avatar Aleksei Kulaev avatar Spotlight avatar hellisabove avatar Dhinak G avatar Hakim BOUKHADRA avatar Avellea avatar mugman avatar Hariz avatar Lakhan Lothiyi avatar plx avatar Larson T. avatar

Watchers

Jevin Sweval avatar plx avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.