#!/usr/bin/env python3 """Tira os caminhos desta maquina de um objeto gerado pelo Odin (o compilador grava o caminho absoluto de cada arquivo-fonte nas strings de Source_Code_Location e de type info). Cada prefixo vira uma string do MESMO tamanho ("/////...//"), que continua sendo um caminho valido: as strings do Odin guardam o comprimento, entao nada mais muda no binario. scrub-paths.py = [...] """ import sys path = sys.argv[1] data = open(path, 'rb').read() for arg in sys.argv[2:]: prefix, name = arg.split('=', 1) prefix = prefix.rstrip('/') + '/' new = name.strip('/') + '/' if len(new) + 1 > len(prefix): sys.exit(f'nome longo demais para {prefix}') rep = ('/' * (len(prefix) - len(new)) + new).encode() old = prefix.encode() print(f'{data.count(old)} x {prefix}', file=sys.stderr) data = data.replace(old, rep) open(path, 'wb').write(data)