Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [Titulo] : Creacion de un Server Builder con recursos
- [Lenguaje] : C#
- [Autor] : Doddy Hackman
- [Temario]
- -- =================--------
- 0x01 : Introduccion
- 0x02 : Creacion del builder
- 0x03 : Creacion del stub
- 0x04 : Probando el programa
- 0x05 : Builder Tools
- -- =================--------
- 0x01 : Introduccion
- En este manual les voy a enseñar como hacer un Server Builder en C# con recursos , en el manual anterior les enseñe como hacerlo mediante EOF , una mejor forma de hacer un server builder es usando recursos.
- Empecemos ...
- 0x02 : Creacion del builder
- Para crear el server builder tenemos que crear un nuevo proyecto en Visual Studio de esta manera si usan la version 2010 :
- "Archivo -> Nuevo -> Proyecto -> Elegimos Aplicacion de Windows Forms" y le damos en aceptar
- Como en la siguiente imagen :
- [img]http://doddyhackman.webcindario.com/images/builder_22_1.jpg[/img]
- Ahora tenemos que crear dos edit y un boton con el texto "Make Server" como en la siguiente imagen :
- [img]http://doddyhackman.webcindario.com/images/builder_22_2.jpg[/img]
- Despues deben cambiar el titulo del formulario a "Builder" y cambiarle el nombre por defecto de los edits de la siguiente forma :
- textBox1 -> ip
- textBox2 -> port
- Para empezar vamos al inicio del codigo del programa y agregamos el siguiente codigo para poder manejar recursos :
- [code]
- using System.CodeDom.Compiler;
- using Microsoft.CSharp;
- using System.IO;
- using System.Resources;
- [/code]
- Una vez hecho hacemos doble click en el boton y ponemos el siguiente codigo :
- [code]
- private void button1_Click(object sender, EventArgs e)
- {
- string linea = "-ip-"+ip.Text+"-ip-"+"-port-"+port.Text+"-port-"; // Establecemos la variable "linea" como los datos de la IP y el puerto
- System.Resources.ResourceWriter escribiendo = new System.Resources.ResourceWriter("configuration.resources"); // Empezamos a escribir el
- // recurso "configuration"
- escribiendo.AddResource("configuration",linea); // Agregamos el recurso "configuration" con los datos de la variable "linea"
- escribiendo.Close(); // Guarda los recursos y se cierra
- System.CodeDom.Compiler.CompilerParameters compilador = new System.CodeDom.Compiler.CompilerParameters(); // Iniciamos la instancia CompilerParameters
- compilador.GenerateExecutable = true; // Aclaramos que queremos que genere un ejecutable
- compilador.OutputAssembly = "stub.exe"; // Establecemos el nombre del ejecutable a generar
- compilador.ReferencedAssemblies.Add("System.dll"); // Agregamos el ensamblado System
- compilador.ReferencedAssemblies.Add("System.Windows.Forms.dll"); // Agregamos el ensamblado System.Windows.Forms
- compilador.EmbeddedResources.Add("configuration.resources"); // Agregamos los recursos que se van a incluir en el ejecutable resultante
- compilador.CompilerOptions += "/t:winexe"; // Establecemos los argumentos de la linea de comandos que usara el compilador
- System.CodeDom.Compiler.CompilerResults final = new Microsoft.CSharp.CSharpCodeProvider().CompileAssemblyFromSource(compilador, Properties.Resources.stub);
- // Compilamos el recurso
- if (File.Exists("configuration.resources")) // Si existe el archivo "configuration.resources" ...
- {
- System.IO.File.Delete("configuration.resources"); // Lo borramos
- }
- MessageBox.Show("Done"); // Mostramos por pantalla un mensaje para decir que el stub esta listo
- }
- [/code]
- El codigo les deberia ver algo asi :
- [img]http://doddyhackman.webcindario.com/images/builder_22_3.jpg[/img]
- Con eso ya tendriamos hecho el builder.
- 0x03 : Creacion del stub
- Para hacer el stub , tenemos que seguir en el mismo proyecto , entonces vamos a "Proyecto->Propiedades" y seleccionamos la pestaña de "Recursos" , les deberia aperecer esta ventana :
- [img]http://doddyhackman.webcindario.com/images/builder_22_4.jpg[/img]
- Ahora hacemos click en "Agregar recurso" y seleccionamos "Agregar nuevo archivo de texto" , entonces nos va a aparecer una nueva ventana y escriben "stub".
- Como en la siguiente imagen :
- [img]http://doddyhackman.webcindario.com/images/builder_22_5.jpg[/img]
- Una vez completado veran que pueden escribir en el stub.txt , tienen que poner el siguiente codigo :
- [code]
- using System;
- using System.Text;
- using System.Windows.Forms;
- using System.Resources;
- using System.Text.RegularExpressions;
- namespace stub
- {
- class Program
- {
- static void Main()
- {
- string ip = ""; // Declaramos la variable string "ip" que contendra la IP
- string port = ""; // Declaramos la variable string "port" que contendra el puerto
- ResourceManager leyendo_recurso = new ResourceManager("configuration", System.Reflection.Assembly.GetExecutingAssembly()); // Cargamos los datos
- // del recurso "configuration"
- string datos = leyendo_recurso.GetString("configuration"); // Leemos los datos del recurso "configuration"
- Match regex = Regex.Match(datos, "-ip-(.*?)-ip--port-(.*?)-port-", RegexOptions.IgnoreCase); // Usamos una expresion regular para buscar la IP
- // y el puerto
- if (regex.Success) // Si se encontro algo ...
- {
- ip = regex.Groups[1].Value; // Guardamos la IP encontrada en la variable "ip"
- port = regex.Groups[2].Value; // Guardamos el puerto encontrado en la variable "port"
- }
- MessageBox.Show("[+] IP : " + ip); // Mostramos la IP con un mensaje usando la variable "ip"
- MessageBox.Show("[+] Port : " + port); // Mostramos el puerto con un mensaje usando la variable "port"
- }
- }
- }
- [/code]
- Una imagen de como deberia quedar :
- [img]http://doddyhackman.webcindario.com/images/builder_22_6.jpg[/img]
- Con eso ya terminamos el stub.
- 0x04 : Probando el programa
- Una vez terminado el programa podremos probarlo , entonces cargamos el builder y pongan los datos que quieran , le dan al boton "Make Server" y despues cargan el stub para mostrar los datos cargados desde el builder.
- Les deberia que quedar algo asi :
- [img]http://doddyhackman.webcindario.com/images/builder_22_7.jpg[/img]
- [img]http://doddyhackman.webcindario.com/images/builder_22_8.jpg[/img]
- [img]http://doddyhackman.webcindario.com/images/builder_22_9.jpg[/img]
- [img]http://doddyhackman.webcindario.com/images/builder_22_10.jpg[/img]
- 0x05 : Builder Tools
- Como regalo les dejo una clase en C# que hice para aplicar el metodo EOF de una forma mas facil y segura (datos encriptados con XOR).
- El codigo viene con ejemplos de uso y tiene el siguiente codigo :
- [code]
- // Class Name : Builder Tools
- // Version : 0.1
- // (C) Doddy Hackman 2015
- //
- // Examples :
- //builder_tools tools = new builder_tools();
- //tools.escribir_eof("stub.exe","hola mundo de ***** [ip]morite[ip][port]sdasd[port]","key");
- //Console.Write(tools.leer_eof("stub.exe", "key"));
- //
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.IO;
- using System.Text.RegularExpressions;
- namespace builder
- {
- class builder_tools
- {
- public string xor_now(string linea, string key)
- {
- // Credits : Based on http://stackoverflow.com/questions/2532668/help-me-with-xor-encryption
- // Thanks to Daniel Earwicker
- var contenido = new StringBuilder();
- for (int i = 0; i < linea.Length; i++)
- {
- contenido.Append((char)((uint)linea[i] ^ (uint)key[i % key.Length]));
- }
- return contenido.ToString();
- }
- public bool escribir_eof(string archivo, string texto, string key)
- {
- string delimitador = "-0x646F646479206861636B6D616E-";
- FileStream abriendo = new FileStream(archivo, FileMode.Append);
- BinaryWriter seteando = new BinaryWriter(abriendo);
- seteando.Write(delimitador + xor_now(texto, key) + delimitador);
- seteando.Flush();
- seteando.Close();
- abriendo.Close();
- return true;
- }
- public string leer_eof(string archivo, string key)
- {
- StreamReader viendo = new StreamReader(archivo);
- string contenido = viendo.ReadToEnd();
- string rta = "";
- Match regex = Regex.Match(contenido, "-0x646F646479206861636B6D616E-(.*?)-0x646F646479206861636B6D616E-", RegexOptions.IgnoreCase);
- if (regex.Success)
- {
- rta = xor_now(regex.Groups[1].Value, key);
- }
- else
- {
- rta = "WTF!";
- }
- return rta;
- }
- }
- }
- // The End ?
- [/code]
- Eso seria todo.
- --========--
- The End ?
- --========--
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement