Advertisement
Doddy

[C#] Creacion de un Server Builder con Recursos

Mar 10th, 2015
328
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.68 KB | None | 0 0
  1. [Titulo] : Creacion de un Server Builder con recursos
  2. [Lenguaje] : C#
  3. [Autor] : Doddy Hackman
  4.  
  5. [Temario]
  6.  
  7. -- =================--------
  8.  
  9. 0x01 : Introduccion
  10. 0x02 : Creacion del builder
  11. 0x03 : Creacion del stub
  12. 0x04 : Probando el programa
  13. 0x05 : Builder Tools
  14.  
  15. -- =================--------
  16.  
  17. 0x01 : Introduccion
  18.  
  19. 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.
  20.  
  21. Empecemos ...
  22.  
  23. 0x02 : Creacion del builder
  24.  
  25. Para crear el server builder tenemos que crear un nuevo proyecto en Visual Studio de esta manera si usan la version 2010 :
  26.  
  27. "Archivo -> Nuevo -> Proyecto -> Elegimos Aplicacion de Windows Forms" y le damos en aceptar
  28.  
  29. Como en la siguiente imagen :
  30.  
  31. [img]http://doddyhackman.webcindario.com/images/builder_22_1.jpg[/img]
  32.  
  33. Ahora tenemos que crear dos edit y un boton con el texto "Make Server" como en la siguiente imagen :
  34.  
  35. [img]http://doddyhackman.webcindario.com/images/builder_22_2.jpg[/img]
  36.  
  37. Despues deben cambiar el titulo del formulario a "Builder" y cambiarle el nombre por defecto de los edits de la siguiente forma :
  38.  
  39. textBox1 -> ip
  40. textBox2 -> port
  41.  
  42. Para empezar vamos al inicio del codigo del programa y agregamos el siguiente codigo para poder manejar recursos :
  43.  
  44. [code]
  45. using System.CodeDom.Compiler;
  46. using Microsoft.CSharp;
  47. using System.IO;
  48. using System.Resources;
  49. [/code]
  50.  
  51. Una vez hecho hacemos doble click en el boton y ponemos el siguiente codigo :
  52.  
  53. [code]
  54. private void button1_Click(object sender, EventArgs e)
  55. {
  56. string linea = "-ip-"+ip.Text+"-ip-"+"-port-"+port.Text+"-port-"; // Establecemos la variable "linea" como los datos de la IP y el puerto
  57.  
  58. System.Resources.ResourceWriter escribiendo = new System.Resources.ResourceWriter("configuration.resources"); // Empezamos a escribir el
  59. // recurso "configuration"
  60.  
  61. escribiendo.AddResource("configuration",linea); // Agregamos el recurso "configuration" con los datos de la variable "linea"
  62. escribiendo.Close(); // Guarda los recursos y se cierra
  63.  
  64. System.CodeDom.Compiler.CompilerParameters compilador = new System.CodeDom.Compiler.CompilerParameters(); // Iniciamos la instancia CompilerParameters
  65.  
  66. compilador.GenerateExecutable = true; // Aclaramos que queremos que genere un ejecutable
  67. compilador.OutputAssembly = "stub.exe"; // Establecemos el nombre del ejecutable a generar
  68. compilador.ReferencedAssemblies.Add("System.dll"); // Agregamos el ensamblado System
  69. compilador.ReferencedAssemblies.Add("System.Windows.Forms.dll"); // Agregamos el ensamblado System.Windows.Forms
  70. compilador.EmbeddedResources.Add("configuration.resources"); // Agregamos los recursos que se van a incluir en el ejecutable resultante
  71. compilador.CompilerOptions += "/t:winexe"; // Establecemos los argumentos de la linea de comandos que usara el compilador
  72.  
  73. System.CodeDom.Compiler.CompilerResults final = new Microsoft.CSharp.CSharpCodeProvider().CompileAssemblyFromSource(compilador, Properties.Resources.stub);
  74.  
  75. // Compilamos el recurso
  76.  
  77. if (File.Exists("configuration.resources")) // Si existe el archivo "configuration.resources" ...
  78. {
  79. System.IO.File.Delete("configuration.resources"); // Lo borramos
  80. }
  81. MessageBox.Show("Done"); // Mostramos por pantalla un mensaje para decir que el stub esta listo
  82. }
  83. [/code]
  84.  
  85. El codigo les deberia ver algo asi :
  86.  
  87. [img]http://doddyhackman.webcindario.com/images/builder_22_3.jpg[/img]
  88.  
  89. Con eso ya tendriamos hecho el builder.
  90.  
  91. 0x03 : Creacion del stub
  92.  
  93. 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 :
  94.  
  95. [img]http://doddyhackman.webcindario.com/images/builder_22_4.jpg[/img]
  96.  
  97. Ahora hacemos click en "Agregar recurso" y seleccionamos "Agregar nuevo archivo de texto" , entonces nos va a aparecer una nueva ventana y escriben "stub".
  98.  
  99. Como en la siguiente imagen :
  100.  
  101. [img]http://doddyhackman.webcindario.com/images/builder_22_5.jpg[/img]
  102.  
  103. Una vez completado veran que pueden escribir en el stub.txt , tienen que poner el siguiente codigo :
  104.  
  105. [code]
  106. using System;
  107. using System.Text;
  108. using System.Windows.Forms;
  109. using System.Resources;
  110. using System.Text.RegularExpressions;
  111.  
  112. namespace stub
  113. {
  114. class Program
  115. {
  116. static void Main()
  117. {
  118.  
  119. string ip = ""; // Declaramos la variable string "ip" que contendra la IP
  120. string port = ""; // Declaramos la variable string "port" que contendra el puerto
  121.  
  122. ResourceManager leyendo_recurso = new ResourceManager("configuration", System.Reflection.Assembly.GetExecutingAssembly()); // Cargamos los datos
  123. // del recurso "configuration"
  124.  
  125. string datos = leyendo_recurso.GetString("configuration"); // Leemos los datos del recurso "configuration"
  126.  
  127. Match regex = Regex.Match(datos, "-ip-(.*?)-ip--port-(.*?)-port-", RegexOptions.IgnoreCase); // Usamos una expresion regular para buscar la IP
  128. // y el puerto
  129. if (regex.Success) // Si se encontro algo ...
  130. {
  131. ip = regex.Groups[1].Value; // Guardamos la IP encontrada en la variable "ip"
  132. port = regex.Groups[2].Value; // Guardamos el puerto encontrado en la variable "port"
  133. }
  134.  
  135. MessageBox.Show("[+] IP : " + ip); // Mostramos la IP con un mensaje usando la variable "ip"
  136. MessageBox.Show("[+] Port : " + port); // Mostramos el puerto con un mensaje usando la variable "port"
  137.  
  138. }
  139. }
  140. }
  141. [/code]
  142.  
  143. Una imagen de como deberia quedar :
  144.  
  145. [img]http://doddyhackman.webcindario.com/images/builder_22_6.jpg[/img]
  146.  
  147. Con eso ya terminamos el stub.
  148.  
  149. 0x04 : Probando el programa
  150.  
  151. 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.
  152.  
  153. Les deberia que quedar algo asi :
  154.  
  155. [img]http://doddyhackman.webcindario.com/images/builder_22_7.jpg[/img]
  156.  
  157. [img]http://doddyhackman.webcindario.com/images/builder_22_8.jpg[/img]
  158.  
  159. [img]http://doddyhackman.webcindario.com/images/builder_22_9.jpg[/img]
  160.  
  161. [img]http://doddyhackman.webcindario.com/images/builder_22_10.jpg[/img]
  162.  
  163. 0x05 : Builder Tools
  164.  
  165. 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).
  166.  
  167. El codigo viene con ejemplos de uso y tiene el siguiente codigo :
  168.  
  169. [code]
  170. // Class Name : Builder Tools
  171. // Version : 0.1
  172. // (C) Doddy Hackman 2015
  173. //
  174. // Examples :
  175. //builder_tools tools = new builder_tools();
  176. //tools.escribir_eof("stub.exe","hola mundo de ***** [ip]morite[ip][port]sdasd[port]","key");
  177. //Console.Write(tools.leer_eof("stub.exe", "key"));
  178. //
  179.  
  180. using System;
  181. using System.Collections.Generic;
  182. using System.Text;
  183.  
  184. using System.IO;
  185. using System.Text.RegularExpressions;
  186.  
  187. namespace builder
  188. {
  189. class builder_tools
  190. {
  191. public string xor_now(string linea, string key)
  192. {
  193. // Credits : Based on http://stackoverflow.com/questions/2532668/help-me-with-xor-encryption
  194. // Thanks to Daniel Earwicker
  195. var contenido = new StringBuilder();
  196. for (int i = 0; i < linea.Length; i++)
  197. {
  198. contenido.Append((char)((uint)linea[i] ^ (uint)key[i % key.Length]));
  199. }
  200. return contenido.ToString();
  201. }
  202.  
  203. public bool escribir_eof(string archivo, string texto, string key)
  204. {
  205. string delimitador = "-0x646F646479206861636B6D616E-";
  206.  
  207. FileStream abriendo = new FileStream(archivo, FileMode.Append);
  208. BinaryWriter seteando = new BinaryWriter(abriendo);
  209. seteando.Write(delimitador + xor_now(texto, key) + delimitador);
  210. seteando.Flush();
  211. seteando.Close();
  212. abriendo.Close();
  213.  
  214. return true;
  215. }
  216.  
  217. public string leer_eof(string archivo, string key)
  218. {
  219. StreamReader viendo = new StreamReader(archivo);
  220.  
  221. string contenido = viendo.ReadToEnd();
  222. string rta = "";
  223.  
  224. Match regex = Regex.Match(contenido, "-0x646F646479206861636B6D616E-(.*?)-0x646F646479206861636B6D616E-", RegexOptions.IgnoreCase);
  225.  
  226. if (regex.Success)
  227. {
  228. rta = xor_now(regex.Groups[1].Value, key);
  229. }
  230. else
  231. {
  232. rta = "WTF!";
  233. }
  234.  
  235. return rta;
  236. }
  237. }
  238. }
  239.  
  240. // The End ?
  241. [/code]
  242.  
  243. Eso seria todo.
  244.  
  245. --========--
  246. The End ?
  247. --========--
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement