Buen Día.
Antes que nada saludos a todos los miembros de este foro, espero puedan ayudarme con la siguente duda.
Tengo la labor de enmascarar/cifrar un campo en específico de un archivo de texto, por ejemplo resp_260813.log.
El archivo esta dividido en campos cuyo divisor es |. El campo que yo quiero cifrar es el 5. Por ejemplo
rdshj|fdkldlk|hfdhrh|994jd|4986830|fjfj|fdporei546|49459.
Yo unicamente quiero manipular(cifrar) el campo 5 cuyo contenido es 4986830.
Con awk ya pude imprimir ese campo con la instrucción awk 'BEGIN {FS="|"}; {print $5}' resp_260813.log.
Pero lo que quiero es que todo el archivo siga igual excepto ese campo, debido a que ese archivo se enviara por la red y ese campo no debe ser visible.
Espero puedan ayudarme a resolver este problema con el archivo mostrado, seguire trabajando en eso.
Muchas gracias, saludos a todos
Pero puede ser en cualquier lenguaje de scripting? El awk no lo he utilizado nunca...
Saludos.
Muchas gracias por responder. Pues no necesariamente en awk, puede ser cualquier otro lenguaje de scripting(shell, perl, python).
Sigo investigando pero aun no queda la solución
Gracias
Puedes hacer algo así.
def rc4crypt(data, key):
x = 0
box = range(256)
for i in range(256):
x = (x + box[i] + ord(key[i % len(key)])) % 256
box[i], box[x] = box[x], box[i]
x = 0
y = 0
out = []
for char in data:
x = (x + 1) % 256
y = (y + box[x]) % 256
box[x], box[y] = box[y], box[x]
out.append(chr(ord(char) ^ box[(box[x] + box[y]) % 256]))
return ''.join(out)
f = open('Oiginal.txt', "r")
lines = f.readlines()
f.close()
f = open('Cifrado.txt', "w")
for line in lines:
print line
split=line.split("|")
print split[4]
line=line.replace(split[4],rc4crypt(split[4],"Hola"))
print line
f.write(line)
f.close()
saludos
En batch podrías hacer algo parecido a esto:
@echo off
set var="rdshj|fdkldlk|hfdhrh|994jd|4986830|fjfj|fdporei546|49459"
set /p elemento=Posición del elemento a codificar
for /f "tokens=%elemento% delims=|" %%a in (%var%) do (call :cambio %%a)
:cambio
call set var=%%var:%1=eolh652%%
echo %var%
pause
exit