{ "info": { "author": "Rotem Mizrachi-Meidan", "author_email": "rotem@everything.me", "bugtrack_url": null, "classifiers": [], "description": "# recat\nA colorful and highly configurable alternative to the `adb logcat` command from\nthe Android SDK with on the fly deobfuscation! (based on Marshall Culpepper's great [logcat-color](https://github.com/marshall/logcat-color)).\n\nrecat uses [pyretrace](https://github.com/EverythingMe/pyretrace) to deobfuscate logs.\n\n**Note**: recat (logcat-color) is targetted at OS X and Linux, and does not currently\nwork in Windows.\n\n[![PyPI version](https://badge.fury.io/py/recat-color.svg)](https://badge.fury.io/py/recat-color)\n\n# Installation\n\n**Installation via pip** \n\n```bash\n$ pip install recat-color\n```\n\n**Installation from source** (requires setuptools, may require sudo)\n\nYou can clone the recat git repository directly:\n\n```bash\n$ git clone https://github.com/EverythingMe/recat.git\n```\n\nTo install logcat-color from the source directory, run:\n\n```bash\n$ sudo pip install .\n```\n\nor\n\n```bash\n$ sudo python setup.py install\n```\n\n## Examples\n\n#### for logcat-color usage examples, configuration and profiles, go to (logcat-color's original [README](https://github.com/marshall/logcat-color/blob/master/README.md))\n\n##Deobfuscation\n**recat** retraces obfuscated logs using [pyretrace](https://github.com/EverythingMe/pyretrace), a python reimplementation on Proguard's Retrace, with a deobfuscation API for python.\n\nWhen looking at logs from an obfuscated release build, trace messages are obfuscated too, here's a crash log from EverythingMe Launcher's release build:\n\n![original log output](original.png)\n\nSupplying a mapping file path as a command line argument will trigger the deobfuscation mechanism, causing every log line to go through pyretrace's deobfuscator.\n\n```bash\n$ recat -m path/to/mapping/file.txt\n```\n\nSame log, now with mapping file path added:\n\n![With Recat](deobfuscated.png)\n\nThis will make the best effort to deobfuscate the 'message' in each line. \n\n### Deobfuscating tags\nThe following snippet is taken from [iosched](https://github.com/google/iosched/blob/master/android/src/main/java/com/google/samples/apps/iosched/util/LogUtils.java). It became a pretty popular strategy for log tag creation.\n\n```java\n public static String makeLogTag(String str) {\n if (str.length() > MAX_LOG_TAG_LENGTH - LOG_PREFIX_LENGTH) {\n return LOG_PREFIX + str.substring(0, MAX_LOG_TAG_LENGTH - LOG_PREFIX_LENGTH - 1);\n }\n\n return LOG_PREFIX + str;\n }\n\n /**\n * Don't use this when obfuscating class names!\n */\n public static String makeLogTag(Class cls) {\n return makeLogTag(cls.getSimpleName());\n }\n```\n\nIf you use this type of deobfuscation and wish to deobfuscate the tag as well, you must supply a prefix for your tags (i.e. `LOG_PREFIX`), here's an example:\n\nEverythingMe Launcher used `ev.` as its base log prefix, adding `-t ev` will now deobfuscate the tags as well:\n\n```bash\n$ recat -m path/to/mapping/file.txt -t ev\n```\nSame output, now with deobfuscated tags:\n\n![Deobfuscated with tags](deobfuscated_with_tags.png)\n\n## TODO - Mapping Fetcher\n\nI also added a skeleton for a mapping file fetcher. It should auto download a mapping file from a file server by supplying a mapping file path template.\n\t\n## Thanks\n\nThanks to [Marshall Culpepper](https://github.com/marshall) for the great [logcat-color](https://github.com/marshall/logcat-color). \n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/EverythingMe/recat", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "recat-color", "package_url": "https://pypi.org/project/recat-color/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/recat-color/", "project_urls": { "Homepage": "http://github.com/EverythingMe/recat" }, "release_url": "https://pypi.org/project/recat-color/0.1.1/", "requires_dist": null, "requires_python": "", "summary": "A colorful alternative to \"adb logcat\" with on-the-fly-deobfuscation", "version": "0.1.1" }, "last_serial": 1852858, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "eba6c951c5b3cedc5d9ce0d62d340e72", "sha256": "f5798e9e4708ad4b12510c217f77682bf60d0c6b6c54ba0bbd34850062d7e54a" }, "downloads": -1, "filename": "recat-color-0.1.tar.gz", "has_sig": false, "md5_digest": "eba6c951c5b3cedc5d9ce0d62d340e72", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11632, "upload_time": "2015-12-07T16:22:20", "url": "https://files.pythonhosted.org/packages/4b/54/c807a18769acdb8521d305ef9f9b3cd5f5360f5ddf882cd1d6436fd2e18c/recat-color-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "7e9ece668390181f22cb6f8084085205", "sha256": "d3b6650819bf3feb7ec50020f4a17530f31ed685175d2adad1a880051cc25b20" }, "downloads": -1, "filename": "recat-color-0.1.1.tar.gz", "has_sig": false, "md5_digest": "7e9ece668390181f22cb6f8084085205", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11577, "upload_time": "2015-12-08T21:52:25", "url": "https://files.pythonhosted.org/packages/c1/5b/483e5e0f73bf67dc71711a862840aa1e0fc9d591fc97fb0a84988cc748ba/recat-color-0.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7e9ece668390181f22cb6f8084085205", "sha256": "d3b6650819bf3feb7ec50020f4a17530f31ed685175d2adad1a880051cc25b20" }, "downloads": -1, "filename": "recat-color-0.1.1.tar.gz", "has_sig": false, "md5_digest": "7e9ece668390181f22cb6f8084085205", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11577, "upload_time": "2015-12-08T21:52:25", "url": "https://files.pythonhosted.org/packages/c1/5b/483e5e0f73bf67dc71711a862840aa1e0fc9d591fc97fb0a84988cc748ba/recat-color-0.1.1.tar.gz" } ] }