luketowne

系统探索之深入挖掘windows自带实用工具

我的实验环境是windows xp和windows 2003


我们知道,在windows中是有很多的命令行工具是可以在cmdline下运行的,通俗的讲就是我常用的命令。
我们在图形界面下设置系统的相关设置的时候,有很多的时候就是调用这些小工具进行调整!
在我们日常的系统维护和安全防护中,时常用到一些工具,比如net,ipconfig,ping,netstat等,但是又有多少的人去挖掘过系统的那些不是经常用的好东西呢?呵呵。
这里就补补这块空白吧,也许不是很全面,也很正常,毕竟系统的挖掘是个漫长的过程,这里就列出我觉有比较的有意思的小工具吧!

这些工具清一色的在%systemroot%\system32目录下

list:

bootcfg.exe
cacls.exe
chgport.exe      2003
chgusr.exe        2003
chkdsk.exe
clip.exe              2003
control.exe
diantz.exe
diskpart.exe
driverquery.exe
expand.exe
forfiles.exe        2003
fsutil.exe
getmac.exe
GPRESULT
iexpress.exe
logoff.exe  
nlb.exe              2003
qprocess.exe
runas.exe
sc.exe
sysedit.exe
takeown.exe     2003
tsdiscon.exe
where.exe         2003
mrt

上面介绍的工具有些是2003才有的!!

下面我就依次的来介绍了!

No.1 bootcfg
info:启动加载程序设置工具
这个主要是对windows目录下的boot.ini文件进行编辑操作的工具。

参数:
    /Copy       生成一个现有的启动项目的副本。

    /Delete     从 BOOT.INI 文件删除现有启动项目。

    /Query      显示当前启动项目和它们的设置。

    /Raw        允许用户指定要添加的任何开关。

    /Timeout    允许用户更改超时值。

    /Default    允许用户更改默认启动项目。

    /EMS        允许用户为无头支持配置 /redirect 开关

    /Debug      允许用户为远程调试指定端口和波特率。

    /Addsw      允许用户添加特定的开关。

    /Rmsw       允许用户删除特定的开关。

    /Dbg1394    允许用户为调试配置 1394 端口。

    /?          显示帮助消息。

这里就举几个实例!

Snap1.jpg

Snap2.jpg

Snap3.jpg


Snap4.jpg



No.2 cacls
info;显示或者修改文件的访问控制列表(ACL)

参数:

CACLS filename [/T] [/M] [/S[:SDDL]] [/E] [/C] [/G user:perm] [/R user [...]]
               [/P user:perm [...]] [/D user [...]]
   filename      Displays ACLs.
   /T            更改当前目录及其所有子目录中指定
                 文件的 ACL。
   /M            将装入卷的 ACL 更改到目录。
   /S            显示 DACL 的 SDDL 字符串。
   /S:SDDL       用 SDDL 字符串中指定的 ACL 替换
                 (与 /E、/G、/R、/P 或 /D 一起使用时无效)。
   /E            编辑 ACL 而不替换。
   /C            在出现拒绝访问错误时继续。
   /G user:perm  赋予指定用户访问权限。
                 Perm 可以是: R 读取
                              W  写入
                              C  更改(写入)
                              F 完全控制
   /R user       撤销指定用户的访问权限(仅在与 /E 一起使用时合法)。
   /P user:perm  替换指定用户的访问权限。
                 Perm 可以是: N 无
                              R 读取
                              W 写入
                              C 更改(写入)
                              F 完全控制
/D user         拒绝指定用户的访问。
在命令中可以使用通配符指定多个文件。也可以在命令中指定
多个用户。

缩写:
   CI - 容器继承。
        ACE 会由目录继承。
   OI - 对象继承。
        ACE 会由文件继承。
   IO - 只继承。
        ACE 不适用于当前文件/目录。

实例:


Snap5.jpg

Snap6.jpg

Snap7.jpg



No.3 chgport(这要详细的搜索下)


为 DOS 应用程序兼容性列出或改变 COM 端口映射。

CHANGE PORT [portx=porty | /D portx | /QUERY]

  portx=porty  将端口 x 映射到端口 y。
  /D portx    删除端口 x 的映射。
  /QUERY      显示当前映射端口。


No.4  chgusr


CHANGE USER {/EXECUTE | /INSTALL | /QUERY}

  /EXECUTE  启用执行模式(默认)。
  /INSTALL  启用安装模式。
  /QUERY    显示当前设置。

No.5  chkdsk

CHKDSK [volume[[path]filename]]] [/F] [/V] [/R] [/X] [/I] [/C] [/L[:size]]


  volume          指定驱动器号(后面跟一个冒号)、装入点或卷名。
  filename        仅用于 FAT/FAT32: 指定要检查是否有碎片的文件。
  /F              修复磁盘上的错误。
  /V              在 FAT/FAT32 上: 显示磁盘上每个文件的完整路径和名称。
                  在 NTFS 上: 如果有清除消息,将其显示。
  /R              查找不正确的扇区并恢复可读信息(隐含 /F)。
  /L:size         仅用于 NTFS:  将日志文件大小改成指定的 KB 数。如果没
                  有指定大小,则显示当前的大小。
  /X              如果必要,强制卷先卸下。卷的所有打开的句柄就会无效
                  (隐含 /F)。
  /I              仅用于 NTFS: 对索引项进行强度较小的检查。
  /C              仅用于 NTFS: 跳过文件夹结构的循环检查。

/I 和 /C 开关跳过卷的某些检查,减少运行 Chkdsk 所需的时间。

实例:

Snap1.jpg


Snap2.jpg


No.6   clip


描述:
    将命令行工具的输出重定向到 Windows 剪贴板。这个文本输出可以被粘贴
    到其他程序中。

参数列表:
    /?                  显示帮助消息。

示例:
    DIR | CLIP          将一份当前目录列表的副本放入 Windows 剪贴板。

    CLIP < README.TXT   将 readme.txt 的一份文本放入 Windows 剪贴板。

No.7  control
就是控制面板,以后可以直接在cmd里运行控制面板了


No.8   diantz

Microsoft (R) Cabinet Maker - Version 5.2.3790.3959
Copyright (c) Microsoft Corporation. All rights reserved..

MAKECAB [/V[n]] [/D var=value ...] [/L dir] source [destination]
MAKECAB [/V[n]] [/D var=value ...] /F directive_file [...]

  source         File to compress.
  destination    File name to give compressed file.  If omitted, the
                 last character of the source file name is replaced
                 with an underscore (_) and used as the destination.
  /F directives  A file with MakeCAB directives (may be repeated).
  /D var=value   Defines variable with specified value.
  /L dir         Location to place destination (default is current directory).
  /V[n]          Verbosity level (1..3).
实例

Snap3.jpg

Snap4.jpg

Snap5.jpg

No.9   diskpart(内容太多了,推荐参考http://baike.baidu.com/view/1578663.htm)

No.10  driverquery



DRIVERQUERY [/S system [/U username [/P [password]]]]
              [/FO format] [/NH] [/SI] [/V]
描述:
    允许管理员显示已安装设备驱动程序
    的列表。

参数列表:
      /S     system           指定要连接到的远程系统。

      /U     [domain\]user    执行命令执行的用户上下文。

      /P     [password]       指定所给用户上下文的密码。

      /FO    format           指定要显示的结果类型。与命令行开关一起传递
                              的有效值是 "TABLE"、"LIST"、" CSV"。

      /NH                     指定“列标题”不应该在屏幕输出中
                              出现。只对 "TABLE" 和 "CSV" 格式有效。

      /SI                     提供有关已签名驱动程序的信息。

      /V                      显示详细任务输出。对签名的驱动程序无效。

      /?                      显示该帮助消息。

例如:
    DRIVERQUERY
    DRIVERQUERY /FO CSV /SI
    DRIVERQUERY /NH
    DRIVERQUERY /S ipaddress /U user /V

No.11 expand

Microsoft (R) File Expansion Utility  Version 5.2.3790.0
Copyright (c) Microsoft Corporation. All rights reserved.

展开一个或多个压缩文件。

EXPAND [-r] Source Destination
EXPAND -r Source [Destination]
EXPAND -D Source.cab [-F:Files]
EXPAND Source.cab -F:Files Destination

  -r            重命名展开的文件。
  -D            显示来源中的文件列表。
  Source        源文件规格。可使用通配字符。
  -F:Files      从 .CAB 文件展开的文件的名称。
  Destination   目标文件 | 路径规格。
                目标可以是目录。
                如果来源是多个文件且没有指定 -r,
                目标则必须是目录。


实例:


Snap1.jpg

Snap2.jpg

No.12  forfiles



描述:
    选择一个文件(或一组文件)并在那个文件上
    执行一个命令。这有助于批处理作业。

参数列表:
    /P    pathname      表示开始搜索的路径。默认文件夹是当前工作的
                        目录 (.)。

    /M    searchmask    根据搜索掩码搜索文件。默认搜索掩码是 '*'。

    /S                  指导 forfiles 递归到子目录。像 "DIR /S"。

    /C    command       表示为每个文件执行的命令。命令字符串应该
                        用双引号括起来。

                        默认命令是 "cmd /c echo @file"。下列变量
                        可以用在命令字符串中:
                        @file    - 返回文件名。
                        @fname   - 返回不带扩展名的文件名。
                        @ext     - 只返回文件的扩展。
                        @path    - 返回文件的完整路径。
                        @relpath - 返回文件的相对路径。
                        @isdir   - 如果文件类型是目录,返回 "TRUE";
                                   如果是文件,返回 "FALSE"。
                        @fsize   - 以字节为单位返回文件大小。
                        @fdate   - 返回文件上一次修改的日期。
                        @ftime   - 返回文件上一次修改的时间。

                        要在命令行包括特殊字符,字符请以 0xHH
                        形式使用十六进制代码(例如,0x09 为 tab)。
                        内部 CMD.exe 命令前面应以 "cmd /c" 开始。

    /D    date          选择文件,其上一次修改日期大于或等于 (+),
                        或者小于或等于 (-) 用 "yyyy-MM-dd" 格式指定的日期;
                        或选择文件,其上一次修改日期大于或等于 (+)
                        当前日期加 "dd" 天,或者小于或等于 (-) 当前
                        日期减 "dd" 天。有效的 "dd" 天数可以是
                        0 - 32768 范围内的任何数字。如果没有指定,
                        "+" 被当作默认符号。

    /?                  显示帮助消息。

例如:
    FORFILES /?
    FORFILES
    FORFILES /P C:\WINDOWS /S /M DNS*.*
    FORFILES /S /M *.txt /C "cmd /c type @file | more"
    FORFILES /P C:\ /S /M *.bat
    FORFILES /D -30 /M *.exe
             /C "cmd /c echo @path 0x09 在 30 前就被更改。"
    FORFILES /D 2001-01-01
             /C "cmd /c echo @fname 在 2001年1月1日就是新的。"
    FORFILES /D +2009-2-19 /C "cmd /c echo @fname 今天是新的。"
    FORFILES /M *.exe /D +1
    FORFILES /S /M *.doc /C "cmd /c echo @fsize"
    FORFILES /M *.txt /C "cmd /c if @isdir==FALSE notepad.exe @file"

实例:

Snap5.jpg

Snap6.jpg

No.13 fsutil

---- 支持的命令 ----

behavior        控制文件系统行为
dirty           管理卷的被损坏的位数
file            文件特定命令
fsinfo          文件系统信息
hardlink        硬链接管理
objectid        对象 ID 管理
quota           配额管理
reparsepoint    重分析点管理
sparse          稀疏文件控制
usn             USN 管理
volume          卷管理

实例:

Snap7.jpg

Snap8.jpg

Snap9.jpg

No.14
getmac

描述:
    此工具使管理员能够显示系统上网络适配器的 MAC 地址。

参数列表:
    /S     system            指定要连接到的远程系统。

    /U     [domain\]user     指定用户上下文,命令在此上下文执行。

    /P     [password]        指定给定用户上下文密码。如果省略则
                             提示输入。

    /FO    format            指定输出显示的格式。
                             有效值: "TABLE","LIST","CSV"。

    /NH                      指定 "列标题" 不应在输出中
                             显示。只对 TABLE 和 CSV 格式有效。

    /V                       指定显示详细输出。

    /?                       显示帮助消息。

示例:
    GETMAC /?
    GETMAC /FO csv
    GETMAC /S system /NH /V
    GETMAC /S system /U user
    GETMAC /S system /U domain\user /P password /FO list /V
    GETMAC /S system /U domain\user /P password /FO table /NH

实例:


Snap10.jpg

Snap11.jpg

No.15


getresult

描述:
    此命令行工具显示目标用户和计算机的策略结果集 (RSoP) 的信息。

参数列表:
    /S        system           指定要连接到的远程系统。

    /U        [domain\]user    指定命令在其下执行的用户上下文。

    /P        [password]       为给定的用户上下文指定密码。如果省
                               略则提示输入。

    /SCOPE    scope            指定是显示用户还是计算机设置。
                               有效值: "USER","COMPUTER"。

    /USER     [domain\]user    指定要显示 RSOP 的用户名称。


    /V                         指定要显示详细信息。详细信息提供
                               已经应用的、优先权是 1 的详细设置。

    /Z                         指定显示超详细信息。超详细信息提供其他
                               详细设置,用 1 或更高的优先权应用于此
                               设置。这允许您查看是否在多处设置了某一
                               设置。请参阅组策略联机帮助主题获得更多
                               信息。


    /?                         显示该帮助消息。

注意: 如果不带参数运行 GPresult,它将返回运行该命令的计算机上的当前
      登录用户的 RSoP 数据。

示例:
    GPRESULT
    GPRESULT /USER targetusername /V
    GPRESULT /S system /USER targetusername /SCOPE COMPUTER /Z
    GPRESULT /S system /U username /P password /SCOPE USER /V


No.16 iexpress

压缩工具,常用于捆绑文件,这里不再细数!

No.17  logoff
注销工具

No.18  nlb
WLBS 群集控制实用程序 V2.4 (c) 1997-2003 Microsoft Corporation.
用法: WLBS <command> [/PASSW [<password>]] [/PORT <port>]
<command>
  help                                  - 显示此帮助
  ip2mac    <cluster>                   - 为指定的群集 IP 显示 MAC 地址
  reload    <cluster> | ALL             - 为指定的群集(仅本地)从注册表
                                          重新加载参数。如果没有指定参数,
                                          则与 ALL 一样。
  display   <cluster> | ALL             - 为指定的群集(仅本地)显示参数,
                                          当前状态以及上几个事件日志消息。
                                          如果没有指定参数,则与 ALL 一样。
  query     <cluster_spec>              - 为指定群集的当前成员显示当前群集
                                          状态。如果没有指定,将执行对所有
                                          实例本地查询。
  suspend   <cluster_spec>              - 为指定群集挂起群集操作 (启动,停
                                          止,等等),直到发布了恢复命令。
                                          如果没有指定群集,则应用到本地主
                                          机上的所有实例。
  resume    [<cluster_spec>]            - 在指定群集的上一次挂起命令后恢复群
                                          集操作。如果没有指定群集,应用到本
                                          地主机上的所有实例。
  start     [<cluster_spec>]            - 在指定主机上启动群集操作。如果没有
                                          指定群集,应用到本地主机。
  stop      [<cluster_spec>]            - 停止指定主机上的群集操作。如果没有
                                          指定群集,应用到本地主机。
  drainstop [<cluster_spec>]            - 禁用指定主机上的所有新通讯处理并停
                                          止群集操作。如果没有指定群集,应用
                                          到本地主机。
  enable    <port_spec> <cluster_spec>  - 启用指定群集上的通讯处理,规则是其
                                          端口范围必须包含指定端口
  disable   <port_spec> <cluster_spec>  - 禁用指定群集上的所有通讯处理,规则
                                          是其端口范围必须包含指定端口
  drain     <port_spec> <cluster_spec>  - 在指定的群集上为端口范围包含指定端口
                                          的规则禁用新通讯处理
  queryport [<vip>:]<port>              - 检索端口规则的当前状态。如果规则正在
            [<cluster_spec>]              处理通讯,也会返回数据包处理统计。
  params [<cluster> | ALL]              - 为在本地主机上的指定的群集从 NLB 驱动
                                          程序检索当前参数。
<port_spec>
  [<vip>: | ALL:](<port> | ALL)         - 每一个虚拟 IP 地址(不是 <vip> 也不是
                                          ALL),或特定 <vip> 或 "All" vip,在
                                          特定 <port> 规则或所有端口
<cluster_spec>
  <cluster>:<host> | ((<cluster> | ALL) - 在特定 <host> 上指定特定 <cluster>,
  (LOCAL | GLOBAL))                       或特定 <cluster> 或所有群集,在 LOCAL
                                          计算机或者是群集的一部分的所有
                                          (GLOBAL)计算机上
  <cluster>                             - 群集名称 | 群集主 IP 地址
  <host>                                - 群集内的主机 (默认 -
                                          所有主机): 专用名称 |
                                          IP 地址 | 主机优先 ID (1..32)
                                          | 0 当前默认主机
  <vip>                                 - 在端口规则内的虚拟 IP 地址
  <port>                                - TCP/UDP 端口号

远程选项:
  /PASSW <password>                     - 远程控制密码 (默认 - 无)
                                          空 <password> 将出现控制台提示
  /PORT <port>                          - 群集的远程控制 UDP 端口

要了解详细信息,请参阅 NLB 的联机帮助。


实例:

Snap15.jpg

No.19 qprocess
显示有关进程的信息。

QUERY PROCESS [* | processid | username | sessionname | /ID:nn | programname]
  [/SERVER:servername]

  *                  显示所有可见进程。
  processid          显示 processid 指定的进程。
  username           显示所有属于 username 的进程。
  sessionname        显示所有在 sessionname 运行的进程。
  /ID:nn             显示所有在会话 nn 运行的进程。
  programname        显示所有跟 programname 相关进程。
  /SERVER:servername 要查询的终端服务器。
实例:


Snap16.jpg

Snap17.jpg


No.20   runas

RUNAS 用法:

RUNAS [ [/noprofile | /profile] [/env] [/savecred | /netonly] ]
        /user:<UserName> program

RUNAS [ [/noprofile | /profile] [/env] [/savecred] ]
        /smartcard [/user:<UserName>] program

   /noprofile        指定不应该加载用户的配置文件。
                     这会加速应用程序加载,但
                     可能会造成一些应用程序运行不正常。
   /profile          指定应该加载用户的配置文件。
                     这是默认值。
   /env              要使用当前环境,而不是用户的环境。
   /netonly          只在指定的凭据限于远程访问的情况下才使用。
   /savecred         用用户以前保存的凭据。
                     Windows XP Home Edition 上没有这个选项。
                     该选项会被忽略。
   /smartcard        如果凭据是智能卡提供的,则使用这个选项。
   /user             <UserName> 应使用 USER@DOMAIN 或 DOMAIN\USER 形式
   program           EXE 的命令行。请参阅下面的例子

例如:
> runas /noprofile /user:mymachine\administrator cmd
> runas /profile /env /user:mydomain\admin "mmc %windir%\system32\dsa.msc"
> runas /env /user:user@domain.microsoft.com "notepad \"my file.txt\""

注意:  只在得到提示时才输入用户的密码。
注意:  USER@DOMAIN 跟 /netonly 不兼容。
注意:  /profile 跟 /netonly 不兼容。
注意:  /savecred 跟 /smartcard 不兼容。

在坛子里有详细的描述,这里不再细数!

No.21   sc
描述:
        SC 是用于与服务控制管理器通信的命令行程序。
用法:
        sc <server> [command] [service name] <option1> <option2>...


        选项 <server> 的格式为 "\\ServerName"
        可以键入 "sc [command]"以获得命令的进一步帮助
        命令:
          query-----------查询服务的状态,
                          或枚举服务类型的状态。
          queryex---------查询服务的扩展状态,
                          或枚举服务类型的状态。
          start-----------启动服务。
          pause-----------发送 PAUSE 控制请求到服务。
          interrogate-----发送 INTERROGATE 控制请求到服务。
          continue--------发送 CONTINUE 控制请求到服务。
          stop------------发送 STOP 请求到服务。
          config----------(永久地)更改服务的配置。
          description-----更改服务的描述。
          failure---------更改服务失败时所进行的操作。
          qc--------------查询服务的配置信息。
          qdescription----查询服务的描述。
          qfailure--------查询失败服务所进行的操作。
          delete----------(从注册表)删除服务。
          create----------创建服务(将其添加到注册表)。
          control---------发送控制到服务。
          sdshow----------显示服务的安全描述符。
          sdset-----------设置服务的安全描述符。
          GetDisplayName--获取服务的 DisplayName。
          GetKeyName------获取服务的 ServiceKeyName。
          EnumDepend------枚举服务的依存关系。

        下列命令不查询服务名称:
        sc <server> <command> <option>
          boot------------(ok | bad) 表明是否将上一次启动保存为
                          最后所知的好的启动配置
          Lock------------锁定服务数据库
          QueryLock-------查询 SCManager 数据库的 LockStatus



No.22  sysedit

Snap18.jpg




No.23  takeown

TAKEOWN [/S system [/U username [/P [password]]]]
        /F filename [/A] [/R [/D prompt]]

描述:
    该工具以重新分配文件所有权的方式允许管理员重新获取先前被拒绝访问
    的文件访问权。

参数列表:
    /S           system          指定要连接到的远程系统。

    /U           [domain\]user   指定用户上下文,命令在此上下文中执行。

    /P           [password]      指定给定用户上下文的密码。如果省略,
                                 提示输入。

    /F           filename        指定文件名或目录名模式。可以用通配符 "*"
                                 指定模式。允许共享名\文件名。

    /A                           将所有权给于管理员组,而不是当前用户。

    /R                           递归: 指示工具运行于指定的目录和子目录
                                 里的文件上。

    /D           prompt          当前用户在一个目录里没有“列出文件夹”
                                 权限时,使用默认答案。当在子目录里进行
                                 递归 (/R) 操作时会发生这种情况。用有效
                                 值 "Y" 获取所有权或用 "N" 跳过。

    /?                           显示该帮助消息。

    注意: 1) 如果指定了 /A,文件所有权会给与当前登录的用户。

          2) 不支持用 "?" 和 "*" 混合的模式。

          3) /D 用于抑制确认提示。

示例:
    TAKEOWN /?
    TAKEOWN /F lostfile
    TAKEOWN /F \\system\share\lostfile /A
    TAKEOWN /F directory /R /D N
    TAKEOWN /F directory /R /A
    TAKEOWN /F *
    TAKEOWN /F C:\Windows\System32\acme.exe
    TAKEOWN /F %windir%\*.txt
    TAKEOWN /S system /F MyShare\Acme*.doc
    TAKEOWN /S system /U user /F MyShare\foo.dll
    TAKEOWN /S system /U domain\user /P password /F share\filename
    TAKEOWN /S system /U user /P password /F Doc\Report.doc /A
    TAKEOWN /S system /U user /P password /F Myshare\*
    TAKEOWN /S system /U user /P password /F Home\Logon /R
    TAKEOWN /S system /U user /P password /F Myshare\directory /R /A


No.24 tsdiscon

计算机锁定程序


Snap19.jpg


No.25  WHERE

WHERE [/R dir] [/Q] [/F] [/T] pattern...

描述:
    显示符合搜索模式的文件位置。在默认情况下,搜索是在当前目录和 PATH
    环境变量指定的路径中执行的。

参数列表:
    /R       从指定目录开始,递归性搜索并显示符合指定模式的文件。

    /Q       只返回退出代码,不显示匹配文件列表。(安静模式)

    /F       显示所有相配文件并用双引号括上。

    /T       显示所有相配文件的文件的文件。

    pattern  指定要匹配的文件的搜索模式。通配符 * 和 ? 可以用在模式中。
             也可以指定 "$env:pattern" 和 "path:pattern" 格式; 其中
             "env" 是环境变量,搜索是在 "env" 变量的指定的路径中执行的。
             这些格式不应该跟 /R 一起使用。此搜索也可以用将 PATHEXT 变
             量扩展名附加于此模式的方式完成。

     /?      显示帮助消息。

  注意: 如果搜索成功,此工具返回错误级别 0; 如果不成功,返回 1; 如果失
        败或发生错误,返回 2。

示例:
    WHERE /?
    WHERE myfilename1 myfile????.*
    WHERE $windir:*.*
    WHERE /R c:\windows *.exe *.dll *.bat
    WHERE /Q ??.???
    WHERE "c:\windows;c:\windows\system32:*.dll"





No.26 mrt
恶意程序删除工具

实例:
    WHERE /F /T *.dll

Snap1.jpg

Snap20.jpg

posted on 2009-05-07 08:57 露露 阅读(270) 评论(0)  编辑 收藏 引用 所属分类: DOS FOR NET SERVICE