Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - @XSStringManolo

#2401
Mensajería / Re: duda facebook
14 Junio 2019, 05:13 AM
No uso facebook asique lo de salir ni idea de dónde está. Abrá un cerrar session por algún sitio. Si no lo encuentras borra las cookies en los ajustes del navegador.

Lo del video de foto de perfil leí por el foro que se usa un gift.
#2402
Ya conocía el curso, gracias.

Me cambié precisamente a Windows api por la documentación que hay.
Quería hacer guis con SDL2 y era imposible siquiera encontrar una calculadora hecha con SDL xD
Perdí muchas semanas para nada(ak menos otras cosas que veia como difíciles ahora me parecen un paseo...). El render ni siquiera es multiplataforma. Si hago render por hardware no funciona en mi hardware, si hago render por software no funciona en mi sistema. Entonces lo de multiplataforma... Ningún documento para hacer guis, solo librerías externas, etc.

Siempre me encuentro problemas con todo y nada me funciona a la primera por eso me saturo y pido ayuda. Por ejemplo ahora tengo:
unsigned int VueltasEnInt;
VueltasEnInt = GetDlgItemInt(hwndEdit4, ID_STATIC2,NULL, false);
Tanto el handler como el ID están puestos en la ventana que tiene el EDIT.

Y siempre me devuelve 0. Estoy probando a meterle un puntero a bool, y todo lo que pone en la documentación para encontrar cual es el problema.

Así me tiro horas para hacer funcionar funciones que en teoría tienen un funcionamiento sencillo.

Edit: Use GetLastError(); y me da error 14210. Ando buscando a ver si eso me ayuda en algo xD

Edit2: Era 1420 Control_ID_not_found.
Lo tengo definido y lo uso solo para ese EDIT. A seguir buscando xD

Edit3: Despues de 1hora y media encontré el problema xD. Tenía que pasarle el handler de la ventana principal y no el handler del EDIT control.

VueltasEnInt = GetDlgItemInt(hwnd, ID_STATIC2,NULL, false);

Por fin. Problemas solucionados.
#2403
La mayoría que me he encontrado están hechos en C/C++ o Python.

En C++ hay mucho malware en general y en Python mucho scanner y herramientas de pentesting, etc.

Por poder, se puede hacer en muchos lenguajes. He visto varios muy muy complejos en Lua.
ASM también es necesario para hacer shellcodes.
#2404
Cita de: jmpesp en 14 Junio 2019, 01:10 AM
TL;DR

Deberias tratar de ser mas concreto acerca de sobre cual es el problema que estas experimentando.
Es dificil que alguien te ayude si escribes un texto tan largo donde agregas demasiados detalles sobre tu programa que son innecesarios para exponer el problema.

Como dijo el compañero mas arriba, si no sabes como hacer X cosa lo primero que debes hacer es revisar la documentacion (la API de Windows esta muy bien documentada).

Cuando tengas algun tipo de problema y quieras exponerlo, es recomendable armar un test-case, es decir, un pequeño programa que replique el problema original. De esta forma no debes publicar el codigo completo y la gente que quiera ayudarte podra entender cual es el problema al instante sin tener que entender o leer el codigo completo.

En base al titulo, parece que lo que buscas es:

UINT GetDlgItemInt(
  HWND hDlg,
  int  nIDDlgItem,
  BOOL *lpTranslated,
  BOOL bSigned
);



(La documentacion esta en castellano tambien)

Son varios problemas y buscaba recomendaciones. Quise ponerlos todos en el mismo hilo e intenté ser claro. Principalmente son 2 problemas que describo en 6 lineas al principio.
El resto se puede ignorar, solo aporto más detalles y comento dudas por si alguien lee y me hace recomendaciones sobre el código.

Te tomo el consejo, intentaré ser más claro y concretar más en futuras intervenciones.
No quería hacer un hilo por problema, otro para pedir recomendaciones sobre el código, etc.
Intenté integrarlo todo en único hilo.

Ya voy mirando por la api y ejemplos, si no, no tendría nada hecho.

Ya solucione uno de los principales 2 problemas. Por suerte resolví el problema de mostrar el texto en un EDIT. Y tu me ofreciste una respuesta para el otro problema con el cual me pondré ahora a resolver.

Muchas gracias.









TEMA APARTE:

Pondré el código que resuelve el problema de mostrar un string en un EDIT por si alguiem se encuentra el mismo problema:
Código (cpp) [Seleccionar]
wstring stemp = wstring(Texto_Cifrado.begin(), Texto_Cifrado.end();
LPCWSTR cifrado =stemp.c_str();
SetWindowTextW(hwndEdit2, cifrado);


Para que funcione hay que cambiar las declaraciones de variables y las funciones de
string mivariable; a
wstring mivariable;
#2405
Cita de: Eternal Idol en 13 Junio 2019, 22:52 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.
#2406
Hacking / Re: pentesting
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.
#2407
Hay que poner un honeypot para atraerla jejeje.
Sugar na na na na naa naaa, oooh honey honey, na na na na na na.
#2408
Seguridad / Re: bloque de aplicacion
13 Junio 2019, 21:02 PM
Usarías la versión gratuita para uso comercial o para algo ilegal.
#2409
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 (cpp) [Seleccionar]
/*
Proyecto compilado en:
C++11.
Code::Blocs 17.12
Other Linker Settings:
-lmingw32
*/

/*
Por anhadir:

-Mostrar resultado del cifrado en hwndEdit2.

-Obtener numero de vueltas del cifrado Cesar en int. O hacer cast de string a int.

*/


/*
Por anhadir
Lista de comandos:
-r Da la vuelta al texto.
-f Guarda automaticamente la salida en un fichero y lo abre. El nombre es elegido en
pantalla de bienvenida (Aun no implementada).
*/


/*
Lista de cifrados a incluir:

Cesar.
string CifradoCesar(string Texto, int Vueltas);

Interseccion.
string CifradoInterseccion(string Texto, int Vueltas, string Caracter);

etc.
*/


#include <string>
#include <iostream>
#include <windows.h>


using namespace std;

#define ID_EDIT 1
#define ID_BUTTON 2
#define ID_STATIC 3

std::string Texto_A_Cifrar = "";
string Vueltas_A_Cifrar = "";

string CifradoCesar(string Texto, int Vueltas);
string CifradoInterseccion(string Texto, int Vueltas, string Caracter); //Aun sin llamada

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);




int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{

MSG msg;
WNDCLASSW wc = {0};
wc.lpszClassName = L"Edit control";
wc.hInstance = hInstance;
wc.hbrBackground = GetSysColorBrush(COLOR_3DDKSHADOW);
wc.lpfnWndProc = WndProc;
wc.hCursor = LoadCursor(0, IDC_ARROW);

RegisterClassW(&wc);
CreateWindowW(wc.lpszClassName, L"CIFRADO CESAR",
  WS_OVERLAPPEDWINDOW | WS_VISIBLE,
  250, 170, 430, 390, 0, 0 , hInstance, 0);

while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

return (int) msg.wParam;

}


LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
static HWND hwndEdit;
static HWND hwndEdit2;
static HWND hwndEdit3;
static HWND hwndEdit4;
static HWND hwndButton;
static HWND hwndStatic;
static HWND hwndStatic2;
static HWND hwndStatic3;



switch (msg)
{
case WM_CREATE:
{
    hwndStatic3 = CreateWindowW(L"Static", L"VUELTAS CIFRADO ---->", WS_CHILD | WS_VISIBLE,
11, 338, 154, 16, hwnd, (HMENU)ID_STATIC, NULL, NULL);

hwndEdit4 = CreateWindowW(L"Edit", L"", WS_CHILD | WS_VISIBLE | ES_NUMBER ,
167, 338, 154, 15, hwnd, (HMENU)ID_STATIC, NULL, NULL);

    hwndStatic2 = CreateWindowW(L"Static", L"CLAVE CIFRADO --------->", WS_CHILD | WS_VISIBLE,
11, 318, 154, 16, hwnd, (HMENU)ID_STATIC, NULL, NULL);

hwndEdit3 = CreateWindowW(L"Edit", L"", WS_CHILD | WS_VISIBLE |
            ES_PASSWORD,
167, 318, 154, 15, hwnd, (HMENU)ID_STATIC, NULL, NULL);

    hwndEdit2 = CreateWindowW(L"Edit", L"Texto Cifrado.", WS_CHILD | WS_VISIBLE | WS_BORDER |
ES_MULTILINE | ES_WANTRETURN | ES_AUTOVSCROLL |ES_READONLY,
10, 154, 404, 160, hwnd, (HMENU)ID_EDIT, NULL, NULL);

hwndEdit = CreateWindowW(L"Edit", L"Escribe aqui tu texto a cifrar.", WS_CHILD | WS_VISIBLE | WS_BORDER |
            ES_MULTILINE | ES_WANTRETURN | ES_AUTOVSCROLL ,
10, 10, 404, 138, hwnd, (HMENU)ID_EDIT, NULL, NULL);

hwndButton = CreateWindowW(L"Button", L"ENTER", WS_VISIBLE | WS_CHILD,
333, 323, 80, 28, hwnd, (HMENU)ID_BUTTON, NULL, NULL);

            hwndStatic = CreateWindowW(L"Static", NULL, WS_VISIBLE | WS_CHILD,
11, 150, 402, 3, hwnd, (HMENU)ID_STATIC, NULL, NULL);
} break;


case WM_COMMAND:
{
if (HIWORD(wParam) == BN_CLICKED)
{
int VueltasEnInt = 0; //Vacia para siguientes llamadas.
int len = GetWindowTextLengthW(hwndEdit) + 1; //Longitud de texto a cifrar + null terminator.
wchar_t text[len]; //Array de chars unicode con la longitud del texto a cifrar.

GetWindowTextW(hwndEdit, text, len); //Obtener el texto en array.
//No funciona.  GetWindowTextW(hwndEdit4, VueltasEnInt);//Obtener int.

Texto_A_Cifrar.clear(); //Vacia el string antes de ser usado.

for (int i = 0; i < len; ++i)
{
Texto_A_Cifrar += static_cast<char>(text[i]); //Llena el string con chars.
}

/*
IGNORAR, Esto es solo un ejemplo para que me acuerda de hacerlo.

Usar find para buscar comandos despues de un guion en el texto introducido.
Guardar el comando en un char. Ejemplo:
char ReverseStr = '0';
char FileStr = '0';
Siendo el texto a cifrar "-r-fTextoDeEjemplo" ReverseStr = 'r';

if (Reverse != '0')
{
Dar la vuelta a Texto_A_Cifrar;
Guardar en Texto_A_Cifrar;
}

if (File != '0')
{
Pedir nombre de archivo de texto;
Guardar datos del cifrado en archivo de texto;
}

etc.
*/

//Eliminar null terminator de string para cifrarlo:
unsigned int TamanhoStr = Texto_A_Cifrar.length();
string Texto_Cifrado = "";
Texto_Cifrado.append(Texto_A_Cifrar, 0, TamanhoStr-1);



/*
Intento de cast de cada char a int.
No funciona porque suma los int.
Por ejemplo si el usuario escribe en el editbox de vueltas:
152
En vez de dar 152 vueltas al texto, se daran 1 + 5 + 2.
8 Vueltas. No se como solucionarlo.

for(auto iter = VueltasEnStr.begin(); iter != VueltasEnStr.end(); ++iter)
{
if (*iter > 48)
{

cout << "Contenido iter:" << *iter << endl;
VueltasEnInt += (static_cast<int>(*iter) -48) );
cout << "Vuelta en int:" << VueltasEnInt << endl;
}

}
*/


//Aplicar cifrado Cesar. Falta obtener vueltas.
//Asi sera la llamada: Texto_Cifrado = CifradoCesar(Texto_Cifrado,VueltasEnInt);
Texto_Cifrado = CifradoCesar(Texto_Cifrado,VueltasEnInt); //LLamada de prueba:
cout << Texto_Cifrado << endl; //Provisional para debug por consola
cout << VueltasEnInt << endl; //Provisional para debug por consola



/*Sin implementar. Muestra el resultado en Ventana con hwndEdit2
No se hacerlo. Se cambiarle el titulo a la ventana, pero no se cambiar
el contenido del EDIT.
Necesito cambiar L"Texto Cifrado." por el contenido de Texto_Cifrado*/

}
} break;

case WM_DESTROY:
{
PostQuitMessage(0);
break;
}
}
return DefWindowProcW(hwnd, msg, wParam, lParam);
}

//Cesar
string CifradoCesar(string Texto, int vueltas)
{
string TextoSalida = "";
for(auto iter = Texto.begin(); iter != Texto.end(); ++iter)
{
TextoSalida += (*iter + vueltas);
}
return TextoSalida;
}


//Interseccion
string CifradoInterseccion(string Texto, int Vueltas, string Caracter)
{

string Texto2;

for (int i = 0; i < Texto.size(); ++i)
{

Texto2 += Texto[i];

for (int i = 0; i < Vueltas; ++i)
{
Texto2.append(Caracter);
}
}

return Texto2;
}
#2410
Hacking / Re: Como se oculta un atacante
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.