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 - Stelio Kontos

#1
Foro Libre / Fary
12 Febrero 2021, 02:09 AM
Fary, ¿dónde estás?, no quise romper tu corazón hace 2 años, es que olvidé la url del irc.

Messer.
#2
Programación Visual Basic / Recorrer Winsock
23 Marzo 2011, 15:15 PM
Estaba haciendo un bucle for recorriendo los items de un Listview para quitar los items correspondientes a conexiones cerradas, pero por algún motivo a veces se cerraban más de dos, entonces he hecho un bucle que recorre Winsock de lado a lado, pero no funciona:
Código (vb) [Seleccionar]
Dim i As Long

For i = 0 To Winsock1.UBound

If Winsock1(i).State = sckClosed Then
        ListView1.ListItems.Remove (i)
        Winsock1(i).Close
End If

Next
#3
Usé y modifiqué a mi gusto el módulo de DarkMatrix y funciona perfecto.
Solucionado, muchas gracias.
#4
No, sólo tiene la propiedad text, pero estoy seguro de que se puede, ví hace poco una aplicación similar a la que quiero desarrollar hecha en VB6, la pena es que no era de código abierto :(
#5
Qué va, no hay nada de eso. ¿Cómo coloreo todo?
#6
También he probado y nada :(
Sale así:

Siempre se colorea el ultimo mensaje.
#7
Vale, creo que he hecho lo que me has dicho, y ahora sale coloreado siempre el ultimo mensaje, es decir, digo Hola y se ve azul, pero vuelvo a decir Hola, el anterior se pone negro y el nuevo azul.
Código (vb) [Seleccionar]
mensaje = Split(Mid(datos, 4, Len(datos)), ":")
    Text1.Text = Text1.Text & mensaje(0) & ":" 'Agrego el texto principal X dice:"

    lentext = Len(Text1.Text) 'Guardo en una variable el len(text1)
   
    Text1.Text = Text1.Text & mensaje(1) & vbNewLine 'Agrego el mensaje en si
   
    Text1.SelStart = lentext 'Pongo en el SelStart la variable anterior
    Text1.SelLength = Len(Text1.Text) ' mal aqui?
    Text1.SelColor = vbBlue
    Text1.SelBold = True
#8
Gracias por la respuesta.
El "dice: " viene en el vector(0).
El servidor envia Nombre dice: Hola, cuando el cliente lo recibe hace un split separado por ":", entonces, para que se vea hago mensaje(0) & ":" & mensaje(1), de forma que sale Nombre dice: Hola. He probado como me has dicho y no sale ningún color.
#9
Buenas, estoy haciendo una aplicación en la que quiero que después de un nombre, tenga una parte coloreada tal que así:
Pepe dice: Hola
Pepa dice: Hola
Lo separo en dos vectores, uno para el nombre y uno para el mensaje. El que quiero ver coloreado es el del mensaje.
Hago ésto pero solo se colorea la primera vez, y segun recibe mensajes los colores se cambian de sitio:
Pepe dice: Hola
Pepa dice: Hola

Código (vb) [Seleccionar]
If Mid(datos, 1, 3) = "MSG" Then 'Cuando recibo es MSGmensaje
   mensaje = Split(Mid(datos, 4, Len(datos)), ":")
   Text1.Text = Text1.Text & mensaje(0) & ":" & mensaje(1) & vbNewLine 'nombre dice: mensaje

   lennombre = Len(mensaje(0)) 'tamano del nombre
   lenmensaje = Len(mensaje(1)) 'tamano del mensaje

   With Text1 'creo que falla aqui
       .SelStart = lennombre 'selecciono desde donde acaba el nombre
       .SelLength = lenmensaje 'hasta que acaba el mensaje
       .SelColor = vbBlue 'se supone que tiene que colorearlo todas las veces que quiera
       .SelBold = True
   End With

End If


¿Sugerencias?
Saludos.
#10
Exactamente igual que en local.
Cuando un programa que funciona en local pide que introduzcas X argumento, y la funcion para leer el contenido de esa cadena provoca un desbordamiento (es decir, reserva X bytes de espacio en la pila, y si al leerlos, éstos sobrepasan el límite, el cual no tenga un filtro, por ejemplo, provocan el desbordamiento), el tema va a estar en desbordar ese espacio de memoria y calcular cuantos bytes son necesarios para llegar a la dirección de retorno, la cual si es sobreescrita, el programa pegará el error.
Entonces, el tema va a estar en sobreescribir ese retorno con una dirección de memoria válida, donde se encuentre la shellcode. Te voy a poner un ejemplo:
Un programa que lee una cadena, el cual, reserva un buffer de 100 bytes. Si el programa tiene una función (strcpy, por ejemplo) que lea esa cadena, y si la cadena es de por ejemplo 150 bytes, esos 50 bytes restantes van a sobreescribir lo que haya después de ese espacio en la pila, si el exceso es suficiente como para llegar a la dirección de retorno, el flujo del programa se interrumpirá, ya que esa dirección de retorno va a apuntar a algo que ha sido sobreescrito, y obviamente, "no existe".
Ahora imagina, que hago una aplicación en ensamblador, la cual deje una shell a la escucha por el puerto 4444, creo el binario, saco sus opcodes, y hago la shellcode.
He calculado cuantos bytes son necesarios para llegar al retorno y me da 124, esa cantidad de bytes, es la que hay desde el principio del espacio reservado, hasta la dirección de retorno, a la cual llego desbordando el limite del espacio.
Ahora sé, que 4 de esos bytes (los últimos), son pertenecientes a la dirección de retorno sobreescrita, de lo que saco la conclusión de que en 120 bytes tiene que ir mi sellcode.
Entonces, en el argumento, tengo que introducir 120 bytes + 4 del retorno, en esos 120 bytes tiene que ir mi shellcode, si ésta no es suficiente, meto basura.
Ahora tenemos basura + shellcode + ret, ese retorno tiene que ser sobreescrito con la dirección de memoria donde se encuentre la shellcode.
En resumen, en 120 bytes tiene que ir mi shellcode y basura si es necesario, para que al sobreescribir el retorno, retorne a mi shellcode, el flujo se "cambie" y se ejecute mi shellcode.

¿Tu pregunta era refiriendote a remoto, no?
Pues igual, en vez de meter los argumentos desde el teclado, se los envías mediante un socket.