예제 #1
0
    "<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())
예제 #2
0
        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:
예제 #3
0
    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()
예제 #4
0
        
        "<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 = ""
예제 #5
0
    '<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__ == "":