Exemple #1
0
async def detect_features(requester: Requester) -> List[Feature]:
    returner = []

    for feature in features:
        if callable(feature.tests):
            checks = [await feature.tests(requester)]
        else:
            checks = await asyncio.gather(
                *[requester.check(test) for test in feature.tests])

        returner.append((feature, all(checks)))

    return returner
Exemple #2
0
async def detect_payload(requester: Requester) -> List[Injection]:
    working = requester.target_parameter_value

    returner = []

    for injector in injectors:
        result_futures = [
            requester.check(test_payload.format(working=working))
            for (test_payload, expected) in injector.test_payloads
        ]

        results = await asyncio.gather(*result_futures)

        for idx, (test_payload, expected) in enumerate(injector.test_payloads):
            if results[idx] == expected:
                continue
            break
        else:
            returner.append(injector)

    return returner