首页
社区
课程
招聘
[旧帖] 新手问题,请问使用delphi如何编写拦截所有连接本机电脑的IP 0.00雪花
发表于: 2010-11-9 18:10 6013

[旧帖] 新手问题,请问使用delphi如何编写拦截所有连接本机电脑的IP 0.00雪花

2010-11-9 18:10
6013
新手问题,请问使用delphi如何编写拦截所有连接本机电脑的IP

就是阻止连接.做个表,只允许在表里面的IP连接本电脑

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
2
这个  驱动层应该会好一点   R3太困难了。。。不会帮顶。
可以参考下360的网络监控模块。。
2010-11-10 09:49
0
雪    币: 2109
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
之前找到一个 Open Source Firewall For Windows
不过测试的结果 => 无效
也许是我的平台的问题
(VMware Network Adapter 两个)

http://sourceforge.net/projects/firewallpapi/
http://www.intercex.es/txakynetwork/

刚找的, 未测试过:
http://osswin.sourceforge.net/
Firewall & NAT =>
http://force.coresecurity.com/
http://tdifw.sourceforge.net/
http://www.delegate.org/delegate/
http://www.hsc.fr/ressources/outils/pktfilter/
http://sourceforge.net/projects/pktfilter/
http://sourceforge.net/project/showfiles.php?group_id=64424
http://www.1x.dk/
http://wipfw.sourceforge.net/
http://isafer.sourceforge.net/
2010-11-10 10:52
0
雪    币: 255
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
新人帮顶····支持楼上!
2010-11-10 11:14
0
雪    币: 2109
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
感觉这个比较简洁, 易于研究.
不过仍然使用失败, 不知道是不是 NOD32 防毒的问题.

http://www.hsc.fr/ressources/outils/pktfilter/download/PktFilter.zip
含源码 .exe rules.txt
VC 6.0

pktctl.exe -I

eth0: (NVIDIA nForce Networking Controller - Packet Scheduler Miniport):
10.0.4.103
eth1: (VMware Virtual Ethernet Adapter for VMnet1): 192.168.88.1
eth2: (VMware Virtual Ethernet Adapter for VMnet8): 192.168.213.1

pktfltsrv.exe

放到 c:\pkt

C:\pkt>pktfltsrv.exe -i rules.txt log.txt
Packet Filtering service installation was successful

IMPORTANT:

Do _not_ forget to change the Startup Type of PktFilter to Automatic in the
Services Manager if you want PktFilter to start automatically at system startup
(recommended)

(rules.txt 中的 IP 无效果)

C:\pkt>pktctl.exe -l eth0
error: unable to connect to named pipe

C:\pkt>pktfltsrv.exe -u
Uninstallation of Packet Filtering service was successful

C:\pkt>pktctl.exe
usage:
       pktctl -a filtering_rule: add a filtering rule
       pktctl -d rule interface: delete a rule on specificied interface
       pktctl -f filters_file: source filters file
       pktctl -i : interactive mode
       pktctl -F filters_file: flush all interfaces and load filters file
       pktctl -l interface: list rules on specified interface
       pktctl -L interface: list rules with rule numbers on specified
       interface
       pktctl -s interface: get brief statistics on specified interface
       pktctl -S interface: get detailed statistics on specified interface
       pktctl -Fa interface: flush all rules on specified interface
       pktctl -I: list mapping of Ethernet interfaces
2010-11-10 15:07
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我想用 delphi实现这样的功能 ,所有连接或先触发我的软件,我软件过滤后才能连接,这样的
2010-11-11 10:43
0
雪    币: 196
活跃值: (43)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
楼上的思路应该也可以。
2010-11-11 22:30
0
雪    币: 255
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
支持楼上········
2010-11-11 23:02
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
我看过了,也测试了下,感觉还行,但是经常无法启动.不知道那里问题,
我也找到相关api了,想用delphi实现,但是怎么弄都是有问题,希望
晓得的朋友帮忙下,上面的代码是C的,我看不懂,
const
  localIp : array[0..3] of BYTE = (192,168,0,2);
  FILTER_TCPUDP_PORT_ANY : WORD = $0000;
  FD_FLAGS_NOSYN = $1;
var
  hInterface : INTERFACE_HANDLE;
  fHandle : FILTER_HANDLE;
  inFilter : PF_FILTER_DESCRIPTOR;
  FILTER_PROTO_TCP : DWORD;
  dwSrcMask : DWORD;
begin
  FILTER_PROTO_TCP := MAKELONG(MAKEWORD(($06),$00),$00000);
  dwSrcMask := $FFFFFFFF;

  PfCreateInterface(0,
  PF_ACTION_DROP,//PF_ACTION_FORWARD, 要么是全部拦截 要么就是全部放行,到底应该怎么设置呢?
  PF_ACTION_DROP,//PF_ACTION_FORWARD,
  FALSE,
  TRUE,
  hInterface);

  PfBindInterfaceToIPAddress(hInterface, PF_IPV4, @localIp);

  inFilter.dwFilterFlags := FD_FLAGS_NOSYN;
  inFilter.dwRule := 0;
  inFilter.pfatType := PF_IPV4;
  inFilter.SrcAddr := @localIp;
  inFilter.SrcMask := @dwSrcMask;
  inFilter.wSrcPort := FILTER_TCPUDP_PORT_ANY;
  inFilter.wSrcPortHighRange := FILTER_TCPUDP_PORT_ANY;
  inFilter.DstAddr := nil;
  inFilter.DstMask := nil;
  inFilter.wDstPort := 80;
  inFilter.wDstPortHighRange := 80;
  inFilter.dwProtocol := FILTER_PROTO_TCP;
  PfAddFiltersToInterface(hInterface, 1, @inFilter, 0, nil, @fHandle);
  PfRemoveFilterHandles(hInterface, 1, @fHandle);
  PfUnBindInterface(hInterface);
  PfDeleteInterface(hInterface);
2010-11-12 14:43
0
雪    币: 6
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
做个LSP啊,DELPHI可以做DLL,也就可以做LSP,这样就可以拦截网络连接的操作,LSP网上有很多资料,给个地址,虽说教程是VC的,但是DELPHI也可以实现:
http://www.bianceng.cn/Programming/vc/201002/15276.htm
2010-11-12 20:39
0
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
新人顶一个努力学习天天向上
2010-11-12 20:44
0
游客
登录 | 注册 方可回帖
返回
//