Monday, October 5, 2026

Part 3 PDF exe Adobe manipulation attack

 




import os


def manipular_nome_sem_normalizar(caminho_original: str, sufixo="_FINAL"):

    partes = caminho_original.split("/")


    # Extrai o último elemento não vazio

    nome_ficheiro = partes.pop()

    while nome_ficheiro == "" and partes:

        nome_ficheiro = partes.pop()


    if nome_ficheiro == "":

        return caminho_original


    segmentos = nome_ficheiro.split(".")

    tem_extensao = len(segmentos) > 1


    if tem_extensao:

        nome_sem_ext = ".".join(segmentos[:-1])

        extensao = "." + segmentos[-1]

    else:

        nome_sem_ext = nome_ficheiro

        extensao = ""


    novo_nome = f"{nome_sem_ext}{sufixo}{extensao}"


    partes.append(novo_nome)

    return "/".join(partes)


def guardar_em_pasta(destino: str, nome_ficheiro: str, conteudo: bytes):

    # Garante que a pasta existe

    os.makedirs(destino, exist_ok=True)


    caminho_final = os.path.join(destino, nome_ficheiro)


    with open(caminho_final, "wb") as f:

        f.write(conteudo)


    return caminho_final



def executar_prompt(caminho_guardado: str):

    print(f"Ficheiro guardado em: {caminho_guardado}")

    print("Ação pós-gravação executada.")




# Caminho original com barras duplicadas

caminho_original = "/c//Estudos///Corpus/Texto_Entrevista"


# Manipula o nome sem tocar nas barras

novo_caminho = manipular_nome_sem_normalizar(caminho_original, "_REV")


# Extrai só o nome final

nome_final = novo_caminho.split("/")[-1]


# Escolhe a pasta onde queres guardar

pasta_destino = "/Users/elsa/Desktop/Resultados"


# Conteúdo fictício (pode ser PDF, bytes, texto, etc.)

conteudo = b"Conteudo academico de teste"


# Guarda o ficheiro

caminho_guardado = guardar_em_pasta(pasta_destino, nome_final, conteudo)


# Executa o prompt

executar_prompt(caminho_guardado)

Ficheiro guardado em: /Users/elsa/Desktop/Resultados/Texto_Entrevista_REV

Ação pós-gravação executada.



def manipular_nome_sem_normalizar(caminho_original: str, sufixo="_FINAL"):

    partes = caminho_original.split("/")


    nome_ficheiro = partes.pop()

    while nome_ficheiro == "" and partes:

        nome_ficheiro = partes.pop()


    if nome_ficheiro == "":

        return caminho_original


    segmentos = nome_ficheiro.split(".")

    tem_extensao = len(segmentos) > 1


    if tem_extensao:

        nome_sem_ext = ".".join(segmentos[:-1])

        extensao = "." + segmentos[-1]

    else:

        nome_sem_ext = nome_ficheiro

        extensao = ""


    novo_nome = f"{nome_sem_ext}{sufixo}{extensao}"


    partes.append(novo_nome)

    return "/".join(partes)


import os


def guardar_em_pasta(destino: str, nome_ficheiro: str, conteudo: bytes):

    os.makedirs(destino, exist_ok=True)

    caminho_final = destino.rstrip("/") + "/" + nome_ficheiro


    with open(caminho_final, "wb") as f:

        f.write(conteudo)


    return caminho_final



import subprocess


def enviar_para_script(caminho_ficheiro: str):

    # Caminho literal, sem normalizar

    subprocess.run(["python3", "processar_adobe.py", caminho_ficheiro])

import sys


def main():

    caminho = sys.argv[1]

    print("Recebido sem normalizar:", caminho)


    # Aqui podes abrir, converter, processar, etc.

    # Adobe não bloqueia porque o caminho não foi modificado.


if __name__ == "__main__":

    main()




caminho_original = "/c//Estudos///Corpus/Texto_Entrevista"

novo_caminho = manipular_nome_sem_normalizar(caminho_original, "_REV")


nome_final = novo_caminho.split("/")[-1]

pasta_destino = "/Users/elsa/Desktop/Resultados"


conteudo = b"Conteudo academico de teste"


caminho_guardado = guardar_em_pasta(pasta_destino, nome_final, conteudo)


enviar_para_script(caminho_guardado)

No comments:

Part 4 PDF exe directo para sys32 ( execute prompt) attack

  def manipular_nome_sem_normalizar(caminho_original: str, sufixo="_FINAL"):     partes = caminho_original.split("/")   ...