请教高手们“多线程测试网站密码的问题” (100分)

  • 主题发起人 主题发起人 脸盆二代
  • 开始时间 开始时间

脸盆二代

Unregistered / Unconfirmed
GUEST, unregistred user!
http://aaa.bbb.ccc/login.asp?user=tom&pass=ilove
对这样的网站登陆形式,如果需要delphi编程实现多线程测试,难度如何?
如果哪位高手能提供编程思路,或者相关例子,不胜感激。
 
小p孩不要研究黑客技术!!
 
暴力破解不可能,我暴力破解本地FoxMail也要用半天,加上网络响应(http)速度慢,
这是不可完成的任务。
 
darksmile:看样子是位有来头的家伙??
其实我是想问问多线程编程的结构问题,这一点在网络上用处比较大。你知道怎么用吗?
 
只提供想法,你自己实现!
思路:
A、先捕捉通过IE正常浏览该网站的所发送的连接信息
B、再捕捉该站返回的成功或错误信息(可从中找出某些标志,如:成功,不存在...)
C、用TCP/IP连接该网站的80端口
D、将A所取得的字符发出(当然其中的user与pass要更改成你想测试的值)
E、接收返回的字符,分析其中是否有成功或失败的标志
F、若有则ShowMessage('TMD'),否则ShowMessage('革命尚未成功,同志尚需努力') GoTo D

线程就不用多说了,
 
现在的网站登陆3次失败后就会封掉你的IP,3日后才能解封,放弃吧。
 
这类的软件狠多,再写没这个必要。
 
>>淡淡的笑:
流光是否能够做到?或者给出具体是哪些程序?
>>chji
使用D6自带的clientsocket控件
procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket1.Port := 80;
ClientSocket1.Address := '161.52.9.211';
ClientSocket1.Active := True;
ClientSocket1.Socket.SendText('HEAD /login.asp HTTP/1.1'+#13#10);
ClientSocket1.Socket.SendText('Host: 161.52.9.211'+#13#10);
ClientSocket1.Socket.SendText('Accept: text/html, */*'+#13#10);
ClientSocket1.Socket.SendText('User-Agent: Mozilla/3.0'+#13#10);
ClientSocket1.Socket.SendText(#13#10);
ClientSocket1.Active := False;

end;

//无论ClientSouket1的模式是阻塞或非阻塞,均不触发此事件,为什么?
procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo1.Lines.add(socket.ReceiveText);
end;

procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo1.Lines.add(socket.ReceiveText);
//只有在设置断点后,才触发此事件,为什么?
end;

end.

正常运行的时候,为什么不能得到服务器的返回串呢?
 
呵呵,想法不错!……可惜实现起来很难哟:)
 
各位:
现成的程序我已经找到并且经测试可以使用。
我自己编的程序有个怪现象,第一次发送信息后没有反映,然后再发送就能收到服务器
的响应了,真奇怪。
 
to 脸盆二代
把代码帖出来吧,帮你看看!我去年也编过一个的,速度虽然没有流光快,
但是还过的去哟
 
不过如果关键技术用了控件,我就没有兴趣了!!
 
用API函数其实实现起来也不是很麻烦的,而且便于封装在线程里面进行控制的……
 
流光是 VB 写的吧,写的很差。更正:我说的是 溯雪
你这样从底层开始,不累吗?既然你的本意是练习多线程编程,就不应该把
过多的经历投到其他方面,多花些时间在多线程的设计上,至于联接方面完
全应该使用现成的控件。建议用系统自带的那个 ocx 控件,名字忘记了,
自己找一下吧。
你这个东西是很容易实现的,不过情自己考虑法律责任。
 
为了防止IP被封锁,有一个简单之方法:
找几个http代理服务器
然后轮流使用这几个代理服务器来
连接欲破解的网站
或者使用IP数据报伪造的方法,自己研究吧
 
to bete 是用VB写得嘛???????????????
你写得出嘛??
怎么到处都是高分低能的家伙!
 
如果对线程技术很熟练的话,多线程封装技术很简单的,
有一整套完整的架构,往里面安模式套就是了,
熟练的话,30分钟搞定……
 
经过试验,只要
procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket1.Port := 80;
ClientSocket1.Address := '161.52.9.211';
//目标站点IP
ClientSocket1.Active := True;
1 ClientSocket1.Socket.SendText('HEAD /login.asp HTTP/1.1'+#13#10);
2 ClientSocket1.Socket.SendText('Host: 161.52.9.211'+#13#10);
//此处的IP随便写都行
3 ClientSocket1.Socket.SendText(#13#10);
end;
即可实现一次发送,在Telnet下发送123命令首先通过,然后在delphi下通过。
令人不解的是:首次发送命令,ClientSocket1Read不触发,以后就正常了。
>>duducat:如果直接使用API,在功能实现上会比较麻烦吧?比如使用代理?
如果在每个线程内动态生成ClientSocket控件,是否会产生问题?
我使用“溯雪”时,尽管线程打开50个,但实际速度是4pass/秒。
>>yansh,CODEHUNTER: 如果使用Indy的类似控件,则代理的问题好解决。ClientSocket
我不知道怎么办。
>>beta:写软件是不违反法的,用软件才可能要负法律责任。比如DeCSS的作者。
就像生产菜刀的人和拿菜刀砍人是两个问题一样。

欢迎大家一起来讨论、完善。
 
duducat 请说话注意,谁说我写不出来?高分是放在那里的事实,
不过是否低能不是你随便乱说的。
to 脸盆二代:菜刀可以切菜,你这个东西有正当用途吗?
 
>> beta
"正当用途" 应该怎么理解?
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部