borderAndreaVB free resources for Visual Basic developersborder

borderAndreaVB Visual Basic and VB.NET source code resources - Copyright © 1999-2007 Andrea Tincaniborder

AndreaVB | Forum | News | Downloads | Register | Help | Member List | Statistics | Search | PM | Profile

Print This Topic
Previous Topic (view the remote desktop)Next Topic (Multiple users for a program) New Topic New Poll Post Reply
AndreaVB Forum : Network : Very difficoult question
Poster Message
Eric21
Level: Trainee

Registered: 01-04-2005
Posts: 1

icon Very difficoult question

Hi,

I was try this code to block the ICMP connections but not work (block all connections).

The complete project is here: www.pro-software.it/filter.zip


Private Const FILTER_PROTO_ANY = 0
Private Const FILTER_PROTO_ICMP = 1
Private Const FILTER_PROTO_TCP = 6
Private Const FILTER_PROTO_UDP = 11
Private Const FILTER_TCPUDP_PORT_ANY = 0
Private Const FILTER_ICMP_TYPE_ANY = 255
Private Const FILTER_ICMP_CODE_ANY = 255

Private Const FD_FLAGS_NOSYN = 1
Private Const FD_FLAGS_ALLFLAGS = FD_FLAGS_NOSYN

Private Const IP_LOCALHOST = "andreavb.ipowermysql.com"
Private Const IP_MASKALL = "0.0.0.0"
Private Const IP_MASKNONE = "255.255.255.255"

Private Enum ENUM_PFADDRESSTYPE
    PF_IPV4 = 0
    PF_IPV6 = 1
End Enum

Private Enum ENUM_PF_ACTION
    PF_ACTION_FORWARD = 0
    PF_ACTION_DROP = 1
End Enum

Private Type PPF_FILTER_DESCRIPTOR
    dwFilterFlags As Long
    dwRule As Long
    pfatType As ENUM_PFADDRESSTYPE ' Long
    SrcAddr As Long
    SrcMask As Long
    DstAddr As Long
    DstMask As Long
    dwProtocol As Long
    fLateBound As Long
    wSrcPort As Integer
    wDstPort As Integer
    wSrcPortHighRange As Integer
    wDstPortHighRange As Integer
End Type

Private Declare Function PfCreateInterface Lib "Iphlpapi.dll" Alias "_PfCreateInterface@24" (dwName As Long, inAction As ENUM_PF_ACTION, outAction As ENUM_PF_ACTION, bUseLog As Boolean, bMustBeUnique As Boolean, ppInterface As Long) As Long

Private Declare Function PfBindInterfaceToIPAddress Lib "Iphlpapi.dll" Alias "_PfBindInterfaceToIPAddress@12" (ByVal pInterface As Long, PFADDRESSTYPE As ENUM_PFADDRESSTYPE, IPAddress As Any) As Long

Private Declare Function PfAddFiltersToInterface Lib "Iphlpapi.dll" Alias "_PfAddFiltersToInterface@24" (ByVal ih As Long, ByVal cInFilters As Long, ByRef pfiltIn As Any, ByVal cOutFilters As Long, ByRef pfiltOut As Any, ByRef pfHandle As Any) As Long

Public Function Test() As Long

    Dim Result As Long
    Dim Handle As Long
    Dim Handle3 As Long
    Dim ArrIP(3) As Byte
    Dim ArrIP2(3) As Byte
    Dim ArrIP3(3) As Byte
    Dim InFilter As PPF_FILTER_DESCRIPTOR
    Dim OutFilter As PPF_FILTER_DESCRIPTOR
    Dim StrHostIP As String
            
    'For detect local IP
    'Debug.Print Form1.Winsock1.LocalIP
            
    'My local IP (change it if is different)
    ArrIP(0) = 82
    ArrIP(1) = 57
    ArrIP(2) = 73
    ArrIP(3) = 156
    
    'OK
    Result = PfCreateInterface(0&, PF_ACTION_FORWARD, PF_ACTION_FORWARD, False, True, Handle)
    
    'After this all connections are blocked
    Result = PfBindInterfaceToIPAddress(Handle, ByVal PF_IPV4, ArrIP(0))
  
    InFilter.dwFilterFlags = FD_FLAGS_NOSYN
    InFilter.pfatType = PF_IPV4
    InFilter.dwRule = 0
    InFilter.dwProtocol = FILTER_PROTO_ICMP
    InFilter.wSrcPort = FILTER_ICMP_CODE_ANY
    InFilter.wSrcPortHighRange = FILTER_TCPUDP_PORT_ANY
    InFilter.wDstPort = FILTER_TCPUDP_PORT_ANY
    InFilter.wDstPortHighRange = FILTER_TCPUDP_PORT_ANY
    InFilter.fLateBound = 0
    
    OutFilter.dwFilterFlags = FD_FLAGS_NOSYN
    OutFilter.pfatType = PF_IPV4
    OutFilter.dwRule = 0
    OutFilter.dwProtocol = FILTER_PROTO_ICMP
    OutFilter.wSrcPort = FILTER_TCPUDP_PORT_ANY
    OutFilter.wSrcPortHighRange = FILTER_TCPUDP_PORT_ANY
    OutFilter.wDstPort = FILTER_TCPUDP_PORT_ANY
    OutFilter.wDstPortHighRange = FILTER_TCPUDP_PORT_ANY
    OutFilter.fLateBound = 0
    
    InFilter.SrcAddr = VarPtr(InFilter.SrcAddr)
    InFilter.SrcMask = VarPtr(InFilter.SrcMask)
    InFilter.DstAddr = VarPtr(InFilter.DstAddr)
    InFilter.DstMask = VarPtr(InFilter.DstMask)

    OutFilter.SrcAddr = VarPtr(OutFilter.SrcAddr)
    OutFilter.SrcMask = VarPtr(OutFilter.SrcMask)
    OutFilter.DstAddr = VarPtr(OutFilter.DstAddr)
    OutFilter.DstMask = VarPtr(OutFilter.DstMask)
    
    'After and previous this all connections are blocked
    Result = PfAddFiltersToInterface(Handle, 1, InFilter, 1, OutFilter, Handle3)
    
End Function


Can anyone help me to solve this problem ?

01-04-2005 at 09:23 PM
View Profile Send Email to User Show All Posts | Quote Reply
AndreaVB Forum : Network : Very difficoult question
Previous Topic (view the remote desktop)Next Topic (Multiple users for a program) New Topic New Poll Post Reply
Surf To:


Not Logged In? Username: Password: Lost your password?
Partners: Download Actual Software | Free Software Download
borderAndreaVB free resources for Visual Basic developersborder

borderAndreaVB Visual Basic and VB.NET source code resources - Copyright © 1999-2007 Andrea Tincaniborder