elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


  Mostrar Mensajes
Páginas: 1 ... 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 [246] 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 ... 287
2451  Programación / Programación C/C++ / Re: Obtener Int de un EDIT y otros problemas. Windows Api. en: 13 Junio 2019, 23:48 pm
Te recomiendo que te tomas el tiempo que necesites para progresar a tu propio ritmo, despues de haber leido documentacion, tutoriales y haber intentado resolver un problema por tu cuenta es cuando deberias crear otro nuevo hilo.
Aunque no lo parezca me tirado unas 20 horas seguidas intentando resolverlo  :xD He probado con punteros de int, intentando hacer algoritmos, etc. Y no lo he consegido.
Me he leído 3 libros enteros de programación con windows api y también busqué sobre casts en varios libros como c++ Primer que es bastante extenso y detallado, y otros bastante grandes y no encontré nada.
En los libros de windows api apenas se usan los edit control, aolo se mencionan y se ponen un par de ejemplos. Lo que mas se usan son los messagebox, pop-ups y menus.

Sí he intentado resolver el problema. En el propio código tengo entre comentarios el intento de cast de string a int. Y explico el problema que tengo que no sé como añadir varias cifras al int. He intentado con reinterpret_cast, dinamic_cast, y no lo consigo.

Me gusta aprender rápido, y sé que si alguien sabe como hacerlo, con escribir 2 frases me puede resolver una busqueda de semanas. Por ese motivo precisamente estoy en el foro. Para que me ayuden y poder ayudar yo también para ahorrar mucho tiempo de busquedas a los usuarios.

Disculpa si intervengo más de lo que te gustaría en el foro. No es mi intención ser molesto o llamar la atencion en el foro creando preguntas sin sentido. Realmente no consigo resolver el problema, ni busco que nadie dedique su tiempo a escribirme código, hacerme el programa, etc.

Me esperaba respuestas del estilo:
En vez de usar GetWindowText() usa Getejemplo().
Para mostrar el string en el EDIT tienes que hacer X usando Y.

Nada más.

Muchas gracias por tu tiempo y por tus ayudas en otros hilos.
2452  Seguridad Informática / Hacking / Re: pentesting en: 13 Junio 2019, 22:06 pm
Coincido con todo lo dicho. Solo recalcar lo de los laboratorios. Sobre todo los que ya vienen creados y con buena documentación acerca de todas las vulnerabilidades que trae. Como explotarlas, como hacer fix, etc
Tienes security web dojo. Una máquina virtual para virtual box y vmware. Tiene buena documentacion e incluye servidores locales para que hagas denegaciones de servicio mediante xss y tienes documentación para aplicar los parches al código.

A parte hay un monton de webs "vulnerables" para aprender pentesting. Te vienen los retos etc.
Es difícil encontrar errores sin conocer las vulnerabilidades, ni entender el código.
Tendrás que aprender programación general y especifica. Para poder determinar que hace el codigo fuente aplicaciones creadas en lenguajes que no conoces. Es imposible conocerlos todos asique una buena base para deducir lo que se supono que hace cada linea, el objetivo de cada funcion, y lo que pasa en realidad es la mejor forma de encontrar fallos graves.

También los específicos de cada lenguaje y como están implementados.

Por ejemplo este mismo foro tiene un script (parser) para decidir que permite o que no permite en BBCODE.
Si no estuviese modificado, podrias  hacer cosas molestas en el post y sería ilegible  y molesto.

Hay muchas webs que usan todo por defecto, no utilizan filtros, etc. Por lo que podrías causar problemas de ese tipo o más graves en muchos sitios. Al ver el código completo e ir probando códigos en todas las tecnologias que use la web/servidor podrás encontrar muchos problemas que no se pueden detectar de ninguna otra forma.

Te puedo poner un ejemplo muy sencillo en este propio foro:
El parser del foro no filtra ciertos colores rgb, por lo que puedo pintar el texto de un color que apenas se ve.

COMO EN ESTE EJEMPLO                                                                                                                                                                       
En este caso no supone ningún peligro, pero podría poner un vínculo malicioso con el color exacto del foro explotando alguna vulnerabilidad en la url para borrar cuentas de usuarios que lo pinchen y los moderadores podrían no darse cuenta de donde surge al problema antes de que varios usuarios borrasen su cuenta sin querer y lo comunicasen.

A simple vista podría parecer un separador para organizar el texto mejor, pero si alguien lo pincha sin querer, podría borrarle la cuenta o cualquier cosa.

Si utilizas varios de estos "separadores" es probable que alguiem tarde o temprano le de. Un atacante ingenioso usará este tipo de trucos para pasar desapercibido.
Obviamente esto es bastante evidente, pero se podría mejorar mucho para ser indetectable y activarlo cuando el usuario pase el ratón por encima, etc. La misma tecnica es usada para disfrazar logs de servidores con el carriagereturn etc.
2453  Foros Generales / Noticias / Re: 8.500 universitarias buscan su 'sugar daddy': "No es prostitución, es dar un ... en: 13 Junio 2019, 21:22 pm
Hay que poner un honeypot para atraerla jejeje.
Sugar na na na na naa naaa, oooh honey honey, na na na na na na.
2454  Seguridad Informática / Seguridad / Re: bloque de aplicacion en: 13 Junio 2019, 21:02 pm
Usarías la versión gratuita para uso comercial o para algo ilegal.
2455  Programación / Programación C/C++ / Obtener Int de un EDIT y otros problemas. Windows Api. en: 13 Junio 2019, 20:46 pm
Hola, estoy haciendo un programa que va a tener un montón de opciones y cifrados distintos.

Primer problema: Tengo un control EDIT de una linea por el cual quiero obtener el input del usuario en una variable int. Para posteriormente hacer la llamada al cifrado. De momento tengo los numeros en un string.
Me gustaría obtener los números directamente en un int desde el EDIT o hacer un cast del string en el cual ya los tengo a un int.
El into lo quiero para saber el número de vueltas que el usuario quiere aplicarle al cifrado Cesar.

Segundo problema: No sé como mostrar el resultado del cifrado de uno de los EDIT que tengo para ello.
Quiero mostrar el contenido del string en el EDIT.

A parte de eso voy a cambiar el tamaño de todo cuando se le de a maximizar. Creo que es bastante sencillo metiendo dentro del swtich (msg) un case con maximizar y dentro todas las ventanas con nuevos ajustes (Copio y pego las actuales y les multiplico w, x, y, z por el mismo numero y debería quedar todo más o menos igual pero más grande. Tendría que cambiar el tamaño de ka fuente de todas la letras.

También quiero detectar el tamaño/resolución del escritorio para redimensionar y que quede lo mejor posible independientemente de la resolucion. Actualmente se ve pequeña la ventana porque hice la gui en 800x600. Podría guardar el tamaño del escritorio en pixeles y hacer operaciones con esas variables para ubicar las ventanas y determinar su tamaño.

Quiero añadir scrollbars a los EDIT grandes. Me imagino que tengo que crear los scrollbars como un elemento independiente y pasarle los handler de los EDIT que quiero que manejen? Nada más no?

La gui la cambiaré, sobre todo colores. Y al maximizar también mostrare opciones avanzadas que no se ven con la ventana normal.

También quiero añadir un menu desplegable con opción para diversos cifrados y que al poner el cursor encima salga una descripción de cada cifrado. No sé muy bien cual es el control adecuado ni como implementarlo.

Tener la opción de aplicar diversos cifrados a la vez, creando un perfil para el usuario con sus ajustes, su convinación de cifrados, etc. En principio lo haría con archivos .txt a menos que exista otra forma de gestionar estos perfiles en la Api. Crear, abrir, borrar, guardar
Por ejemplo un perfil podría ser: Rot13 + Base64 + Rot13.
Asi un usuario que solo utilice el programa para hacer esta convinación de cifrados, no tiene que ir uno por uno aplicándolos. Sería muy molesto si tienes una convinación de 20 cifrados tener que aplicarlos todos uno por uno. Y lo mismo a la hora de descifrarlos.
La idea es añadir estos perfiles nombrados por el usuario en la lista de cifrados disponibles.
Por ejemplo yo elijo Rot13 + Base64 + Rot13 y le llamo Cifrado Manolo.
Pues en la lista desplegable tendría para elegir:
Cifrado Manolo
Cesar
Interseccion
Rot13
Base64
...
No sé exactamente como hacer esto ni como suelen hacerlo los programas.

De momento lo que me preocupa son el primer problema y el segundo. El resto más o menos podré ir haciéndolo a base de prueba y error y buscando en google. Lo comento por si sabeis alguna manera de implementarlo de una forma correcta o si mi approach es equívoco.

El proyecto va a ser grande. Tengo una lista de 200 cifrados distintos que iré implementando mediante funciones a lo largo del tiempo.
Cualquier consejo o cifrado poco común que querais ver lo agradeceré mucho.
El programa va a ser código abierto para que quien quiera lo despedace, use las funciones, haga un programa comercial o lo que sea.

Esa es más o menos mi idea. Cualquier recomendación o crítica será bienvenida.

Código
  1. /*
  2. Proyecto compilado en:
  3. C++11.
  4. Code::Blocs 17.12
  5. Other Linker Settings:
  6. -lmingw32
  7. */
  8.  
  9. /*
  10. Por anhadir:
  11.  
  12. -Mostrar resultado del cifrado en hwndEdit2.
  13.  
  14. -Obtener numero de vueltas del cifrado Cesar en int. O hacer cast de string a int.
  15.  
  16. */
  17.  
  18.  
  19. /*
  20. Por anhadir
  21. Lista de comandos:
  22. -r Da la vuelta al texto.
  23. -f Guarda automaticamente la salida en un fichero y lo abre. El nombre es elegido en
  24. pantalla de bienvenida (Aun no implementada).
  25. */
  26.  
  27.  
  28. /*
  29. Lista de cifrados a incluir:
  30.  
  31. Cesar.
  32. string CifradoCesar(string Texto, int Vueltas);
  33.  
  34. Interseccion.
  35. string CifradoInterseccion(string Texto, int Vueltas, string Caracter);
  36.  
  37. etc.
  38. */
  39.  
  40.  
  41. #include <string>
  42. #include <iostream>
  43. #include <windows.h>
  44.  
  45.  
  46. using namespace std;
  47.  
  48. #define ID_EDIT 1
  49. #define ID_BUTTON 2
  50. #define ID_STATIC 3
  51.  
  52. std::string Texto_A_Cifrar = "";
  53. string Vueltas_A_Cifrar = "";
  54.  
  55. string CifradoCesar(string Texto, int Vueltas);
  56. string CifradoInterseccion(string Texto, int Vueltas, string Caracter); //Aun sin llamada
  57.  
  58. LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
  59.  
  60.  
  61.  
  62.  
  63. int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance,
  64. LPSTR lpCmdLine, int nCmdShow)
  65. {
  66.  
  67. MSG msg;
  68. WNDCLASSW wc = {0};
  69. wc.lpszClassName = L"Edit control";
  70. wc.hInstance = hInstance;
  71. wc.hbrBackground = GetSysColorBrush(COLOR_3DDKSHADOW);
  72. wc.lpfnWndProc = WndProc;
  73. wc.hCursor = LoadCursor(0, IDC_ARROW);
  74.  
  75. RegisterClassW(&wc);
  76. CreateWindowW(wc.lpszClassName, L"CIFRADO CESAR",
  77.  WS_OVERLAPPEDWINDOW | WS_VISIBLE,
  78.  250, 170, 430, 390, 0, 0 , hInstance, 0);
  79.  
  80. while (GetMessage(&msg, NULL, 0, 0))
  81. {
  82. TranslateMessage(&msg);
  83. DispatchMessage(&msg);
  84. }
  85.  
  86. return (int) msg.wParam;
  87.  
  88. }
  89.  
  90.  
  91. LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
  92. {
  93. static HWND hwndEdit;
  94. static HWND hwndEdit2;
  95. static HWND hwndEdit3;
  96. static HWND hwndEdit4;
  97. static HWND hwndButton;
  98. static HWND hwndStatic;
  99. static HWND hwndStatic2;
  100. static HWND hwndStatic3;
  101.  
  102.  
  103.  
  104. switch (msg)
  105. {
  106. case WM_CREATE:
  107. {
  108.    hwndStatic3 = CreateWindowW(L"Static", L"VUELTAS CIFRADO ---->", WS_CHILD | WS_VISIBLE,
  109. 11, 338, 154, 16, hwnd, (HMENU)ID_STATIC, NULL, NULL);
  110.  
  111. hwndEdit4 = CreateWindowW(L"Edit", L"", WS_CHILD | WS_VISIBLE | ES_NUMBER ,
  112. 167, 338, 154, 15, hwnd, (HMENU)ID_STATIC, NULL, NULL);
  113.  
  114.    hwndStatic2 = CreateWindowW(L"Static", L"CLAVE CIFRADO --------->", WS_CHILD | WS_VISIBLE,
  115. 11, 318, 154, 16, hwnd, (HMENU)ID_STATIC, NULL, NULL);
  116.  
  117. hwndEdit3 = CreateWindowW(L"Edit", L"", WS_CHILD | WS_VISIBLE |
  118.            ES_PASSWORD,
  119. 167, 318, 154, 15, hwnd, (HMENU)ID_STATIC, NULL, NULL);
  120.  
  121.    hwndEdit2 = CreateWindowW(L"Edit", L"Texto Cifrado.", WS_CHILD | WS_VISIBLE | WS_BORDER |
  122. ES_MULTILINE | ES_WANTRETURN | ES_AUTOVSCROLL |ES_READONLY,
  123. 10, 154, 404, 160, hwnd, (HMENU)ID_EDIT, NULL, NULL);
  124.  
  125. hwndEdit = CreateWindowW(L"Edit", L"Escribe aqui tu texto a cifrar.", WS_CHILD | WS_VISIBLE | WS_BORDER |
  126.            ES_MULTILINE | ES_WANTRETURN | ES_AUTOVSCROLL ,
  127. 10, 10, 404, 138, hwnd, (HMENU)ID_EDIT, NULL, NULL);
  128.  
  129. hwndButton = CreateWindowW(L"Button", L"ENTER", WS_VISIBLE | WS_CHILD,
  130. 333, 323, 80, 28, hwnd, (HMENU)ID_BUTTON, NULL, NULL);
  131.  
  132.            hwndStatic = CreateWindowW(L"Static", NULL, WS_VISIBLE | WS_CHILD,
  133. 11, 150, 402, 3, hwnd, (HMENU)ID_STATIC, NULL, NULL);
  134. } break;
  135.  
  136.  
  137. case WM_COMMAND:
  138. {
  139. if (HIWORD(wParam) == BN_CLICKED)
  140. {
  141. int VueltasEnInt = 0; //Vacia para siguientes llamadas.
  142. int len = GetWindowTextLengthW(hwndEdit) + 1; //Longitud de texto a cifrar + null terminator.
  143. wchar_t text[len]; //Array de chars unicode con la longitud del texto a cifrar.
  144.  
  145. GetWindowTextW(hwndEdit, text, len); //Obtener el texto en array.
  146. //No funciona.  GetWindowTextW(hwndEdit4, VueltasEnInt);//Obtener int.
  147.  
  148. Texto_A_Cifrar.clear(); //Vacia el string antes de ser usado.
  149.  
  150. for (int i = 0; i < len; ++i)
  151. {
  152. Texto_A_Cifrar += static_cast<char>(text[i]); //Llena el string con chars.
  153. }
  154.  
  155. /*
  156. IGNORAR, Esto es solo un ejemplo para que me acuerda de hacerlo.
  157.  
  158. Usar find para buscar comandos despues de un guion en el texto introducido.
  159. Guardar el comando en un char. Ejemplo:
  160. char ReverseStr = '0';
  161. char FileStr = '0';
  162. Siendo el texto a cifrar "-r-fTextoDeEjemplo" ReverseStr = 'r';
  163.  
  164. if (Reverse != '0')
  165. {
  166. Dar la vuelta a Texto_A_Cifrar;
  167. Guardar en Texto_A_Cifrar;
  168. }
  169.  
  170. if (File != '0')
  171. {
  172. Pedir nombre de archivo de texto;
  173. Guardar datos del cifrado en archivo de texto;
  174. }
  175.  
  176. etc.
  177. */
  178.  
  179. //Eliminar null terminator de string para cifrarlo:
  180. unsigned int TamanhoStr = Texto_A_Cifrar.length();
  181. string Texto_Cifrado = "";
  182. Texto_Cifrado.append(Texto_A_Cifrar, 0, TamanhoStr-1);
  183.  
  184.  
  185.  
  186. /*
  187. Intento de cast de cada char a int.
  188. No funciona porque suma los int.
  189. Por ejemplo si el usuario escribe en el editbox de vueltas:
  190. 152
  191. En vez de dar 152 vueltas al texto, se daran 1 + 5 + 2.
  192. 8 Vueltas. No se como solucionarlo.
  193.  
  194. for(auto iter = VueltasEnStr.begin(); iter != VueltasEnStr.end(); ++iter)
  195. {
  196. if (*iter > 48)
  197. {
  198.  
  199. cout << "Contenido iter:" << *iter << endl;
  200. VueltasEnInt += (static_cast<int>(*iter) -48) );
  201. cout << "Vuelta en int:" << VueltasEnInt << endl;
  202. }
  203.  
  204. }
  205. */
  206.  
  207.  
  208. //Aplicar cifrado Cesar. Falta obtener vueltas.
  209. //Asi sera la llamada: Texto_Cifrado = CifradoCesar(Texto_Cifrado,VueltasEnInt);
  210. Texto_Cifrado = CifradoCesar(Texto_Cifrado,VueltasEnInt); //LLamada de prueba:
  211. cout << Texto_Cifrado << endl; //Provisional para debug por consola
  212. cout << VueltasEnInt << endl; //Provisional para debug por consola
  213.  
  214.  
  215.  
  216. /*Sin implementar. Muestra el resultado en Ventana con hwndEdit2
  217. No se hacerlo. Se cambiarle el titulo a la ventana, pero no se cambiar
  218. el contenido del EDIT.
  219. Necesito cambiar L"Texto Cifrado." por el contenido de Texto_Cifrado*/
  220.  
  221. }
  222. } break;
  223.  
  224. case WM_DESTROY:
  225. {
  226. PostQuitMessage(0);
  227. break;
  228. }
  229. }
  230. return DefWindowProcW(hwnd, msg, wParam, lParam);
  231. }
  232.  
  233. //Cesar
  234. string CifradoCesar(string Texto, int vueltas)
  235. {
  236. string TextoSalida = "";
  237. for(auto iter = Texto.begin(); iter != Texto.end(); ++iter)
  238. {
  239. TextoSalida += (*iter + vueltas);
  240. }
  241. return TextoSalida;
  242. }
  243.  
  244.  
  245. //Interseccion
  246. string CifradoInterseccion(string Texto, int Vueltas, string Caracter)
  247. {
  248.  
  249. string Texto2;
  250.  
  251. for (int i = 0; i < Texto.size(); ++i)
  252. {
  253.  
  254. Texto2 += Texto[i];
  255.  
  256. for (int i = 0; i < Vueltas; ++i)
  257. {
  258. Texto2.append(Caracter);
  259. }
  260. }
  261.  
  262. return Texto2;
  263. }
  264.  
2456  Seguridad Informática / Hacking / Re: Como se oculta un atacante en: 13 Junio 2019, 19:32 pm
Me refiero a que si usas una placa base de Asus, solo Asus sabe que chips tienen. Podrían ocultar algo. Esto sobretodo se hace en china, donde los individuos son más controlados y censurados que en democracias modernas. Lo mismo con los drivers. Cuando te bajas un driver para tu tarjeta de sonido, quien te asegura que yo no accedí 5 minutos antes que tú para cambiar el dirver por uno que es igual, pero solo le añadí algo al código.
Tu te lo bajas y tan contento. Y aunque la empresa se de cuenta, ya no tiene solución el problema, tu ya estás infectado.

Por eso digo, que nunca puedes estar seguro al 100% porque ningún individuo puede controlarlo absolutamente todo. Es más fácil controlar a los que te buscan que todo el hardware y software que usas para hacer click en una web por internet.
2457  Programación / Programación C/C++ / Re: En que cabecera encuentro los #define ID_EJEMPLO de Windows.h? en: 13 Junio 2019, 19:19 pm
Sí, ya vi que lo que preguntaba no tenía mucho sentido. Disculpas. Ya encontré lo que buscaba acerca de eso y avance un poco el programa.
Prepararé el nuevo código para subirlo ya que me surjen varios problemas.

Lo que me comentas de los botones ya lo sabía, pero no conocia el control static que era el que iba a usar en lugar del button.

Uilizo los diversos handlers para trabajar con las ventanas. No creo que necesite diferenciar los controles quw eatoy usando de momento. Ya lo pondré todo correcto. Muchas gracias!

En el nuevo código entre otras cosas tengo problemas para hacer un cast de un string que sé que solo tiene numeros a un int. U obtener directamente los numeros introducidos en el control edit como ints en vez de como texto. En un rato subo el código en un nuevo hilo, ya que los problemas son distintos.
2458  Foros Generales / Noticias / Re: Llega el primer monitor IPS gaming de 1 ms: ya no hay razones para comprar ... en: 12 Junio 2019, 17:27 pm
Qué tocho O.o vaya avance... Aún le quedan hasta los 0'5ms! A saber lo que cuestan. No lo quiero ni mirar  :-X
2459  Sistemas Operativos / GNU/Linux / Re: VPN en: 12 Junio 2019, 17:22 pm
Pues tiene pinta de ser lo que te dije tras mirarme todo el código  :xD

Error con el hostname.
Me parece a mi que confundes hostname con domainname.
El hostname es el nombre del ordenador.

Independientemente del nombre que le tengas a tu ordenador, utiliza localhost como hostname.

Ese siempre hace referencia a tu equipo.

A ver si ahora funciona o hay que seguir solucionando problemas.
2460  Sistemas Operativos / GNU/Linux / Re: NO TOMA PLACA DE WIFI EN LINUX VIRTUAL BOX en: 12 Junio 2019, 17:07 pm
Sí que se puede hacer. No leíste lo que puse?  :xD

Existen imagenes propias de Kali Linux para Vmware. Descárgate una de esas. O comprueba lo que te puse y busca más info en google con los términos aircrack virtualbox kali
Páginas: 1 ... 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 [246] 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 ... 287
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines