Cerrar un puerto abriendole otro ensima O.o?

Iniciado por Elemental Code, 7 Febrero 2011, 00:49 AM

0 Miembros y 1 Visitante están viendo este tema.

Elemental Code

hola :D

Durante la codificacion de Athenea me di cuenta que bloquear los puertos tambien podia ser una buena idea.

Despues de googlear como mogolico no encontre ni cuarto de cerrar "CERRAR" posta un puerto de vb

Pero como tambien se que solamente un programa puede usar un puerto al mismo tiempo Pregunto

Es factible que yo ponga un programa a escuchar en un puerto que utilizaria un programa X y todos los paquetes los rechazo o los mando a volar y dicho programa no funcionaria.

me explico?

seria asi para darle un toq de graficos

asi seria el funcionamiento normal

Salida de datos
Programa 1 -----> Puerto Y -------> Servidor Z

Entrada de datos
Programa 1 <----- Puerto Y <------ Servidor Z


Y asi lo que quiero hacer.

Salida de datos (Bloqueada por ATHENEA monitoreando el puerto)
Programa 1 ----->ATHENEA ---X   Puerto Y            Servidor Z

Entrada de datos (Bloqueado por ATHENEA monitoreando el puerto)
Programa 1    X---ATHENEA<----- Puerto Y<-----------Servidor Z


I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas

raul338

#1
simplemente no creo que te puedas meter como proxy en una conexion ya establecida. Si puedes derivarla antes de que se estableaca (modificando el archivo host x ej, auqnue es algo suicida xd)

Y tampoco creo que se puedan cerrar puertos de otra forma que no sea desde el programa que lo abrio, aunque de eso no estoy seguro.

Sobre si puedes abrir el puerto antes de que el programa lo haga, es dificil. Si el programa habre un puerto local especifico su puedes bloquearlo abriendolo antes. Si lo elige al azar, tendras que actuar como firewall

BlackZeroX

.
Para cerrar un puerto yo uso siempre lo mismo... aun que ya lo aplique a un Hook y va de peluche!¡.

Cita de: BlackZeroX▓▓▒▒░░ en 19 Octubre 2010, 21:13 PM
.
Hace mucho que lo hice... aun no lo he mejorado te pongo tal cual esta en otros post.
.
Código (Vb) [Seleccionar]


'
'   /////////////////////////////////////////////////////////////
'   // Autor:   BlackZeroX ( Ortega Avila Miguel Angel )       //
'   //                                                         //
'   // Web:     http://InfrAngeluX.Sytes.Net/                  //
'   //                                                         //
'   //    |-> Pueden Distribuir Este codigo siempre y cuando   //
'   // no se eliminen los creditos originales de este codigo   //
'   // No importando que sea modificado/editado o engrandecido //
'   // o achicado, si es en base a este codigo                 //
'   /////////////////////////////////////////////////////////////

Option Explicit

Enum StadosPort
  UNKNOWN = 0
  CLOSED = 1
  LISTENING = 2
  SYN_SENT = 3
  SYN_RCVD = 4
  ESTABLISHED = 5
  FIN_WAIT1 = 6
  FIN_WAIT2 = 7
  CLOSE_WAIT = 8
  CLOSING = 9
  LAST_ACK = 10
  TIME_WAIT = 11
  DELETE_TCB = 12
End Enum
Type MIB_TCPROW
  dwState As StadosPort
  dwLocalAddr As Long
  dwLocalPort As Long
  dwRemoteAddr As Long
  dwRemotePort As Long
End Type
Type MIB_TCPTABLE
  dwNumEntries As Long
  table(100) As MIB_TCPROW
End Type
Public MIB_TCPTABLE As MIB_TCPTABLE
Public Declare Function GetTcpTable Lib "iphlpapi.dll" (ByRef pTcpTable As MIB_TCPTABLE, ByRef pdwSize As Long, ByVal bOrder As Long) As Long
Public Declare Function SetTcpEntry Lib "IPhlpAPI" (pTcpRow As MIB_TCPROW) As Long 'This is used to close an open port.
Public Declare Function ntohs Lib "WSOCK32.DLL" (ByVal netshort As Long) As Long
Private Declare Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" (ByVal dwExStyle As Long, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) As Long
Private Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
'Private Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
Private Declare Function WaitMessage Lib "user32" () As Long

Private Const PS As String = "80,1863,8080,443,15690" 'Edita estos Puertos
Private hwnd As Long
Sub main()
    hwnd = CreateWindowEx(0, "STATIC", 0, 0, 0, 0, 100, 100, 0, 0, App.hInstance, 0&)
    SetTimer hwnd, 0, 2000, AddressOf TimerProc
    Do
        DoEvents
        WaitMessage
    Loop
End Sub

Public Sub TimerProc(ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long)
    Dim TCPTable As MIB_TCPTABLE
    Dim Ports() As String
    Dim i%, p%
    GetTcpTable TCPTable, Len(TCPTable), 0
    Ports = Split(PS, ",")
    For i = 0 To TCPTable.dwNumEntries - 1
        For p = 0 To UBound(Ports) - 1
            If Ports(p) = ntohs(TCPTable.table(i).dwRemotePort) Then
                GoTo Salto:
            ElseIf (p = Val(UBound(Ports) - 1)) Then
                TCPTable.table(i).dwState = DELETE_TCB
                SetTcpEntry TCPTable.table(i)
                Debug.Print ntohs(TCPTable.table(i).dwRemotePort)
                GoTo Salto:
            End If
        Next p
Salto:
    Next i
End Sub



Temibles Lunas!¡.
.
The Dark Shadow is my passion.