主题:事关重要,加班加点也要来解决这个问题!!
xjh22700
[专家分:320] 发布于 2009-02-20 05:18:00
解决,谢谢楼下各位的帮助!
最后更新于:2009-05-04 00:09:00
回复列表 (共11个回复)
沙发
oO羽姿Oo [专家分:600] 发布于 2009-02-20 10:13:00
注意::
使用你的方法不能达到要求,即使得学生机不能上网.
XP以上系统一至到WIN7.网络中都可以添加多IP的.
这样可以一台机器同时处于2个网络中.
比如:你网关是192.168.1.1
这样写IP:
IP:192.168.0.245
MASK:255.255.255.0
GATWAY:192.168.1.1
然后,点高级.在出来的高级选项中.
你可以看到你先写的IP:192.168.0.245已经在里面了.
点下面的添加.写入:
IP:192.168.1.245
MASK:255.255.255.0
一路确定以后.此时的机器.即可以访问192.168.0网段也可以访问192.168.1网段.
也就是一台机器使用了2个IP.(当然可以更多)
但你在网上邻居中,只显示0网段中的机器.
你想这样防止学生上网是不行的.
你应该用我以前说过的检测方法.
学生机使用WINSOCK连接上台公网上的主机.
比如一分钟连接一次163的80端口.
如果能连上说明能上网了.连不上说明上不了网.
你使用WINSOCK后....要记得释放使不使用的端口....
并且.按你的想法.你应该是主机LISTENING.学生机CONNECT
这样.
当你成功连接以后.
在NETSTAT -AN中会看到连接状态是已经连接.
但你断开连接后.端口不会马上释放.
会有几秒到1分钟不等的时间.使用的端口处于关闭等待状态.
而按你说的.100MS检测 一次.
也就是说.在学生机上.每秒发出10个连接.还不能保证端口使用完都已经收回.
在教师机上.做为SERVER处于监听状态的程序.平均每秒要有10*120=1200个发起连接.
这样的速度什么机器也受不了.
你不要使用过低的端口号.
测试完成后.使用CLOSED方法关闭连接.
不要使同时连接的数量过多.(一般几十个没问题)
不要同时使用连接发过大的数据包.
连接检测不要过于频繁.1分钟测个2-3次应该就可以了.
另:关于你的问题,以前有人问过.以前的贴子里我回复过.
板凳
xakir [专家分:0] 发布于 2009-02-20 19:45:00
哎同样问题
我在一个培训中心上课 15个电脑 不多(小学校)
校长说 你上课的时候不要让学生上网 最后半个小时我给学生开网
要求制作这样的C/S 程序
但是怎么样断开 学生的机子的网
能不能用 VB里修改 默认网关
我的想法是(陆游器IP 是 192.168.0.1 那么 我发送断网指令以后,把学生机子的默认网关修改掉 192.168.0.200 这个ip 发送连网指令是 把学生机的 默认网关 恢复到 192.168.0.1)
有人问直接把陆游器断网就行了吗!
但是我要上完棵以后 上网(哈哈 我不上网也可以但是 我看我们校长要 探探我能不能做成这个东西)
正题 vb里 能不能修改默认网关!
谢谢了
3 楼
oO羽姿Oo [专家分:600] 发布于 2009-02-20 22:00:00
回二楼的.
可以.
不过严格说不是使用VB代码改的.
使用NETSH命令.
使用SHELL函数执行BAT命令脚本.
把下面的命令保存为X.BAT批处理.
然后使用VB执行就可以了.
如果需要参数定制.
比如每台机器IP不同.或其它参数不一样.
则使用程序生成命令串后写入文件再执行.
rem 修改IP地址、子网掩码、网关
netsh interface ip set address name="本地连接" source=static addr=10.10.0.2 mask=255.255.255.0 gateway=10.10.0.1 gwmetric=1
netsh interface ip set dns name="本地连接" source=static addr=xxx.xxx.xxx.xxx
4 楼
xjh22700 [专家分:320] 发布于 2009-02-21 02:02:00
一楼非常感谢你了,记得你帮过我好多次了,我还加过你的QQ呢,只是我好多天没上线了,可能你都不记得了,我的QQ是:782022994,
按你说的原来连接断开后还要等那么长的时间才能释放端口,我以为是马上释放呢,难怪产生那一堆东西,我有点明白问题出在哪了!~!
我再问题一个问题,怎么才能有效做到防别人结束自已的进程啊?
我打算利用这周星期天晚上的时间来网刻一次整个机房,要尽快做出这个工具来安装到母盘镜像上去,要不然下次又挨一台台地下去安装,很烦人啊!~!
顺便回二楼,我从网上下有一个修改IP、网关等的代码,想要的话给个邮箱我有时间再发给你!
5 楼
xjh22700 [专家分:320] 发布于 2009-02-21 02:05:00
怎么才能有效做到防别人结束自已的进程?
想出的办法越多越好,不一定要十全十美,只要“行之有效”就得,因为时间不是很多啊,我再参详每个办法……
我从网上看到一个,即把自已的程序文件名改为smss.exe,运行后在任务管理器里是结束不了的,我前段时间就是这样,不过现在发现用其它工具很容易结束,如360和ntsd命令。这个的确是“行之有效”,如果没有办法我只能沿用这个方法了,现在我所知的学生中已经有人会破解了,他们还算道义,来把情况反映给我了!看来这个办法也不会撑得了多久了!~
6 楼
oO羽姿Oo [专家分:600] 发布于 2009-02-21 09:22:00
做成类似木马的那种方法.
使用2个进程互相守护.
一个主程序.
一个DLL注入到系统关键进程中.
或是直接用C写成DLL注入执行.
如果是注入到WINLOGIN,SMSS,等关键进程,根本结束不了.
要不就像你说的.
使用WINSOCK发包检测.
但不要每次都只是发起连接再断开.
你把程序设计成这样:
主服务器做成多连接监听式的.
客户程序做成主动连接式的.
只要客户程序一启动,就每10-20秒测试连接一下服务器.
这里你要设计一个好方法,不然连不上服务器.或是服务器没开.客户程序容易没有响应....
如果没连接上就一直测试.
如果连接上了就保持连接.不要断开.
在服务器处.把每台机器的连接情况用列表显示出来.
你就可以看到机器是不是在线.如果程序被结束.你肯定就会发现.
程序正常连接以后.最多连接数才120个.都在保持连接.
CLIENT与SERVER每30秒通讯一次.交换一下数据.如果发包失败.
那肯定是机器网络改了.
并且,这么做以后有个好处.
你可以把控制命令直接写到数据包里发到客户机.
客户机收到指令后执行NETSH更改网络设置就行了.
不过这里你要注意一个问题.
你2个网络不是一个网段中的.
你要始终保持与SERVER的连接.
这可以使用前面说的配置双IP实现.
也就是说在上网上时候与你教学机还是连着的.
这样你不想让他上网还可以改回来.
我Q里有你.你从来没上过线.
>.<
7 楼
oO羽姿Oo [专家分:600] 发布于 2009-02-21 09:32:00
刚才又看一次你的问题.
发现你那个2个<守护程序>好像都是运行在本机???
这样不行.
2个程序可以同时关闭的.
起不到守护的作用.
应该像我说的.
把2个程序放到不同的机器上.一个学生机.一个老师机.
这样才能保证2个程序中肯定至少有一个存活.
要不就用我说的那个使用C++写标准DLL使用注入进程执行.
这有个好处.
看不见运行进程名.也就是发现不了你的程序在运行.
你的程序作为一个本机现有的进程 中的一个线程在执行.
还有.你的程序不是自己写着玩的.
你是要最终使用的.
这样的程序一定不要写完直接就用.
因为你不能保证他的正确性.一定要先用几台机器测试一下.
没问题再大面积安装.
要不像你说的.都装完了有问题.机器还有还原.
哭死你.
8 楼
xakir [专家分:0] 发布于 2009-02-21 10:20:00
谢谢 oO羽姿Oo
还有一个问题 vb 里 怎么条用 VC写的 DLL主入!
9 楼
oO羽姿Oo [专家分:600] 发布于 2009-02-21 10:44:00
这个不是一句2句能说清楚的.
用Q聊吧.
10 楼
oO羽姿Oo [专家分:600] 发布于 2009-02-21 11:02:00
你要的功能可以用我发的那处程序处理..
我已经发了一个远程控制程序.
有代码.你看看.
我来回复