黑客风云——风云网络
设为首页 加入收藏 我要投稿 网站地图

您现在的位置: 黑客风云 >> 黑客文章 >> 网管频道 >> 网站建设 >> 正文
·没有路由密码权限时的鸽08-23·上网安全 Vista自我防范10-11
·让濒临崩溃的Windows XP10-11·有备无患,快速自制救急10-11
·要你好看!Windows看图工10-11·空间赞助网提供不同类型10-11
·讨论net.exe和net1.exe的10-10·让3389远程桌面传输更通10-10
·巧妙入侵渗透赌博站10-10·Aspx空间扫权限工具10-10
·Windows2003最新提权工具10-10·易淘乐提供100M免费全能10-10
·系统开机密码忘了不着急10-09·中意网络提供免费100M免10-09
·与众不同 Windows XP开始10-08·让桌面图标翻跟斗 在XP上10-08
·上海宽元站长资助计划-提10-08·个性化Windows XP的任务10-07
·趣盘提供3G免费网络硬盘10-07·秀山热线提供200MB免费全10-07
·一次艰辛的提权过程10-06·成功入侵IT大卖场的渗透10-06
·mysqlhack- MYSQL利用工10-06·lanker一句话PHP后门客户10-06
·WIXI提供3G免费多媒体网10-06·新人网络提供100M/ftp免10-06
·如何利用QQ带来高流量10-05·UuShare提供免费网络文件10-05
[推荐]用VB.net和ASP.net实现Whois.aspx查询系统
      ★★★★

用VB.net和ASP.net实现Whois.aspx查询系统

文章整理发布:黑客风云 文章来源:www.05112.com 更新时间:2006-4-4 9:34:47
你想知道是谁在攻击你吗?你想知道网站的所有者吗?你想进行旁注攻击吗?这一切可以用一个工具轻松搞定----whois查询。(先吹下)今天我将让你看怎样实现所谓WHOIS,用 vb.net 和ASP.NET 书写Whois.Aspx 查询系统,来简单实现whois查询的功能,希望能够抛砖引玉。

关于WHOIS
WHOIS 既是一种协议,也是一种服务,使用 WHOIS ,就能透过 Internet 查询域名可用性,或者查明谁拥有这个域名,获知该域的已注册拥有者的信息 (包括姓名、地址、联系信息等等),那我们就来看看如何在 .NET 框架中实现WHOIS 。
一般来说,每当你做WHOIS 查找时,你询问登记信息被保存的某种数据库。 不过,WHOIS 数据库没被集中,因此实际域记录一般不可以从一台单个的WHOIS服务器中获得(记录域名的组织管理WHOIS服务器)。
通常,WHOIS服务器在43 端口上通过TCP 接受连接,因此如果我们使用这个端口,我们就能与服务器联系。我有一份WHOIS服务器的详细一览表,请访问http://wmjie.51.net/swords/blog/index.php?action=show&id=104

导入.NET 名字空间
.Net framework 提供了一个TcpClient 类 (System.Net.Sockets namespace), 属于 System.Net.Sockets 名称空间,TcpClient 类对 TCP 操作进行了抽象化,因而通过指定的 TCP 43端口建立连接、发送 TCP 请求和获取 TCP 返回值等操作都被简化了。用它我们就可以来连接 WHOIS 服务器直接获取域名注册信息。
首先我们需要用 Imports 语句导入 System,,System.Net,System.IO 和System.Net.Sockets名字空间:

<% @Import Namespace=System %>
<% @Import Namespace=System.Net %>
<% @Import Namespace=System.IO %>
<% @Import Namespace=System.Net.Sockets %>

连接whois服务器
TcpClient 类提供了连接connecting,发送 sending和接受receiving数据的方法,有两种方法可以连接远程服务器:
法一:初始化一个无参数的TcpClient类,然后再提供主机名和端口用Connect方法 连接
Dim WhoIsClient As New TcpClient()
WhoIsClient.Connect(request.form("WhoisServer"), 43)
法二:直接用主机名和端口初始化TcpClient,这样会进行自动化连接:
Dim WhoIsClient = new TcpClient (request.form("WhoisServer"), 43)

开始发出查询
在我们已经成功连接WHOIS服务器之后,下一步将送出我们的域名查询。
首先我们定义一个字符串变量Hostname,它接受我们想要查的域名。注意,我们一定要在末尾加上 vbcrlf ,因为那是WHOIS服务器期望的形式(如果不加vbcrlf,相当于回车,则会进入假死状态.如果用c#编写,一定要在末尾加"\r\n";)
Dim Hostname as string
Hostname=request.form("domainname") & vbcrlf
我们将使用GetStream 方法获得一个NetworkStream 对象(来自System.NET 名称空间),它用来在connected socket:接受和发送数据.
Dim WhoIsStream As NetworkStream
WhoIsStream = WhoIsClient.GetStream()
然后我们就可以初始化一个StreamWriter(来自System.IO 名称空间),它用来把Hostname查询字符串写入whois 查询服务器.然后用flush方法刷新缓冲区.
WhoIsWriter = New StreamWriter(WhoIsStream)
WhoIsWriter.Write(Hostname)
WhoIsWriter.Flush()

取回服务器反应数据
得到WHOIS服务器反应的方法之一StreamReader方法,它有两个参数,第一个参数是WhoIsClient.GetStream()返回的NetworkStream对象,第二个参数是编码方式,在vb.net里我们可以省略。
Dim WhoIsReader As StreamReader
WhoIsReader = New StreamReader(WhoIsStream)

steamreader取得反馈信息的方法有三种:
read:一次读取一个字符
readline:读取字符直到行尾
readtoend:读取字符直到流结尾
为了方便处理数据,我们选用第二种方法readline,此时我我们用peek()
方法判断是否到了流结尾,注意:peek()方法度取下以自负,但并不将其返回。
我们可以用一个web服务器控件label(id="lblResponse")来显示获取的数据。
while whoisreader.peek() > -1
lblResponse.text+=server.HTMLEncode(WhoIsReader.ReadLine) & "<br>"
end while
最后关闭到NetworkStream 流和到whois服务器的tcp连接。
WhoIsStream.Close()
WhoIsClient.Close()

[1] [2] 下一页

文章录入:cainiaowang    责任编辑:cainiaowang 
【字体:
Copyright @2006 黑客风云 ●业务联系:QQ 联系怪人 联系奇人 Email:给怪人发邮件 给奇人发邮件
ICP备案:冀06009886