Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Eleкtro en 23 Marzo 2012, 21:06 pm



Título: [Ruby] [APORTE] Text Protector
Publicado por: Eleкtro en 23 Marzo 2012, 21:06 pm
(http://img17.imageshack.us/img17/4083/prtscrcaptureh.jpg)


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__



Título: Re: [Ruby] [APORTE] Text Protector
Publicado por: FranciskoAsdf en 3 Abril 2012, 15:59 pm
Tremendo Aporte :DDD