怎么用 javascript asp 实现小偷程序?

怎么用 javascript asp 实现小偷程序?,第1张

虽然js也能实现所谓的小偷程序,但是还是在服务端实现比较好,防止客户端因为关闭了js导致网页无法显示。由于你只会asp,因此我就用asp来解释一下。

一.什么是网页?

网页是代码,其实是一种文档格式。是浏览器把这种格式的文档解释成机器能够听懂的语言。

二.我们拿在淘宝购物来做个比喻

1.在淘宝购物,我们首先要选定要购买的物品,这个物品就相当于url,也就是你想要的东西(目标网页)。

2.指定包装和送货方式.是不是易碎品需要海绵包装,运输方式是快递还是平邮。我们在这里选择的送货方式就是xmlhttp。为什么选择是xmlhttp?这是因为了你所要运输的物品性质决定了的。你所要运送的物品时xml格式的文档(注意,网页代码其实是一种符合xml格式的文档,由浏览器负责解释这种文档),所以我们指定了是包装xml这种格式的http运输方式。而有这种包装的快递运输公司名叫microsoft.xmlhttp

http=Server.createobject("Microsoft.XMLHTTP") //选择快递公司

Http.open "GET",url,false //运输细节

Http.send()//下订单

3.网上买过东西的都知道,发货有几种状态可以在快递公司查询:发出货物,在途中,收到货物。而我们发送的xmlhttp包装的货物也接受这种状态的查询。

Http.readystate 货物状态,有4种状态,通常用的是第一种状态“已发出”,还有第四种状态“已收到”,readystate的值前者为1,后者为4.

也就是说当Http.readystate=4时说明网页已经下载好了(货物送到家了)

4.假如收到货物后,还要查验是不是符合自己的需要。因为xmlhttp传送的内容如果包含中文显示还会乱码,所以要进行转码工作。

这里有一点要注意,因为要转码,需要返回的是二进制数据,而不是dom对象。因此这里的要写成"Http.responseBody"而不是"Http.responseXml"

5.转码可以用adodb.stream组件的方法来完成。我们可以写一个函数来封装这个组件。

Function bytesToBstr(body,Cset)

dim objstream

set objstream = Server.CreateObject("adodb.stream") //创建组件实例

objstream.Type = 1

objstream.Mode =3

objstream.Open

objstream.Write body //写入内容,也就是你收到的货物

objstream.Position = 0

objstream.Type = 2

objstream.Charset = Cset

BytesToBstr = objstream.ReadText

objstream.Close

set objstream = nothing

End Function

这里我们写了一个bytesToBstr函数,注意bytesToBstr的大小写,因为网上面很多例子第一个B是大写,调用的时候却又是小写,虽然在大小写不敏感的asp里无所谓,但是这是一种很不好的编程习惯,因为其他大多数编程语言都是大小写敏感的。

getHTTPPage=bytesToBSTR(Http.responseBody,"GB2312") 调用函数转码

set http=nothing 关闭xmlhttp链接,相当于签收付款,关闭交易

Microsoft.XMLHTTP是一个微软家的组件,因为你用的IIS服务和IE浏览器都是微软家的,所以才会见到Microsoft.XMLHTTP。如果用其他浏览器,那么就有可能是document.xmlHttp. 2者从本质上来说没什么区别,只是在服务端和客户端使用时要注意同步和异步的问题。

应该是利用文本流的方式,创建了一个变量名为Body的对象,然后将读取到的数据Cset,写入到了这个Body对象中.

如果这段是木马中的代码的话,那么很显然,还有某个地方在调用这段代码读取服务器上的某些数据。

----------------------------

补充回答:

楼主,你问的问题是不是“代码中的什么地方,在与外界的服务器通信?”如果是这个问题,那很简单呀,就是你给出的代码的这段:

function getHTTPPage(url)

dim Http

set Http=server.createobject("Microsoft.XMLHTTP")

Http.open "GET",url,false

Http.send()

if Http.readystate<>4 then

exit function

其中:

1、url,就是目标网站的地址

2、set Http=server.createobject("Microsoft.XMLHTTP") ,是创建了一个 Http对象,这个对象用于与外界网站通信;

3、Http.open "GET",url,false ,是利用Http对象的Open方法,打开url地址;

4、Http.send() ,是将连接信息发出去;

5、if Http.readystate<>4 then :如果返回的消息代码不等于4,则说明反回的内容不完整,或者返回的内容出错了;

6、exit function,既然出错了,当然就跳出function

没有出错,才执行下面:

7、getHTTPPage=bytesToBSTR(Http.responseBody,"utf-8") '注意WAP网页用utf-8,WEB用gb2312''这是设置在保存对方网站内容时,所使用的编码方式,多半都用的是utf-8,但ASP环境下,utf-8容易出现乱码,建议就用gb2312!

set http=nothing关闭Http对象

你代码中,应该还有一段,是当 Http.readystate=4时,也就是说,与外界网站通信完成,并正常返回了数据之时,这个时候,就要执行“保存”的 *** 作,当然就是将对方网站上的内容,保存到你本地上来了。这段代码应该就调用了:

Function BytesToBstr(body,Cset)

dim objstream

set objstream = Server.CreateObject("adodb.stream")

objstream.Type = 1

objstream.Mode =3

objstream.Open

objstream.Write body

objstream.Position = 0

objstream.Type = 2

objstream.Charset = Cset

BytesToBstr = objstream.ReadText

objstream.Close

set objstream = nothing

End Function

上面我已经回答过你了,adodb.stream就是文本流,用这个对象,将你取得的数据,保存到了你本地的计算机上。

这次,应该回答得很详细了吧?!

估计你的代码不太全,解密如下:

<%@ LANGUAGE = VBScript.Encode %><!--#include file="sql.asp"--><!--#include file="Config.asp"--><!--#include file="Cache.asp"--><%dim content,myCache

Set myCache = new cls_Cache

myCache.name="www.1qq2.com.cn 百度视频小偷程序"

if myCache.valid then

content=myCache.value

else

On Error Resume Next

Server.ScriptTimeOut=9999999

Function getHTTPPage(Path)

t = GetBody(Path)

getHTTPPage=BytesToBstr(t,"GB2312")

End function

Function GetBody(url)

on error resume next

Set Retrieval = CreateObject("M"&"icr"&"os"&"o"&"ft.X"&"ML"&"H"&"TT"&"P")

With Retrieval

.Open "Get", url, False, "", ""

.Send

GetBody = .ResponseBody

End With

Set Retrieval = Nothing

End Function

Function BytesToBstr(body,Cset)

dim objstream

set objstream = Server.CreateObject("a"&"d"&"od"&"b.s"&"tr"&"ea"&"m")

objstream.Type = 1

objstream.Mode =3

objstream.Open

objstream.Write body

objstream.Position = 0

objstream.Type = 2

objstream.Charset = Cset

BytesToBstr = objstream.ReadText

objstream.Close

set objstream = nothing

End Function

Function Newstring(wstr,strng)

Newstring=Instr(lcase(wstr),lcase(strng))

if Newstring<=0 then Newstring=Len(wstr)

End Function

Dim wstr,str,url,start,over

url="http://vbaidu.1qq2.info/vbaidu.asp"

wstr=getHTTPPage(url)

start=Newstri-g(wstr,"<div id=""content_1")

over=Newstring(wstr,"<!--content-->")

body=mid(wstr,start,over-start)

content=body

if content = "" then

tms="1"

else

tms="180"

end if

myCache.add content,dateadd("n",tms,now)

end if

set clsCacheAA==^#~@%>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8072895.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存