口 令 恢 复 原 理
---- Cisco 路 由 器 保 存 了 几 种 不 同 的 配 置 参 数, 并 存放 在不 同 的 内 存 模 块 中, 介 绍 如 下:
---- ·内 部 内 存 种 类
---- Cisco2500 系 列 路 由 器 有 几 种 类 别 的内 存:ROM、 闪 存(flash memory)、 不 可 变RAM(NVRAM)、RAM 和包 共享 内 存 等 五 种。 作 用 如 下:
 

内 存 类 别
作 用
ROM
存 放 系 统 的 引 导 程 序
闪 存
存 放Cisco IOS的 镜 像
NVRAM
存 放 配 置 文 件( 即startup-config)
RAM
存 放 当 前 系 统 使 用 配 置
包 共 享 内 存
进 出 包 缓 冲 区

---- ·配 置 文 件 及 相 关 存 放 内 存
---- ·操 作 环 境(P A ?3)及 对 应 的配 置 登 记 码 路 由 器 的 正 常 启 动, 应 依 次 引 导 以 下 程序:
---- 口 令 恢 复 的 关 键 在 于 对 配 置 登记 码 进 行 修 改,从 而 让 路 由 器 从 不 同 的 内 存 中 调 用 不同 的 参 数 表 进 行 启 动。 有 效 口 令 存 放 在NVRAM 中, 因 此 修改 口 令 的 实 质 是 将 登 记 码 进 行 修 改, 从 而 让 路 由 器 跳过NVRAM 中 的 配 置 表, 直 接 进 入ROM 模 式, 然 后 对有 效 口 令和 终 端 口 令 进 行 修 改 或 者 重 新 设 置 有 效 加 密 口 令( 因为 有 效 加 密 口 令 为 加 密 乱 码, 无 法进 行 恢 复, 只 可 以改 写), 完 成 后 再 将 登 记 码 恢 复。
定制路由器启动过程
所有的CISCO路由器都有一个16位的寄存器,它保存在NVRAM中。路由器是根据寄存器中的设置值来决定从哪里加载IOS。该寄存器并没有保存在启动配置文件startup-config中,所以用show startup命令不能看到这个值。使用show version可以看到这个值。它的默认值是0x2102,表示从FLASH中加载IOS
1、 路由器启动过程
l         POST程序加电自检
l          从ROM中运行引导例程,根据寄存器值读取IOS,默认情况下是从FLASH中加载(加载优先级是:FLASH、TFTP、ROM)
l         读取NVRAM中的配置文件(加载优先级是:NVRAM、TFTP)
l         如果NVRAM中无有效的配置文件,则提示是否进入SETUP模式。
2、定制路由器启动过程
下表是寄存器的每位的具体含义,16进制,0X不能省略。
 
 
 
 
Bit
Hex
含义
0-3
0x0000-0x000f
启动区
6
0x0040
忽略NVRAM中的内容
7
0x0080
OEM位置位
8
0x0100
不允许break键中断启动
11-12
0x0800-0x1800
控制台线速率(CISCO和华为的均为9600比特率,别的设置不一定)
13
0x2000
如果网络启动失败,从ROM中启动
15
0x8000
允许诊断信息,忽略NVRAM中的内容
 
0x2100
监控模式,提示符为:rommon>
 
0x2101
ROM中加载模式,提示符为:router(boot)>
 
0x2142
忽略NVRAM
 
0x2102
FLASH中引导(默认)
 
为保障网络安全,设置路由器口令是必要的,但是如果路由器口令忘记了,对管理员来讲是一个不小的损失。经过研究并实践,找到了对Cisco路由器口令的恢复方法,此方法对1500、1600、1700、2500、2600、3600等系列Cisco路由器均适用,下面笔者以2621路由器为例。
在Cisco路由器中有一个配置注册码,即Configuration register value,使用show version命令后,在最后一行可以看到它的值,它是由4个16进制数组成,如0x2102,用二进制表示就是0010000100000010,它的后四位称为Boot field,路由器根据Boot field的值决定从哪激活IOS系统,具体规定如下表所示:
 
它的第十位(有下划线的位)一般为“0”,如果是“1”(0x2142)则表示让路由器激活的时候绕过配置文件进入到Startup模式,这时没有口令提示就直接进入特权配置模式,于是通过修改第六位的值就可以实现恢复口令的目的。
首先,准备一台装有Windows 9x/2000/xp操作系统的计算机,使用路由器所带的console线连接PC的com口和路由器的console口,然后进入PC,进入“开始→程序→附件→通信→超级终端”,建立一个新连接,使用COM串口,端口设置为:每秒位数9600bps、数据位8位、奇偶检验无、停止位1、数据流控制无。然后打开路由器电源,键入回车键即可显示路由器激活信息。
然后,需要修改激活路由器的配置注册码(Configuration register value)。在路由器激活的第一个60秒内按下CTRL+BREAK键,这时会终止路由器的激活,进入ROMMON模式下,即ROMMON 1>,输入下面的命令:
Rommon 1 > confreg  0x2142(针对16002600系列路由器)
Rommon 2 > reset   (重新激活路由器)
 
注:confreg 命令可以修改一些系统配置信息。如:连接比特值、停止位等。
如果是1500、2500系列路由器,输入“o/r 0x2142命令,0x2142中的“4”,用二进制表示就是0100,把配置注册码的第10位设置为“1”,也就是0010,0001,01,这使得路由器激活的时候绕过配置文件进入到Startup模式。路由器激活后进入Startup模式,显示系统配置对话,提示是否进入初始配置时,输入“N”不进行配置,然后在用户模式下(User mode)输入enable命令直接进入特权模式(Privileged mode),这时没有提示输入口令。 00,0010
 
这时进入路由器的特权配置模式,使用#show running-config命令可以发现没有任何配置,使用#show startup-config命令可以看到原来配置的参数,使用下面的命令进行原配置参数的恢复:
 
 
router#>config mem  copy startup-config running-config 装载原来的配置文件到内存中去
router#>enable secret 123 更改为新的密码
 
router(config)#>config-register 0x2102(可以在此进行配置码的还原)
 
router#>copy running-config startup-config  把配置保存到原来的配置文件中
进入rommom1模式,修改启动值为原来的0x2102即可。