GithubHelp home page GithubHelp logo

unnks's Introduction

🎸 unnks 🥁

🎺 NKS and NKX archive unpacker 🎹

📁 ➡️ 🎶 🪕 🎻 🪘 🪗 🎷 🎛️

Getting Started

brew install unnks

⚠️ ^ This will not work until this repo gets enough notability to be included into Homebrew ^ ⚠️

If you would like to be able to install this via brew install unnks, you can help by completing the following:

  1. Leave this repo a ⭐
    • Homebrew requires GitHub projects to have 75+ ⭐s before a formula may be added
  2. Fork 🍴 this repo
    • Homebrew requires GitHub projects to have 30+ 🍴s before a formula may be added
  3. Watch 👀 this repo
    • Homebrew requires GitHub projects to have 30+ 👀s before a formula may be added

Follow this PR to stay up to date on this project's Homebrew status.

Star History Chart

After you've picked up your 🍴, begun watching 👀, and left a ⭐, use this temporary solution to get unnks installed:

brew install jimihford/hendrix/unnks

Introduction

unnks extracts data from nks and nkx archives, which are commonly used by several music synthesis programs. It has a similar interface to GNU tar. Instead of doing

tar -xvf archive.tar

just do

unnks -xvf archive.nks

or optionally

unnks -C output_dir -xvf archive.nks

In addition to the unnks program, this package contains the utilities nks-scan, nks-ls-libs, and the libnks library.

nks-scan can be used to display the structure of a nks/nkx archive. It was used during development to discover the meaning of unknown bytes in archives.

nks-ls-libs displays all the sample packages you have installed on your computer that it can find, and their nkx archive encryption keys. It is only present on Windows and Mac OS X. See the "nkx support" section for how to use this tool to add support for more nkx archives to unnks.

libnks is a library useful to programmers, which provides an interface to the code that unnks uses internally to access archives. If you want to add nks/nkx support to your GPLv3+ program, then you may use libnks to accomplish it. Be warned however, that the API/ABI may change in future releases without warning.

Building & Installation

See INSTALL.md for instructions

nkx support

nkx files are different from nks files in that each archive may have its own encryption key needed to extract the contents. These keys are usually supplied as part of the package containing the archives, but the exact location may vary and is dependant on the host operating system: on Windows, the keys may be kept in the registry, on Mac OS X in application property files. There is no universal and platform-independent way of accessing these. This is why unnks contains a database of known packages with nkx archives and how to obtain their keys. Currently, archives from the following packages are supported:

  • Acoustic Legends HD
  • Ambience Impacts Rhythms
  • BASiS
  • Chris Hein Bass
  • Chris Hein - Guitars
  • Chris Hein Horns Vol 2
  • Drums Overkill
  • Ethno World 4
  • Evolve
  • Evolve Mutations
  • Galaxy II
  • Garritan Instruments for Finale
  • Gofriller Cello
  • Keyboard Collection
  • Kreate
  • Mr. Sax T
  • Ocean Way Drums Expandable
  • Ocean Way Drums Gold
  • OTTO
  • Phaedra
  • Prominy SC Electric Guitar
  • Solo Strings Advanced
  • Steven Slate Drums Platinum
  • Stradivari Solo Violin
  • String Essentials
  • Symphobia
  • syntAX
  • The Elements
  • The Trumpet
  • VI.ONE
  • Vir2 Elite Orchestral Percussion

If you want to unpack an unsupported nkx archive, you may try to use the nks-ls-libs tool supplied with unnks to list the packages installed on your computer, along with their nkx archive encryption keys. If you then email this information to unavowed at vexillium org, it will be included in the next version of unnks.

Limitations

  1. Only extracting or listing archives is supported; unnks does not create new archives.

  2. The archives to be extracted must be seekable files. Extracting from stdin or other non-seekable streams is not supported.

Thanks

Thanks to Gynvael Coldwind for pointing out bugs in the code, and to Steffan Andrews for all the help with discovering how to extract nkx files and then testing whether it actually worked.

Also thanks to all those who reported bugs, sent encryption key information and in general sent emails about this project.

unnks's People

Contributors

jimihford avatar conan-kudo avatar eirrw avatar

Stargazers

t duncan avatar  avatar  avatar  avatar  avatar  avatar HCiSO avatar Florian Hülsmann avatar  avatar  avatar Stephen Graham avatar AVA avatar  avatar Daniel Jerrehian avatar  avatar Harley avatar  avatar Monomadic avatar km avatar C. Merchán avatar  avatar Micha Hanselmann avatar Christopher Arndt avatar Tori avatar  avatar shstkvch avatar  avatar  avatar massivezh avatar  avatar Martin Finke avatar Jürgen Moßgraber avatar Ryan Dickie avatar Santhosh Veer avatar Steve avatar Adam Marcionek avatar Philipp C. Heckel avatar  avatar Caleb Butcher avatar  avatar Po-Chun, Wang avatar nbrochec avatar Michael Lawrence avatar  avatar  avatar  avatar Arun Philip avatar Jedadiah Casey avatar redtide avatar Kevin Ross avatar morch avatar  avatar  avatar Cyriaque Skrapits avatar  avatar Ryohei Niwase avatar Gabriel avatar Kyle Young avatar  avatar  avatar tenyuhuang avatar Yuri avatar Jason Goodwin avatar Zain avatar  avatar

Watchers

shstkvch avatar James Cloos avatar  avatar Stefano Del Gobbo Acciarretti avatar Yuri avatar km avatar David Bonin avatar  avatar  avatar  avatar  avatar

unnks's Issues

Decrypting nkr

This is not an issue but rather a question.

I'm using the inNKX plugin (for Total Commander) to extract the contents of nkr (Kontakt resource files) and it works fine for most libraries, except some newer ones for which it doesn't recognize any content.
I looked into those and their .nkr file format, and I created a python script to extract the files, and everything was fine, except for the encrypted ones.
I can extract the files, but they are.. encrypted ;o)

inNKX and unnks both have a database of keys for many libs and can decrypt the encrypted files.
Although I can find the JDX (key for decrypting the library) and the HU (initialization vector, needed to decrypt the first data block) from the nicht file, I don't know how to make the decryption... and that is the question:
What encryption mechanism is used for the library files?

Any info or hint will be highly appreciated..
TIA

EDIT: Well, my mistake...
inNKX 1.21 does decrypt all my nkr files.
I was just using an older version.. :o(

Error loading libraries

Trying lo launch unnks:
error while loading shared libraries: libnks.so.0: cannot open shared object file: No such file or directory.
libnks.so.0 is present under /usr/local/lib after installation.
SO: Ubuntu 16.10

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.