{ "info": { "author": "Toby Fleming", "author_email": "tobywf@users.noreply.github.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 3 :: Only", "Topic :: Software Development :: Libraries" ], "description": "PyAmiibo\n========\n\nPyAmiibo helps to read, modify and write dump files of `Nintendo Amiibo figures `_. PyAmiibo is capable of parsing most NTAG properties, as well as some Amiibo data.\n\n**IMPORTANT**: To decrypt and encrypt Amiibo data, you will need two master keys, commonly called ``unfixed-info.bin`` and ``locked-secret.bin``. They are not provided.\n\nYou can also view the `full PyAmiibo docs on ReadTheDocs `_.\n\n------\n\nIt is based on `Marcos Del Sol Vives' `_ reverse engineering efforts of the Amiibo cryptography (`amiitool `_, `reddit `_).\n\nSo why does PyAmiibo exist? ``amiitool`` is a C binary, difficult to use in other tools (especially web-based tools). It also re-arranges the sections of the dump file when decrypting, and doesn't seem to support editing dumps (e.g. changing the UID). Even though PyAmiibo doesn't use any of ``amiitool``'s code and contains a lot of my own research into the NTAG format and Amiibo data, it would not have been possible without Marcos' efforts.\n\nUsage\n=====\n\n**PyAmiibo is Python 3 only**, if you get an error installing it this is the most likely reason.\n\n.. code-block:: bash\n\n pip install pyamiibo\n\nPyAmiibo is mainly a library, but also contains some simple command-line tools:\n\n.. code-block:: console\n\n $ # convert hexadecimal data to binary, note the quotes!\n $ amiibo hex2bin \"F1 A3 65 ..\" unfixed-info.bin\n $ # get help for a subcommand\n $ amiibo uid --help\n $ # update the UID on an existing dump\n $ amiibo uid old.bin \"04 FF FF FF FF FF FF\" new.bin\n\nThe master keys must be in the current directory for some commands to work!\n\nIt's also very easy to use in a script or interpreter session:\n\n.. code-block:: python3\n\n from amiibo import AmiiboDump, AmiiboMasterKey\n with open('unfixed-info.bin', 'rb') as fp_d, \\\n open('locked-secret.bin', 'rb') as fp_t:\n master_keys = AmiiboMasterKey.from_separate_bin(\n fp_d.read(), fp_t.read())\n\n with open('dump.bin', 'rb') as fp:\n dump = AmiiboDump(master_keys, fp.read())\n\n print('old', dump.uid_hex)\n dump.unlock()\n dump.uid_hex = '04 FF FF FF FF FF FF'\n dump.lock()\n dump.unset_lock_bytes()\n print('new', dump.uid_hex)\n\n with open('new.bin', 'wb') as fp:\n fp.write(dump.data)\n\nDevelopment\n===========\n\nUse `pipenv `_ to install the development dependencies, and make sure ``flake8`` and ``pylint`` pass before a PR is submitted.\n\n.. code-block:: bash\n\n pipenv install --three --dev\n pipenv shell\n isort -y\n flake8 amiibo/\n pylint amiibo/\n sphinx-build -b html docs/ docs/_build\n\n\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/tobywf/pyamiibo", "keywords": "NXP NTAG NTAG213 NTAG215 NTAG216 Amiibo", "license": "GPLv3", "maintainer": "", "maintainer_email": "", "name": "pyamiibo", "package_url": "https://pypi.org/project/pyamiibo/", "platform": "", "project_url": "https://pypi.org/project/pyamiibo/", "project_urls": { "Homepage": "https://github.com/tobywf/pyamiibo" }, "release_url": "https://pypi.org/project/pyamiibo/0.2/", "requires_dist": [ "cryptography" ], "requires_python": "", "summary": "PyAmiibo is a library for manipulating Amiibo dumps.", "version": "0.2" }, "last_serial": 3428253, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "b32f31d3966fbc9e4d57dd9ff8d9d95b", "sha256": "bba3c886756fd30c0a72918e10a643516646a9e2c629272ce73f2b4705af73c7" }, "downloads": -1, "filename": "pyamiibo-0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b32f31d3966fbc9e4d57dd9ff8d9d95b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 25290, "upload_time": "2017-12-18T22:02:46", "url": "https://files.pythonhosted.org/packages/73/69/005d5927d581a88de9058fefe47136e8ee3cd7fa4e26ca24e2dac9c2037e/pyamiibo-0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cc9c8f6a246b3282cead1e991c45d899", "sha256": "bf3bee5a46a3ff01200271390dd88d8cb2f527b422050719d534f1f72781f4dc" }, "downloads": -1, "filename": "pyamiibo-0.1.tar.gz", "has_sig": false, "md5_digest": "cc9c8f6a246b3282cead1e991c45d899", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22113, "upload_time": "2017-12-18T22:02:48", "url": "https://files.pythonhosted.org/packages/6c/e1/acd2a20ff67df31dc8c46a17dbe51bff431147ac7eaa05ad04668d80c3de/pyamiibo-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "0ffa7cab0a4c18820e47246338271446", "sha256": "f5482eaeb653c6c7677f64e2b44f3d9a0a4b4f9d36dd0fb4b8b02839716ebf03" }, "downloads": -1, "filename": "pyamiibo-0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0ffa7cab0a4c18820e47246338271446", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 27525, "upload_time": "2017-12-19T13:15:03", "url": "https://files.pythonhosted.org/packages/e1/71/bfe582bf46b7bec226309d11f8d7c0e274ab54892e860f2780f7676dd326/pyamiibo-0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a8914c01a73dff081b46f3522da6d329", "sha256": "63b0c26dd4a6805b3e8655797be93f195d13fe611548eb21111fec4890345542" }, "downloads": -1, "filename": "pyamiibo-0.2.tar.gz", "has_sig": false, "md5_digest": "a8914c01a73dff081b46f3522da6d329", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23564, "upload_time": "2017-12-19T13:15:05", "url": "https://files.pythonhosted.org/packages/98/e1/8c607119025439816e0b778db8132da850ac6470b9dbb6ac9258d397c7d8/pyamiibo-0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0ffa7cab0a4c18820e47246338271446", "sha256": "f5482eaeb653c6c7677f64e2b44f3d9a0a4b4f9d36dd0fb4b8b02839716ebf03" }, "downloads": -1, "filename": "pyamiibo-0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0ffa7cab0a4c18820e47246338271446", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 27525, "upload_time": "2017-12-19T13:15:03", "url": "https://files.pythonhosted.org/packages/e1/71/bfe582bf46b7bec226309d11f8d7c0e274ab54892e860f2780f7676dd326/pyamiibo-0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a8914c01a73dff081b46f3522da6d329", "sha256": "63b0c26dd4a6805b3e8655797be93f195d13fe611548eb21111fec4890345542" }, "downloads": -1, "filename": "pyamiibo-0.2.tar.gz", "has_sig": false, "md5_digest": "a8914c01a73dff081b46f3522da6d329", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23564, "upload_time": "2017-12-19T13:15:05", "url": "https://files.pythonhosted.org/packages/98/e1/8c607119025439816e0b778db8132da850ac6470b9dbb6ac9258d397c7d8/pyamiibo-0.2.tar.gz" } ] }