{ "info": { "author": "Nicolai Lessel", "author_email": "nicklessel@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable" ], "description": "Prog:\tStringen 1.2 (Python 3.3.2)\r\nType:\tDictionary/wordlist/password generator.\t\r\n---------------------------------------------------------------------------------------------------------------------------\r\nAuthor:\tNicolai Lessel \r\nE-mail:\tnicklessel@gmail.com\r\nDate:\tOct 2, 2013 - Aug 23, 2014\r\n\r\nFeedback is welcome at the e-mail address provided.\r\n\r\nSections:\r\nI.\tBackground\r\nII.\tInstructions\r\nIII.\tExamples\r\nIV.\tWish List\r\nV.\tVersion history\r\nVI.\tLicense agreement\r\n\r\n\r\nI.\tBackground\r\n---------------------------------------------------------------------------------------------------------------------------\r\nIt all began, when one day, I went to open a RAR file that I had created some time ago, only to realize that I had forgotten the password. \r\n\r\nThings I knew about the RAR password:\r\n1.\tthe password was long (more than 12 characters), so brute force was out of the question.\r\n2.\tthe password was created from several words and numbers (my guess was 3-4).\r\n3.\tthe words (at least some of them), used in making the password are most likely NOT to be found in a dictionary.\r\n\r\nSo, with this knowledge, brute force and regular dictionary attack was a no go. \r\nWhat I was able to do, was to put together a list of around 15-20 words and numbers, which I believed could be part of the password. \r\nAlthough this was great, I quickly became aware, that I had no idea of how many of these words and numbers were combined, to form the password.\r\nI quickly did the math on how many possible passwords could be created when using a list of just 15-20 words, stringing anything from 2 to 5 of them together at a time, to make the password. It was way more than I cared to do by hand..lol.\r\nI looked around on the net in an attempt to find a program that would do this for me, but no luck. Some were very close, but not what I really needed.\r\nSo, the only solution left was to write the program myself. \r\n\r\nThe input (in.txt) would consist of a list of words and numbers, the ones I remember having used in the past to create passwords. \r\nThe output (out.txt) would be a list of generated passwords (all possible combinations of the items in the in.txt file), which could then be used in a dictionary attack.\r\n\r\nI have limited programming experience using Pascal and C++, but recently discovered Python and thought I'd give it a go. So after digging into Python, I started writing this program. \r\n\r\nTo make a long story short, the program works! I got my list created, used it in a dictionary attack and was able to recover the contents of my RAR file.\r\n\r\nI decided to make this program available to everyone, because there is nothing more frustrating, than having that file in front of you and 'almost' remembering the password. \r\n\r\n\r\nII.\tInstructions\r\n---------------------------------------------------------------------------------------------------------------------------\r\nI used Python 3.3.2. I tested this program with Python 2.7.5 and received errors. \r\nI now know that I probably should have written it for Python 2.7 for better compatibility. Sorry for that oversight, I'm a neewb ;-)\r\n\r\n*\tThe program expects a file 'in.txt' to be located in same folder as the program itself. \r\n*\tThis 'in.txt' file contains the words and/or numbers that you want to use. \r\n*\tUse one word/number/item per line, starting with the first line.\r\n*\tUse Notepad or similar to edit the 'in.txt' file. \r\n*\tMake sure that there are no spaces or other formatting after the last item/line. One way to ensure this is to press DEL \tkey at the end of the last item, thereby deleting anything below or after this point.\r\n*\tIf spaces are needed in the passwords, then a space can be added as an item on one of the lines. So, instead of \twriting your word/number on one of the lines, just press the spacebar and then ENTER for the next line.\r\n*\tOutput file will be 'out.txt' in same folder as program.\r\n\r\n\r\nIII.\tExamples\r\n---------------------------------------------------------------------------------------------------------------------------\r\nThe time it takes the program to generate the passwords varies greatly. A setting of 4 items (concatenation), with 22 items in the 'in.txt' file takes my computer around 6 seconds. Going from 4 items to 5, will increase the time quite a bit and even longer going to 6 items.\r\n\r\nTimes, number of passwords generated and resulting file size using the included 'in.txt' file:\r\n\r\n22 items/lines, setting 3: ca. 1 second, passwords 11,154, output file size 192KB\r\n22 items/lines, setting 4: ca. 6 seconds, passwords 245,410, output file size 5.26MB\r\n22 items/lines, setting 5: 1min 56sec, passwords 5,399,042, output file size 142MB\r\n22 items/lines, setting 6: 43min 20sec, passwords 118,778,946, output file size 3.63GB\r\n\r\nAs can be seen from the numbers, start with a low setting.\r\n\r\nWhen generating 5.4M passwords, I get an average of 52000 passwords per second.\r\n\r\n\r\nIV.\tWish List\r\n---------------------------------------------------------------------------------------------------------------------------\r\n1.\tMulti-core CPU and GPU support\r\n2.\tStat: time spent generating passwords and passwords per second. Added in ver. 1.2\r\n3.\tEstimated output file size\r\n4.\tProgress indicator. Added in ver. 1.2\r\n5.\tStat: length of longest password generated. Added in ver. 1.2\r\n\r\n\r\nV.\tVersion history\r\n---------------------------------------------------------------------------------------------------------------------------\r\nSee included \"CHANGES.txt\"\r\n\r\n\r\nVI.\tLicense agreement\r\n---------------------------------------------------------------------------------------------------------------------------\r\nCopyright (C) 2013-2014 Nicolai Lessel\r\n\r\n This program is free software: you can redistribute it and/or modify\r\n it under the terms of the GNU General Public License as published by\r\n the Free Software Foundation, either version 3 of the License, or\r\n (at your option) any later version.\r\n\r\n This program is distributed in the hope that it will be useful,\r\n but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n GNU General Public License for more details.", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "", "keywords": "dictionary, wordlist, password, generator, attack, rar", "license": "", "maintainer": "", "maintainer_email": "", "name": "stringen", "package_url": "https://pypi.org/project/stringen/", "platform": "Any", "project_url": "https://pypi.org/project/stringen/", "project_urls": null, "release_url": "https://pypi.org/project/stringen/1.2/", "requires_dist": null, "requires_python": null, "summary": "Dictionary/wordlist/password generator.", "version": "1.2" }, "last_serial": 1379512, "releases": { "1.1": [ { "comment_text": "", "digests": { "md5": "bad0e10d9cd87d382c3f553494a54478", "sha256": "95055f157f2438ba251c23a3f4b76c0996ebb206ae897656c1dec9ce00db6f4d" }, "downloads": -1, "filename": "stringen-1.1.zip", "has_sig": false, "md5_digest": "bad0e10d9cd87d382c3f553494a54478", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5206, "upload_time": "2015-01-12T14:37:49", "url": "https://files.pythonhosted.org/packages/6a/87/810fe73cb6fae159eb69d63f56ac51d445fe44c1f67347523998ea02c8b5/stringen-1.1.zip" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "00ee289e4608df7ab7754ae88b559d9b", "sha256": "5d34627881376a191ea6bbb484dd01e1f332984305c4841ea030261752fdcb0a" }, "downloads": -1, "filename": "stringen-1.2.zip", "has_sig": false, "md5_digest": "00ee289e4608df7ab7754ae88b559d9b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6913, "upload_time": "2015-01-12T14:08:14", "url": "https://files.pythonhosted.org/packages/3f/10/21dd788fb4d731ba739beb8c2823d25f8090b4ef015110b3394c06da739f/stringen-1.2.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "00ee289e4608df7ab7754ae88b559d9b", "sha256": "5d34627881376a191ea6bbb484dd01e1f332984305c4841ea030261752fdcb0a" }, "downloads": -1, "filename": "stringen-1.2.zip", "has_sig": false, "md5_digest": "00ee289e4608df7ab7754ae88b559d9b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6913, "upload_time": "2015-01-12T14:08:14", "url": "https://files.pythonhosted.org/packages/3f/10/21dd788fb4d731ba739beb8c2823d25f8090b4ef015110b3394c06da739f/stringen-1.2.zip" } ] }