急:ASP 获取用户的ip端口

急:ASP 获取用户的ip端口,第1张

<%

response.write Request.ServerVariables("REMOTE_ADDR")'获取IP 地址

response.write "<br>"

response.write Request.ServerVariables("REMOTE_PORT")'获取端口

%>

晕,我想楼主是不是没弄清楚HTTP协议?HTTP协议是一种无状态协议,也就是说这次浏览时IE打开的是这个端口,但网页一旦下载,链接即被关闭,即下次再打开时端口也就变了,要区分局域网里的每台机子可以使用Session,因为SessionID因是保存在COOKIE里的,IIS为每个浏览者生成的SessionID都不一样,所以它是唯一的,可以用于区分每个不同的用户。

Session.SessionID返回当前浏览者的SessionID,可以设置COOKIE,把COOKIE的有效期设置一年,只要客户端用户不清除COOKIE,那么COOKIE就一直有效,对于IP,目前绝大多数都是动态IP,所以要长期用它来验证客户端身份不现实,也很难实现,而大多数都是用COOKIE来完成,自己生成一个唯一的编号,然后保存到客户Cookie中

操作系统:

<%=Request.ServerVariables("OS")%>

服务器名称:

<%=Request.ServerVariables("SERVER_NAME")%>

服务器IP:

<%=Request.ServerVariables("LOCAL_ADDR")%>

CPU数量:

<%=Request.ServerVariables("NUMBER_OF_PROCESSORS")%>个

服务端口:

<%=Request.ServerVariables("SERVER_PORT")%>

Webserver及版本:

<%=Request.ServerVariables("SERVER_SOFTWARE")%>

脚本解释引擎:

<%=ScriptEngine &"/"&ScriptEngineMajorVersion &"."&ScriptEngineMinorVersion&"."&ScriptEngineBuildVersion %>

服务协议及版本:

<%=Request.ServerVariables("SERVER_PROTOCOL")%>

脚本超时时间:

<%=Server.ScriptTimeout%>秒

网站物理路径:

<%=request.ServerVariables("APPL_PHYSICAL_PATH")%>

<%

Dim BrowseMsg,BrowseVersion,SystemVersion

BrowseMsg=Request.ServerVariables("HTTP_USER_AGENT")

'+++++++++++一个基本判别操作系统的函数+++++++++++

Function SystemCheck()

if inStr(BrowseMsg,"Windows 98") then

SystemCheck="Windows 98"

else if inStr(BrowseMsg,"Windows NT 4.0") then

SystemCheck="Windows NT 4.0"

else if inStr(BrowseMsg,"Windows NT 5.0") then

SystemCheck="Windows NT 2000"

else

SystemCheck="未知类型"

end if

end if

end if

end Function

'由于时间的原因我没有写判定win95和windows xp的语句,感兴趣的网友可以

'自行添加:)

'+++++++++++结束+++++++++++

if inStr(BrowseMsg,"MSIE") then

SystemVersion=CInt(Mid(BrowseMsg,inStr(BrowseMsg,"MSIE")+5,1))

response.write "您的浏览器的版本是 IE"&BrowseVersion&"<BR>"

response.write "您的操作系统是 "&SystemCheck()

end if

%>

用ASP久了,就会感到有个很郁闷的地方:ASP不像其他脚本语言那样能访问Socket。所以或许你用过PHP、Perl等实现的端口扫描器,惟独没见过ASP的。嘿嘿,所以今天本文的目的就是利用“曲线救国”的策略实现ASP端口扫描器。Only for enjoy!

所谓曲线,呵呵,当然是利用其他的访问网络的组件,那么ASP有哪些组件可以访问网络呢?

第一个很容易想到,对,就是XMLHTTP。这个组件是以HTTP协议访问网络,当然可以用作端口扫描。但存在一个很难解决的问题:如果某端口打开且不是HTTP端口,那么XMLHTTP将会一直挂起,执着的等待返回HTTP数据。扫描就不能进行下去了。只好排除这个“曲线”了。

第二个组件也就是我们要利用的,嘿嘿,很常见哦,服务器上都有的,那就是ADODB.Connection。这个组件就是用于进行数据库连接的。当数据库是MSSQL的时候,Web Server就会访问SQL Server的1433端口……对,就是这里了,只要我们改动端口号,再根据返回的错误描述就可以判断该端口的状态。

下面是一个普通的连接MSSQL的字符串例子:

Provider=SQLOLEDB.1Data Source=127.0.0.1User ID=saPassword=

默认情况下端口是1433,下面是自己定义端口为1444的例子:

Provider=SQLOLEDB.1Data Source=127.0.0.1,1444User ID=saPassword=

根据端口的状态将得到几种结果:

端口开放且非SQL端口 ·[ConnectionOpen (PreLoginHandshake()).]一般性网络错误。请检查网络文档。

端口开放且为SQL端口 ·不返回错误(用户名密码正确)或者用户’sa’登陆失败(用户名密码不正确)

端口关闭 ·[ConnectionOpen (Connect()).]SQL Server 不存在或拒绝访问

呵呵,现在就好办了,只需要判断一下Error.Description就搞定。为了提高扫描速度,需要把Connection的ConnectionTimeout属性设为1,废话了,呵呵,具体看代码就是。

经过测试,lake2版ASP端口扫描器速度一般,就相当于一个单线程的扫描器。但是由于其脚本特性,在webshell上或许比其他类型的扫描器有更高的价值哦^_^


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/328636.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存