2007年4月6日星期五

Access 2003的密码深入浅出

Access 2003的密码深入浅出
 

Microsoft Office Access 2003已经面试很久了,相关的解密程序也早就面试了。我用过一些,界面很好,很人性化。对密码的读取也是很方便的,这些都是我们应该学习的地方。今天我写着篇文章主要是让大家在使用的基础上更加了解Access数据库密码读取软件的原理。希望大家多多的指教。

下面我们开始。

Microsoft Office Access 2003 的密码存储的地方和过去的版本并不太一样,但是变动不是很大。

以前是从第63位开始顺序和字符串作异或,密码最大为13位,可是现在的Microsoft Office Access 2003的密码长度为20位,看上去密码比过去更加难以破解,其实不然,这次加密非常简单,大家往下看。

下面是access的头用二进制编辑器打开以后的二进制码。

以散列保存的,我们先来看一下没有家密码的头。

         00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

00000000:00 01 00 00 53 74 61 6E 64 61 72 64 20 4A 65 74

00000010:20 44 42 00 01 00 00 00 B5 6E 03 62 60 09 C2 55

00000020:E9 A9 67 72 40 3F 00 9C 7E 9F 90 FF 85 9A 31 C5

00000030:79 BA ED 30 BC DF CC 9D 63 D9 E4 C3 D3 41 FB 8A

00000040:BC 4E B1 68 EC 37 6A D7 9C FA F1 CD 28 E6 24 25

00000050:8A 60 63 07 7B 36 C2 E1 DF B1 40 67 13 43 F8 3C

00000060:B1 33 03 F2 79 5B A5 26 7C 2A 4F E9 7C 99 05 13

00000070:98 FD 63 40 F3 4E 9B 58 82 66 5F 95 F8 D0 89 24

00000080:85 67 C6 1F 27 44 D2 EE CF 65 ED FF 07 C7 46 A1

00000090:78 16 0C ED E9 2D 62 D4 54 06 00 00 34 2E 30 00

看到了吗用红色标出来的是未加密的字符串,在往下看

         00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

00000000:00 01 00 00 53 74 61 6E 64 61 72 64 20 4A 65 74

00000010:20 44 42 00 01 00 00 00 B5 6E 03 62 60 09 C2 55

00000020:E9 A9 67 72 40 3F 00 9C 7E 9F 90 FF 85 9A 31 C5

00000030:79 BA ED 30 BC DF CC 9D 63 D9 E4 C3 D3 41 FB 8A

00000040:BC 4E 80 68 DE 37 59 D7 A8 FA C4 CD 1E E6 13 25

00000050:B2 60 5A 07 4B 36 F3 E1 ED B1 73 67 27 43 CD 3C

00000060:87 33 34 F2 41 5B 9C 26 4C 2A 4F E9 7C 99 05 13

00000070:98 FD 63 40 F3 4E 9B 58 82 66 5F 95 F8 D0 89 24

00000080:85 67 C6 1F 27 44 D2 EE CF 65 ED FF 07 C7 46 A1

00000090:78 16 0C ED E9 2D 62 D4 54 06 00 00 34 2E 30 00

以上这个是加密过的头,用红色标出来的是密码存放的位置,剩下的问题就简单了,我们开始看一下是如何加密的。

用户输入的密码,从第一位和红字

第一位做ASC11异或,在放回红字第一位,解密只需把加密过的16近制字符和红字做异或即可。

下面我们写一个简单的程序来做一下解密

/////////////////////////////////

//  ----小松----

/////////////////////////////////

#include <stdio.h>

#include <tchar.h>

 

int _tmain(void)

{

     char passwd_n[20] = {0xB1, 0xEC, 0x6A, 0x9C, 0xF1,

                          0x28, 0x24, 0x8A, 0x63, 0x7B,

                          0xc2, 0xDF, 0x40, 0x13, 0xF8,

                          0xB1, 0x03, 0x79, 0xA5, 0x7C,};    //未加密

 

     char passwd_y[20] = {0x80, 0xDE, 0x59, 0xA8, 0xC4,

                          0x1E, 0x13, 0xB2, 0x5A, 0x4B,

                           0xF3, 0xED, 0x73, 0x27, 0xCD,

                           0x87, 0x34, 0x41, 0x9C, 0x4C};    //已加密

 

     for(int i = 0; i < 20; i++)

     {

          printf("%C,", passwd_n[i]^passwd_y[i]);

     }

}

上面这个简单的程序完成了密码的读取,大家如果有兴趣可以自己尝试。

 

Access 密码破解原理- -

 今天风雨无阻告知偶ACCESS数据库的密码极容易被破,使用网上流行的工具,不管你的密码多少位很快就能被破出来。偶原以为ACCESS与WORD EXCEL一样,作为MS OFFICE的套件,一样采用DES加密,非破暴力破解不可。密码倍数越长越难破。结果,一试,果然很快被破出来。

    经查询,原来ACCESS加密过于简单。如下:
    在库文件的地址00000042处开始的40个字节是Access 2000库的密码位。如果一个未加密的库,这40个字节原始数据依次为:29 77 EC 37 F2 C8 9C FA 69 D2 28 E6 BC 3A 8A 60 FB 18 7B 36 5A FE DF B1 D8 78 13 43 60 23 B1 33 9B ED 79 5B 3D 33 3D 39 7C 2A 。当你给数据库设置了密码后,这40个字节就变成了密钥。因此,要破解密码而不需保持原库的密码,只要将00000042 处开始的40个字节还原成原始数据就行了,从而跳过口令。
另外,当你设置了密码后,Access 2000 就将你的密码的ASCII码与以上的40个字节数据进行异或操作,因此,从库文件的地址00000042开始的40个字节就变成了密钥了。例如,如果你设置的密码为12345678901234567890(注意:最多只能设20个ASCII字符),经过异或操作后,则从00000042处开始的40个字节的数据就变成了 18 77 DE 37 C1 C8 A8 FA 5C D2 1E E6 8B 3A B2 60 C2 18 4B 36 6B FE ED B1 EB 78 27 43 55 23 87 33 AC ED 41 5B 04 39 4C 2A 。大家都知道,一个数据经过一次异或操作后,再一次经过同样的异或操作就可还原了。因此,对已经设置了密码的Access 2000库,只要将40个密钥数据与原始的40个数据进行一次异或操作就可得到密码了。
    最后,要注意的是,由于ACCESS 2000对每个密码字符采用双字节表示,故40个字节原始数据可依次分为20组,每组代表一个密码字符,进行异或操作的是每组的第一个字节,第二个字节不变。

2007年4月5日星期四

微软RFID开发服务平台技术简介

RFID介绍
RFID作为世界先进的无线射频识别技术,为越来越多行业所重视。RF代表是射频技术,以无线电波为载体来传播数据;ID则代表标识编码,能够用足够长的位数来实现对单个产品的全球唯一标识。因此RFID技术可用于全球数据交换,并可贯穿产品的整个生命周期。随着标签价格的飞速降低,RFID的商机一触即发。据Gartner 预测,全球RFID产值2005年已达5.04亿美元,预计到2010年将达到30亿美元。在中国,以政府为主导,以闭环应用为主体的商业应用日益广泛,例如高速公路,停车场,保真,防伪,票务,身份证,文件管理等众多领域率先采用了该技术。许多RFID的应用已经带来了可观的商业投资回报,例如,中国铁路车辆RFID管理系统,为国家提高43%的收入,达3.4亿人民币/年;又如全球知名的沃尔玛在应用了RFID技术后,供货周期以及空架缺货率平均降低了30%,特别是如果该件产品每天销售超过15件以上的时候,RFID的应用能够使空架缺货率降低62%

但是RFID技术也存在挑战与瓶颈。如多种国际标准并存;软硬件设备兼容;标签、设备、流程更新成本高;缺乏有效的解决方案等。基于RFID技术现状,微软公司将推出微软RFID开发服务平台产品,与软硬件合作伙伴共同帮助中国客户轻松实现RFID开发应用。

微软RFID开发服务平台定义
Microsoft RFID Infrastructure 的中文译名(暂定)是微软RFID开发服务平台。因为本产品不仅提供了常见的中间件或者边缘件的功能,而且提供了更强大的运行时商业管理功能和多层次开放的编程模式,并提供了一系列的相对应的工具和组件,从而为RFID 解决方案的成功实施在性能、安全、可扩展性、可靠性等方面提供保证。微软从2003年开始着手开发本产品,将于2006年下半年推出这个产品。
 
微软RFID开发服务平台架构
微软RFID开发服务平台采取五层的逻辑架构。从下往上依次是:设备层、数据采集与管理层、事件管理层、服务层、应用方案解决层。层次结构图如下图所示:

微软RFID开发服务平台集中实现了1到3层的功能,其逻辑结构图如下图:


主要特点
1.      开放式接口
微软RFID开发服务平台提供了基于XML标准和Web Services的开放式接口,方便软硬件合作伙伴在本平台上进行开发、应用、集成。
-        DSPI (设备提供程序应用接口)是微软和全球四十家RFID硬件合作伙伴制定的一套标准接口。所有支持DSPI的各种(RFID、条码、IC 卡等)设备在Microsoft Windows 上即插即用。
-        对于软件合作伙伴,微软RFID开发服务平台提供了OM/API's (对象模型/应用程序访问接口),这是为上层的各类软件解决方案服务的。OM/API's可以使用各种Managed Code(比如C#.Net、VB.Net等)来实现,也可以使用现成的适配器(不需要编码,通过简单配置)来实现。
-        平台也提供了编码/解码器的插件接口,不管将来 RFID标签采用何种编码标准,都可以非常方便的接入到解决方案中来。
 
2.      事件处理引擎
微软RFID开发服务平台中的事件处理引擎能够帮助软件开发人员不再关注具体的设备类型和设备通信协议,系统会把读取到的数据详细信息以事件被触发的方式传递给接口实现程序。
 
3.      业务规则引擎
RFID服务开发平台内置了业务规则引擎。每一条规则通过?#20107;件-条件-行动(ECA)?#32452;织而成。规则引擎把易改变的商业逻辑独立出来,在需求变化的时候不需要改变源代码,使RFID解决方案具有随需定制的高度可扩展性的特点。
 
4.      RFID应用开发全周期支持
本产品在系统设计、实现、测试、部署和运营阶段提供支持。比如设备模拟程序、实时设备状态监控、设备属性配置、数据列表查询、部署安装向导等功能。
 
5.      良好的可集成性
作为微软的一个平台级软件,微软RFID开发服务平台不仅能够和微软的其他产品进行良好的集成,而且也能和其他产品进行良好的集成。
 
合作伙伴
1.      独立硬件生产商(IHV)
IHV需要实现DSPI ,要做的工作非常简单。DSPI开发人员根据示例代码就可以很方便的写出DSPI的实现,具体要做的工作主要就是处理DSPI标准命令接口和具体设备指令之间的转换。做到了这些就能够实现硬件设备的即插即用。
 
2.      软件开发商或系统集成商(ISV/SI)
则可以非常方便地调用平台提供的OM/APIs来实现自己的RFID解决方案。这样做的好处是编码量很少,只需要几行代码就可以实现,开发人员可以不需要知道任何底层设备的通讯和协议等细节。另外,开发人员也可以采取已经实现的一些Adapter,不需要任何代码,就可以很方便地从数据库或MS Message Queue获取到标签数据。
 
意义
综上所述,微软RFID开发服务平台能够帮助客户有效地应对RFID在应用过程中的挑战与瓶颈,保护客户的投资;降低RFID的技术门槛,提高RFID解决方案的成功率和回报率,提高合作伙伴的市场竞争能力;构建互利共赢的生态环境。

2007年4月3日星期二

联系方式

成功完成多个项目

具体的需求可以详谈。
联系方式:
mailto:newbetterman@gmail.com
个人介绍:http://newbetterman.googlepages.com

2007年4月2日星期一

安装 PHP 应用程序服务器 (Windows)

若要处理动态 Web 页,您需要应用程序服务器。应用程序服务器是一种软件,它帮助 Web 服务器处理包含服务器端脚本或标签的 Web 页。当浏览器请求这样一个页时,Web 服务器先将该页传递给应用程序服务器进行处理,然后再发送到浏览器。有关更多信息,请参见了解 Web 应用程序

确保运行 IIS 的系统上安装了 PHP 应用程序服务器并且正在运行。(IIS 可能位于您的硬盘或远程 Windows 计算机上。)您可以从 PHP Web 站点(网址为 www.php.net/downloads.php)下载并安装 PHP 应用程序服务器。

在 PHP 5 中,默认情况下,Windows 安装程序并未安装或启用允许 PHP 处理 MySQL 数据库服务器的扩展。您必须手动安装并启用该扩展。

若要在 Windows 系统上安装 PHP 5,请执行以下操作:

  1. 如果可行,使用管理员帐户登录到 Windows 系统。
  2. 从 PHP Web 站点 www.php.net/downloads.php 下载 Windows PHP 5.x 安装程序。
  3. 双击下载的安装程序文件,并按照屏幕上的安装说明进行操作。
  4. 成功安装 PHP 后,从 PHP Web 站点 www.php.net/downloads.php 下载 Windows PHP 5.x 压缩包,然后将该包解压缩到您硬盘上的临时文件夹中。

    该压缩包包含处理 MySQL 所需的扩展。

  5. 在包含解压缩后的文件的临时文件夹中,找到名为 ext 的文件夹,并将其复制到 C:\PHP\ 文件夹中。

    该 ext 文件夹包含常用 PHP 扩展,包括 MySQL 扩展。

  6. 在 C:\Windows 文件夹中,找到名为 php.ini 的文件(如果找不到,从临时文件夹中copy),并在记事本中打开该文件。

    必须编辑该文件以启用 MySQL 扩展。

  7. 在 php.ini 文件中找到以下行:

    extension_dir = "./"

    该行指定 PHP 查找扩展的位置。

  8. 编辑该行,如下所示:

    extension_dir = "C:\PHP\ext\"

  9. 在 php.ini 文件中找到以下行:

    ;extension=php_mysql.dll

    该行开始的分号 (;) 指示 PHP 忽略该行。

  10. 删除该行开始的分号以启用扩展。

    extension=php_mysql.dll

  11. 保存并关闭 php.ini 文件。
  12. 在包含解压缩后的 PHP 文件的临时文件夹中,找到名为 libmysql.dll 的文件,并将其复制到 C:\Windows\system32 文件夹中。

    IIS 处理 PHP 5 和 MySQL 需要该文件。

  13. 重新启动 IIS。

关启用 MySQL 扩展的更多信息,请访问 PHP Web 站点 www.php.net/manual/en/ref.mysql.php。有关应用程序服务器的更多信息,请参见 PHP 文档,您可以从 PHP Web 站点(网址为 www.php.net/download-docs.php)下载该文档。

安装了 PHP 之后,您可以测试服务器以确保它正常工作。(请参见测试 PHP 安装 (Windows)。)