{ "info": { "author": "Steve McMaster", "author_email": "mcmaster@hurricanelabs.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3 :: Only" ], "description": "[![Build Status](https://travis-ci.org/HurricaneLabs/machinae.svg?branch=master)](https://travis-ci.org/HurricaneLabs/machinae)\n[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/2344/badge)](https://bestpractices.coreinfrastructure.org/projects/2344)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=HurricaneLabs_machinae&metric=alert_status)](https://sonarcloud.io/dashboard?id=HurricaneLabs_machinae)\n\n![Machinae Logo](images/machinae.jpg)\n\n\nMachinae Security Intelligence Collector\n========================================\n\nMachinae is a tool for collecting intelligence from public sites/feeds about\nvarious security-related pieces of data: IP addresses, domain names, URLs,\nemail addresses, file hashes and SSL fingerprints. It was inspired by\n[Automater][1], another excellent tool for collecting information. The Machinae\nproject was born from wishing to improve Automater in 4 areas:\n\n1. Codebase - Bring Automater to python3 compatibility while making the code\nmore pythonic\n2. Configuration - Use a more human readable configuration format (YAML)\n3. Inputs - Support JSON parsing out-of-the-box without the need to write\nregular expressions, but still support regex scraping when needed\n4. Outputs - Support additional output types, including JSON, while making\nextraneous output optional\n\n\nInstallation\n------------\n\nMachinae can be installed using pip3:\n\n pip3 install machinae\n\nOr, if you're feeling adventurous, can be installed directly from github:\n\n pip3 install git+https://github.com/HurricaneLabs/machinae.git\n\nYou will need to have whatever dependencies are required on your system for\ncompiling Python modules (on Debian based systems, `python3-dev`), as well as\nthe libyaml development package (on Debian based systems, `libyaml-dev`).\n\nYou'll also want to grab the [latest configuration file][2] and place it in\n`/etc/machinae.yml`.\n\n\nConfiguration File\n------------------\n\nMachinae supports a simple configuration merging system to allow you to make\nadjustments to the configuration without modifying the machinae.yml we provide\nyou, making configuration updates a snap. This is done by finding a system-wide\ndefault configuration (default `/etc/machinae.yml`), merging into that a\nsystem-wide local configuration (`/etc/machinae.local.yml`) and finally a\nper-user local configuration (`~/.machinae.yml`). The system-wide configuration\ncan also be located in the current working directory, can be set using the\n`MACHINAE_CONFIG` environment variable, or of course by using the `-c` or\n`--config` command line options. Configuration merging can be disabled by\npassing the `--nomerge` option, which will cause Machinae to only load the\ndefault system-wide configuration (or the one passed on the command line).\n\nAs an example of this, say you'd like to enable the Fortinet Category site,\nwhich is disabled by default. You could modify `/etc/machinae.yml`, but these\nchanges would be overwritten by an update. Instead, you can put the following\nin either `/etc/machinae.local.yml` or `~/.machinae.yml`:\n\n fortinet_classify:\n default: true\n\nOr, conversely, to disable a site, such as Virus Total pDNS:\n\n vt_ip:\n default: false\n vt_domain:\n default: false\n\n\nUsage\n-----\n\nMachinae usage is very similar to Automater:\n\n usage: machinae [-h] [-c CONFIG] [--nomerge] [-d DELAY] [-f FILE] [-i INFILE] [-v]\n [-o {D,J,N,S}] [-O {ipv4,ipv6,fqdn,email,sslfp,hash,url}] [-q]\n [-s SITES] [-a AUTH] [-H HTTP_PROXY]\n [--dump-config | --detect-otype]\n ...\n\n- See above for details on the `-c`/`--config` and `--nomerge` options.\n\n- Machinae supports a `-d`/`--delay` option, like Automater. However, Machinae\nuses 0 by default.\n\n- Machinae output is controlled by two arguments:\n - `-o` controls the output format, and can be followed by a single character\n\tto indicated the desired type of output:\n\t\t- *N* is the default output (\"Normal\")\n\t\t- *D* is the default output, but dot characters are replaced\n\t\t- *J* is JSON output\n\t- `-f`/`--file` specifies the file where output should be written. The default\n\tis \"-\" for stdout.\n\n- Machinae will attempt to auto-detect the type of target passed in (Machinae\nrefers to targets as \"observables\" and the type as \"otype\"). This detection can\nbe overridden with the `-O`/`--otype` option. The choices are listed in the\nusage\n\n- By default, Machinae operates in verbose mode. In this mode, it will output\nstatus information about the services it is querying on the console as they are\nqueried. This output will always be written to stdout, regardless of the output\nsetting. To disable verbose mode, use `-q`\n\n- By default, Machinae will run through all services in the configuration that\napply to each target's otype *and* are not marked as \"default: false\". To modify\nthis behavior, you can:\n - Pass a comma separated list of sites to run (use the top level key from the\n\tconfiguration).\n\t- Pass the special keyword `all` to run through all services *including* those\n\tmarked as \"default: false\"\n\n\tNote that in both cases, `otype` validation is still applied.\n\n- Machinae supports passing an HTTP proxy on the command line using the\n`-H`/`--http-proxy` argument. If no proxy is specified, machinae will search the\nstandard `HTTP_PROXY` and `HTTPS_PROXY` environment variables, as well as the\nless standard `http_proxy` and `https_proxy` environment variables.\n\n- Lastly, a list of targets should be passed. All arguments other than the\noptions listed above will be interpreted as targets.\n\n\nOut-of-the-Box Data Sources\n---------------------------\n\nMachinae comes with out-of-the-box support for the following data sources:\n\n- IPVoid\n- URLVoid\n- URL Unshortener (http://www.toolsvoid.com/unshorten-url)\n- Malc0de\n- SANS\n- FreeGeoIP (freegeoip.io)\n- Fortinet Category\n- VirusTotal pDNS (via web scrape - commented out)\n- VirusTotal pDNS (via JSON API)\n- VirusTotal URL Report (via JSON API)\n- VirusTotal File Report (via JSON API)\n- Reputation Authority\n- ThreatExpert\n- VxVault\n- ProjectHoneypot\n- McAfee Threat Intelligence\n- StopForumSpam\n- Cymru MHR\n- ICSI Certificate Notary\n- TotalHash (disabled by default)\n- DomainTools Parsed Whois (Requires API key)\n- DomainTools Reverse Whois (Requires API key)\n- DomainTools Reputation\n- IP WHOIS (Using RIR REST interfaces)\n- Hacked IP\n- Metadefender Cloud (Requires API key)\n- GreyNoise (Requires API key)\n- IBM XForce (Required API key)\n\nWith additional data sources on the way.\n\nHTTP Basic Authentication and Configuration\n-------------------------------------------\n\nMachinae supports HTTP Basic Auth for sites that require it through the `--auth/-a`\nflag. You will need to create a YAML file with your credentials, which will include\na key to the site that requires the credentials and a list of two items, username\nand password or API key. For example, for the included PassiveTotal site this might\nlook like:\n\n passivetotal: ['myemail@example.com', 'my_api_key']\n\nInside the site configuration under `request` you will see a key such as:\n\n json:\n request:\n url: '...'\n auth: passivetotal\n\nThe `auth: passivetotal` points to the key inside the authentication config passed\nvia the command line.\n\n### Disabled by default\n\nThe following sites are disabled by default\n\n- Fortinet Category (`fortinet_classify`)\n- Telize Geo IP (`telize`)\n- TotalHash (`totalhash_ip`)\n- DomainTools Parsed Whois (`domaintools_parsed_whois`)\n- DomainTools Reverse Whois (`domaintools_reverse_whois`)\n- DomainTools Reputation (`domaintools_reputation`)\n- PassiveTotal Passive DNS (`passivetotal_pdns`)\n- PassiveTotal Whois (`passivetotal_whois`)\n- PassiveTotal SSL Certificate History (`passivetotal_sslcert`)\n- PassiveTotal Host Attribute Components (`passivetotal_components`)\n- PassiveTotal Host Attribute Trackers (`passivetotal_trackers`)\n- MaxMind GeoIP2 Passive Insight (`maxmind`)\n- FraudGuard (`fraudguard`)\n- Shodan (`shodan`)\n- Hacked IP\n- Metadefender Cloud (Requires API key)\n- GreyNoise (Requires API key)\n- IBM XForce (Requires API key)\n\nOutput Formats\n--------------\n\nMachinae comes with a limited set of output formats: normal, normal with dot\nescaping, and JSON. We plan to add additional output formats in the future.\n\n\nAdding additional sites\n-----------------------\n\n*** COMING SOON ***\n\n\nKnown Issues\n------------\n\n- Some ISP's on IPvoid contain double-encoded HTML entities, which are not\ndouble-decoded\n\n\nUpcoming Features\n-----------------\n\n- Add IDS rule search functionality (VRT/ET)\n- Add \"More info\" link for sites\n- Add \"dedup\" option to parser settings\n- Add option for per-otype request settings\n- Add custom per-site output for error codes\n\n\nVersion History\n---------------\n\n### Version 1.4.1 (2018-08-31) ###\n- New Features\n - Automatically Defangs output\n - MISP Support (example added to machinae.yml)\n \n### Version 1.4.0 (2016-04-20) ###\n- New features\n - \"-a\"/\"--auth\" option for passing an auth config file\n - Thanks johannestaas for the submission\n - \"-H\"/\"--http-proxy\" option, and environment support, for HTTP proxies\n- New sites\n - Passivetotal (various forms, thanks johannestaas)\n - MaxMind\n - FraudGuard\n - Shodan\n- Updated sites\n - FreeGeoIP (replaced freegeoip.net with freegeoip.io)\n\n### Version 1.3.4 (2016-04-01) ###\n- Bug fixes\n - Convert exceptions to str when outputting to JSON\n - Should actually close #14\n\n### Version 1.3.3 (2016-03-28) ###\n- Bug fixes\n - Correctly handle error results when outputting to JSON\n - Closes #14\n - Thanks Den1al for the bug report\n\n### Version 1.3.2 (2016-03-10) ###\n- New features\n - \"Short\" output mode - simply output yes/no/error for each site\n - \"-i\"/\"--infile\" option for passing a file with list of targets\n\n### Version 1.3.1 (2016-03-08) ###\n\n- New features\n - Prepend \"http://\" to URL targets when not starting with http:// or https://\n\n### Version 1.3.0 (2016-03-07) ###\n\n- New sites\n - Cymon.io - Threat intel aggregator/tracker by eSentire\n- New features\n - Support simple paginated responses\n - Support url encoding 'target' in request URL\n - Support url decoding values in results\n\n### Version 1.2.0 (2016-02-16) ###\n\n- New features\n - Support for sites returning multiple JSON documents\n - Ability to specify time format for relative time parameters\n - Ability to parse Unix timestamps in results and display in ISO-8601 format\n - Ability to specify status codes to ignore per-API\n- New sites\n - DNSDB - FarSight Security Passive DNS Data base (premium)\n\n### Version 1.1.2 (2015-11-26) ###\n\n- New sites\n - Telize (premium) - GeoIP site (premium)\n - Freegeoip - GeoIP site (free)\n - CIF - CIFv2 API support, from csirtgadgets.org\n- New features\n - Ability to specify labels for single-line multimatch JSON outputs\n - Ability to specify relative time parameters using relatime library\n\n### Version 1.0.1 (2015-10-13) ###\n\n- Fixed a false-positive bug with Spamhaus (Github#10)\n\n### Version 1.0.0 (2015-07-02) ###\n\n- Initial release\n\n\nLicense Info\n------------\n\nThe MIT License (MIT)\n\nCopyright (c) 2015 Hurricane Labs LLC\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n\n[1]: https://github.com/1aN0rmus/TekDefense-Automater\n[2]: https://github.com/HurricaneLabs/machinae/raw/master/machinae.yml", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://hurricanelabs.github.io/machinae/", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "machinae", "package_url": "https://pypi.org/project/machinae/", "platform": "", "project_url": "https://pypi.org/project/machinae/", "project_urls": { "Homepage": "http://hurricanelabs.github.io/machinae/" }, "release_url": "https://pypi.org/project/machinae/1.4.8/", "requires_dist": null, "requires_python": "", "summary": "Machinae Security Intelligence Collector", "version": "1.4.8" }, "last_serial": 5247275, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "dbee42bd3698b87338ae05c6b5650a48", "sha256": "70b382e33814a8ff34dd6c30a5d02717328a6c94d6e494eee49f43e280b2959c" }, "downloads": -1, "filename": "machinae-1.0.0.tar.gz", "has_sig": false, "md5_digest": "dbee42bd3698b87338ae05c6b5650a48", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14554, "upload_time": "2015-07-18T15:02:50", "url": "https://files.pythonhosted.org/packages/19/da/9cc6f2d07c27557149ad32fa852e652c75285eb50cd29bc3e9b40ed38eec/machinae-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "29f7c6959805a5ca59ccdf325a68c2a1", "sha256": "f5b1103fadd5f2c1a05408d8de099cb164e28f66b20f73819d9064b68e200580" }, "downloads": -1, "filename": "machinae-1.0.1a.tar.gz", "has_sig": false, "md5_digest": "29f7c6959805a5ca59ccdf325a68c2a1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14910, "upload_time": "2015-10-13T21:12:10", "url": "https://files.pythonhosted.org/packages/eb/5b/8089bf87a2c194ff67cab7c6fc5ed612338df5fcf69f07f2d5c022ea0d67/machinae-1.0.1a.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "e7b031105bdad2f7d6ba27539ad61adf", "sha256": "3b51592febb546ab80749947be63850f1c41c5a344333db647b30231f8e6a8d9" }, "downloads": -1, "filename": "machinae-1.0.2.tar.gz", "has_sig": false, "md5_digest": "e7b031105bdad2f7d6ba27539ad61adf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14926, "upload_time": "2015-10-22T02:53:31", "url": "https://files.pythonhosted.org/packages/ba/4a/27135de07b44d6ba162e8da17eb0d96a8f802e04e20940a05596fd017c3f/machinae-1.0.2.tar.gz" }, { "comment_text": "", "digests": { "md5": "97ee2ca4cc84f844fef74447b221af78", "sha256": "d1086d59c877c733c303701e14273da0c95f48276736483118b061401c5e5d27" }, "downloads": -1, "filename": "machinae-1.0.3.tar.gz", "has_sig": false, "md5_digest": "97ee2ca4cc84f844fef74447b221af78", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15280, "upload_time": "2015-11-16T01:17:50", "url": "https://files.pythonhosted.org/packages/4f/76/fa01f924f7e6a05146633e2e7d2a492451cb30542a7f0b769ba19ac17982/machinae-1.0.3.tar.gz" } ], "1.0.3": [], "1.1.0": [ { "comment_text": "", "digests": { "md5": "d083917b72d10b8ebad0d17683d38ad5", "sha256": "53f98f78639d367b6ddf6f1edaee369ff41b23f9897aadec2ad469ea988c8905" }, "downloads": -1, "filename": "machinae-1.1.0.tar.gz", "has_sig": false, "md5_digest": "d083917b72d10b8ebad0d17683d38ad5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15575, "upload_time": "2015-11-26T05:06:55", "url": "https://files.pythonhosted.org/packages/d4/d3/339b65cf9c05a8e2eefc498fabaa516e68770e2f53b76b075c8620175df8/machinae-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "3ca9ef0cd5c639fe1f307ac0f3cd380f", "sha256": "7522d1bc0acb5e05cc3c00eb392ab4e5a49cc7c0ddfd7772f5c3ea694c880aa8" }, "downloads": -1, "filename": "machinae-1.1.1.tar.gz", "has_sig": false, "md5_digest": "3ca9ef0cd5c639fe1f307ac0f3cd380f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15560, "upload_time": "2015-11-26T05:13:39", "url": "https://files.pythonhosted.org/packages/65/98/d0098a5d2fcc022de0f90034696ce6735fc088c4c28268b3c32526cf1a49/machinae-1.1.1.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "dc586c3f786e798b2d5de15eace4bf69", "sha256": "1630dbbc995954777aa65bd2fccca7cd1cb3b88575f35c7403040d521ed00d3b" }, "downloads": -1, "filename": "machinae-1.1.2.tar.gz", "has_sig": false, "md5_digest": "dc586c3f786e798b2d5de15eace4bf69", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15852, "upload_time": "2015-11-26T05:27:20", "url": "https://files.pythonhosted.org/packages/0d/08/ec54274bfc4a84cc9a163a7cd1ec249bc4607ae8ee1412a577fe036a2445/machinae-1.1.2.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "5e89fb1c196e3b0dac2fef528c36ecf8", "sha256": "426ac8e2a1a9271c89c40f2bb526578bc4b4d001bd32d2bc1cf0e6b60f1b2545" }, "downloads": -1, "filename": "machinae-1.2.0.tar.gz", "has_sig": false, "md5_digest": "5e89fb1c196e3b0dac2fef528c36ecf8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17947, "upload_time": "2016-02-17T01:30:24", "url": "https://files.pythonhosted.org/packages/b5/7b/7aa380dd7f2c3b8dd6745ade48a2b89679a143d77bc075e08b3f08a27f95/machinae-1.2.0.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "4edd638758712f5a306dfed6053dc4ce", "sha256": "5df4ddb6ba8166acef55fa9266bd88d15f44cb38bf410e5b81749d307b0213a7" }, "downloads": -1, "filename": "machinae-1.3.0.tar.gz", "has_sig": false, "md5_digest": "4edd638758712f5a306dfed6053dc4ce", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18408, "upload_time": "2016-03-08T00:29:04", "url": "https://files.pythonhosted.org/packages/d2/a3/8ba9fef57141129df08109d35e66c86817106dcc1e0201b0e69a3ed7e3a8/machinae-1.3.0.tar.gz" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "eac4e25c0b8c4bf4af89edfb56dd24be", "sha256": "ae51e0352c081f5fe1d15117353399a28cb659f07088649e621e490f2e6cb7ab" }, "downloads": -1, "filename": "machinae-1.3.1.tar.gz", "has_sig": false, "md5_digest": "eac4e25c0b8c4bf4af89edfb56dd24be", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18544, "upload_time": "2016-03-08T19:19:33", "url": "https://files.pythonhosted.org/packages/78/a4/a88edfa9c920f7fb754f9b69b55c115859ee412bd0e35c77d8237c320a23/machinae-1.3.1.tar.gz" } ], "1.3.2": [ { "comment_text": "", "digests": { "md5": "604113979fef333a97f8cabcb7dd60f2", "sha256": "ccbe24a61463b6127d719acf597f7d473ee0bbae2e95f66511581a20a47ea75c" }, "downloads": -1, "filename": "machinae-1.3.2.tar.gz", "has_sig": false, "md5_digest": "604113979fef333a97f8cabcb7dd60f2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18805, "upload_time": "2016-03-10T17:42:43", "url": "https://files.pythonhosted.org/packages/0d/b5/15e0e83cbd0cf58f505071c2724137604577c4fd5ca1c422a1dc7d785ff7/machinae-1.3.2.tar.gz" } ], "1.3.3": [ { "comment_text": "", "digests": { "md5": "8b0663e616c87f81701a56d0257fa92e", "sha256": "3c1af978258d597198ef0bbf8ed08e6bc6e742b27386a15b021095de97307600" }, "downloads": -1, "filename": "machinae-1.3.3.tar.gz", "has_sig": false, "md5_digest": "8b0663e616c87f81701a56d0257fa92e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18982, "upload_time": "2016-03-28T16:16:27", "url": "https://files.pythonhosted.org/packages/ba/1b/da42aee2fb1b7f82c38f043346ffefc34cf9ce7e5916028e4e37d558d7db/machinae-1.3.3.tar.gz" } ], "1.3.4": [ { "comment_text": "", "digests": { "md5": "5e77057a75799903da6d247c6b13ec26", "sha256": "028370b718188882588e877e243aa16c7a6afa32435209696fa6f376783605a1" }, "downloads": -1, "filename": "machinae-1.3.4.tar.gz", "has_sig": false, "md5_digest": "5e77057a75799903da6d247c6b13ec26", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19067, "upload_time": "2016-04-01T16:19:11", "url": "https://files.pythonhosted.org/packages/f9/07/77de4600a3e4e8ca188cdd833519dab4adbea3e87c58194f9622f6c35189/machinae-1.3.4.tar.gz" } ], "1.4.0": [ { "comment_text": "", "digests": { "md5": "5fd0718e12ee92fec7412149eaff2db7", "sha256": "0dc97e2aa2fe368f16d3333460d1e6e7054e2f0e915bbfe27a6ae34fcceb4da5" }, "downloads": -1, "filename": "machinae-1.4.0.tar.gz", "has_sig": false, "md5_digest": "5fd0718e12ee92fec7412149eaff2db7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20840, "upload_time": "2016-04-21T03:16:54", "url": "https://files.pythonhosted.org/packages/e1/32/fcf173886cb51cbba843a9eb4e6550d71c8f5f9aefec08dc08359232e022/machinae-1.4.0.tar.gz" } ], "1.4.1": [ { "comment_text": "", "digests": { "md5": "1a096559b64f9a6a506143ab71264248", "sha256": "c88d205fdd6a918d50dd9b89db161aa732af2171e8e8b16f62179743d8a6f9ab" }, "downloads": -1, "filename": "machinae-1.4.1.tar.gz", "has_sig": false, "md5_digest": "1a096559b64f9a6a506143ab71264248", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15837, "upload_time": "2018-08-31T17:51:38", "url": "https://files.pythonhosted.org/packages/b8/07/466710a0cb379fc9df7bab1bd6dbb653792cc4dcc914686b5c51cdd1c0da/machinae-1.4.1.tar.gz" } ], "1.4.2": [ { "comment_text": "", "digests": { "md5": "e583c7c0ff7caccee66d996d1c0d815d", "sha256": "ffea505f1d40c3c4a3207eee3c85da7ed38e1ee444c07a0065948c0043d2e093" }, "downloads": -1, "filename": "machinae-1.4.2.tar.gz", "has_sig": false, "md5_digest": "e583c7c0ff7caccee66d996d1c0d815d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15855, "upload_time": "2018-09-04T14:00:50", "url": "https://files.pythonhosted.org/packages/91/26/8ab3fd3cb087715122411b82f119af6983ddb8492a40a9adc9a4605e4577/machinae-1.4.2.tar.gz" } ], "1.4.4": [ { "comment_text": "", "digests": { "md5": "7c953d574de28022eae5e812b4ed0be4", "sha256": "f9c1226d3e5c2943fe30cf1af2aa9f8fbc779dd6e725ac0ce24e9b5e6c619f1f" }, "downloads": -1, "filename": "machinae-1.4.4.tar.gz", "has_sig": false, "md5_digest": "7c953d574de28022eae5e812b4ed0be4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16315, "upload_time": "2018-09-07T02:30:24", "url": "https://files.pythonhosted.org/packages/51/b1/581f229fb30fe21e78be3644c201feba8ea0f2c46adfd4bc7dd3aaa827e0/machinae-1.4.4.tar.gz" } ], "1.4.5": [ { "comment_text": "", "digests": { "md5": "c61d1d9c450b6ad61f1824b4573d6244", "sha256": "3986fb9233f6cee945a0c1570f42c6aa75a70ca4f3fe5d6254e4419fb647c29c" }, "downloads": -1, "filename": "machinae-1.4.5.tar.gz", "has_sig": false, "md5_digest": "c61d1d9c450b6ad61f1824b4573d6244", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18829, "upload_time": "2018-09-07T19:25:47", "url": "https://files.pythonhosted.org/packages/77/df/8de056324b7dd8d73e448893f33b7cb0bffb46ced430996304dda69dc8bf/machinae-1.4.5.tar.gz" } ], "1.4.6": [ { "comment_text": "", "digests": { "md5": "a5a6a2cb5c73a298d17d1aecfb07a4d0", "sha256": "70864727fa0792eb4736032af412034365046bb69ff75f7da6dcc6dab1e0518d" }, "downloads": -1, "filename": "machinae-1.4.6.tar.gz", "has_sig": false, "md5_digest": "a5a6a2cb5c73a298d17d1aecfb07a4d0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23457, "upload_time": "2019-02-05T21:38:08", "url": "https://files.pythonhosted.org/packages/2b/23/b4dd3f1a9e0657c8f64b9153b0c9d4b848c8ca9611074501395de828e719/machinae-1.4.6.tar.gz" } ], "1.4.7": [ { "comment_text": "", "digests": { "md5": "d69e327e881c23a7e4fe3376f76841e5", "sha256": "468290e84e8fa84249d7e572d80194b0da4fb6d1d001c941eafd08fc871665cd" }, "downloads": -1, "filename": "machinae-1.4.7.tar.gz", "has_sig": false, "md5_digest": "d69e327e881c23a7e4fe3376f76841e5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23485, "upload_time": "2019-02-07T15:18:14", "url": "https://files.pythonhosted.org/packages/db/0c/c589b63e9dc80ac0a8beed799622379e3bb15cdd60d674663a8c114d6926/machinae-1.4.7.tar.gz" } ], "1.4.8": [ { "comment_text": "", "digests": { "md5": "a6a22f3150b136fdb10e0f950be9a865", "sha256": "9142bc8d0d425a2a45f73c6b9a9bc488ebfb97feedea5d8d40974ff80247a9b1" }, "downloads": -1, "filename": "machinae-1.4.8.tar.gz", "has_sig": false, "md5_digest": "a6a22f3150b136fdb10e0f950be9a865", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23664, "upload_time": "2019-05-09T12:48:11", "url": "https://files.pythonhosted.org/packages/d1/13/785b96f03f68f752825468aa7bd67a5c11ade6721ef9060aff3d9e9ffab6/machinae-1.4.8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a6a22f3150b136fdb10e0f950be9a865", "sha256": "9142bc8d0d425a2a45f73c6b9a9bc488ebfb97feedea5d8d40974ff80247a9b1" }, "downloads": -1, "filename": "machinae-1.4.8.tar.gz", "has_sig": false, "md5_digest": "a6a22f3150b136fdb10e0f950be9a865", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23664, "upload_time": "2019-05-09T12:48:11", "url": "https://files.pythonhosted.org/packages/d1/13/785b96f03f68f752825468aa7bd67a5c11ade6721ef9060aff3d9e9ffab6/machinae-1.4.8.tar.gz" } ] }