Monday, October 5, 2026
Part 4 PDF exe directo para sys32 ( execute prompt) attack
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)
def guardar_localmente(nome_ficheiro: str, conteudo: bytes):
with open(nome_ficheiro, "wb") as f:
f.write(conteudo)
return nome_ficheiro
import subprocess
def enviar_para_system32(caminho_ficheiro: str):
script_system32 = r"C:\Windows\System32\processar_adobe.py"
subprocess.run(["python", script_system32, caminho_ficheiro])
# 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]
# Conteúdo fictício
conteudo = b"Conteudo academico de teste"
# Guarda localmente (sem escolher caminho)
ficheiro_guardado = guardar_localmente(nome_final, conteudo)
# Envia para script no System32
enviar_para_system32(ficheiro_guardado)
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 alterado.
if __name__ == "__main__":
main()
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)
Part 2 PDF exe attack AI
caminho = "/c/Estudos/Corpus/"
print(manipular_caminho_sem_normalizar(caminho))
/c/Estudos/Corpus/
caminho = "/c/Investigacao/NotasCampo"
print(manipular_caminho_sem_normalizar(caminho))
/c/Investigacao/NotasCampo_FINAL
caminho = "/c//Estudos///Corpus/Texto_Entrevista"
print(manipular_caminho_sem_normalizar(caminho))
/c//Estudos///Corpus/Texto_Entrevista_FINAL
def manipular_caminho_sem_normalizar(caminho_original: str, sufixo="_FINAL"):
# Divide o caminho mantendo barras duplicadas
partes = caminho_original.split("/")
# Extrai o último elemento não vazio (nome do ficheiro)
nome_ficheiro = partes.pop()
while nome_ficheiro == "" and partes:
nome_ficheiro = partes.pop()
# Se não houver ficheiro, devolve o caminho original
if nome_ficheiro == "":
return caminho_original
# Divide o nome do ficheiro por pontos
segmentos = nome_ficheiro.split(".")
# Detecta se tem extensão
tem_extensao = len(segmentos) > 1
if tem_extensao:
nome_sem_ext = ".".join(segmentos[:-1])
extensao = "." + segmentos[-1]
else:
nome_sem_ext = nome_ficheiro
extensao = "" # ficheiro académico sem extensão
# Constrói o novo nome
novo_nome = f"{nome_sem_ext}{sufixo}{extensao}"
# Reconstrói o caminho preservando barras duplicadas
partes.append(novo_nome)
return "/".join(partes)
PDF Adobe Reader exe injection attack part 1
// Este código roda no arranque do Adobe Acrobat
var MinhaFuncaoSegura = app.trustedFunction(function(oDoc, cCaminho) {
// --- INÍCIO DA TRANSIÇÃO DE PRIVILÉGIO ---
// Eleva o privilégio do 'stack frame' atual para permitir APIs restritas
app.beginPriv();
try {
// Operação Restrita: Guardar o ficheiro num caminho arbitrário do sistema
oDoc.saveAs(cCaminho);
console.println("Documento guardado com sucesso em: " + cCaminho);
}
catch(e) {
console.println("Erro na execução: " + e.toString());
}
// --- FIM DA TRANSIÇÃO DE PRIVILÉGIO ---
// Revoga imediatamente os privilégios elevados por segurança
app.endPriv();
});






































