项目作者: PrVrSs

项目描述 :
Grammar-based Fuzzer that uses WebIDL as a grammar.
高级语言: Python
项目地址: git://github.com/PrVrSs/idl2js.git
创建时间: 2020-06-07T06:50:38Z
项目社区:https://github.com/PrVrSs/idl2js

开源协议:Apache License 2.0

下载


idl2js

Grammar-based Fuzzer that uses WebIDL as a grammar.

Build Status
Codecov
Python Version
License

Quick start

  1. pip install idl2js

Build from source

Get source and install dependencies

  1. git clone https://gitlab.com/PrVrSs/idl2js.git
  2. cd idl2js
  3. poetry install

Run tests

  1. make unit

Examples

  1. from pathlib import Path
  2. from pprint import pprint
  3. from idl2js import Fuzzer
  4. def main():
  5. fuzzer = Fuzzer(
  6. idls=[
  7. # https://www.w3.org/TR/wasm-js-api-2/#idl-index
  8. str((Path(__file__).parent / 'webassembly.webidl').resolve()),
  9. ])
  10. pprint(list(fuzzer.samples(
  11. idl_type='Table',
  12. options={
  13. 'DOMString': {
  14. 'min_codepoint': 97,
  15. 'max_codepoint': 122,
  16. 'include_categories': {},
  17. }
  18. }
  19. )))
  20. if __name__ == '__main__':
  21. main()

Output

  1. [[try {v_cd820bf385f14b2383dfb7f81a4f935b = 'anyfunc'} catch(e){},
  2. try {v_efa5137be7fe4063bf47252046aa0d74 = 2017893174} catch(e){},
  3. try {v_646b30b73c6c4238945f1a4390ce73c8 = 4237930728} catch(e){},
  4. try {v_39b62d49860248c5bcc5a904ac7bc277 = {element: 'v_cd820bf385f14b2383dfb7f81a4f935b', initial: 'v_efa5137be7fe4063bf47252046aa0d74', maximum: 'v_646b30b73c6c4238945f1a4390ce73c8'}} catch(e){},
  5. try {v_ba1287fff1984465ad2ec78abb6c5b3f = 3981072889} catch(e){},
  6. try {v_ccc9de6d2e64407bb78f1ca330563fb7 = new Table('v_39b62d49860248c5bcc5a904ac7bc277', 'v_ba1287fff1984465ad2ec78abb6c5b3f')} catch(e){}],
  7. [try {v_29ad83a7ef134d48bc10a2057721d811 = 'anyfunc'} catch(e){},
  8. try {v_fe5d92a6347b4799948eaf0e7f3901ae = 3273608333} catch(e){},
  9. try {v_8a274ed057464448a103c554bb0f4489 = 1287757149} catch(e){},
  10. try {v_1d7a983af8754a09adc7079bccca71df = {element: 'v_29ad83a7ef134d48bc10a2057721d811', initial: 'v_fe5d92a6347b4799948eaf0e7f3901ae', maximum: 'v_8a274ed057464448a103c554bb0f4489'}} catch(e){},
  11. try {v_08efc03de63a4ab8ae0f0a3010eaa7b9 = 3191963624} catch(e){},
  12. try {v_3436efc34ef3426bb05902a989cdde3c = new Table('v_1d7a983af8754a09adc7079bccca71df', 'v_08efc03de63a4ab8ae0f0a3010eaa7b9')} catch(e){}],
  13. [try {v_7eeb3f14281f4223beeb48d3e0739b4b = 'externref'} catch(e){},
  14. try {v_bf5605aa5293417a9fc90fc9d875fe4e = 3573454083} catch(e){},
  15. try {v_22df38f875364571abd808b0a8c81b73 = 3093703977} catch(e){},
  16. try {v_6158fc93b00b4dd8a0e9b56092ea32a5 = {element: 'v_7eeb3f14281f4223beeb48d3e0739b4b', initial: 'v_bf5605aa5293417a9fc90fc9d875fe4e', maximum: 'v_22df38f875364571abd808b0a8c81b73'}} catch(e){},
  17. try {v_d259852980f04de1a1915ac3ec9f5686 = 2563963223} catch(e){},
  18. try {v_88487080d56c4fa08630f5698f87bb70 = new Table('v_6158fc93b00b4dd8a0e9b56092ea32a5', 'v_d259852980f04de1a1915ac3ec9f5686')} catch(e){}]]

Contributing

Any help is welcome and appreciated.

License

idl2js is licensed under the terms of the Apache-2.0 License (see the file LICENSE).