CharlesChen's Technical Space

简单实用是我一直在软件开发追求的目标(I Focus on. Net technology, to make the greatest efforts to enjoy the best of life.)
Not the best, only better
  博客园  :: 首页  :: 联系 :: 订阅 订阅  :: 管理

你见到过垄断主义的软件吗?

Posted on 2010-08-09 14:41  Charles Chen  阅读(3953)  评论(38编辑  收藏  举报

   问题:这样软件我是第一次碰到,垄断主义,现在分享给大家讨论讨论。下面就一一道来:

一、问题的起因

因我的电脑安装一套软件系统,整个软件的安装自带了SQL Server2000的安装。由于我本就已经装了SQL Server 2000,故直接安装软件。当安装软件完成并打开初始化软件数据后,我再通过SQL Server 2000的企业管理器进不去了(默认是用SA帐号登录),而且通过查询分析器输入SA用户名和密码提示我用户名密码不正确,我就纳闷了。我在安装软件之前都能用查询分析器,安装软件初始化之后就不能用SA登录了,难道我的SA的密码被篡改了。

二、问题的思考:

到底是不是我的SA的密码被更改了呢?我用Window集成身份认证也不能登陆。难道我的BUITIN\Administrators用户不存在了?怀着对问题的好奇心,没办法,我不能用企业管理登录进行查看用户信息,于是我只有重新卸载了软件和SQL Server 2000,重新来试一试。接着我先装SQL Server 2000,用户名SA密码设置为sa,考虑到万一系统真的更改SA的密码,我另外再新建立了一个用户test,安装成功后,数据库SQL Server 2000的登录用户如下图所示:

 

接着我再重新安装软件,并初始化系统:(注意我已经打开了SQL Server 2000的企业管理器,否则如果关了的话,就不能再打开了(见上))。另我吃惊的是,SQL Server 2000的登录用户结果变成下图所示:

把这个图和上面软件安装之前的那个图对比我们可以看到:我们以前的BUILTIN\Administrators已经被删除了,而且新建立的test用户也被删除了,还有为我添加了除SA用户以外的其他用户,密码我都不晓得什么是?而且SA的密码也肯定被篡改了。否则我在查询分析器里面用SA登录时候提示我密码不正确呢?到这里我们已经知道软件安装初始化数据时候软件在我们的数据库里面原来做了这么多的事情?怪不得我再重新打开SQL Server 2000的企业管理器和查询分析器都不能登陆呢?问题的原因是找到了,那么我们想一想我们有解决的办法吗?

三、问题的解决:

我这里想到了两种方法来解决:

一种方案是我再添加一个属于自己的登录用户(Charles2008),但是这个的前提是必须保证在企业管理打开的情况下或者查询分析器在打开的情况下才有效。

如果说企业管理器或者查询分析器都未打开,且BUILTIN\Adminstrators被删除,且SA的密码不知道的情况下,该怎么办呢?有人会说,那很容易,我重新安装SQL Server 2000ok,这样当然可以,但是如果你的SQL Server 2000里面包含有大量的数据库文件,你要想像一下你需要把相关的数据库文件备份出来,那是多么大的工作量啊。这里我再网络上寻找了另外一种解决方法,帮助我解决的问题,重新设置了SA密码。这里我就结合例子把过程详细写出来,供大家参考:

我们知道我们的SQL Server 2000的里面的Master数据库里的sysxlogins表就是保存用户名和密码的,如果我们可以对sysxlogins这张表的数据进行操作该多好.OK,当然可以实现,我们可以把master.mdfmaster.ldf两个文件拷贝出来,然后用其他的SQL Server 2000附件成其他的数据库名(MyMaster),这样一来,我们就能对它里面的表进行操作了,当然也就包括对syxlogins表进行读取和修改。如图所示

 

我们可以看到密码也是被加密的,我们同样也不知道SA的密码。但是我们可以对SA的用户名的密码进行修改(即进行Update操作)

 

SQL Server 2000给我们一个提示:“未启用对系统目录的特殊更新。系统管理员必须重新配置 SQL Server 以允许这种操作”。原来SQL Server 2000考虑到安全的因素,需要开启对系统表的修改权限。即用

sp_configure 'allow updates', 0 -- 此时不允许修改值

sp_configure 'allow updates', 1 --允许对系统表进行修改

RECONFIGURE WITH OVERRIDE -- 更新使用 sp_configure 系统存储过程更改的配置选项的当前配置对开启对系统表的更新操作后,我们重新执行上面的操作

 

再一次我们看看查询SysxLogins的结果,看看是否SA的密码已经被修改

 

最后把操作的那Master.sdfMaster.ldf两个文件覆盖到你最前面忘记密码的那台服务器的SQL路径的Data目录下,重新启动SQL Server 2000,用SA登录企业管理器和查询分析器,SA的密码已经是空了。

四、问题的总结:

   综上所述,就这么几步就实现了对SA密码的更改,的确是很简单就可以更改SA的密码。但是这个软件也太高名了,添加了十几个新用户,删除BUILTIN\Administrators,且修改SA的密码,你见到过这样的软件吗?至少我是第一次见到过这样的软件,佩服了!

   这个软件的安装对数据库太垄断了,即

1、删除SQL Server 2000所有已经存在的用户.

2、添加属于软件本身要求的多个用户名.

3、而且对SA的用户名的密码进行修改.

这样导致的结果是任何其他的软件和程序都不能再和它用同一个服务器的同一个数据库实例(不知道它更改的密码)

但是对我们开发而言,我们可以通过上面说的方法来帮我们对SA的密码清空(同样也可以新增用户)等。

即虽然它垄断,我们也有办法对付它。OK?

 

你对这个软件有什么看法呢?欢迎朋友们提出自己的意见!

 

版权说明

  本文属学习笔记,欢迎转载且注明文章出处,其版权归作者和博客园共有。  

  作      者:Charles Chen

 文章出处:http://charles2008.cnblogs.com/  或  http://www.cnblogs.com/