{ "info": { "author": "gibartes", "author_email": "", "bugtrack_url": null, "classifiers": [ "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8" ], "description": "# structureReader\nC-style structure reader for data parsing with python \n\n## Python package dependency\nNothing\n\n*****\n# The Description about StructureReader Class\n\n## StructureReader Class\n\n### Static methods\n* byte2int(data,order='little')\n - \uae30\ubcf8 \uc124\uc815\uc740 \ub9ac\ud2c0 \uc5d4\ub514\uc548\uc774\uba70, \ubc14\uc774\ud2b8 \uac12\uc744 \uc815\uc218\ud615\uc73c\ub85c \ubcc0\ud658\ud55c\ub2e4. \n* align(data,word)\n - \uc815\ub82c\uc5d0 \uc0ac\uc6a9\ud560 \ud328\ub529 \ubc14\uc774\ud2b8 \uc218\ub97c \ub9ac\ud134\ud55c\ub2e4.\n* sizeof(structure)\n - \uad6c\uc870\uccb4\uc758 \ud06c\uae30\ub97c \uacc4\uc0b0\ud55c\ub2e4.\n* read_value(structure,field)\n - \uad6c\uc870\uccb4 \ud544\ub4dc \uac12\uc744 \ubc18\ud658\ud55c\ub2e4.\n* read_field_size(structure,field)\n - \uad6c\uc870\uccb4 \ud544\ub4dc\uc758 \uc0ac\uc774\uc988\ub97c \ubc18\ud658\ud55c\ub2e4.\n* read_field_offset(structure,field)\n - \uad6c\uc870\uccb4 \ud544\ub4dc\uc758 \uc624\ud504\uc14b\uc744 \ubc18\ud658\ud55c\ub2e4.\n* generate(field,offset,size)\n - Field \uc774\ub984, Offset \uc815\ubcf4, Size \uc815\ubcf4\ub97c \uac00\uc9c0\uace0 \uc0c8 \uad6c\uc870\uccb4\ub97c \uc0dd\uc131\ud55c\ub2e4. \uc138 \ud30c\ub77c\ubbf8\ud130\uc758 \uae38\uc774\ub294 \ubaa8\ub450 \uac19\uc544\uc57c\ud55c\ub2e4.\n* sprint(structure,endian='little')\n - \uad6c\uc870\uccb4 \ud615\ud0dc\ub97c \ucd9c\ub825\ud55c\ub2e4.\n* parse_as_byte(structure,text,offset=0,order='big)\n - \uc8fc\uc5b4\uc9c4 \uad6c\uc870\uccb4 \ud615\uc2dd\ub300\ub85c offset\uc5d0\uc11c\ubd80\ud130 \uad6c\uc870\uccb4 \ud06c\uae30\ub9cc\ud07c \ubc14\uc774\ub108\ub9ac \ud14d\uc2a4\ud2b8\ub97c \uc77d\ub294\ub2e4.\n* parse_as_int(structure,offset=0,order='big')\n - \uc8fc\uc5b4\uc9c4 \uad6c\uc870\uccb4 \ud615\uc2dd\ub300\ub85c offset\uc5d0\uc11c\ubd80\ud130 \uad6c\uc870\uccb4 \ud06c\uae30\ub9cc\ud07c \ubc14\uc774\ub108\ub9ac \ud14d\uc2a4\ud2b8\ub97c \uc77d\ub294\ub2e4. \uad6c\uc870\uccb4 \uac12\uc5d0\ub294 \uc815\uc218\ub85c \ubcc0\ud658\ub418\uc5b4 \uc800\uc7a5\ub41c\ub2e4.\n* take(structure,text,offset=0,option='byte',order='big')\n - parse_as_byte\uba54\uc18c\ub4dc\uc640 parse_as_int \uba54\uc18c\ub4dc\uc758 \ub798\ud37c \uba54\uc18c\ub4dc\uc774\ub2e4. option\uc5d0 'int'\ub97c \uc8fc\uba74 \uad6c\uc870\uccb4 \uac12\uc5d0\ub294 \uc815\uc218\ub85c \ubcc0\ud658\ub418\uc5b4 \uc800\uc7a5\ub41c\ub2e4.\n* parse(structure,text,offset=0,option='byte',order='big)\n - \uc8fc\uc5b4\uc9c4 \uad6c\uc870\uccb4 \ud615\uc2dd\ub300\ub85c offset\uc5d0\uc11c\ubd80\ud130 \uad6c\uc870\uccb4 \ud06c\uae30\ub9cc\ud07c \ubc14\uc774\ub108\ub9ac \ud14d\uc2a4\ud2b8\ub97c \uc77d\ub294\ub2e4. option\uc5d0 'int'\ub97c \uc8fc\uba74 \uad6c\uc870\uccb4 \uac12\uc5d0\ub294 \uc815\uc218\ub85c \ubcc0\ud658\ub418\uc5b4 \uc800\uc7a5\ub41c\ub2e4. \uccab\ubc88\uc9f8 \uc778\uc790 structure\ub294 [Structure,Cursor,Flag] \ud615\uc2dd\uc73c\ub85c \uad6c\uc131\ub418\uc5b4\uc57c\ud55c\ub2e4. Structure\ub294 \uad6c\uc870\uccb4\uc774\uba70, Cursor\ub294 \ub2e4\uc74c \ucc28\uc2dc\uc5d0 \uc77d\uc744 \uc624\ud504\uc14b \uac12, Flag\ub294 \ud30c\uc2f1 \uacb0\uacfc\ub97c \uac00\uc9c0\uace0 \uc788\ub2e4. \uc774 \ud568\uc218\ub294 \uc0c8 \uad6c\uc870\uccb4 \uac1d\uccb4\ub97c \uc0dd\uc131\ud558\uc9c0 \uc54a\uc73c\ubbc0\ub85c \ub370\uc774\ud130 \uc800\uc7a5\uc5d0 \uc0ac\uc6a9\ud560 \uad6c\uc870\uccb4 \uac1d\uccb4\ub97c \ubbf8\ub9ac \uc120\uc5b8\ud560 \ud544\uc694\uac00 \uc788\ub2e4.\n```python\n from structureReader import structureReader as sr\n\n ...\n header = sr._MFTEntryHeader()\n cursor = 1024\n\n pair = [header.MFTEntryHeader,cursor,False]\n sr.StructureReader.parse(pair,buffer,cursor,'int')\n if(pair[2]==True):\n sr.StructureReader.sprint(pair[0])\n ...\n\n```\n### General methods\n* get_file_handle(path,base=0,mode=0)\n - mode\uac00 0\uc774\uba74 \uc77c\ubc18\ud615\uc2dd\uc73c\ub85c 0\uc774 \uc544\ub2c8\uba74 \ubc14\uc774\ub108\ub9ac\ud615\uc2dd\uc73c\ub85c \ud30c\uc77c\uc744 \uc5f0\ub2e4.\n* cleanup()\n - StructureReader \uac1d\uccb4\ub97c \uc815\ub9ac\ud55c\ub2e4. \uc774 \uba54\uc18c\ub4dc\ub97c \ud638\ucd9c\ud558\uba74 \uc5f4\ub7ec\uc9c4 \ubaa8\ub4e0 \ud30c\uc77c\uc744 \ub2eb\ub294\ub2e4.\n* get_size()\n - \ud604\uc7ac \ub9e4\ud551\ub41c \uad6c\uc870\uccb4 \ud06c\uae30\ub97c \uc5bb\ub294\ub2e4.\n* tell()\n - \ud604\uc7ac \uc5f4\ub9b0 \ud30c\uc77c \ucee4\uc11c \uc704\uce58\ub97c \ubc18\ud658\ud55c\ub2e4.\n* btell()\n - \ud604\uc7ac \uc5f4\ub9b0 \ubc14\uc774\ub108\ub9ac \ud30c\uc77c \ucee4\uc11c \uc704\uce58\ub97c \ubc18\ud658\ud55c\ub2e4.\n* goto(offset=0,mode=os.SEEK_CUR)\n - \ud30c\uc77c \ucee4\uc11c\ub97c mode \uae30\uc900\uc73c\ub85c offset\ub9cc\ud07c \uc774\ub3d9\ud55c\ub2e4.\n* bgoto(offset=0,mode=os.SEEK_CUR)\n - \ubc14\uc774\ub108\ub9ac \ud30c\uc77c \ucee4\uc11c\ub97c mode \uae30\uc900\uc73c\ub85c offset\ub9cc\ud07c \uc774\ub3d9\ud55c\ub2e4.\n* execute(structure,option='byte',offset=0,mode=os.SEEK_CUR,order='big')\n - \ud30c\uc77c\uc744 mode \uae30\uc900\uc73c\ub85c offset\uc5d0\uc11c structure\uc758 \uc0ac\uc774\uc988\ub9cc\ud07c option \ud615\uc2dd\uc73c\ub85c structure\uc5d0 \ub530\ub77c \uc77d\ub294\ub2e4. byte\ubaa8\ub4dc\ub294 \uac01 \ud544\ub4dc \uac12\uc774 byte\ub85c \uc800\uc7a5\ub418\uace0, int\ubaa8\ub4dc\ub85c \uc77d\uc73c\uba74 \uac01 \ud544\ub4dc \uac12\uc740 int\ub85c \ubcc0\ud658\ub41c\ub2e4.\n* bexecute(structure,option='byte',offset=0,mode=os.SEEK_CUR,order='big')\n - \ubc14\uc774\ub108\ub9ac \ud30c\uc77c\uc744 mode \uae30\uc900\uc73c\ub85c offset\uc5d0\uc11c structure\uc758 \uc0ac\uc774\uc988\ub9cc\ud07c option \ud615\uc2dd\uc73c\ub85c structure\uc5d0 \ub530\ub77c \uc77d\ub294\ub2e4. byte\ubaa8\ub4dc\ub294 \uac01 \ud544\ub4dc \uac12\uc774 byte\ub85c \uc800\uc7a5\ub418\uace0, int\ubaa8\ub4dc\ub85c \uc77d\uc73c\uba74 \uac01 \ud544\ub4dc \uac12\uc740 int\ub85c \ubcc0\ud658\ub41c\ub2e4.\n* read_raw(self,offset,size,mode=os.SEEK_CUR,order='big')\n - \ud30c\uc77c\uc744 \uad6c\uc870\uccb4 \uc5c6\uc774 mode \uae30\uc900\uc73c\ub85c offset\uc5d0\uc11c size\ub9cc\ud07c \uc77d\ub294\ub2e4.\n* bread_raw(self,offset,size,mode=os.SEEK_CUR,order='big')\n - \ubc14\uc774\ub108\ub9ac \ud30c\uc77c\uc744 \uad6c\uc870\uccb4 \uc5c6\uc774 mode \uae30\uc900\uc73c\ub85c offset\uc5d0\uc11c size\ub9cc\ud07c \uc77d\ub294\ub2e4.\n* read(structure,option='byte',offset=0,mode=os.SEEK_SET,order='big')\n - execute \uba54\uc18c\ub4dc\uc640 bexecute \uba54\uc18c\ub4dc\uc758 \ub798\ud37c \uba54\uc18c\ub4dc\uc774\ub2e4. \ud604\uc7ac \uc5f4\ub824\uc9c4 \ud30c\uc77c\uc774 \ubc14\uc774\ub108\ub9ac \ubaa8\ub4dc\uc774\uba74 bexecute \ud568\uc218\ub97c \ud638\ucd9c\ud558\uace0, \uadf8\ub807\uc9c0 \uc54a\uc73c\uba74 execute \uba54\uc18c\ub4dc\ub97c \ud638\ucd9c\ud55c\ub2e4.\n* get_value(self,field)\n - \ud604\uc7ac \uad6c\uc870\uccb4\uc758 field\uc5d0 \uc788\ub294 \uac12\uc744 \ubc18\ud658\ud55c\ub2e4. \n* get_field_size(self,field)\n - \ud604\uc7ac \uad6c\uc870\uccb4\uc758 field \ud06c\uae30\ub97c \ubc18\ud658\ud55c\ub2e4.\n* get_field_offset(self,field)\n - \ud604\uc7ac \uad6c\uc870\uccb4\uc758 field\uc758 \uc624\ud504\uc14b\uc744 \ubc18\ud658\ud55c\ub2e4.\n* copy()\n - \ud604\uc7ac \uad6c\uc870\uccb4\uc758 \ud30c\uc2f1\ud55c \uacb0\uacfc\ub97c \ubc18\ud658\ud55c\ub2e4.\n* print()\n - \ud30c\uc2f1 \uacb0\uacfc\ub97c \ucd9c\ub825\ud55c\ub2e4.\n* fsize()\n - \ud604\uc7ac \uac1d\uccb4 \ub0b4\uc5d0 \uc5f4\ub9b0 \ud30c\uc77c\uc758 \ud06c\uae30\ub97c \uacc4\uc0b0\ud55c\ub2e4.\n* size\n - \ud604\uc7ac \uac1d\uccb4 \ub0b4\uc5d0 \uc5f4\ub9b0 \ud30c\uc77c\uc758 \ud06c\uae30\ub97c \ud29c\ud50c \ud615\ud0dc\ub85c \ubc18\ud658\ud55c\ub2e4. \uccab\ubc88\uc9f8 \ud56d\uc740 \uc77c\ubc18 \ud30c\uc77c\uc758 \ud06c\uae30\uc774\uace0, \ub450\ubc88\uc9f8 \ud56d\uc740 \ubc14\uc774\ub108\ub9ac \ud30c\uc77c\uc758 \ud06c\uae30\ub97c \ub098\ud0c0\ub0b8\ub2e4. \n*****\n## Example\n```python\n from structureReader import structureReader as sr\n\n if __name__ == '__main__':\n parser = sr.StructureReader()\n header = sr._MFTEntryHeader()\n\n \"\"\" Generate Structure \"\"\"\n field = [\"version\",\"signature\",\"unknown\",\"size\",\"name\",\"hash\",\"flag\"]\n offset = [ 0, 4, 8,12,16,76,80]\n size = [ 4, 4, 4,60, 4, 4, 4]\n\n SCCA = sr.StructureReader.generate(field,offset,size)\n\n \"\"\" Sample Code \"\"\"\n ret = parser.get_file_handle(\"0xcbac000.MFT\",0,1)\n if(ret!=sr._StructureReaderConstant.SUCCESS):\n exit(ret)\n\n parser.fsize()\n\n while(1):\n parser.read(header.MFTEntryHeader,'int',0,os.SEEK_CUR)\n if(parser.flag==False):\n break\n\n parser.bgoto(1024-parser.sizeof(header.MFTEntryHeader))\n parser.print()\n\n if(parser.btell()>=parser.size[1]):\n break\n\n parser.cleanup()\n exit(ret)\n```\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "structureReader", "package_url": "https://pypi.org/project/structureReader/", "platform": "", "project_url": "https://pypi.org/project/structureReader/", "project_urls": null, "release_url": "https://pypi.org/project/structureReader/1.1.5/", "requires_dist": null, "requires_python": ">=3", "summary": "Simple static structure/union parser", "version": "1.1.5" }, "last_serial": 5993767, "releases": { "1.0.3": [ { "comment_text": "", "digests": { "md5": "c584ad874f3be5ec69c90198dcf20d92", "sha256": "59005c85ead4291bf3f1dde2d52c5d70a4ecbf878b7c8f866f9f19c97bb14726" }, "downloads": -1, "filename": "structureReader-1.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "c584ad874f3be5ec69c90198dcf20d92", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 12229, "upload_time": "2019-07-26T08:00:53", "url": "https://files.pythonhosted.org/packages/15/b9/c0da88d59cad7eee591b1896a8d0e79d33e10c28c478ba0b82f25a9e257d/structureReader-1.0.3-py3-none-any.whl" } ], "1.0.6": [ { "comment_text": "", "digests": { "md5": "7c244013993643d945fe39b28adba382", "sha256": "d6e2beff2c8b86275b75979b2341d1655b36e30ee82471f0c58e34542f560be2" }, "downloads": -1, "filename": "structureReader-1.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "7c244013993643d945fe39b28adba382", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 12614, "upload_time": "2019-09-06T06:53:28", "url": "https://files.pythonhosted.org/packages/18/07/61fef7f413519afe22f23165e6cd301cec198f36ae849febcc5d05589238/structureReader-1.0.6-py3-none-any.whl" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "de6bfe7cc50b675abc2f8bb46b4812fb", "sha256": "60ad30199c00b80f6d3f22951dee599d3c8a5200413fd9ff801abefaaf797d3b" }, "downloads": -1, "filename": "structureReader-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "de6bfe7cc50b675abc2f8bb46b4812fb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 14565, "upload_time": "2019-09-06T08:57:24", "url": "https://files.pythonhosted.org/packages/b2/d4/93465dc70599ba61c93e35e8561cbe9f78f93c3569d08139232fd186374c/structureReader-1.1.0-py3-none-any.whl" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "69e97b0f6330f02565dd6a4c33c218d2", "sha256": "1ea15bf489c393689382e0f23ffa8ae99489026698bcc4869de569e6564e60cd" }, "downloads": -1, "filename": "structureReader-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "69e97b0f6330f02565dd6a4c33c218d2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 16122, "upload_time": "2019-10-18T00:47:28", "url": "https://files.pythonhosted.org/packages/b5/77/345f05b2029d20f63b1cd1f51d464ac1d1fac8ed5302214a9719dec0cbff/structureReader-1.1.1-py3-none-any.whl" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "4c0e6382bf1210ff34cdb032d34612c0", "sha256": "a6097f57a335ed33c5dbe1deec4defcc00192c31be13102c15160ccedc99fa6c" }, "downloads": -1, "filename": "structureReader-1.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "4c0e6382bf1210ff34cdb032d34612c0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 16152, "upload_time": "2019-10-18T00:57:04", "url": "https://files.pythonhosted.org/packages/df/db/ec58c36ef9d8b2ba441b6b6b8a385bda87aad8a65344bc0e67197e288ed3/structureReader-1.1.2-py3-none-any.whl" } ], "1.1.3": [ { "comment_text": "", "digests": { "md5": "f11579b7c79c4adbf77e55ee74c46efe", "sha256": "24b31cea94f2deae9c39d869a6a3eb97194d3d755295b73a6913083dedc4172a" }, "downloads": -1, "filename": "structureReader-1.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "f11579b7c79c4adbf77e55ee74c46efe", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 16196, "upload_time": "2019-10-18T01:20:18", "url": "https://files.pythonhosted.org/packages/81/45/aa6beb00ac679330e7bf347ef3769928bcf07dbd7fd364d96e4547553938/structureReader-1.1.3-py3-none-any.whl" } ], "1.1.4": [ { "comment_text": "", "digests": { "md5": "6835b23d99c82e16f00bdbdb5d07ee8a", "sha256": "af21467f27fe9169a87c600acf3adeca9e9ea16c61d650a05e4bcbeb2c0a3ca8" }, "downloads": -1, "filename": "structureReader-1.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "6835b23d99c82e16f00bdbdb5d07ee8a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 17429, "upload_time": "2019-10-18T04:55:43", "url": "https://files.pythonhosted.org/packages/e9/7e/85075b9a47820c187fd7f00ed3dfcda831ec8dd2090524fbd79da7a086cd/structureReader-1.1.4-py3-none-any.whl" } ], "1.1.5": [ { "comment_text": "", "digests": { "md5": "395f5ad0138164082e71d2b50ef2bfd4", "sha256": "be48f10b6fd97a4d416e576a707a7f01f78b23d559b07e173bc9029e89579366" }, "downloads": -1, "filename": "structureReader-1.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "395f5ad0138164082e71d2b50ef2bfd4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 17525, "upload_time": "2019-10-18T05:09:00", "url": "https://files.pythonhosted.org/packages/a5/fe/85e10b30482e9210580d977dee1a0d85a34096c4c8406854f306eab06ef9/structureReader-1.1.5-py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "395f5ad0138164082e71d2b50ef2bfd4", "sha256": "be48f10b6fd97a4d416e576a707a7f01f78b23d559b07e173bc9029e89579366" }, "downloads": -1, "filename": "structureReader-1.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "395f5ad0138164082e71d2b50ef2bfd4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 17525, "upload_time": "2019-10-18T05:09:00", "url": "https://files.pythonhosted.org/packages/a5/fe/85e10b30482e9210580d977dee1a0d85a34096c4c8406854f306eab06ef9/structureReader-1.1.5-py3-none-any.whl" } ] }