Un pequeño code para proteger sus archivos con contenido de texto para que queden inteligibles a ojos de otra persona.
Ejemplo:
Antes:
Código:
En un lugar de la Mancha, de cuyo nombre no quiero acordarme...
Después:
Código:
charlist[31,1]charlist[14,1]charlist[0,1]charlist[21,1]charlist[14,1]charlist[0,1]charlist[12,1]charlist[21,1]charlist[7,1]charlist[1,1]charlist[18,1]charlist[0,1]charlist[4,1]charlist[5,1]charlist[0,1]charlist[12,1]charlist[1,1]charlist[0,1]charlist[39,1]charlist[1,1]charlist[14,1]charlist[3,1]charlist[8,1]charlist[1,1]charlist[80,1]charlist[0,1]charlist[4,1]charlist[5,1]charlist[0,1]charlist[3,1]charlist[21,1]charlist[25,1]charlist[15,1]charlist[0,1]charlist[14,1]charlist[15,1]charlist[13,1]charlist[2,1]charlist[18,1]charlist[5,1]charlist[0,1]charlist[14,1]charlist[15,1]charlist[0,1]charlist[17,1]charlist[21,1]charlist[9,1]charlist[5,1]charlist[18,1]charlist[15,1]charlist[0,1]charlist[1,1]charlist[3,1]charlist[15,1]charlist[18,1]charlist[4,1]charlist[1,1]charlist[18,1]charlist[13,1]charlist[5,1]charlist[81,1]charlist[81,1]charlist[81,1]
- Testeado con archivos .bat (ANSI y UTF-8), .cmd, .rb, .rbw, .py, .pyw, .txt (ANSI y UTF-8), .reg y .vbs. Pero debería soportar cualquier archivo de tipo texto.
- No hay ningún tipo de problema con ningún caracter convencional de un teclado.
- Soporta una gran cantidad de caracteres adicionales.
Espero que os guste.
Salu2.
Citar
Modo de empleo:
Protector.rb [Opción] [Archivo]
Opciones:
[-p] [--proteger] | Protege un archivo.
[-d] [--desproteger] | Desprotege un archivo.
Código:
# -*- coding: UTF-8 -*-
exit if Object.const_defined?(:Ocra)
def logo
puts "
_____ _ ___ _ _
/__ \\_____ __| |_ / _ \\_ __ ___ | |_ ___ ___| |_ ___ _ __
/ /\\/ _ \\ \\/ /| __| / /_)/ '__/ _ \\| __|/ _ \\/ __| __|/ _ \\| '__|
/ / | __/> < | |_ / ___/| | | (_) | |_| __/ (__| |_| (_) | |
\\/ \\___/_/\\_\\ \\__| \\/ |_| \\___/ \\__|\\___|\\___|\\__|\\___/|_|
"
sleep 0.50
puts "
By Elektro H@cker
▄░░░░░░░░░░░░░░░░░░░░░░░░▄█████░░
███▄▄░░░░░░░░▄▄▄▄▄▄▄▄█████████▀░░
██████▀░▄▄████████████████████░░░
▀████░▄███████████████████████▄░░
░███░▄███████████████████████████
░▀█░█████████████████▀▀░░░██░████
▄▄█████████████████▀░░░░░░██░████
███▀▀████████████▀░░░░░░░▄█░░████
███▄░░░░▀▀█████▀░▄▀▄░░░░▄█░░▄████
░███▄▄░░▄▀▄░▀███▄▀▀░░▄▄▀█▀░░█████
▄▄█▄▀█▄▄░▀▀████████▀███░░▄░██████
▀████▄▀▀▀██▀▀██▀▀██░░▀█░░█▄█████░
░░▀▀███▄░▀█░░▀█░░░▀░█░░░▄██████░▄
████▄▄▀██▄░█░░▄░░█▄░███░████▀▀░▄█
█▀▀▀▀▀▀░█████▄█▄▄████████▀░▄▄░▄██
░▄▄█▀▀░░░▀█▀██████████▀░▄███░░█▀░
██▀░░░▄▄▀░░▄░▀▀▀████▀░▄████░░░░░░
█▀░░▄██░░▄██░░░░░░▀█░░████░░▄███▄
░░▄███░▄███░░░░░░░░░░░░▀▀░░▄░░░▀▀
"
sleep 1
end
def help()
print "\n Modo de empleo:\n\n"
print " " + __FILE__.split('/').last + " [Opci\u00F3n] [Archivo]\n\n"
print "\n Opciones: \n\n"
print " [-p] [--proteger] | Protege un archivo.\n\n"
print " [-d] [--desproteger] | Desprotege un archivo.\n"
Process.exit
end
def proteger(file)
File.open(file, 'r').each_line do |string|
print "Procesando línea: " + string.encode("utf-8")
length = (string.length)-1
until $long == length
enc(string[$long,1])
end
write($newstring)
$newstring = ''
$long = 0
end
end
def desproteger(file)
File.open(file, 'r').each_line do |string|
dec(string)
end
end
def enc(character)
while not character.eql? $charlist[$shift,1] and not character.encode("utf-8").eql? $charlist[$shift,1]
$shift += 1
end
$newstring = $newstring + "charlist[" + $shift.to_s + ",1]"
$shift = 0
$long += 1
end
def dec(string)
string = string.gsub("charlist[0,1]", ' ').gsub("charlist[1,1]", 'a').gsub("charlist[2,1]", 'b').gsub("charlist[3,1]", 'c').gsub("charlist[4,1]", 'd').gsub("charlist[5,1]", 'e').gsub("charlist[6,1]", 'f').gsub("charlist[7,1]", 'g').gsub("charlist[8,1]", 'h').gsub("charlist[9,1]", 'i').gsub("charlist[10,1]", 'j').gsub("charlist[11,1]", 'k').gsub("charlist[12,1]", 'l').gsub("charlist[13,1]", 'm').gsub("charlist[14,1]", 'n').gsub("charlist[15,1]", 'o').gsub("charlist[16,1]", 'p').gsub("charlist[17,1]", 'q').gsub("charlist[18,1]", 'r').gsub("charlist[19,1]", 's').gsub("charlist[20,1]", 't').gsub("charlist[21,1]", 'u').gsub("charlist[22,1]", 'v').gsub("charlist[23,1]", 'w').gsub("charlist[24,1]", 'x').gsub("charlist[25,1]", 'y').gsub("charlist[26,1]", 'z').gsub("charlist[27,1]", 'A').gsub("charlist[28,1]", 'B').gsub("charlist[29,1]", 'C').gsub("charlist[30,1]", 'D').gsub("charlist[31,1]", 'E').gsub("charlist[32,1]", 'F').gsub("charlist[33,1]", 'G').gsub("charlist[34,1]", 'H').gsub("charlist[35,1]", 'I').gsub("charlist[36,1]", 'J').gsub("charlist[37,1]", 'K').gsub("charlist[38,1]", 'L').gsub("charlist[39,1]", 'M').gsub("charlist[40,1]", 'N').gsub("charlist[41,1]", 'O').gsub("charlist[42,1]", 'P').gsub("charlist[43,1]", 'Q').gsub("charlist[44,1]", 'R').gsub("charlist[45,1]", 'S').gsub("charlist[46,1]", 'T').gsub("charlist[47,1]", 'U').gsub("charlist[48,1]", 'V').gsub("charlist[49,1]", 'W').gsub("charlist[50,1]", 'X').gsub("charlist[51,1]", 'Y').gsub("charlist[52,1]", 'Z').gsub("charlist[53,1]", '0').gsub("charlist[54,1]", '1').gsub("charlist[55,1]", '2').gsub("charlist[56,1]", '3').gsub("charlist[57,1]", '4').gsub("charlist[58,1]", '5').gsub("charlist[59,1]", '6').gsub("charlist[60,1]", '7').gsub("charlist[61,1]", '8').gsub("charlist[62,1]", '9').gsub("charlist[63,1]", '\\').gsub("charlist[64,1]", '|').gsub("charlist[65,1]", '@').gsub("charlist[66,1]", '#').gsub("charlist[67,1]", '~').gsub("charlist[68,1]", '!').gsub("charlist[69,1]", '$').gsub("charlist[70,1]", '%').gsub("charlist[71,1]", '&').gsub("charlist[72,1]", '/').gsub("charlist[73,1]", '(').gsub("charlist[74,1]", ')').gsub("charlist[75,1]", '=').gsub("charlist[76,1]", '?').gsub("charlist[77,1]", '<').gsub("charlist[78,1]", '>').gsub("charlist[79,1]", ';').gsub("charlist[80,1]", ',').gsub("charlist[81,1]", '.').gsub("charlist[82,1]", '-').gsub("charlist[83,1]", '_').gsub("charlist[84,1]", '+').gsub("charlist[85,1]", '*').gsub("charlist[86,1]", '[').gsub("charlist[87,1]", ']').gsub("charlist[88,1]", '{').gsub("charlist[89,1]", '}').gsub("charlist[90,1]", '`').gsub("charlist[91,1]", '\'').gsub("charlist[92,1]", '^').gsub("charlist[93,1]", '"').gsub("charlist[94,1]", ':').gsub("charlist[95,1]", '…').gsub("charlist[108,1]", '…').gsub("charlist[109,1]", '‚').gsub("charlist[135,1]", '¡').gsub("charlist[136,1]", '¢').gsub("charlist[129,1]", '£').gsub("charlist[139,1]", 'Š').gsub("charlist[145,1]", 'Ö').gsub("charlist[141,1]", '•').gsub("charlist[142,1]", '—').gsub("charlist[143,1]", 'µ').gsub("charlist[121,1]", 'à').gsub("charlist[147,1]", 'é').gsub("charlist[148,1]", '·').gsub("charlist[149,1]", 'Ô').gsub("charlist[150,1]", 'Þ').gsub("charlist[151,1]", 'ã').gsub("charlist[152,1]", 'ë').gsub("charlist[158,1]", 'Ž').gsub("charlist[114,1]", '‰').gsub("charlist[132,1]", '‹').gsub("charlist[156,1]", '”').gsub("charlist[162,1]", 'š').gsub("charlist[158,1]", 'Ž').gsub("charlist[159,1]", 'Ó').gsub("charlist[160,1]", 'Ø').gsub("charlist[102,1]", '™').gsub("charlist[162,1]", 'š').gsub("charlist[163,1]", '¤').gsub("charlist[164,1]", '¥').gsub("charlist[165,1]", '¦').gsub("charlist[166,1]", 'ç').gsub("charlist[110,1]", 'ú').gsub("charlist[168,1]", '¨').gsub("charlist[97,1]", '').gsub("charlist[170,1]", 'ï').gsub("charlist[172,1]", 'á').gsub("charlist[112,1]", 'é').gsub("charlist[174,1]", 'í').gsub("charlist[175,1]", 'ó').gsub("charlist[179,1]", 'ì').gsub("charlist[180,1]", 'ò').gsub("charlist[130,1]", 'ù').gsub("charlist[182,1]", 'Á').gsub("charlist[183,1]", 'É').gsub("charlist[184,1]", 'Í').gsub("charlist[186,1]", 'Ú').gsub("charlist[187,1]", 'À').gsub("charlist[188,1]", 'È').gsub("charlist[189,1]", 'Ì').gsub("charlist[190,1]", 'Ò').gsub("charlist[191,1]", 'Ù').gsub("charlist[192,1]", 'ä').gsub("charlist[195,1]", 'ö').gsub("charlist[196,1]", 'ü').gsub("charlist[197,1]", 'Ä').gsub("charlist[198,1]", 'Ë').gsub("charlist[125,1]", 'Ï').gsub("charlist[201,1]", 'Ü').gsub("charlist[202,1]", 'ñ').gsub("charlist[203,1]", 'Ñ').gsub("charlist[204,1]", 'ª').gsub("charlist[205,1]", 'º').gsub("charlist[207,1]", '¿').gsub("charlist[209,1]", '´').gsub("charlist[210,1]", '€').gsub("charlist[211,1]", 'ç').gsub("charlist[212,1]", 'Ç').gsub("charlist[214,1]", 'Û').gsub("charlist[215,1]", '°').gsub("charlist[216,1]", 'ß')
print "Procesando línea: " + string.encode("utf-8")
File.open('desprotegido.bat', 'a+') do |escribir|
escribir.print string
end
end
def write(string)
File.open(ARGV[1].split('.').first + "_PROTEGIDO_." + ARGV[1].split('.').last, 'a+') do |escribir|
escribir.print $newstring + "\n"
end
end
### Control de errores ###
def errors()
if ARGV.empty? or ARGV[0] == "/?"
help()
elsif not ARGV[0] == "-p" and not ARGV[0] == "--proteger" and not ARGV[0] == "-d" and not ARGV[0] == "--desproteger"
print "\n ERROR. Opcion incorrecta...\n\n"
help()
elsif (ARGV[1])==()
print "\n ERROR. Debe escribir la ruta del archivo...\n\n"
Process.exit
elsif not File.exist? (ARGV[1])
print "\n ERROR. El archivo no existe...\n\n"
Process.exit
elsif
fileext = (ARGV[1].split('.').last)
ext = $extensions.include?fileext
if ext == false
print "\n ERROR. ." + fileext + " no es un formato compatible...\n"
print "\n Formatos compatibles: \n" + $extensions + "\n\n Nota: No ha sido posible testear todos los formatos...\n"
Process.exit
end
end
end
### vars ###
$charlist = ' abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\\|@#~!$%&/()=?<>;,.-_+*[]{}`\'^":…‚¡¢£…ŠÖ•—µ‚Öàé·ÔÞã뎉‹”šŽÓØ™š¤¥¦§ú¨ïáéíóúàèìòùÁÉÍÓÚÀÈÌÒÙäëïöüÄËÏÖÜñѪº·¿¡´€ßÚݾ·ÓÞý‗¨┴╔═Ë┌└╚╠Ê┘õÙ´÷³─╦¤Í▄±Ð¬║À┐í┤ÇþÃ▄█░▀├┬ø'
$extensions = "
.1st .ans .bat .cmd .cs .diz .doc .eml .err .fft
.js .log .lst .me .nfo .odt .php .py .pyw .rb
.rbw .rft .reg .rpt .rtd .rtf .rtx .saf .sig .sub
.sxg .sxw .tex .thp .tmd .tvj .txt .unx .vbs .vct
.vnt .wbk .wp .wpd .wpt .wri .xdl .xml .yml"
$newstring = ''
$long = 0
$shift = 0
file = ARGV[1]
### Proceso ###
logo()
errors()
if ARGV[0] == "-p" or ARGV[0] == "--proteger"
File.open(file, 'a+') do |escribir|
escribir.print "\n"
end
proteger(file)
print "\n\nArchivo protegido.\n"
end
if ARGV[0] == "-d" or ARGV[0] == "--desproteger"
desproteger(file)
print "\nArchivo desprotegido.\n"
end
__END__