KILL
:) =(
:) =(
解决方案 »
- DELPHI将图片保存到ORACLE下,二进制流保存到变量出现问题
- 怎样把从服务器端下载的AxtiveXform程序插件中的数据库组件ADOConnection连接到远程服务器端的SQL Server数据库上?
- 如何改变滚动条的颜色?
- 请问Delphi中有类似与C中的宏定义吗?谢谢!
- integer()是作什么用的?
- 为何他人电脑上运行我的程序不能调用数据库?
- 如果我有Delphi的原代码你准备出多少钱?
- 关于程序移植的问题,有高分哦!
- 在dbgrid中如何显示memo型字段的内容?
- 类似win98风格工具栏的平面按钮
- 统计数组长度的函数是???
- 放假前还有一个问题,报表打印前,如何检查是否安装打印机?
不需要自己加代码,不过我不知道QQ加了没
你想用刀还是大鸟,还是M4或是AK47???
实际上目前所有的oicq探测方法都一样,发送一个oicq消息给对方,凭借oicq
的返回信息来判断对方的oicq号码,具体的delphi实现如下:
nmudp1是ics控件包的udp控件。 nmudp1.reportlevel := status_basic;
nmudp1.remotehost := edit1.text;
nmudp1.remoteport := 4000; udptmpstr :=#$02 +#$03 +#$0a +#$00 +#$78 +#13 +#$a
+ '88888' +#$1f +#$30 +#$1f + #$33 + #$39 +#$1f
+formatdatetime('yyyy-mm-dd',now)
+#$1f
+formatdatetime('hh:mm:ss',now)
+#$1f
+ '你正在被某位朋友查询。他使用了追捕这个工具软件(http://www.zhuibu.com/)进行探测,此oicq号码已经被反馈给对方。'
+ '信息所提示的oicq号码为虚假号码,但可以即时回复。' + #$03; if oicqcheck.checked then begin
for sendudpnum:=1 to 10 do begin
mystream := tmemorystream.create;
try
mystream.write(udptmpstr[1], length(udptmpstr));
nmudp1.sendstream(mystream);
finally
mystream.free;
end;
end;
end; 追捕是怎样得到检测结果的呢?下面是具体实现的程序段:
mystream := tmemorystream.create;
try
nmudp1.readstream(mystream);
setlength(tmpstr,numberbytes);
mystream.read(tmpstr[1],numberbytes);
finally
mystream.free;
end;
j := pos( #$02 +#$02 +#$00 +#$00 , tmpstr);
k := pos( #$02 +#$03 +#$00 +#$00 , tmpstr);
m := pos( #$02 +#$03 +#$0a +#$00 , tmpstr);
o := pos( #$02 +#$03 +#$02 +#$00 , tmpstr); if (j=1) or (k=1) or (m=1) or (o=1) then begin
j := pos( #$02 +#$02 +#$00 +#$00 + 'y', tmpstr);
k := pos( #$02 +#$03 +#$00 +#$00 + 'y', tmpstr);
m := pos( #$02 +#$03 +#$0a +#$00 + 'y', tmpstr);
o := pos( #$02 +#$03 +#$02 +#$00 + 'y', tmpstr);
oicqver := '未知';
if j=1 then oicqver := '425';
if k=1 then oicqver := '725';
if m=1 then oicqver := '820';
if o=1 then oicqver := '810';
if (j=1) or (k=1) or (m=1) or (o=1) then begin
tmps := '';
for j:=1 to length(tmpstr) do begin
if tmpstr[j] in ['0'..'9'] then tmps := tmps + tmpstr[j];
end;
if tmps='0' then label2.caption := 'oicq处于关闭状态,版本:'+ oicqver
else label2.caption :='oicq号码为'+ tmps + ',版本:'+ oicqver;
end; j := pos( #$02 +#$02 +#$00 +#$00 + 'x', tmpstr);
k := pos( #$02 +#$03 +#$00 +#$00 + 'x', tmpstr);
m := pos( #$02 +#$03 +#$0a +#$00 + 'x', tmpstr);
o := pos( #$02 +#$03 +#$02 +#$00 + 'x', tmpstr);
if (j=1) or (k=1) or (m=1) or (o=1) then begin
j := 8;
tmpoicqnum := '';
while tmpstr[j]<>#$1f do begin
tmpoicqnum :=tmpoicqnum + tmpstr[j];
inc(j);
end;
j := j + 6;
while tmpstr[j]<>#$1f do begin
inc(j);
end;
j := j + 1;
while tmpstr[j]<>#$1f do begin
inc(j);
end;
j := j + 1;
tmpoicqmsg := '';
while tmpstr[j]<>#$03 do begin
tmpoicqmsg := tmpoicqmsg + tmpstr[j];
inc(j);
end;
if tmpoicqmsg<>lastoicqmessage then begin
lastoicqmessage := tmpoicqmsg;
messagebox(form1.handle, pchar('oicq用户' + tmpoicqnum + '对你的探测作出回应:' + #$0d + #$0a + tmpoicqmsg), '警告信息', mb_iconwarning +mb_ok);
end;
end;
exit;
end;