in

SDT Community Server

SDT Forums, Blogs, Photos server.

Coolboy

June 2007 - Posts

  • 如何绕过登录密码进入Windows XP系统

    有许多朋友还在为忘记XP登陆密码不能进入系统而烦恼,现在我就来给你带来解决的方法.
      所需工具

      1.U盘一个

      2.Usboot(U盘启动制作软件)

      3.winrar(压缩软件)

      这个方法我亲自实验过,并且成功的绕过了XP的登陆密码.我在学校机房做过实验,但是文件格式为FAT32,就不知道NTFS的行不行?本来想一起实验的,结果我的光驱在学校机器上用不起(我的光驱有问题,机器太老了!--穷),学校的机器都是FAT32的,没办法!只有下次做了!

      先说说思路:方法很简单,当你的机器出现登陆框,要求输入密码时,你按下windows键+U看看有什么反映……?不错!出现了辅助工具管理工具(呵呵~~意味着可以运行放大镜)。既然可以运行放大镜程序,那么我们把放大镜程序换成其他的程序是不是也可以运行呢?(我把它换成添加用户的程序不就…………呵呵~~好坏!)思路就是这样的了!现在我们开始制作。

      ①.制作U盘启动盘。先运行Usboot,然后插入U盘,选中U盘然后点开始。(要破坏U盘上的文件哦!小心!),格式化完了把U盘拔了,然后它会提示你再插入,插入U盘1分后就可以了!我的U盘是1G的,用的HDD格式。

      ②.制作替换文件。要制作一个XX.EXE的文件来替换原文件,但是这个XX.EXE执行后又要达到添加用户的要求。我首先想到的是写一个批处理文件:

      @net user hack 123456 /add
     @net localgroup administraroes hack /add

      @exit

      然后保存为XX.bat就可以了!

      又有人要问我了,我们要的是XX.EXE你却给我们弄个XX.bat你什么意思嘛?

      问得好!我们让它运行XX.EXE就等同运行了XX.bat不就可以了嘛!

      要达到这样的目的,就要用到winrar,用winrar制作一个自解压文件,不就把XX.bat变成XX.EXE了吗?运行XX.EXE就等同运行了XX.bat.(把XX.EXE拷到 U 盘上去)

      ③.替换文件.到COMS里去把第一启动换到USB-HDD,保存----插入U盘,进入系统的c:\windows\system32下去. copy magnify.exe 007magnify.exe (对magnify.exe进行备份,magnify.exe为放大镜执行程序).在把U盘上的XX.EXE拷到system32下,并该为magnify.exe就可以了!

      然后从硬盘启动就可以了!再到XP登陆密码时,你只要运行放大镜就可以了!按下Ctrl+Alt+Del(按2次)用你新建的hack用户就可以进去了!进去把管理员密码改过来吧!

      这样就成功的绕过了XP的登陆密码,只要了一个U盘,好方便.

  • 使用GDI+比较图像

    .NET 使用托管的GDI+ 提供了一些重要的方法来处理图像和位图. 尽管如此, 当我想要借助GDI+ 比较两幅图像看它们是否相同时, 我感到有点困惑. 我试着在我们的图表组件 ( SimpleChart ) 上运行一些自动化的测试, 并且在测试说明书中我需要知道那些产生出来的图表是否都相同. 要这样做, 我需要在测试中将由SimpleChart产生的每个图表和一个事先被认为是好的图表进行比较. 如果这两个是相同的就通过测试.

    首次尝试

    比较两幅图像看它们是否相同的第一步是检查每幅图像的尺寸. 如果它们不匹配, 我们几乎可以立刻知道图像是不相同的. 一旦这个快速的测试完成, 我们就需要看看实际图像的内容是否匹配. 最初, 我决定使用GDI+ 中Bitmap 类里的GetPixel方法来比较第一幅图像和第二幅图像中每个相对应的像素. 如果在任意一点两个像素不匹配, 我们就可以确实地说这两幅图像是不同的. 然而, 如果我们结束了比较测试而没有出现不匹配现象, 那么我们就能推断出两幅图像真正是相同的.

    public static CompareResult Compare(Bitmap bmp1, Bitmap bmp2)
    {
    CompareResult cr = CompareResult.ciCompareOk;

    //测试并观察, 看看我们是否拥有同样尺寸的图像
    if (bmp1.Size != bmp2.Size)
    {
    cr = CompareResult.ciSizeMismatch;
    }
    else
    {
    //尺寸相同因此开始比较像素
    for (int x = 0; x < bmp1.Width
    && cr == CompareResult.ciCompareOk; x++)
    {
    for (int y = 0; y < bmp1.Height
    && cr == CompareResult.ciCompareOk; y++)
    {
    if (bmp1.GetPixel(x, y) != bmp2.GetPixel(x, y))
    cr = CompareResult.ciPixelMismatch;
    }
    }
    }
    return cr;
    }
     

    这个方法工作得很好, 但有一个主要的缺点, 缺乏速度. 使用这个方法来比较两幅2000 × 1500像素的图像将花费超过17秒! 要是有超过200张的图像要比较, 这就意味着我的测试将花费接近1小时的时间来完成, 可是我并没有准备要等那么长的时间.

    快速哈希

    我所需要的就是一个更快的方法去比较两幅图像, 让测试在某种意义上能及时的完成. 与其在每幅图像上使用GetPixel方法来比较每个像素, 我决定使用比较每幅图像的哈希值来看看它们是否相同, 那将会变得更快. 正如我们知道的, 哈希作为一个固定长度的大量数据的表现, 在本例中指图像数据, 它是一个唯一的值. 两个图像的哈希值匹配当且仅当相应的图像也匹配. 在哈希中图像的小小改变会导致极大的不可预计的改变.

    在.NET的System.Security.Cryptography名称空间下提供了许多不同的哈希算法, 比如SHA1和MD5, 但是我决定使用SHA256Managed 类. 类中的ComputeHash方法将数据的字节数组形式作为输入参数, 并且产生出一个256位的哈希值. 通过计算并且比较每幅图像的哈希值, 我将很快能够知道图像是否是相同的.

    现在剩下的问题仅仅是怎样将储存在GDI+ 中Bitmap对象里的图像数据转换为一个合适的形式, 也就是字节数组, 以传递给 ComputeHash 方法. 最初, 我考虑Bitmap类中的LockBits方法, 它可以允许我访问每个像素字节, 但这意味着走进一个非托管代码的地带, 那是我最不想访问的地方. 相反的, GDI+好意地提供了一个ImageConvertor类, 它允许我们将图像对象转换成另一种类型,比如字节数组.

    想了解两幅图像是否相同的最后步骤就是比较两个哈希值(或者说是字节数组)看它们是否匹配. 以下是最终的代码.

     

    using System;
    using System.Drawing;
    using System.Drawing.Imaging;
    using System.Security.Cryptography;

    namespace Imagio
    {
    public class ComparingImages
    {
    public enum CompareResult
    {
    ciCompareOk,
    ciPixelMismatch,
    ciSizeMismatch
    };

    public static CompareResult Compare(Bitmap bmp1, Bitmap bmp2)
    {
    CompareResult cr = CompareResult.ciCompareOk;

    //测试并观察, 看看我们是否拥有同样尺寸的图像
      if (bmp1.Size != bmp2.Size)
    {
    cr = CompareResult.ciSizeMismatch;
    }
    else
    {
    //将每幅图像转换成字节数组
       System.Drawing.ImageConverter ic =
    new System.Drawing.ImageConverter();
    byte[] btImage1 = new byte[1];
    btImage1 = (byte[])ic.ConvertTo(bmp1, btImage1.GetType());
    byte[] btImage2 = new byte[1];
    btImage2 = (byte[])ic.ConvertTo(bmp2, btImage2.GetType());

    //为每幅图像计算哈希值
       SHA256Managed shaM = new SHA256Managed();
    byte[] hash1 = shaM.ComputeHash(btImage1);
    byte[] hash2 = shaM.ComputeHash(btImage2);

    //比较哈希值
       for (int i = 0; i < hash1.Length && i < hash2.Length
    && cr == CompareResult.ciCompareOk; i++)
    {
    if (hash1Idea != hash2Idea)
    cr = CompareResult.ciPixelMismatch;
    }
    }
    return cr;
    }
    }
    }
     
     

    结论

    在一个2000 x 1500像素的位图上运行这个新的比较方法仅花费0.28秒的比较时间, 这意味着自动测试200个SimpleChart图像现在只要56秒就可以完成了.

    哈希算法通常作为一种安全工具来使用看看是否符合资格, 比如密码的匹配. 使用相同的哈希方法, 我们也能很快的比较两幅图像看看它们是否相同.

     
Copyright SDT, 2006-2007. All rights reserved.