def response(flow: HTTPFlow) -> None:
    if is_metadata(flow):
        ctx.log.info(f"Deleting a signature...")
    else:
        ctx.log.debug("skipping non-metadata response...")
        return

    try:
        meta = Metadata.from_flow(flow)
        del_sig = meta.signatures.random()
        ctx.log.debug(f"deleting sig with keyid: {del_sig.keyid}")
        meta.signatures = meta.signatures.remove_key(del_sig.keyid)

        flow.response.headers["x-mitm-flow"] = "delete_signature"
        flow.response.content = meta.to_json().encode("UTF-8")
    except Exception as e:
        ctx.log.error(f"Processing error: {e}")
        ctx.log.debug(e.__traceback__)
Exemplo n.º 2
0
def response(flow: HTTPFlow) -> None:
    if is_metadata(flow):
        ctx.log.info(f"Randomize the signed version...")
    else:
        ctx.log.debug("skipping non-metadata response...")
        return

    try:
        meta = Metadata.from_flow(flow)
        new_version = randrange(sys.maxsize)
        ctx.log.debug(
            f"replacing metadata version {meta.version} with {new_version}")
        meta.version = new_version

        flow.response.headers["x-mitm-flow"] = "randomize_version"
        flow.response.content = meta.to_json().encode("UTF-8")
    except Exception as e:
        ctx.log.error(f"Processing error: {e}")
        ctx.log.debug(e.__traceback__)
Exemplo n.º 3
0
def response(flow: HTTPFlow) -> None:
    if is_metadata(flow):
        ctx.log.info(f"Randomizing a signature...")
    else:
        ctx.log.debug("skipping non-metadata response...")
        return

    try:
        meta = Metadata.from_flow(flow)
        old_sig = meta.signatures.random()
        new_sig = old_sig.randomize_sig()
        ctx.log.debug(f"replacing keyid {old_sig.keyid} with {new_sig}.keyid")
        meta.signatures = meta.signatures.replace_key(old_sig.keyid, new_sig)

        flow.response.headers["x-mitm-flow"] = "randomize_signature"
        flow.response.content = meta.to_json().encode("UTF-8")
    except Exception as e:
        ctx.log.error(f"Processing error: {e}")
        ctx.log.debug(e.__traceback__)
Exemplo n.º 4
0
def response(flow: HTTPFlow) -> None:
    if is_metadata(flow):
        ctx.log.info(f"Replacing a signature with one from another key...")
    else:
        ctx.log.debug("skipping non-metadata response...")
        return

    try:
        meta = Metadata.from_flow(flow)
        rsa = Rsa.from_files(PUB_KEY, PRIV_KEY)

        sigs = meta.signatures
        old_sig = sigs.random()
        ctx.log.debug(f"deleting sig with keyid: {old_sig.keyid}")
        new_sig = rsa.sign(meta.canonical_signed().encode("UTF-8"))
        ctx.log.debug(f"adding sig with keyid: {new_sig.keyid}")
        meta.signatures = sigs.replace_key(old_sig.keyid, new_sig)

        flow.response.headers["x-mitm-flow"] = "new_signature"
        flow.response.content = meta.to_json().encode("UTF-8")
    except Exception as e:
        ctx.log.error(f"Processing error: {e}")
        ctx.log.debug(e.__traceback__)
def response(flow: HTTPFlow) -> None:
    if is_metadata(flow):
        ctx.log.debug("skipping metadata response...")
    else:
        ctx.log.debug("skipping non-metadata response...")