2007年11月11日

在线OCR识别网站(linux下可用)

说起文字识别(OCR),相像大家都不会对其陌生。利用该技术可以把图像上的文字转换成文字,省却重新输入的麻烦。但OCR软件较贵,现在我们只要能够接入网络,就可以免费获得此功能,心动了吗?
  “在线OCR识别网站”(http://www.netocr.com)使用的是清华大学电子系研制的国际领先的最新OCR识别技术,网站提供免费的文字识别服务,为使用传统文件扫描制作电子文件提供方便。
  一、注册账户
  在使用识别网站提供的服务之前,需要在其站点免费注册一个账户。打开网站单击首页上面的“注册”按钮,在注册页面中输入用户名、口令、提示问题、信箱等相关资料,完成后单击下面的“注册”按钮就可以注册成功了(如图1)。
attachments/200711/9004761091.jpg

  二、上传识别
  把需要进行文字识别的图像准备好,接着到http://www.netocr.com用刚才注册的用户名和口令进行登录,登录成功后单击界面上的“上传识别图像”按钮进入上传图像的界面,“浏览”选中要进行文字识别的图像,选好以后再旁边的“识别文字”下拉列表中来选择图像上的文字类型,一般选择“简体中文”就行了,接着在下面输入一下这个文件相关的描述和识别要求,也可以不写,然后单击下面是“上传识别”按钮就可以了(如图2)。
attachments/200711/6940830654.jpg

  不一会,网页上就会给出“识别成功!”的提示,我们在“识别结果”框中就可以看见识别的内容了,识别后的内容一定不会和图像上原文完全一致,所以还需要对文件进行简单的编辑之后方可使用。
  这个网站除了可以识别简体中文外,还可以用来识别繁体中文、英文、手写体等多种文字类型。还有在上传图像前,最好把图像格式转换成JPG之类的小体积格式,这样图像体积会小很多,可以明显提高上传和识别的速度。

  • » 阅读全文...
  • 金山ARP防火墙-完全免费的防御ARP攻击/ 防止被限制网速的工具 (仅500多K)

         下载:下载文件金山ARP防火墙Beta 1108.rar (535.41 KB , 下载:69次)
    ADSL独立拨号上网用户等非局域网用户无需安装!

     

    双向拦截ARP攻击、支持Vista、初级用户零设置+丰富的高级设置、安装免重启、低资源占用。。。。。大家快来下载体验吧,别忘了留下您的宝贵意见和建议

     

    n金山ARP防火墙作用简介

     

    金山ARP防火墙能够双向拦截ARP欺骗攻击包,监测锁定攻击源,时刻保护局域网用户PC的正常上网数据流向,是一款是适于个人用户的反ARP欺骗保护工具!

     

    n金山ARP防火墙有什么特点?

    ü网关动态探测+识别——识破伪造的网关地址
    动态获取、并分析判断后为受保护PC绑定正确的网关地址,从而时刻保障保护本机上网数据的正确流向。同时也支持用户手动设置绑定网关地址。

    ü网关动态通知——受到ARP欺骗攻击时主动向网关发送数据包,表明合法身份。

    ü双向拦截ARP攻击
    拦截来自外部接受或是由本机发出的ARP攻击数据包并提醒用户,保障本机及其它PC的网络通畅。

    ü拦截IP冲突攻击,保护本机不受IP冲突攻击的影响

    ü攻击源追踪锁定
    拦截到ARP攻击包后立即追踪攻击源,找出安全威胁源头。

    ü安全模式——让受保护PC在局域网隐身,攻击源无法察觉
    对一些关键主机进行保护特别有效!
            
    ü支持平台
    Win2000
    、Win2003、WinXPWin Vista

     

    n产品界面抢先看?
    attachments/200711/6412018415.jpg

    attachments/200711/6931807578.jpg

    attachments/200711/8322722479.jpg

  • » 阅读全文...
  • 2007年11月6日

    htaccess 的一些用法

    屏蔽访问

    order allow,deny
    deny from abc.com //屏蔽来自 abc.com 的访问
    deny from 192.168.1.1 //屏蔽 IP 为 192.168.1.1 的访问
    deny from 192.168.1. //屏蔽 IP 范围在 192.168.1.0~192.168.1.255 的访问
    allow from all //屏蔽所有的访问来源

    防盗链

    RewriteEngine on
    RewriteCond %{ HTTP_REFERER } !^http://(www.)?mydomain.com/.*$ [NC]
    RewriteRule .(gif|jpg)$ - [F]

    也可以指定被盗链图的替换图(顺便打打广告什么的),那么上边这段代码最后一行改为

    RewriteRule .(gif|jpg)$ http://www.mydomain.com/替代图片文件名 [R,L]

    地址转向

    旧的URL自动转向到新的地址:
    Redirect /旧目录/旧文档名 新文档的地址

    或者整个目录的转向:
    Redirect 旧目录 新目录

    定义缺省的首页文件

    DirectoryIndex 新的缺省文件名

    也可以列出多个,顺序表明它们之间的优先级别,例如:
    DirectoryIndex index.html index.php default.htm

  • » 阅读全文...
  • 2007年11月5日

    现在开始博客赚钱会不会太晚?

          面对众多博客的竞争以及大部分人没能在博客上赚到钱,你是否感觉现在才开始博客赚钱已经太晚,并且不敢把你的赚大钱的野心释放出来呢?或许你对这样的问题已经有了自己的见解。但,请暂时忘掉你头脑中的想法。我想,花30分来看一篇文章,然后再做出回答,绝不会影响到你的正常生活。并且,这些将让你在博客生涯中一直受用呢。

          当然,在开始讨论之前,我想让你明白一点,这样的一篇文章绝对不能让你马上就赚到钱,可以保证的是你将知道如何去看清事实,并利用条件来使你赚到钱;当然,还可以让你决定"现在开始博客赚钱会不会太晚?"的答案。

    揭开博客赚钱的面纱

          如果你想真正的从事这样的工作,那么你最好认清这是一件什么样的事、应该怎样做。同样的道理也存在于利用博客来达到目的。赚钱,是我们要记住的,我们的最终目标是利用博客这个工具来达到我们赚钱的目的。现在你知道了吗?你所做的一切关于增加流量、留住读者、提高订阅、提升Google PageRank、打出品牌、与别人合作,以及其他的事,都只是为了一个目的,或者更确切地说,几乎所有你做的这些努力都应该是围绕赚钱这个目标而来的,而不是其他的目的。

          其他利用博客赚到钱的人也一样。他们清楚地知道自己的目的,并利用各种手段来实现。我列出几个鲜明的例子吧,像John Chow,分享自己个人的赚钱经验,以达到吸引他人帮助他点击广告、成功推介广告,从而获利。国内前~博客也利用了John Chow相似的策略来达到自己的营利目的;Problogger利用分享他们的博客技巧,提高知名度来吸引广告;MashableTechcrunch等利用大量的流量来成为广告商的宠儿。

          例子很多,然而我们要明白的只是简单一点:明确目的。然后利用一切可以利用的手段来让我们得到更多的收益。如果你需要更多地了解赚钱的真面目,我建议你看一下:http://teachingsells.com/,有一本书可以让更深层地了解博客赚钱

    需要怎样做呢?

     

          什么事,即使是面对一个Million Market,最重要的就是开始行动。当然,这里有必要强调一下的是"磨刀不误砍柴功"这个道理,别以为什么事越早开始越好。如果是这样的话,恐怕就没有《31天建设一个好的博客》这样的文章了。

          打造一个能让你赚钱的博客。你接下来要做的就是写出好文章,吸引能为你赚钱的人。一个好看的博客,或许能在第一眼更能吸引读者,但"花瓶"永远只能观赏。好的文章才是王道,才可能让读者留下来帮你达到赚钱的目标。而在写好好文章上,你很有必要做一些"磨刀"的工作:

    • 看别人是怎样写的。你可以从Top100赚钱的博客开始入手,他们不但可以让你学习,也同样会教你技巧;
    • 写有吸引力的文章,并习惯写对搜索优化你的文章。对于如果寻找素材并写好文章,寻找博客素材的5大途径将是你的好选择;对于写对于优化,如果你还是一个SEO新手的,你很有必要花10分钟看一下这篇文章:http://www.happinesz.cn/archives/320';return event.returnValue=false">SEO 101
    • 推广出去。引用师妹的一句话:好的产品,也要推销才会引起关注,那就推荐出去吧。

          OK,事实上,内容就是像你的王牌,内容也是你的工具,让你获得流量、订阅、读者、关注、声誉,这些都将成为你赚更多钱的利器。

    解决问题

          你已经了解了赚钱的真面目?已经知道了怎样打造一个让你赚钱的博客?那么,让我们来解决问题吧。

          有没有发现,为什么很多出名的博客没赚钱?因为他们没有赚钱的目的;有没有发现,很多流量很好的博客没有钱赚?因为也们不会利用条件,或者把手段(比如流量)看成了最终目的。简单来说,因为他们目的的不同,以及不会利用而导致了"很多博客在竞争赚钱,但大部分赚不到钱"的后果。那么,你还是被这样的现象迷惑着吗?还在犹豫已经太晚?再看看中国现在的博客市场吧,真的已经被开发?

          还在看?马上开始吧,做好准备,干一个大的,赚到钱千万别忘了告诉我^^…

  • » 阅读全文...
  • Lighttpd上安装WordPress

    我写篇日志是想记录一下,怕以后不用的时候就忘了。

    其实很早就听人说lighttpd是一个轻量级的Web服务器,今天试了一下,果然名不虚传,在我装上后,运行Wordpress 的同时,内存只占用4.100k,然后我又启动了Apache,也运行Wordpress作为测试,内存达占用13.116k,不管怎么样,lighttpd还是无法被大的稳定的服务器所采用,但是作为个人测试使用,那就相当的不错了。

    接下来说一下怎么安装lighttpd,我是在windows下面测试的,为了简单我还是找了一个套件包:
    WLMP Version: 1.1.4 主要包含以下功能
    - LightTPD 1.4.16
    - MySQL 5.0.45
    - PHP 5.2.3
    - MiniPerl 5.8.8
    - OpenSSL 0.9.8e
    - phpMyAdmin 2.10.3

    本站下载:下载文件WLMP-Standard-1.1.4.1165-Win32-HUN.zip (0 Byte , 下载:6次)(最新版,高速下载!!实时更新 )

    官方下载地址在:http://wlmp.dtech.hu/
     

    下载好后,执行安装程序,然后让你选择安装的目录,安装到最后会提示你重新启动计算机,你选择是好行了。

    接下来安装wordpress,同样到官方下载,解压到lighttpd的www目录中,我的WLMP安装在D盘上,所以我将wordpress放到D:WLMPHTDOCSwp中,HTDOCS为根目录,其它与Apache都是一样的,Wordpress的Permalinks设置与在apache中是不一样的,因为lighttpd不支持.htaccess文件,所以要改lighttpd.conf文件来实现地址重写功能。

    在D:WLMPLightTPDconf中找到lighttpd-inc.conf,本来默认的文件应该是lighttpd.conf,可是在WLMP中,她被改名为lighttpd-inc.conf,然后在文件是找到


     
    CODE:

    1. #server.error-handler-404   = "/error-handler.php"

    这样的语句,在后面加上一句


     
    CODE:

    1. server.error-handler-404   = "/wp/index.php"

    同时记得把前面的#号去掉哦,这句的意思是说,当请求的文件不存在的时候就调用wp/index.php文件。

    下面加入重写规则,首先找到 #"mod_rewrite",然后把前面的#号掉,表示启动这个插件,接着查找url.rewrite,你会找到一条信息,当然我用的是WLMP并且版本号是1.4.16,如果你使用的是别的版本或不是WLMP套件,那我就不敢保证一样的了,不管怎么样找到相关的定义就行了,或查找#### url handling modules (rewrite, redirect, access),也可以,找到后在下面加一行:


     
    CODE:

    1. url.rewrite = ( "^/(archives|categories|comments|feed)/" => "/index.php" )

     

    这样就大功告成了,其实比Apache的重写规则还要简单,这两天我主要在研究lighttpd的virtual hosts设置部份,很多人说像鸡肋,不过我还是想了解一下,有什么心得我会写出来的!!!

  • » 阅读全文...
  • 2007年11月3日

    一个程序员的成长的六个阶段

    第一阶段

    此阶段主要是能熟练地使用某种语言。这就相当于练武中的套路和架式这些表面的东西。

    第二阶段

    此阶段能精通基于某种平台的接口(例如我们现在常用的Win 32的API函数)以及所对应语言的自身的库函数。到达这个阶段后,也就相当于可以进行真实散打对练了,可以真正地在实践中做些应用。

    第三阶段

    此阶段能深入地了解某个平台系统的底层,已经具有了初级的内功的能力,也就是“手中有剑,心中无剑”。

    第四阶级

    此阶段能直接在平台上进行比较深层次的开发。基本上,能达到这个层次就可以说是进入了高层次。这时进入了高级内功的修炼。比如能进行VxD或操作系统的内核的修改。
    这时已经不再有语言的束缚,语言只是一种工具,即使要用自己不会的语言进行开发,也只是简单地熟悉一下,就手到擒来,完全不像是第一阶段的时候学习语言的那种情况。一般来说,从第三阶段过渡到第四阶段是比较困难的。为什么会难呢?这就是因为很多人的思想变不过来。

    第五阶级

    此阶段就已经不再局限于简单的技术上的问题了,而是能从全局上把握和设计一个比较大的系统体系结构,从内核到外层界面。可以说是“手中无剑,心中有剑”。到了这个阶段以后,能对市面上的任何软件进行剖析,并能按自己的要求进行设计,就算是MS Word这样的大型软件,只要有充足的时间,也一定会设计出来。

    第六阶级

    此阶段也是最高的境界,达到“无招胜有招”。这时候,任何问题就纯粹变成了一个思路的问题,不是用什么代码就能表示的。也就是“手中无剑,心中也无剑”。
    此时,对于练功的人来说,他已不用再去学什么少林拳,只是在旁看一下少林拳的对战,就能把此拳拿来就用。这就是真正的大师级的人物。这时,Win 32或Linux在你眼里是没有什么差别的。

    每一个阶段再向上发展时都要按一定的方法。第一、第二个阶段通过自学就可以完成,只要多用心去研究,耐心地去学习。
    要想从第二个阶段过渡到第三个阶段,就要有一个好的学习环境。例如有一个高手带领或公司里有一个好的练手环境。经过二、三年的积累就能达到第三个阶段。但是,有些人到达第三个阶段后,常常就很难有境界上的突破了。他们这时会产生一种观念,认为软件无非如此,认为自己已无所不能。其实,这时如果遇到大的或难些的软件,他们往往还是无从下手。
    现在我们国家大部分程序员都是在第二、三级之间。他们大多都是通过自学成才的,不过这样的程序员一般在软件公司也能独当一面,完成一些软件的模块。
    但是,也还有一大堆处在第一阶段的程序员,他们一般就能玩玩VB,做程序时,去找一堆控件集成一个软件。

  • » 阅读全文...
  • 十种武器保证你的系统安全

    我相信玩很多玩黑软的朋友都有这样一个问题。想安全吧,装杀毒软件,结果自己的很多黑软都被杀的光光,不装吧,又怕被病毒感染,后门等等,导致系统挂掉,硬盘也要格式化。哈哈。今天我就把我自己如何解决这些问题的方法告诉你们,既可以随心所欲的玩黑软,又不担心病毒的骚扰。
    注:以下只是我个人所见。由于下面所涉及到的软件网上都有的下,再有本论坛空间有限,就不上传了,如网上有找不到的可以联系我。

    1 avast4.78 [安装版]:占用内存非常小,全面监控,WEB监控不比Kaspersky6差,防火墙也不错。内存监控比较弱。

    2 AVG Anti-Virus v7.5 [安装版]:占用内存非常强[尤其文本,比诺盾还强。],全面监控,WEB监控不行。内存监控比较强。

    3 Dr.Web V4.33 [绿色版]:大蜘蛛占用内存非常小,内存监控强,查杀能力非常强。

    4 Virus Chaser [绿色版]:驱逐舰占用内存非常小,内存监控非常强,查壳能力非常强。注意,如果开启内存监控,他所疑视文件会被锁定,只有结束它的进程后重起机器才可以。[做辅助查杀非常不错]

    5 Kaspersky6 [绿色版]:无监控,占用内存非常小,查杀能力强。[做辅助查杀非常不错]

    6 AVG Anti-Spyware 7.5 [绿色版]:启发式监控,占用内存非常小,查杀能力强。[做辅助查杀非常不错]

    7 F-Prot Antivirus v3.16F [绿色版]:冰岛占用内存非常小,无监控,用内存非常小,查杀能力比较强。[做辅助查杀非常不错]

    8 卡巴斯基防火墙 [绿色版]:操纵明了,自定义规则能力非常强,可防御冲击波等病毒。但与AVAST4.78自带的防火墙功能冲突,导致AVAST自带的防火墙功能不能运行,不过AVAST那些功能正好是 卡巴斯基防火墙 的本职功能,正好拟补。[怕麻烦的别用这个,哈哈。]

    9 360safe3.0 [绿色版]:最后一个就是这个了,不是叫你找流氓软件啊,而是它有个非常好用的功能,就是他的 注册表 监视功能。如有更改,它会提示你操纵。再通过它的其他功能一目了然的了解所有动作。[推荐使用]

    10 影子系统 [安装版]:这个是我最后推荐的,如果你看后觉得装杀毒还是麻烦,或者说我根本就不想装,再者说,你要本机测试木马病毒等,那我隆重推荐你使用影子系统,安装简单,一路下一步,最后重起机器就OK了,启动机器时会在启动项里有[进入影子系统单一模式:这个模式是只保护你的系统盘][进入影子系统完全模式:这个模式是保护你硬盘所有分区],你也可以跳过这个,在桌面的快捷方式启动影子系统。用影子系统的好处是:1单一模式(保护系统盘),你的所有操纵都是建立在系统盘上的,本机测试木马病毒等时所有都是要写进系统的,重起机器后所有操纵都会被还原,即使是木马,病毒都会消失!如果你有需要保存的软件等,不要保存在系统盘,请存放在其他未被保护的盘,这样才不会被还原。2完全模式(保护硬盘所有分区)即使你中了硬盘炸弹,重起机器后你的硬盘还是安然无恙。3还原能力经本人测试,远远超过还原精灵和还原卡。我用影子

  • » 阅读全文...
  • 软件开发入门学习的个人看法

    踏实

       偶然在网上看到《由C#风潮想起的-给初学编程者的忠告》一文. 其中一个角度:避免“浮躁”,倡导“踏实”的学习方法,我是很认同的,但总觉该文作者标题“-给初学编程者的忠告”太大,所以在其文列出的一些具体的“操作方法”上我认为可以探讨,如同自己在某次公司总结会上就《软件开发,我们积累的是什么?》为题跟同事聊了半个多小时后,其中一个同事提到希望我能继续把这个题目细化,就刚入行的他们具体该如何发展有更“具操作性”的指引,当时我是跟他们说这只是我在这一行呆了5年多的体会,谈“指引”还太远,只是可以提出来大家思考、讨论。
      
    不要过度贬低编码

       不要真的认为"不少大师级的计算机技术研究者是不懂编程的",做软件开发编码是最最基础的东西,只有踏踏实实的掌握好这个基础你才有办法往上走,不管做分析做设计做项目管理你都需要能清楚东西是如何实现的?可不可以实现?否则肯定出现大量的:"设计是设计,编码是编码","产品都是代码人员从头到尾实现的","究竟需花多少时间,难度有多大,开发人员说了算","质量/成本/进度全是黑匣子"...现象,如果你是做编码那编码就更重要了:).所以对于有志从事这个行业(软件开发)的个人来说,必须先从"重视编码"开始.过了这一关才能去考虑做系统分析,做项目管理...
       软件开发的各个环节是相辅相承的,分析有分析的重要,设计有设计的重要,编码有编码的重要,测试实施也各有其地位,任何一个环节搞不好就如同我们熟悉的木桶理论,"最薄弱的一个环节制约着其总容量".
       既然编码重要,那该如何学编码?
      
    专心学好一门语言
       算算自己用过的语言也不少(括弧里为使用该语言写的比较有代表性的东东),C(dos版的图像/图标编辑工具,96年的《电脑报》有介绍),C++(可自定义方块形状的方块游戏,被收录于99年《软件》杂志的附送光盘上),汇编(DOS汉字系统,97年底完成),PB(学校自动排课/排考模块,98年),ASP(一套web版的企业信息系统,99年),VB(企业信息系统的核心组件,99年),delphi(工作流平台,组件式GIS系统等),Java(Delphi Client + J2EE Server协同实现),.Net(规则引擎),PHH...
       看起来好象也不少,回过头来想想自己真正认真学过的语言只有一个,就是“C”, Dos年代的TC2.0,用它写了大量的小程序,比较系统的了解了编程是怎么一回事,记得那个时候看到什么软件都要琢磨它是如何实现的?如果让我来实现该如何做?也模仿了不少东西,虽然多是很表面的模仿但对自己编程思维的锻炼很有好处.后来用其它语言基本上都只是翻翻帮助,然后找找其Demo代码来看看,很快就可进入状态.
       语言都是差不多的,重要的是“编码的思想”,具备了该思想语言就只是工具了,用什么工具实现都差不多,该思想的形成是需要“磨练”的,就是“专心使用一门语言”来磨练(甚至需要有“咬文嚼字的孔已己作风”),然后可“一理通百理通”,不然你只是浮于表面的去学再多的语言都没有.都不能拿来做真正的开发.都不能了解“编码”的内涵.
       如在今年招聘面试的时候看到太多写着什么语言都精通(或熟练)的毕业生,我惯用的方法是给他(她)一张纸一支笔,让他(她)用自己最了解的语言写一个算阶乘的函数,这个问题你一看肯定说很简单,好,接着我会往下问,可以有多少种方法来实现:循环,递归…还有吗?你能写出多少种来?(代码基本结构模式的考察).代码质量如何? 有没有考虑错误处理(太多人写的代码会进入死循环比如输入的是负数) ? int的上限是多少,用long? 如果输入值比较大,算得出结果吗,该如何去实现可以计算很大数的该函数?...看着他(她)写出来的代码一个个问题的问就得了,不管你用什么语言,不管你“精通”多少种语言,我只问这些用什么语言来解决问题都需要的基础的东西, 就是“编码的思想”.
      在学专一门语言的基础上新东西当然要跟,不然在这个行业你是很难“混下去”的,但有这“学专一门”的前提后,你跟起来就轻松了,而不用总是得“追”~
      在“专”一门语言的过程中为解决问题你会发现“算法”很重要,这就是接下来要说的“基础”了.

    基础很重要
       面试的时候我一般都会问,基础知识学得如何? 一般重点问的是:《数据结构》, 《编译原理》, 《数据库原理》的内容.至于《由》文提到的:《汇编语言》,《 Windows 程序设计》我是不会问的.这些是可以进一步学习的东西,但对现在的开发来说不是必须的.《软件工程》我向来不问,教材理论跟实际差得太远了~
      《数据结构》很重要,不懂数据结构很多编码就是“蛮干”,而且往往把“简单问题复杂化”,甚至复杂到不可能解决.认真学习《数据结构》并多做尝试用你熟悉的语言去实现里面的算法,你会发觉“世界真奇妙”~不要认为你不会去开发“编程语言”不需要学习《编译原理》, 《编译原理》里面包含了太多开发软件的“奇妙”的思想案例,认真体会你肯定会被其解决问题的方法折服,从中你能体会到很多东西,对以后做软件(不管是设计还是编码等)大有帮助,里面有很多现存的方法可用在你的项目中,而这些跟《数据结构》是互为补充的.在这些基础上接下来《设计模式》一书你也一定得看看.
       很多应用都离不开数据库,最终总得找个地方来“操纵,存储,分析数据”,关于范式,关于锁,关于SQL,关于笛卡儿那一套你总得了解了解,不然无法入手,这就需要好好学习《数据库原理》了.单纯知道几条SQL语句是远远不够的,如何保证数据的完整性,安全性?如何提高效率等等都需要这些基础的支持~
       当然英文也是基础,看英文资料确实重要,不单是书,还有网络上的大量资料,论坛…看的时候别害怕就是了,毕竟都是受过高等教育的,英语也学了那么多年起码都有点底吧,配合这两个工具:《金山词霸》及Google.com,不懂的单词“即指即译”,但很多名词或基础知识不是靠单词解释能清楚的,配合搜索引擎查查相关资料看看,记住一点,看到不懂的东西多看几遍,默记一小会,日积月累你能看懂的东西就多了。
      
    兴趣
       最后该说说的就是兴趣问题,如果你能对它真正感兴趣(如果要从事软件开发又没兴趣的话赶紧先培养兴趣去^_^),对看技术资料就想别人看武侠小说看球赛一样的话,再配合上面提到的几点(踏实, 先专后广, 基础扎实)相信在这一行多少是可以做点东西出来的~~

  • » 阅读全文...
  • 移动存储安全


    当你的U盘,移动硬盘遗失了,被盗了,或者是遗忘在公共场所,里面的资料就会完全被别人窥探,如果涉及一些隐私,机密,那后果是很严重的。本课题就是在这样一个情况下产生的。这里剖析的只是一个最初的演示原型,详细设计,以及一些细节可以参考源代码。源代码在WinXP,VC6.0编译通过。

    [代码性质] VC完整应用程序代码
    [文件大小] 16K
    [下载]     下载文件Jeffrey_mss.rar (15.78 KB , 下载:17次)

    摘要:实现对移动存储设备的加密,保护信息隐蔽,防止隐私泄露。


    关键字:移动存储设备加密安全


      当你的U盘,移动硬盘遗失了,被盗了,或者是遗忘在公共场所,里面的资料就会完全被别人窥探,如果涉及一些隐私,机密,那后果是很严重的。本课题就是在这样一个情况下产生的。这里剖析的只是一个最初的演示原型,详细设计,以及一些细节可以参考源代码。源代码在WinXPVC6.0编译通过。


    1
    、访问注册表读取计算机上的移动存储设备

    在注册表

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Disk\Enum

    下面可以看到计算机当前的状态,这里可以看到所有的存储设备的情况,包括计算机的硬盘,通过情况下,名称为0的是计算机硬盘,所以在列出的选择设备时,会把名称为0的屏蔽,不然太危险,一旦造成系统的破坏,后果会很麻烦。对注册表的读写:

    HKEY hkey;
    char sz[256];
    DWORD dwtype,sl = 256; 
    for(int i=1;i<8;i++)
    {
            if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SYSTEM\\CurrentControlSet\\Services\\Disk\\Enum",\
                   NULL, KEY_ALL_ACCESS, &hkey)==ERROR_SUCCESS)
            {
                   CString id;
                   id.Format("%d",i);
                   if(RegQueryValueEx(hkey,id,NULL,&dwtype,(LPBYTE)sz,&sl)==ERROR_SUCCESS)
                   {
                           CString str=(CString)sz;
                           m_select.AddString(sz);
                   }
            }
    }
    RegCloseKey(hkey); 


    2
    、对磁盘的扇区的操作

      Windows 操作系统在很大程度上采取了访问安全保护机制(例如,在Windows操作系统下不能直接访问物理内存、不能使用各种DOSBIOS中断等等),其实Windows在采取“实保护”措施的同时也提供了另外的一种有别于在DOS下访问硬件设备的方法,即把所有的硬件设备全部看做“文件”,并允许按照对文件的读写方式来对其进行数据存取访问。对于磁盘扇区的读写,可以通过C++CreateFile()函数来实现。由MSDN可查询到该函数原型:

    HANDLE CreateFile(
    LPCTSTR lpFileName, 
    DWORD dwDesiredAccess, 
    DWORD dwShareMode, 
    LPSECURITY_ATTRIBUTES lpSecurityAttributes, 
    DWORD dwCreationDisposition, 
    DWORD dwFlagsAndAttributes, 
    HANDLE hTemplateFile );


    由于访问的是事实上已经存在的磁盘扇区,因此只能以OPEN_EXISTING标志设置dwCreationDisposition参数指出将要打开已经存在的文件(设备)。至于其他参数的使用与操作普通文件时的用法相同。

    使用的时候,如果需要定位到某一个具体的扇区,可以使用SetFilePointer()函数:

    DWORD SetFilePointer(HANDLE hFile,LONG lDistanceToMove,PLONG lpDistanceToMoveHigh,DWORD dwMoveMethod);


      在定位到要访问的扇区开始位置后就可以通过ReadFile()或WriteFile()函数实施相应的读写访问了,具体操作与文件读写并没有什么太大的差别。最后,在完成访问操作后以CloseHandle()关闭文件句柄释放资源,从而完成一次完整的磁盘扇区数据访问操作。

    int ReadDisk(CString driver,unsigned char *Buf,long addr)
    {
            HANDLE hDevice;
            BOOL bResult;
            DWORD bytesread; 
            
            hDevice=CreateFile(driver,GENERIC_READ|GENERIC_WRITE,
                   FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,NULL); 
            if(hDevice==INVALID_HANDLE_VALUE)
            { 
                   AfxMessageBox("Error!");
                   return 0;
            }
            if(addr!=0)
            {
                   SetFilePointer(hDevice,512*addr,NULL,NULL);
            }
            
            bResult=ReadFile(hDevice,Buf,512,&bytesread,NULL);
            if((bResult==FALSE)||(bytesread<512)) 
            { 
                   AfxMessageBox("Error!");
                   return 0;
            }
            CloseHandle(hDevice);
            return 1;
    }


    3
    、用RC4加密算法对磁盘加密。

    /* RC4加密,KEY是密钥,此处Key[]="MobileStorageSecurity",后期可以用户输入的密码作为密钥 */
    RC4_KEY rc4_key;
    build_rc4_key(Key,strlen((char*)Key),&rc4_key);
    rc4_handler(MBRBuf,strlen((char*)MBRBuf),&rc4_key);


    4
    U盘插入计算机时的自动感知

    LRESULT CRawDiskDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
    {
            if ( WM_DEVICECHANGE == message && FALSE == bCopy )
            {
                   //刷新设备列表
            }
            return CDialog::WindowProc(message, wParam, lParam);
    }


    后期改进

    1. 这样就必须要求在电脑上有这个程序,所以在后期采用同样的原理,将这个程序放在U盘里,在加密的时候实现对自身的屏蔽,这样大大提高程序的易用性。
    2. 可以让用户输入密码,将密码作为密钥去加密和解密。

      3.这个只是对一个磁盘最初的512字节加密,后期可以通过对扇区的定位和计算,对目录表及数据加密。

  • » 阅读全文...
  • 不要密码也能进入win2003

    1.当Win2003启动到出现登录提示界面时,可以按住键盘上的Ctrl+Shift复合键,将输入法调出来;

    2.用鼠标右键单击输入法工具条,从随后出现的快捷菜单中,选择“帮助”菜单项,再从下级菜单中执行“操作指南”命令;

    3.在随后出现的“输入法操作指南”界面中,可以执行“打印”命令,这样就能弹出一个标题为“打印主题”的窗口;在这里,我们可以选中其中的“打印选定主题”选项,再用鼠标单击一下“确定”按钮;这样系统又会打开一个打印界面,选中该界面中的“常规”标签,在对应的标签页面中,用鼠标双击“添加打印机”图标;

    4.在接着打开的打印机添加向导设置界面中,继续单击“下一步”按钮,在随后出现的画面中,将“网络打印机”选项选中,并继续执行“下一步”命令;

    5.将随后界面中的“输入打印机名,或者单击下一步,浏览打印机”选项选中,然后在对应的文本框中输入网络打印机的具体名称,例如“HP”,继续用鼠标单击“下一步”按钮;

    6.接着,屏幕上会出现一个“连接到打印机”的提示界面,该界面提示我们系统无法连接到指定打印机,此时我们可以用鼠标单击该提示界面中的“帮助”按钮;

    7.在其后出现的Win2003系统窗口中,在执行“Web帮助”命令,并在打开的帮助界面的右边子窗口中,单击其中的一个超级链接,可以任意选择;

    8.单击以后,系统就会自动弹出一个标题为“无法连接到服务器”的窗口,将鼠标移动到该窗口的地址栏中,删除掉以前的信息,并直接输入“C:”符号,单击一下回车键;

    9.随后浏览界面就自动“变脸”为资源管理器界面了,单击该界面右边的下拉按钮,从下拉列表中单击“控制面板”选项,这样就能将系统的控制面板窗口打开了;

    10.找到该窗口的“用户和密码”图标,并用鼠标双击之,在随后的窗口中选中“用户”标签,并在对应的标签页面中,将其中的“Administrator”选项选中,再用鼠标单击一下“设置密码”按钮;

    11.在弹出的密码设置框中,重新输入一个容易记忆的密码,最后单击“确定”按钮,就可以使密码生效了。最后使用该密码重新登录试试.

    Q:急:我的超级用户密码忘记了,求解决办法

    A:启动/关机脚本:_(1)如果故障计算机使用FAT/FAT32文件系统,那可直接使用Win98引导盘引导.如果使用NTFS文件系统,可将故障计算机上的硬盘取下,以从盘模式挂接到其它的Win2000计算机上.下面的操作以后一种情况为准,假设现在故障计算机的system分区(通常是C:)在新的计算机上成为分区E:.

    (2)编写一个能恢复管理员密码的批处理文件admin.bat,内容只需要一条"net user"命令即可.如下:

    net user administrator 12345678

    这儿我们假设当前的管理员是administrator,将它的密码恢复为"12345678".将文件admin.bat保存到"E:\winnt\system32\GroupPolicy\Machine\Scripts\Startup"下,也就是故障计算机原来的"C:\winnt\system32\GroupPolicy\Machine\Scripts\Startup"下.

    (3)编写一个启动/关机脚本配置文件scripts.ini,这个文件名是固定的,不能改变.内容如下:

    [Startup]
    0CmdLine=admin.bat
    0Parameters=

    将文件scripts.ini保存到"E:\winnt\system32\GroupPolicy\Machine\Scripts"下,也就是故障计算机原来的"C:\winnt\system32\GroupPolicy\Machine\Scripts"下.

    (4)将硬盘恢复为主盘,接回原来的计算机,重新启动,等待启动脚本运行.启动脚本运行结束管理员administrator的密码就被恢复为"12345678".

    (5)如果要新建一个管理员账号,admin.bat文件的内容可以修改为:

    net user admin 12345678 /add
    net localgroup administrators admin /add

    这样一个名为"admin",密码是"12345678"的管理员账号就建立了.

    这个方法不仅可以恢复独立服务器上本地管理员密码,也可以恢复Win2000域中域管理员的密码.

  • » 阅读全文...