Useful Lite Effective Firewall .NET

Introduction

This goal of this article is to show how anyone can implement their own firewall using iphlpapi.dll. I have included a BUGGY and not fully functional GUI to show you the way. If you do implement a better GUI, I will be happy to replace the one I included here.

[DllImport("iphlpapi.dll", EntryPoint = "PfCreateInterface")]
        public static extern int PfCreateInterface(
                                        int dwName,
                                        PFFORWARD_ACTION inAction,
                                        PFFORWARD_ACTION outAction,
                                        bool UseLog,
                                        bool MustBeUnique,
                                        ref IntPtr ppInterface
                                        );

        [DllImport("iphlpapi.dll", EntryPoint = "PfDeleteInterface")]
        public static extern int PfDeleteInterface(
                                        IntPtr pInterface
                                        );

        [DllImport("iphlpapi.dll", EntryPoint = "PfBindInterfaceToIndex")]
        public static extern int PfBindInterfaceToIndex(
                                        IntPtr Interface_handle,
                                        int dwIndex,
                                        PFADDRESSTYPE pfatLinkType,
                                        ref int LinkIPAddress
                                        );

        [DllImport("iphlpapi.dll", EntryPoint = "PfBindInterfaceToIPAddress")]
        public static extern int PfBindInterfaceToIPAddress(
                                        IntPtr Interface_handle,
                                        PFADDRESSTYPE pfatType,
                                        ref int ip_address
                                        );

        [DllImport("iphlpapi.dll", EntryPoint = "PfUnBindInterface")]
        public static extern int PfUnBindInterface(
                                        IntPtr pInterface
                                        );

        [DllImport("iphlpapi.dll", EntryPoint = "PfAddFiltersToInterface")]
        public static extern int PfAddFiltersToInterface(
                                        IntPtr interface_handle,
                                        int cInFilters,
                                        [MarshalAsAttribute(UnmanagedType.Struct)] 
                                        ref PPF_FILTER_DESCRIPTOR pfiltIn,
                                        int cOutFilters,
                                        [MarshalAsAttribute(UnmanagedType.Struct)]
                                        ref PPF_FILTER_DESCRIPTOR pfiltOut,
                                        [MarshalAsAttribute(UnmanagedType.Struct)]
                                        ref PPF_FILTER_DESCRIPTOR pfHandle
                                        );

        [DllImport("iphlpapi.dll", EntryPoint = "PfRemoveFiltersFromInterface")]
        public static extern int PfRemoveFiltersFromInterface(
                                        IntPtr ih,
                                        int cInFilters,
                                        [MarshalAsAttribute(UnmanagedType.Struct)]
                                        ref PPF_FILTER_DESCRIPTOR pfiltIn,
                                        int cOutFilters,
                                        [MarshalAsAttribute(UnmanagedType.Struct)]
                                        ref PPF_FILTER_DESCRIPTOR pfiltOut
                                        );

        [DllImport("iphlpapi.dll", EntryPoint = "PfRemoveFilterHandles")]
        public static extern int PfRemoveFilterHandles(
                                        IntPtr interface_handle,
                                        int count_Filters,
                                        [MarshalAsAttribute(UnmanagedType.Struct)] 
                                        ref PPF_FILTER_DESCRIPTOR pvHandles
                                        );

        [DllImport("iphlpapi.dll", EntryPoint = "PfRebindFilters")]
        public static extern int PfRebindFilters(
                                        IntPtr pInterface,
                                        [MarshalAsAttribute(UnmanagedType.Struct)]
                                        ref PPF_LATEBIND_INFO pLateBindInfo
                                        );

        [DllImport("iphlpapi.dll", EntryPoint = "PPfAddGlobalFilterToInterface")]
        public static extern int PfAddGlobalFilterToInterface(
                                        IntPtr interface_handle,
                                        [MarshalAsAttribute(UnmanagedType.Struct)]
                                        ref GLOBAL_FILTER gfFilter
                                        );

        [DllImport("iphlpapi.dll", EntryPoint = "PfRemoveGlobalFilterFromInterface")]
        public static extern int PfRemoveGlobalFilterFromInterface(
                                        IntPtr interface_handle,
                                        [MarshalAsAttribute(UnmanagedType.Struct)]
                                        ref GLOBAL_FILTER gfFilter
                                        );

        [DllImport("iphlpapi.dll", EntryPoint = "SetIpTTL")]
        public static extern int SetIpTTL(uint ttl);

0 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published. Required fields are marked *