if __package__ is None or __package__ == "":
    from Grammars import CGI_GRAMMAR
else:
    from .Grammars import CGI_GRAMMAR

if __name__ == "__main__":
    cgi_fuzzer = GrammarFuzzer(CGI_GRAMMAR)

if __name__ == "__main__":
    trials = 100
    coverage = {}

    for i in range(trials):
        cgi_input = cgi_fuzzer.fuzz()
        with Coverage() as cov:
            cgi_decode(cgi_input)
        coverage[cgi_input] = cov.coverage()

if __name__ == "__main__":
    coverage_slice = [
        cgi_input for cgi_input in coverage
        if ('cgi_decode', 25) in coverage[cgi_input]
    ]

if __name__ == "__main__":
    print(coverage_slice)

if __name__ == "__main__":
    len(coverage_slice) / trials

if __name__ == "__main__":
예제 #2
0
if __name__ == "__main__":
    print('\n## Covering Code by Covering Grammars')

# ### CGI Grammars

if __name__ == "__main__":
    print('\n### CGI Grammars')

if __package__ is None or __package__ == "":
    from Coverage import Coverage, cgi_decode
else:
    from .Coverage import Coverage, cgi_decode

if __name__ == "__main__":
    with Coverage() as cov_max:
        cgi_decode('+')
        cgi_decode('%20')
        cgi_decode('abc')
        try:
            cgi_decode('%?a')
        except:
            pass

if __name__ == "__main__":
    f = GrammarCoverageFuzzer(CGI_GRAMMAR, max_nonterminals=2)
    coverages = {}

    trials = 100
    for trial in range(trials):
        f.reset_coverage()
        overall_cov = set()
예제 #3
0

if __name__ == "__main__":
    s = cgi_encode('Is "DOW30" down .24%?')
    s

if __name__ == "__main__":
    cgi_encode("<string>@<string>", "<>")

if __package__ is None or __package__ == "":
    from Coverage import cgi_decode  # minor dependency
else:
    from .Coverage import cgi_decode  # minor dependency

if __name__ == "__main__":
    cgi_decode(s)

if __package__ is None or __package__ == "":
    from Grammars import crange, is_valid_grammar, syntax_diagram
else:
    from .Grammars import crange, is_valid_grammar, syntax_diagram

ORDER_GRAMMAR = {
    "<start>": ["<order>"],
    "<order>":
    ["/order?item=<item>&name=<name>&email=<email>&city=<city>&zip=<zip>"],
    "<item>": ["tshirt", "drill", "lockset"],
    "<name>": [cgi_encode("Jane Doe"),
               cgi_encode("John Smith")],
    "<email>":
    [cgi_encode("*****@*****.**"),
예제 #4
0
    plt.title('Trigram Discovery Over Time')

# ## Estimating the Probability of Path Discovery

if __name__ == "__main__":
    print('\n## Estimating the Probability of Path Discovery')

if __package__ is None or __package__ == "":
    from Coverage import Coverage, cgi_decode
else:
    from .Coverage import Coverage, cgi_decode

if __name__ == "__main__":
    encoded = "Hello%2c+world%21"
    with Coverage() as cov:
        decoded = cgi_decode(encoded)

if __name__ == "__main__":
    decoded

if __name__ == "__main__":
    print(cov.coverage())

# ### Trace Coverage

if __name__ == "__main__":
    print('\n### Trace Coverage')

import pickle
import hashlib