"<name>": [cgi_encode("Jane Doe"), cgi_encode("John Smith")], "<email>": [cgi_encode("*****@*****.**"), cgi_encode("*****@*****.**")], "<city>": ["Seattle", cgi_encode("New York")], "<zip>": ["<digit>" * 5], "<digit>": crange('0', '9') } if __name__ == "__main__": assert is_valid_grammar(ORDER_GRAMMAR) if __name__ == "__main__": syntax_diagram(ORDER_GRAMMAR) if __package__ is None or __package__ == "": from GrammarFuzzer import GrammarFuzzer else: from .GrammarFuzzer import GrammarFuzzer if __name__ == "__main__": order_fuzzer = GrammarFuzzer(ORDER_GRAMMAR) [order_fuzzer.fuzz() for i in range(5)] if __name__ == "__main__": HTML(webbrowser(urljoin(httpd_url, order_fuzzer.fuzz()))) if __name__ == "__main__": print(db.execute("SELECT * FROM orders").fetchall())
return hsh if __name__ == "__main__": gm = GrammarMiner() gm.tree_to_grammar(csv_dt[0].tree) def readable(grammar): def readable_rule(rule): return ''.join(rule) return {k: list(set(readable_rule(a) for a in grammar[k])) for k in grammar} if __name__ == "__main__": syntax_diagram(readable(gm.tree_to_grammar(csv_dt[0].tree))) import itertools class GrammarMiner(GrammarMiner): def add_tree(self, t): t_grammar = self.tree_to_grammar(t.tree) self.grammar = { key: self.grammar.get(key, []) + t_grammar.get(key, []) for key in itertools.chain(self.grammar.keys(), t_grammar.keys()) } if __name__ == "__main__": inventory_grammar = GrammarMiner() for dt in csv_dt:
from GrammarFuzzer import GrammarFuzzer, FasterGrammarFuzzer, display_tree, tree_to_string, dot_escape else: from .GrammarFuzzer import GrammarFuzzer, FasterGrammarFuzzer, display_tree, tree_to_string, dot_escape if __package__ is None or __package__ == "": from ExpectError import ExpectError else: from .ExpectError import ExpectError if __package__ is None or __package__ == "": from Timer import Timer else: from .Timer import Timer if __name__ == "__main__": syntax_diagram(CSV_GRAMMAR) if __name__ == "__main__": gf = GrammarFuzzer(CSV_GRAMMAR, min_nonterminals=4) trials = 1000 valid = [] time = 0 for i in range(trials): with Timer() as t: vehicle_info = gf.fuzz() try: process_vehicle(vehicle_info) valid.append(vehicle_info) except: pass time += t.elapsed_time()
"<special>": srange(". !"), "<email>": ["<letters>@<letters>"], "<letters>": ["<letter>", "<letters><letter>"], "<boolean>": ["True", "False"], # Use a fixed password in case we need to repeat it "<password>": ["abcABC.123"], "<hidden>": "<string>", }) if __name__ == "__main__": syntax_diagram(GUIGrammarMiner.GUI_GRAMMAR) class GUIGrammarMiner(GUIGrammarMiner): def new_state_symbol(self, grammar): return new_symbol(grammar, self.START_STATE) def mine_state_grammar(self, grammar={}, state_symbol=None): grammar = extend_grammar(self.GUI_GRAMMAR, grammar) if state_symbol is None: state_symbol = self.new_state_symbol(grammar) grammar[state_symbol] = [] alternatives = [] form = ""
'<statement>': ['<assignment>'], '<assignment>': ['<identifier>=<expr>'], '<identifier>': ['<word>'], '<word>': ['<alpha><word>', '<alpha>'], '<alpha>': list(string.ascii_letters), '<expr>': ['<term>+<expr>', '<term>-<expr>', '<term>'], '<term>': ['<factor>*<term>', '<factor>/<term>', '<factor>'], '<factor>': ['+<factor>', '-<factor>', '(<expr>)', '<identifier>', '<number>'], '<number>': ['<integer>.<integer>', '<integer>'], '<integer>': ['<digit><integer>', '<digit>'], '<digit>': crange('0', '9') } if __name__ == "__main__": syntax_diagram(VAR_GRAMMAR) if __name__ == "__main__": mystring = 'va=10;vb=20' def hl_predicate(_d, _n, symbol, _a): return symbol in {'<number>', '<identifier>'} if __package__ is None or __package__ == "": from Parser import PEGParser, highlight_node else: from .Parser import PEGParser, highlight_node if __package__ is None or __package__ == "":