如何尽快断开一个故意捣乱的clientsocket连接?(100分)

  • 主题发起人 主题发起人 sungw
  • 开始时间 开始时间
S

sungw

Unregistered / Unconfirmed
GUEST, unregistred user!
编写一个serversocket程序,开一个端口777,有黑客开玩笑,用一个clientsocket连续不断发来
无用的信息,很恼火! 我想如果先检查10几字节(好像密码/口令),不合法就切断连接,让他少占用
不是听好吗? 但是,怎么做? 请高手来拿这100分.
 
将接收到的流信息或BUFFER象截取字符串一样处理。不匹配就用DISCONNECT(SOCK)。
 
不好意思,怎么才能将留信息分段? 请您编写一段,让我试用,成功,必送您100分!
 
接到的信息如果头几个字符不是你预设的话,就是傻黑客捣乱了,可以这样回敬他:
1.发送Fin.然后屏蔽反映,使其陷入超时中,30秒内不能自拔.如果你够恨,可以在四路握手
中进行反复Fin和Ack,但要有技巧,不要让他的TCP辨认出来,这样他就只有拔掉网线了.....
2.getseekname得到他的ip和port,然后可以向目标轰炸(如用线程Ping他IP).....
3.回敬他一些更无用的信息,如果你的服务器有空的话.

 
以其人之道还治其人之身,好主意!
 
JAMW的想法不错,可是,黑客连接成功后,一次性发送一个1M的垃圾,我的笨蛋serversocket一定要等到
接收完这1M垃圾,再回过头来判断最开始几个字节是否合法吗? 这样再断开黑客的连接,等于什么都没做!
我就是要一开始收到前10几个字节就开始判断,不合法就端掉它.
KERRIGAN的做法我赞成.但黑客是主动的,我是被动的.他经常做的是: 连接,发送200k,定时100秒,若成功,接着
干,不成功,主动断开,重新连接,再干......
我想要:
1.他一发送,我就读取他的前10几个字节,判断不合法,马上切断连接,并记下这个ip;
注意:不是等到它的200k发送完了,我才来判断!!这是关键!!!@
2.这个ip连续这样搞3次,之后我只要一见到这个ip,就不让他再连接!
如何编程?


 
大虾们,加油!!
100分难道太少了???
我可以在加20分!!! 我的分数不多了!!
 
接收缓冲区是由你自己定的(在On_Socket_Accept事件中),不要去取Socket返回的
ByteCount参数。
 
thank Lui!
I'll make a try.
 
见笑了,我还没有解决问题.
吕雪松的答案我还没理解,请继续赐教!
 
附加功能 将问题提前
 
var
buf :Arrary[0.10] of char;
ReIP:String;
begin
ServerSocket1.Socket.Connects[0].ReceiveBuffer(buf,10);
if buf<>'1234567890' then
begin
ReIp:=ServerSocket1.Socket.Connects[0].RemoteIP;
ServerSocket1.Socket.Connects[0].Close;
end;

 
你用流的方式读他,没有必要完全读完对方的内容,你可以至读取前10个字节,
不是了就挂断。

你的serversocket做好用多线程阻塞式,这样不会过多影响到其他的正常连接。
 
sungw:如果你还要继续讨论请定期提前你的帖子,如果不想继续讨论请结束帖子。
 
是不是你原来的程序就做好了,要读完才判断,否则Socket应该不会这样的。
 
是不是你原来的程序就做好了,要读完才判断,否则Socket应该不会这样的。
 
多人接受答案了。
 
后退
顶部