当前位置:文档之家› 借助OTPW配置一次性密码验证

借助OTPW配置一次性密码验证

借助OTPW配置一次性密码验证
借助OTPW配置一次性密码验证

借助OTPW配置一次性密码验证

密码验证涉及安全和信任方面的许多假设。经过加密的SSH隧道和公开密钥验证则是确保密码在传输过程中不受到危及的两种常用方法。不过要是你目前所使用的这台计算机不可信任,那该如何是好?

密码验证涉及安全和信任方面的许多假设。经过加密的SSH隧道和公开密钥验证则是确保密码在传输过程

中不受到危及的两种常用方法。不过要是你目前所使用的这台计算机不可信任,那该如何是好?

这绝非小心谨慎的人担心的一种易受攻击的场景。在许多平常情况和常见地方,你可能不该使用系统密码,

哪怕是通过一条安全隧道。例子包括如下:

◆酒店、图书馆或网吧里面的公共计算机;

◆同事被感染了病毒的计算机;

◆结对编程时所使用的共享工作站;

◆别人有可能看到你键入密码整个过程的任何地方。

上述这些例子有何共同之处呢?共同之处就是,实际上,你试图从一个不可信任的来源连接至可信任的目

的地。这完全有悖于设计大多数验证系统的初衷。

就拿公开密钥验证来说。SSH公开密钥验证无疑绕过了远程主机上的密码提示,但是它仍需要你把你的私

有密钥密码交给本地机器。此外,一旦密钥用你的密码来解密,本地系统就可以完全访问里面的敏感密钥

内容。

幸好,已经有一种办法可以解决这个经常被人忽视的问题:那就是一次性密码。

SSH和一次性密码这对组合具有强大的功能:

◆SSH协议提供了跨整个网络对登录顺序进行加密的机制。

◆良好的SSH客户端让你可以在输入登录资料之前,先检查远程主机的公开密钥指纹。这可以防止未授权

主机收集你的一次性密码。

◆一次性密码体系确保了密码无法被重复使用。所以,就算某个密码在传输过程中被获取,一旦你用该密码登录上去,这个密码对攻击者来说也是毫无价值的。

类似UNIX的系统有许多一次性密码解决方案。两种最有名的解决方案是S/KEY和OPIE(每件事情的一次性密码)。

由于OPIE最近从Debian和Ubuntu储存库中移除后,由德国计算机科学家Markus Kuhn开发的OTPW一次性密码体系提供了一种切实可行的替代方案。虽然OTPW并非直接替代OPIE,但它提供了同类功能,同时提供了S/KEY或OPIE所没有的一些令人关注的特性。

从Debian和Ubuntu储存库移除OPIE

Debian在2011年年初开始移除与OPIE有关的程序包,起因是二进制程序的安全性、许可问题和缺少上游活动等方面引起了一番讨论。

如果你有兴趣想了解具体细节,可以参阅下列相关的Debian错误报告:

◆https://www.doczj.com/doc/207199690.html,/cgi-bin/bugreport.cgi?bug=511582

◆https://www.doczj.com/doc/207199690.html,/cgi-bin/bugreport.cgi?bug=622220

◆https://www.doczj.com/doc/207199690.html,/cgi-bin/bugreport.cgi?bug=622221

◆https://www.doczj.com/doc/207199690.html,/cgi-bin/bugreport.cgi?bug=622246

虽然截至截稿时,OPIE程序包仍然在目前的Debian稳定版本(代号为"Squeeze")中,Debian端口(debports)储存库里面也有一些非正式的平台端口,但OPIE并未出现在测试版或非稳定版中,它也似乎不太可能添加到下一个隐私版本中。

尤其是,OTPW提供了下列功能:

◆双因子验证,由"前缀密码"和一组自动生成的、一次性的后缀组成。就算后缀列表落到了坏人的手里,要是没有前缀密码,那也少不了蛮力攻击。

◆通过使用密码锁和三重质询(triplet challenge),防范某些竞争条件和中间人攻击。

◆支持共享式文件系统。由于OTPW对照存储在用户主目录里面的散列值列表来检查密码,所以一次性密码列表适用于挂载同一$HOME目录的所有系统。

接下来将介绍OTPW的安装和使用,并特别着重介绍与OpenSSH的集成。

程序包安装

想使用OTPW,你就需要两个二进制程序:otpw-bin和libpam-otpw。就Debian和Ubuntu而言,安装很容易,只要执行这个命令:

sudo apt-get install otpw-bin libpam-otpw

如果你的发行版并不提供OTPW,可以直接从开发者的主页下载源代码。源打包文件并不使用GNU自动配置(autoconf)工具,所以你需要按照开发者的操作说明,手动编译和安装二进制程序。

配置可插拔验证模块(PAM)

让系统为OTPW作好准备的下一步是,配置libpam-otpw。全面处理PAM不在本文的探讨范围之内,但我还是会在这里介绍几种最常见的使用场合。

改动PAM配置会你让无法使用你的工作站或服务器,所以一个好主意就是,让你现有的终端保持开放状态,直到你确信一切都正常工作。如果你可以访问控制台,手边要备一份可启动的发行版或挽救盘。想了解通过SSH测试PAM方面的更多信息,请参阅《借助SSH,测试一次性密码验证》这篇附文。

借助SSH,测试一次性密码验证

如果你在为OTPW配置一个远程系统,应该在不关闭目前SSH连接的情况下测试PAM堆栈。切记:如果你在PAM配置上出现了错误,即便有权访问控制台,也可能无法验证--所以手边要备一份可启动的发行版,比如Knoppix、SystemRescueCD或Finnix,以防万一。与此同时,现有的登录仍然不受到影响,因为它们已经通过了验证。

为了正确测试PAM堆栈,你不能重新使用现有的SSH连接。大多数最新的发行版在默认情况下都支持SSH 多路复用和持久性连接,所以要明确禁用这些选项以便测试。

此外,SSH在默认情况下偏爱公开密钥验证。所以,为了测试OTPW验证,公开密钥验证同样需要临时禁用。

下面这个调用能够正确测试SSH PAM堆栈,不需要对系统做任何改动:

read -p 'Hostname: ' REMOTE_HOST &&

SSH_AGENT_PID= SSH_AUTH_SOCK= \

ssh \

-o PreferredAuthentications=keyboard-interactive \

-o ControlPersist=no \

-o ControlPath=none \

"$REMOTE_HOST"

一旦你确信OTPW在正常工作,还应该验证你的其他验证机制(即SSH公开密钥和平常的系统密码)继续正常工作。

启用OTPW的最容易办法就是把它直接放在common-auth配置文件中pam_unix的前面:

# /etc/pam.d/common-auth

auth sufficient pam_otpw.so

session optional pam_otpw.so

auth sufficient pam_unix.so nullok_secure

auth required pam_deny.so

PAM库的顺序非常重要。如果把OTPW放在第一位,拥有~/.otpw文件的用户会首先得到一次性密码的提示,要是OTPW登录失败,允许退回到标准的系统密码。没有~/.otpw文件的用户只会看到标准的密码提示。

如果你更喜欢顺序倒过来,在退回到一次性密码之前提示系统密码,只要确保pam_deny放在最后一位:

# /etc/pam.d/common-auth

auth sufficient pam_unix.so nullok_secure

auth sufficient pam_otpw.so

session optional pam_otpw.so

auth required pam_deny.so

如果你忍不住想完全移除标准的系统密码,尤其是控制台登录时所用的系统密码,千万别这么做。在一些系统上,尤其是在拥有ecryptfs-encrypted主目录的Ubuntu系统上,要是没有标准的系统密码,想从OTPW 故障恢复过来极其困难。

改动common-auth通常是在无外设服务器或只有控制台的系统上要做的正确操作。不过,提供X Window System的工作站或服务器给一次性密码体系带来了特殊的问题。

一些工具或应用程序无法与OTPW顺利协同运行,原因是它们无法把质询显示给用户。典型的症状通常是,出现了永远无法完成或似乎忽视用户输入的密码对话。在过去,gksu和GNOME显示管理器(GDM)结合OPIE 使用时有这个问题。这种情况下,解决办法就是从common-auth移除OTPW,只把它添加在特定的服务中。

比如说,你可以把OTPW验证添加到SSH连接,同时针对控制台或GUI登录就使用标准的密码提示。只要三个简单步骤,就能做到这一点:

1. 从common-auth删除引用pam_otpw.so的任何行:

# /etc/pam.d/common-auth on Debian Squeeze

auth sufficient pam_unix.so nullok_secure

auth required pam_deny.so

2. 为PAM创建一个新的OTPW包含文件:

# /etc/pam.d/otpw

auth sufficient pam_otpw.so

session optional pam_otpw.so

3. 在/etc/pam.d/sshd中的common-auth前面添加OTPW:

# 其他内容……

# 启用OTPW验证。

@include otpw

# 标准的Un*x验证。

@include common-auth

# 更多内容……

SSH配置

除了配置PAM库外,OTPW在SSH守护程序的配置文件中还需要下列三个设置:

# /etc/ssh/sshd_config

UsePrivilegeSeparation yes

UsePAM yes

ChallengeResponseAuthentication yes

这些设置通常就在那里,但是可能被注释掉了或者被设置成"no",所以要作相应改动。下一步,改动配置文件后,重新装入SSH守护程序:

# 普通Linux

sudo /etc/init.d/ssh reload

# Debian 6.0.4+

sudo service ssh reload

# Ubuntu 11.04+

sudo reload ssh

生成OTPW密码

一旦OTPW PAM模块已被正确配置,只有拥有~/.otpw文件的用户在登录过程中会遭到一次性密码对话的质询。除了只与质询的有效应答匹配的单向散列列表外,该文件里面还含有关于其内容的一些元数据。

想创建该文件,或者重新为它装填新密码,可使用otpw-gen实用工具。默认情况下,它会创建280个密码后缀,格式经编排后可以排列到单面信函纸(8.5" x 11")上。由于~/.otpw文件里面只存储了单向散列,而不是密码本身,密码生成时,你必须捕获或打印该命令的标准输出。你无法事后获取密码列表,而是需要生成新的密码。

下面是你首次运行该命令,将输出发送到默认打印机所看到的样子:

$ otpw-gen | lpr

Generating random seed ...

If your paper password list is stolen, the thief

should not gain access to your account with this

information alone. Therefore, you need to memorize

and enter below a prefix password. You will have to

enter that each time directly before entering the

one-time password (on the same line).

When you log in, a 3-digit password number will be

displayed. It identifies the one-time password on

your list that you have to append to the prefix

password. If another login to your account is in

progress at the same time, several password numbers

may be shown and all corresponding passwords have to

be appended after the prefix password. Best generate

a new password list when you have used up half of

the old one.

Enter new prefix password:

Reenter prefix password:

Creating '~/.otpw'.

Generating new one-time passwords ...

生成新密码列表时,标准错误上出现的提示略有不同:

Overwrite existing password list '~/.otpw' (Y/n)?

Enter new prefix password:

Reenter prefix password:

Creating '~/.otpw'.

Generating new one-time passwords ...

第一个提示确保你没有不小心覆盖现有的密码列表;第二个提示要求你输入一个新密码。没有什么可以阻止你在每次调用时重复使用同一个前缀密码--随机种子使得重复散列不可能出现,但是最好的做法还是每当你重新生成密码列表时,使用一个新的前缀。

如果你想在远程主机上生成密码列表,但是打印到本地输出设备上,你可以通过SSH连接来做这一步,只要你信任你的本地主机:

read -p 'Hostname: ' &

注意使用stty以确保前缀密码没有回送到屏幕上。只要你的前缀密码仍然是安全的,使用不可信任的输出设备跟密码列表落到坏人手里一样没有关系。对经常出差的人来说,这常常是个实用的安全折中方案。

最后,想禁止对某个用户实行OTPW质询,只要从该用户的主目录删除.otpw文件即可。

使用OTPW登录

一旦你手里有了密码列表,就可以准备为你的SSH连接使用一次性密码验证了。假设你没有将任何身份装入到SSH代理里面,对话应该类似这样:

$ ssh localhost

Password 015:

带数字的提示是OTPW质询。为了应答,请在你之前打印的密码清单上找到匹配的质询ID。接下来,输入前缀密码,后面跟着质询ID之后的字符串。

使用"foo"作为前缀密码,生成下列后缀列表。就算你使用同一个前缀密码,你的列表和后缀也会不一样。

OTPW list generated 2012-05-06 13:40 on localhost

000 SWvv JGk5 004 =qfF q2Mv 008 sb5P h94r 012 o5aH +/GD 016 8eLV VxuA

001 xPZR :ceV 005 B=bq =mHN 009 WBSR smty 013 QMZ% +bm8 017 vjFL K4VU

002 Sj%n 9xD3 006 RrNx sJXC 010 Xr6J F+Wv 014 j=LO CMmx 018 Km8c 8Q3K

003 s7g8 NE%v 007 sd=E MTqW 011 fNKT vo84 015 fWI% MB9e 019 z8ui %eQ3

!!! 切记:先输入前缀密码!!!

为了成功应答这个质询,在提示符处输入:

foo fWI% MB9e

空格是可选的;如果有空格,OTPW会忽视。

如果你正确应答了质询,登录就会继续下去。否则,你会得到使用标准系统登录的提示。这时候,你可以输入标准的系统密码,或者按返回键,再试一下OTPW。在系统指定的密码尝试次数(通常是三次)之后,登录失败后,你就会回到命令提示:

$ ssh localhost

Password 013:

Password:

Password 013:

Password:

Password 013:

Password:

Permission denied (publickey,password,keyboard-interactive).

为了防止同时登录,或者当SSH在OTPW验证过程中被中断,OTPW可能会锁定密码。密码被锁定后,你下一次登录尝试就会实行三重质询,要求一个前缀和三个后缀来应答:

$ ssh localhost

Password 004/011/005:

鉴于与前面一样的密码列表,将三重应答作为一行来输入,有无空格都没关系。下面显示了如何进行应答(注意:下面第一行只是一种信息帮助;你只要输入下面第二行,不带管道符):

prefix | suffix 004 | suffix 011 | suffix 005

foo | =qfF q2Mv | fNKT vo84 | B=bq =mHN

一旦你成功应答了三重质询,登录就会继续下去,~/.otpw.lock符号链接应该会被删除,你的下一个质询将再次是单一质询ID编号。

在一些情况下,无法正确清除密码锁。如果你继续得到三重质询的提示,可以手动删除锁定文件:

rm ~/.otpw.lock

如果用户拥有的经过加密的主目录在登录之前没有挂载上去,就需要采取另外几个步骤。

OTPW和经过加密的主目录

ecryptfs文件系统给SSH和OTPW带来了特殊的问题。默认情况下,Ubuntu等发行版借助用户的系统密码,打开挂载经过加密的主目录所需的特殊口令短语(passphrase)。

这由pam_ecryptfs.so模块来处理,可以通过/etc/pam.d/common-auth及其他来添加该模块。如果你使用系统密码之外的任何密码来进行验证,该模块会提示你输入系统登录密码,以便挂载经过加密的主目录。

实际上,这意味着挂载远程主目录时,你的系统密码暴露在不可信任的终端上。这显然不是很理想。

避免这个问题的最佳办法就是,让控制台会话始终运行着。比如说,使用系统密码登录到控制台,然后锁定屏幕。只要你的控制台会话仍处于活动状态,主目录就仍然处于挂载状态。因而,你可以使用OTPW验证,无须对系统进行进一步的改动,也不会在登录或挂载过程中泄露系统密码。

然而,当控制台会话未运行时,如果你仍想能够使用OTPW用于SSH登录,又明白这么做对安全有何影响,下面教你如何来实现。

首先,你需要创建调用otpw-gen的包装脚本:

#!/bin/bash

set -e

otpw-gen "$@"

mv ~/.otpw /usr/local/lib/otpw/$LOGNAME/

ln -s /usr/local/lib/otpw/$LOGNAME/.otpw ~/

包装脚本应该放在你的路径中,并确保可以执行。

下一步,把otpw4ecryptfs.sh(下面所列)放在~/bin或/usr/local/sbin中:

#!/bin/bash

# 用途:

# 为拥有ecryptfs-mounted主目录的系统上所有用户启用OTPW。

set -e

# 暴露可能被ecryptfs隐藏的底层目录。

sudo mkdir -p /mnt/real_home

sudo mount -o bind /home /mnt/real_home

# 收集所有非系统用户。

users=$(

awk -F: '$1 != "nobody" \

&& $3 >= 1000 \

&& $3 < 65534 \

{print $1}' /etc/passwd

)

# 为每个非系统用户启用OTPW。

for user in $users; do

sudo mkdir -p /usr/local/lib/otpw/$user

sudo touch /usr/local/lib/otpw/$user/.otpw sudo chown -R $user: /usr/local/lib/otpw/$user sudo chmod 755 /mnt/real_home/$user

ln -sf /usr/local/lib/otpw/$user/.otpw \

/mnt/real_home/$user/

ln -sf /usr/local/lib/otpw/$user/.otpw \

/home/$user/

done < /etc/passwd

sudo umount /mnt/real_home

你运行该脚本后,它创建了可以由pam_otpw.so读取的 OTPW文件,即使用户的主目录卸载后也能读取。

请注意:该脚本为所有用户的主目录赋予了读取和执行权限,那样pam_otpw.so就能读取OTPW密码文件。这本身不是一种风险,但是依赖限制更大的目录权限的用户可能想之后立即加强其主目录中文件和文件夹的许可权限。

最后,所有用户都应该运行otpw-gen-wrapper.sh,装填和维护OTPW密码列表。始终使用包装脚本,而不是直接调用otpw-gen,否则密码生成会破坏正确操作所需的符合链接。

检查剩余的密码

如果你的密码列表已用完,就再也无法使用OTPW来登录,除非生成新的列表。同样,如果你的密码列表不含有至少三个未使用的应答,~/.otpw.lock存在时,就无法使用OTPW来登录,因为没有足够的质询ID来发出三重质询。

此外,OTPW的安全性一方面来自剩余质询具有的随机性。使用三重质询特别会迅速用完你未使用的密码,所以一旦数量降至最小数以下,重新生成密码列表不失为是个好主意。

OTPW开发者建议:当仍未使用的原始密码不足一半时,应该重新生成密码列表,但不要定义质询的足够随机性所需要的最小密码数量。少量未使用的密码让你更容易遭到蛮力攻击,因为可供使用的质询比较少。

当未使用的密码降至所生成密码数量的一半时,pam_otpw.so PAM模块本该通知用户。不过,PAM会话功能在Debian或Ubuntu上似乎无法正常使用。此外,就算能使用,该模块也不会设立最小数,以确保质询有足够的随机性。

代码片段1所示的otwp-stats.sh脚本提供了这项缺失的功能。它还让你可以定义合理的未使用密码最小数,只要调整脚本顶部的MIN_PASSWORDS变量。

代码片段1:otwp-stats.sh

#!/bin/bash

# 30个未使用的密码似乎是个合理的最小数,可确保随机性,并防止出现三重质询用完。# 这个数字可随意调整,以适合你的需要。

MIN_PASSWORDS=30

OTPW_LIST="$HOME/.otpw"

# 如果没有为该用户设置OTPW,就停止处理。

[ -f "$OTPW_LIST" ] || exit

# OTPW文件的最上面两行是元数据。

TOTAL_PASSWORDS=$((`wc -l < "$OTPW_LIST"` - 2))

# 带横杠的行表示已使用的密码。

USED_PASSWORDS=$(egrep '^-' "$OTPW_LIST" | wc -l)

# 剩余密码的数量是个估算值。

PASSWORDS_LEFT=$((TOTAL_PASSWORDS - USED_PASSWORDS))

cat << EOF

OTPW Password Statistics

------------------------

Passwords used: ${USED_PASSWORDS:=0}

Passwords left: $PASSWORDS_LEFT

EOF

if [ $PASSWORDS_LEFT -le $((TOTAL_PASSWORDS / 2)) ]

then

echo "It's time to generate new OTPW passwords."

elif [ $PASSWORDS_LEFT -le $MIN_PASSWORDS ]; then

echo "Remaining passwords at critical levels."

echo "It's time to generate new OTPW passwords."

fi

把otwp-stats.sh添加到你的~/.profile(或其他外壳启动脚本),以便在登录时提供反馈:

# 通过SSH登录时才运行脚本。

[ -n "$SSH_CONNECTION" ] && ~/bin/otpw-stats.sh

结论

OTPW提供了实现一次性密码的机制,与OPIE和S/KEY相比毫不逊色。它很容易与大多数Linux系统上的SSH集成,而且仍可以在带经过加密的主目录的Ubuntu系统上使用。

C语言下的学生管理系统(含密码加密和验证码)

#include #include #include #include #include #define N 20 void input();//增加学生信息 void del();//删除学生信息 void change();//修改学生信息 void find();//查询学生信息 void sorting();//排序 void save();//保存到文件 void read();//读取文件 void stu_search();//学生查询信息 void modify();//学生修改自己密码 struct score_stu//定义分数结构体 { int score1; int score2; int score3; int sum; }score; struct student //定义学生结构体 { int no; char name[20]; char spwd[20]; int classnum; struct score_stu score; int age; int ranking; }stu[N],*p; void inputPasswd(char passwd[])//隐藏密码{ char s[20]; char temp[2]; int n; //strcpy(s," "); s[0]='\0'; while(1)

{ while(1) { n=getch(); if(n == 13)//13为回车'\r' { break; } printf("*"); memset(temp,0,sizeof(temp));//将temp里面的数据用0替换 sprintf(temp,"%c",n);//将n打印成一个字符保存到temp里面 strcat(s,temp);//把temp所指字符串添加到s结尾处(覆盖s结尾处的'\0') } break; } printf("\n"); strcpy(passwd, s); } void captcha(char str[],int n)//验证码 { char a[]="1234567890abcdefghijkmnopqrstuvwxyzABCDEFGHIJLMNPQRSTUVWXYZ"; int i,j,k; k=strlen(a);//k表示字符串的长度 srand(time(0));//随机数初始化 for(i=0;i

电子密码锁报告

基于单片机控制的电子密码锁 设计者:张雪贵 指导老师:李峥 淮北煤炭师范学院物理与电子信息学院 06电子信息工程 2009年6月

基于单片机的电子密码锁 一设计任务 设计一个利用AT89S52单片机控制的电子密码锁,该电子密码功能包括16个密码输入,密码输入过程中清除输入,密码正确和错误分别用蜂鸣器提示,输入错误密码超次锁定,密码修改,12864LCD 显示菜单实现多功能等等。 二总体方案设计与实现 电子密码锁系统核心用AT89S52单片机控制,密码输入按键为4*4矩阵键盘16个按键实现密码输入,外加独立按键实现清除,确定和液晶反白控制。密码存储电路利用AT24C02芯片,该芯片可以实现掉电存储,而且数据可保留时间长,与单片机连接简单。报警电路利用三极管驱动小型蜂鸣器实现,通过给蜂鸣器送不同频率的电平信号实现不同声音报警。LCD用12864字符型液晶实现,通过单行反白实现菜单,加强液晶显示内容及添加系统功能。 另外,电磁锁电路暂时利用发光二极管代替,用发光二极管的亮灭和蜂鸣器的响声来指示电磁锁的开关。 图1 系统原理框图 图2系统总体原理电路图 三硬件电路的功能单元设计 (一)单片机最小系统

其原理图如图1所示 图3 单片机最小系统模块 单片机采用AT89S52单片机, AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器,与工业80C51产品指令各引脚完全兼容。单片机最小系统主要有两块组成,其一为晶振起振电路,其二为复位电路。在此,我们采用按键手动复位,相对来讲,这种复位方式更加方便人性化,不必要切断电源即可对系统进行复位。 (二)开锁电路 通过单片机送给开锁执行机构,电路驱动电磁锁吸合,从而达到开锁的目的。其原理如图2 所示。 图4 开锁电路原理 当用户输入的密码正确单片机便输出开门信号,送到开锁驱动电路,然后驱动电磁锁,达到开门的目的。在此为节省成本考虑,我们用二极管代替电磁锁,将一切在LCD上面显示,并且利用蜂鸣器和二极

双机热备OSPF组网配置指导手册v1.3

双机热备主备方式OSPF组网配置 指导手册

关键字:双机热备、主备、非抢占、物理接口、静态路由、OSPF 目录 1双机热备防火墙组网说明: (3) 2主防火墙配置步骤: (4) 2.1 配置接口地址 (6) 2.2 配置安全区域 (8) 2.3 配置双机热备 (9) 2.4 配置接口联动 (12) 2.5 配置NAT (12) 2.6 配置OSPF动态路由协议 (16) 2.7 配置NQA (19) 2.8 配置静态缺省路由与TRACK 1绑定 (20) 2.9 配置OSPF发布缺省路由 (21) 3备防火墙配置步骤: (22) 2.1 配置接口地址 (23) 2.2 配置安全区域 (25) 2.3 配置双机热备 (27) 2.4 配置接口联动 (29) 2.5 配置NAT (30) 2.6 配置OSPF动态路由协议 (34) 2.7 配置NQA (36) 2.8 配置静态缺省路由与TRACK 1绑定 (37) 2.9 配置OSPF发布缺省路由 (38)

1 双机热备防火墙组网说明: 组网说明: 防火墙双机热备组网,主备非抢占模式,防火墙上行链路通过静态路由指向连接INTERNET网络,防火墙下行链路通过OSPF动态路由指向内部网络路由器。 业务要求: 当网络“层三交换机”或“防火墙”或“层二交换机”某一个设备本身故障或某一条线路故障时,流量可以及时从主防火墙切换至备防火墙,保证网络应用业务不中断、平稳运行。

2 主防火墙配置步骤: 1 配置PC IP地址192.168.0.3/24,连接管理防火墙: 2 通过IE浏览器打开防火墙WEB管理界面,防火墙默认的管理IP地址192.168.0.1,默认的用户名:h3c,默认密码:h3c。

51单片机密码锁制作的程序和流程图

51单片码锁制作的程序和流程图(很详细) 一、基本组成: 单片机小系统+4*4矩阵键盘+1602显示+DC电机 基本电路: 键盘和和显示 键盘接P1口,液晶的电源的开、关通过P2.7口控制 电机(控制口P2.4) 二、基本功能描述: 1.验证密码、修改密码 a)锁的初始密码是123456(密码最长为10位,最短为1位)。 2.恢复初始密码 a)系统可以恢复初始密码,否则一旦忘记密码而又不能恢复初始密码,该锁就永远打不开。但是又不能让用户自行修改密码,否则其他人也可以恢复该初始密码,使得锁的安全性大大下降。

3.使系统进入低功耗状态 a)在实际使用中,锁只有在开门时才被使用。因而在大多数的时间里,应该让锁进入休眠状态、以降低功耗,这使系统进入掉电状态,可以大大降低系统功耗。 b)同时将LCD背光灯关闭 4.DC电机模拟开锁动作。 a)DC电机启动时解除开锁把手的锁定,允许通过把手开锁。DC电机不直接开锁,使得DC电机的功率不用太大,系统的组成和维护将变得简单,功耗也降了下来。 三、密码锁特点说明: 1.0 输入将被以字符形式输入,最长为10位。 超过10位时系统将自动截取前10位、但不作密码长度溢出提示。 2.0 开锁10秒后不允许更改密码、并提示修改超时_进入初始态,需要重新输入密码方可再次修改密码。 3.0 系统未使用存储器存储密码故掉电后密码自动恢复为初始密码。 4.0 若2分钟无任何操作,系统自动进入省电模式运行,同时关闭液晶显示,以节省电力。 5.0 输入密码正确后、电机允许开锁时间为5秒, 5秒后需要再次输入密码才可以再次开锁。 6.0 修改密码键和恢复初始密码键最好置于室。 这是Proteus仿真结果: 输入密码123456: 显示结果: 密码正确时电机启动、电机将持续5秒:

51单片机电子密码锁设计(包含原理图,电路设计,c语言程序)

电子密码锁设计 1.实验任务 根据设定好的密码,采用二个按键实现密码的输入功能,当密码输入正确之后,锁就打开,如果输入的三次的密码不正确,就锁定按键3秒钟,同时发现报警声,直到没有按键按下3种后,才打开按键锁定功能;否则在3秒钟内仍有按键按下,就重新锁定按键3秒时间并报警。 2.电路原理图 图4.32.1 3.系统板上硬件连线 (1).把“单片机系统”区域中的P0.0/AD0用导线连接到“音频放大模块”区域中的SPK IN端子上; (2).把“音频放大模块”区域中的SPK OUT端子接喇叭和; (3).把“单片机系统”区域中的P2.0/A8-P2.7/A15用8芯排线连接到“四路静态数码显示”区域中的任一个ABCDEFGH端子上; (4).把“单片机系统“区域中的P1.0用导线连接到“八路发光二极管模块”区域中的L1端子上;

(5).把“单片机系统”区域中的P3.6/WR、P3.7/RD用导线连接到“独立式键盘” 区域中的SP1和SP2端子上; 4.程序设计内容 (1).密码的设定,在此程序中密码是固定在程序存储器ROM中,假设预设的密码为“12345”共5位密码。 (2).密码的输入问题: 由于采用两个按键来完成密码的输入,那么其中一个按键为功能键,另一个按 键为数字键。在输入过程中,首先输入密码的长度,接着根据密码的长度输入 密码的位数,直到所有长度的密码都已经输入完毕;或者输入确认功能键之后, 才能完成密码的输入过程。进入密码的判断比较处理状态并给出相应的处理过 程。 (3).按键禁止功能:初始化时,是允许按键输入密码,当有按键按下并开始进入按键识别状态时,按键禁止功能被激活,但启动的状态在3次密码输入不正确的 情况下发生的。 5.C语言源程序 #include unsigned char code ps[]={1,2,3,4,5}; unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40}; unsigned char pslen=9; unsigned char templen; unsigned char digit; unsigned char funcount; unsigned char digitcount; unsigned char psbuf[9]; bit cmpflag; bit hibitflag; bit errorflag; bit rightflag; unsigned int second3; unsigned int aa; unsigned int bb; bit alarmflag; bit exchangeflag; unsigned int cc; unsigned int dd; bit okflag; unsigned char oka; unsigned char okb; void main(void) {

华为OSPF配置命令详解

华为OSPF配置命令详解 网络技术2009-07-11 15:22:36 阅读946 评论0 字号:大中小订阅【命令】ospf network-type { broadcast | nbma | p2mp | p2p } undo ospf network-type { broadcast | nbma | p2mp | p2p } 【视图】接口视图 【参数】broadcast:设置接口网络类型为广播类型。 nbma:设置接口网络类型为NBMA 类型。 p2mp:设置接口网络类型为点到多点。 p2p:设置接口网络类型为点到点。 【描述】ospf network-type 命令用来设置OSPF 接口网络类型, undo ospf network-type 命令用来删除接口指定的网络类型。需要注意的是:当接口被配置为新的网络类型后,原接口网络类型将自动取消。 【举例】# 配置接口Serial0 为NBMA 类型。 [Quidway-Serial0] ospf network-type nbma 【命令】ospf peer ip-address [ eligible ] undo ospf peer ip-address 【视图】接口视图 【参数】ip-address:NBMA、点到点和点到多点接口的相邻路由器的IP 地址。eligible:表明该邻居具有选举权。

【描述】ospf peer 命令用来设定对端路由器IP 地址。undo ospf peer 命令用来取 消对端路由器IP 地址的设定。 缺省情况下,不设定任何对端路由器IP 地址。 对于NBMA 网络,如X.25 或帧中继等不支持广播方式的网络上,还需要进行一些特殊的配置。由于无法通过广播Hello 报文的形式发现相邻路由器,必须手工为该接口指定相邻路由器的IP 地址,以及该相邻路由器是否有选举权等,若未指定eligible 关键字时,就认为该相邻 路由器没有选举权。 【举例】# 配置接口Serial0 的相邻路由器IP 地址为10.1.1.4。 [Quidway-Serial0] ospf peer 10.1.1.4 【命令】ospf timer dead seconds undo ospf timer dead 【视图】接口视图 【参数】seconds:邻居路由器的失效时间,取值范围为1~65535 秒。其缺省值根据 接口类型不同而不同。 【描述】ospf timer dead 命令用来配置对端路由器的失效时间。 undo ospf timer dead 命令用来恢复对端路由器失效时间为缺省值。

51单片机密码锁制作的程序和流程图

51单片机密码锁制作的程序和流程图(很详细) 一、基本组成: 单片机小系统+4*4矩阵键盘+1602显示+DC电机 基本电路: 键盘和和显示 键盘接P1口,液晶的电源的开、关通过P2.7口控制 电机(控制口P2.4) 二、基本功能描述: 1.验证密码、修改密码 a)锁的初始密码是123456(密码最长为10位,最短为1位)。 2.恢复初始密码 a)系统可以恢复初始密码,否则一旦忘记密码而又不能恢复初始密码,该锁就永远打不开。但是又不能让用户自行修改密码,否则其他人也可以恢复该初始密码,使得锁的安全性大大下降。

3.使系统进入低功耗状态 a)在实际使用中,锁只有在开门时才被使用。因而在大多数的时间里,应该让锁进入休眠状态、以降低功耗,这使系统进入掉电状态,可以大大降低系统功耗。 b)同时将LCD背光灯关闭 4.DC电机模拟开锁动作。 a)DC电机启动时解除开锁把手的锁定,允许通过把手开锁。DC电机不直接开锁,使得DC电机的功率不用太大,系统的组成和维护将变得简单,功耗也降了下来。 三、密码锁特点说明: 1.0 输入将被以字符形式输入,最长为10位。 超过10位时系统将自动截取前10位、但不作密码长度溢出提示。 2.0 开锁10秒后不允许更改密码、并提示修改超时_进入初始态,需要重新输入密码方可再次修改密码。 3.0 系统未使用存储器存储密码故掉电后密码自动恢复为初始密码。 4.0 若2分钟内无任何操作,系统自动进入省电模式运行,同时关闭液晶显示,以节省电力。 5.0 输入密码正确后、电机允许开锁时间为5秒, 5秒后需要再次输入密码才可以再次开锁。 6.0 修改密码键和恢复初始密码键最好置于室内。 这是Proteus仿真结果: 输入密码123456: 显示结果: 密码正确时电机启动、电机将持续5秒:

电子密码锁设计图与电子锁工作原理

电子密码锁设计图与电子锁工作原理原文地址:https://www.doczj.com/doc/207199690.html,/tech/Knowledge/2011-11-23/157.html 电子密码锁采用十进制计数/脉冲分配器集成电路CD4017和少量外围元器件组成,它具有可编密码数高、性能可靠等特点,可用于门锁、保险柜或机动车点火系统的控制。 一、电路工作原理: 该电子密码锁电路由输入控制电路、复位电路、计数/分配器电路和控制执行电路组成,如图所示。 输入控制电路由密码按钮S1、S2、S5、S8、S9和二极管VD3-VDl4、电阻器 R1等组成。 计数/分配器电路由IC和晶体管Vl、电阻器R2、R3、二极管VDl组成。 复位电路由电容器Cl、C2、二极管VD2、VDl5、电阻器R4、R5和按钮S3、S4、S6、S7组成。 控制执行电路曲晶体管V2、V3、发光二极管VL、电阻器R6、R7、继电器 (或电控锁)K和二极管VDl6组成。 接通电源后,+l2V电压经Cl为IC的R端 (15脚)提供一个复位高电平,使IC复位,其YO端 (3脚)输出高电平,其余各输出端均为低电平。

按动一下Sl时,YO端的高电平经VD9、Sl和R2加至Vl的基极,使Vl饱和导通;松开别后,Vl截止,在IC的CP端产生一个触发脉冲,IC开始计数,其 Yl端 (2脚)输出高电平,而YO端和其余各输出端均为低电平。 再按动S2一下,IC第Yl端的高电平又使Vl再次导通,松开S2后Vl截止,IC计人第2个脉冲,其Y2端 (4脚)输出高电平,Yl端和其余各输出端均为低电平。 按动一下S8时,+l2V电压经R3、VDl、Rl和S8到地形成闭合回路,松开S 后也会在IC的CP端产生触发脉冲,使IC计人第3个脉冲,其Y3端 (7脚)输出高电平。 按动一下S5时,Y3端的高电平经VD11、S5、R2使Vl导通,松开S5时Vl截止,IC计人第4个脉冲,Y4端 (10脚)输出高电平。 再按动一下S8,lC的Y5端 (l脚)又变为高电平;按动一下S2,使IC的Y6 端变为高电平;按动一下S9,使lC的Y7端变为高电平;按动一下S8,使IC的 Y8端变为高电平;按动一下S5,使IC的Yg端输出高电平,此时VL点亮,V2和V3导通,继电器 (或电控锁)K动作,将锁打开。 同时,Y9端的高电平还经VDl5和R5向C2充电,当C2充满屯 (几秒钟后) 时VD2导通,IC因l5脚加人高电平脉冲而清零复位,YO端输出高电乎,V2和V3截止,K释放,VL熄灭。 该电路的开锁密码为128582985。根据需要改变各按钮的接线位置,即可更改密码。 若不知道密码,而误按动了按钮S3、S4、S6和S7,则IC强制复位,YO端输出高电平,无法开锁。 元器件选择 Rl-R7选用1/4W碳膜电阻器或金属膜电阻器。 Cl选用独石电容器或涤纶电容器;C2和C3均选用耐压值为16V的铝电解电容器。 VDl-VDl5均选用lN4148型硅开关二极管;VDl6选用1N4007型硅整流二极管。 Vl和V2选用S9013或3DG9013型硅NPN晶体管;V3选用C8050或S8050等型号的硅NPN晶体管。 IC选用CD4017或CC4017型十进制计数/分配器集成电路。 S1-S9均选用动合 (常开)型微动按钮。

基本OSPF配置

基本OSPF配置 实验一: (一)实验名称:OSPF多区域配置 (二)实验目的:1)理解路由器的基本功能 2)训练路由器动态路由的基本配置命令 3)掌握路由器路由配置的基本方法 4)掌握在路由器上配置OFPF动态路由的基本方法 5)掌握网络连通性的基本方法 (三)实验拓扑图: (四)实验步骤: (一)配置PC机、路由器、服务器的IP地址 路由器router0:Router>enable Router#configure terminal Enter configuration commands, one per line. End with CNTL/Z. Router(config)#interface FastEthernet0/0

Router(config-if)#ip address 10.0.1.254 255.255.255.0 Router(config-if)#no shutdown Router(config-if)# %LINK-5-CHANGED: Interface FastEthernet0/0, changed state to up %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up Router(config-if)#exit Router(config)#interface FastEthernet0/1 Router(config-if)#ip address 10.0.2.254 255.255.255.0 Router(config-if)#no shutdown Router(config-if)#exit Router(config)#interface Serial1/0 Router(config-if)#clock rate 64000 Router(config-if)#ip address 30.0.0.1 255.255.255.0 Router(config-if)#no shutdown 路由器router1:Router>enable Router#configure terminal Enter configuration commands, one per line. End with CNTL/Z. Router(config)#interface FastEthernet0/0 Router(config-if)#ip address 20.0.0.254 255.255.255.0 Router(config-if)#no shutdown Router(config-if)#exit Router(config)#interface Serial1/1 Router(config-if)#clock rate 64000 This command applies only to DCE interfaces Router(config-if)#ip address 30.0.0.2 255.255.255.0 Router(config-if)#no shutdown Router(config)#interface Serial1/0 Router(config-if)#clock rate 64000 Router(config-if)#ip address 40.0.0.1 255.255.255.0 Router(config-if)#no shutdown 路由器router2:outer>enable Router#configure terminal Enter configuration commands, one per line. End with CNTL/Z.

电子密码锁源程序(带功能简介)

/****************************************************************************** ** 功能键 S6---S15 数字键0-9 S16---更改密码S17---更改密码完毕后确认 S18---重试密码、重新设定S19---关闭密码锁 初始密码:000000 密码位数:6位 注意:掉电后,所设密码会丢失,重新上点时,密码恢复为原始的000000 与P1相连的8位发光LED点亮代表锁被打开;熄灭代表锁被锁上 程序功能: 1、开锁: 下载程序后,直接按六次S7(即代表数字1),8位LED亮,锁被打开,输入密码时, 六位数码管依次显示小横杠。 2、更改密码: 只有当开锁(LED亮)后,该功能方可使用。 首先按下更改密码键S16,然后设置相应密码,此时六位数码管会显示设置密码对应 的数字。最后设置完六位后,按下S17确认密码更改,此后新密码即生效。 3、重试密码: 当输入密码时,密码输错后按下键S18,可重新输入六位密码。 当设置密码时,设置中途想更改密码,也可按下此键重新设置。 4、关闭密码锁: 按下S19即可将打开的密码锁关闭。 推荐初级演示步骤:输入原始密码000000---按下更改密码按键S16---按0到9设置密码---按S17 确认密码更改---按S18关闭密码锁---输入新的密码打开密码锁 ******************************************************************************* / #include #define uchar unsigned char #define uint unsigned int uchar old1,old2,old3,old4,old5,old6; //原始密码000000 uchar new1,new2,new3,new4,new5,new6; //每次MCU采集到的密码输入 uchar a=16,b=16,c=16,d=16,e=16,f=16; //送入数码管显示的变量 uchar wei,key,temp; bit allow,genggai,ok,wanbi,retry,close; //各个状态位 sbit dula=P2^6; sbit wela=P2^7;

基于Hoare逻辑的密码软件形式化验证系统

基于Hoare 逻辑的密码软件形式化验证系统 郝耀辉郝耀辉,,郭渊博郭渊博,,罗 婷,燕菊维 (解放军信息工程大学电子技术学院,郑州 450004) 摘 要:在Hoare 逻辑理论和ACSL 语法规范的基础上,设计一种针对密码软件的形式化验证系统,由程序规范、验证推理规则、可靠性策略、验证推理等模块组成。以OpenSSL 中RC4算法的软件实现为例,对其功能正确性、保险性和信息流安全性进行验证,结果表明,该系统具有较高的自动化水平,可在一定程度上降低形式化验证方法的复杂度。 关键词关键词::Hoare 逻辑;密码软件;形式化验证;程序规范;RC4算法 Formal Verification System of Cryptographic Software Based on Hoare Logic HAO Yao-hui, GUO Yuan-bo, LUO Ting, YAN Ju-wei (Institute of Electronic Technology, PLA Information Engineering University, Zhengzhou 450004, China) 【Abstract 】Based on Hoare logic and ANSI/ISO C Specification Language(ACSL) specification, this paper presents a formal verification system for cryptographic software, which is composed of program specification, inference rules, reliability strategy and verification module. It takes the software realization of RC4 algorithm in OpenSSL as an example, the functional correctness, safety properties and information flow security are tested and verified. Results show that this system can reduce the complexity of formal verification method and has a high level of automation. 【Key words 】Hoare logic; cryptographic software; formal verification; program specification; RC4 algorithm DOI: 10.3969/j.issn.1000-3428.2012.03.041 计 算 机 工 程 Computer Engineering 第38卷 第3期 V ol.38 No.3 2012年2月 February 2012 ·安全技术安全技术·· 文章编号文章编号::1000—3428(2012)03—0121—03 文献标识码文献标识码::A 中图分类号中图分类号::TP319 1 概述 密码模块是保障安全系统中信息机密性与完整性的重要 部分,在许多安全系统中,密码模块主要是由密码算法的软 件实现构成,即密码软件部分。这就要求密码软件在向系统 提供安全服务的同时,其自身的安全性也应得到保证。 对此美国国家标准技术局(NIST)和加拿大通信安全局 (CSE)提出CMVP(Cryptographic Module Validation Program) 计划,规定了对安全软件的验证准则DTR [1](Derived Test Requirements)。但CMVP 计划主要依赖验证者的经验,完全 依靠手工完成,存在出错率较高、验证周期长、效率低等缺 点,其时效性和完备性已满足不了实际应用的需求。为此, 本文基于Hoare 逻辑理论,提出一种密码软件的形式化验证 系统。 2 相关知识 本文主要基于Hoare 逻辑原理,依据ACSL(ANSI/ISOC Specification Language)语法规范,对待验证的密码软件添加满足其需要验证的关键特性的前置、后置条件,再用所设计的验证系统对其进行验证。 2.1 Hoare 逻辑 Hoare 逻辑[2]是广泛应用的对命令式语言程序进行推理验证的逻辑系统,其基本思想是在代码段与调用者之间构建一种合同似的规格说明(contracts),用于描述一段代码执行前后计算机状态的改变情况,由一个前置条件和一个后置条件构成,表示形式为:{Pre}P{Post},称为Hoare 三元组或断言。其中,Pre 是前置条件,又称初始断言,描述代码段执行前程序状态必须满足的条件,即输入值必须具有的性质;Post 是后置条件,又称终结断言,描述在代码段正确运行后程序 状态所需要满足的条件,即输出值应该具有的性质。 2.2 ACSL 语言 ACSL [3]是一种以注释形式加在程序代码中,专门用于描述程序性质的形式化语言。该语言主要以函数合约(function contract)的形式存在,即要求对任一函数f ,需明确描述清楚函数f 开始时(输入)参数值的要求和结束时(输出)返回值应具有的性质。 其涵义是:若调用函数f 前,前置条件成立,则函数f 执行完后,后置条件也必须成立。其实质和Hoare 三元组表示的内容等同。 2.3 密码软件的关键特性 通过分析密码软件的特性,对保障密码软件安全的至关重要属性进行归纳总结,主要将其归为功能正确性、保险性、信息流安全性3类属性[4],下面对其进行说明。 2.3.1 功能正确性 主要保证密码软件中程序的执行符合相应的设计规范, 简单的说就是保证程序执行的输入、输出行为和设计规范相 匹配。本系统将其用于验证密码软件输出值是否符合项目输 入值和输出值之间的关系。 2.3.2 保险性 主要指密码软件运行时不引起危险、灾难的能力,本文系统中主要将其用于验证密码软件在开发过程中是否存在缓 基金项目基金项目::国家“863”计划基金资助项目“基于规范的容忍入侵中 间件关键技术与平台”(2007AA01Z405);河南省科技创新杰出青年 计划基金资助项目(104100510025) 作者简介作者简介::郝耀辉(1978-),女,讲师、硕士,主研方向:信息安全, 密码学,数据库技术;郭渊博,副教授、博士;罗 婷,硕士研究 生;燕菊维,助教、硕士 收稿日期收稿日期::2011-05-17 E-mail :hao_yaohui@https://www.doczj.com/doc/207199690.html,

OSPF协议配置

OSPF 协议配置 【实验目的】 1.了解和掌握ospf 的原理; 2.熟悉ospf 的配置步骤; 3.懂得如何配置OSPF router ID ,了解DR/BDR 选举过程; 4.掌握hello-interval 的使用; 5.学会使用OSPF 的authentication ; 【实验拓扑】 【实验器材】 如上图,需用到路由器三台,hub/switch 一个,串行线、网线若干,主机三台。 说明:拓扑中网云可用hub 或普通switch 替代,建立multiaccess 网络,以太口连接。 【实验原理】 一、OSPF 1. OSPF 基本原理以及邻居关系建立过程 OSPF 是一种链路状态型路由选择协议。它依靠5种(Hello, DBD, LSR, LSU and LSAck)不同种类的数据包来识别、建立和维护邻居关系。当路由器接收到来自邻居的链路状态信息后,会建立一个链路状态数据库;然后根据该链路状态数据库,采用SPF 算法确定到各目的地的最佳路径;最后将最佳路径放到它的路由表中,生成路由表。 OSPF 会进行周期性的更新以维护网络拓扑状态,在LSA 的生存期到期时进行周期性的更新。除了周期性更新之外,还有触发性更新。即当网络结构发生变化(例如增减路由器、链路状态发生变化等)时,会产生触发性更新,把变化的那一部分通告给整个网络。 192.168.1.0/24 RT A

2.Designated Router (DR) / Backup Designated Router(BDR)选举过程 存在于multiaccess网络,点对点链路和NBMA网络中无此选举过程,此过程发生在Two-Way之后ExStart之前。 选举过程: 选举时,依次比较hello包中的各台router priority和router ID,根据这两个值选出DR 和BDR。选举结束后,只有DR/BDR失效才会引起新的选举过程;如果DR故障,则BDR 替补上去,次高优先级Router被选为BDR。 基本原则如下: 1)有最高优先级值的路由器成为DR,有第二高优先级的路由器成为BDR; 2)优先级为0的路由器不能作为DR或BDR,只能做DRother (非DR); 3)如果一台优先级更高的路由器加到了网络中,原来的DR与BDR保持不变,只有DR 或BDR它们失效时才会改变; 4)当优先级相同时,路由器ID最高和次高的的就成为DR和BDR; 5)当没有配置loopback时,用router上up起来的端口中最高IP地址作为Router ID,否则就用loopback口的IP地址作为它的ID;如果有多个loopback则用loopback端口中最高IP地址作为ID;而且路由器ID 一旦确定就不再更改。 建议使用优先级操纵DR/BDR选举过程 3.update timer与authentication的影响 要让OSPF路由器能相互交换信息,它们必须具有相同的hello间隔和相同的dead-time 间隔。缺省情况下,后者是前者的4倍。 缺省地,路由器认为进入的路由信息总是可靠的、准确的,从而不加甄别就进行处理,这存在一定的危险。因此,为了确保进入的路由信息的可靠性和准确性,我们可以在路由器接口上配置认证密钥来作为同一区域OSPF路由器之间的口令,或对路由信息采用MD5算法附带摘要信息来保证路由信息的可靠性和准确性。建议采用后者,因为前者的密钥是明文发送的。 三、其它预备知识 1、回环接口的配置: Router(config)#int l0 Router(config-if)#ip addr *.*.*.* *.*.*.* 2、telnet:是属于应用层的远程登陆协议,是一个用于远程连接服务的标准协议,用户可以 用它建立起到远程终端的连接,连接到Telnet服务器;用户也可以用它远程连接上路由器进行路由器配置。 【实验内容】 一、在路由器上配置单域的OSPF 1.按照拓扑图1接好线,完成如下基本配置: (1)配置端口IP地址 以RTA路由器的配置为例: RTA(config)#Interface Ethernet 0 RTA(config-if)#ip address 192.168.1.1 255.255.255.0

用户验证登录程序的实现

实验3.3.8 用户验证登录程序的实现 程序执行后,给出操作提示,请用户键入用户名和密码;.486 DA TA SEGMENT USE16 MESG1 DB '请输入用户名:',0DH,0AH,'$' MESG2 DB 0DH,0AH,'请输入密码:',0DH,0AH,'$' MESG3 DB '欢迎进入DOS系统!$' MESG4 DB 0DH,0AH,'---ERROR!$' BUF1 DB '1' LLL EQU $-BUF1 BUF2 DB '2' MMM EQU $-BUF2 BUF3 DB 15 DB ? DB 15 DUP(?) BUF4 DB 15 DUP(?) DA TA ENDS CODE SEGMENT USE16 ASSUME CS:CODE,DS:DA TA BEG: MOV AX,DATA MOV DS,AX MOV AH,9 MOV DX,OFFSET MESG1 INT 21H ;显示用户名输入界面 MOV AH,0AH MOV DX,OFFSET BUF3 INT 21H ;键入用户名 MOV BX,OFFSET BUF1 MOV SI,OFFSET BUF3+2 MOV CX,LLL NEXT1:MOV AL,[BX] CMP[SI],AL JNZ EXIT INC SI INC BX LOOP NEXT1 ;比较BUF1和BUF3 MOV AH,9 MOV DX,OFFSET MESG2 INT 21H ;显示密码输入界面 MOV CX,MMM MOV SI,OFFSET BUF4 NEXT2:MOV AH,7 INT 21H MOV [SI],AL

华为路由OSPF理论和配置命令

OSPF要求每台运行OSPF的路由器都了解整个网络的链路状态信息,这样才能计算出到达目的地的最优路径。OSPF的收敛过程由链路状态公告LSA(Link State Advertisement)泛洪开始,LSA中包含了路由器已知的接口IP地址、掩码、开销和网络类型等信息。收到LSA的路由器都可以根据LSA提供的信息建立自己的链路状态数据库LSDB(Link State Database),并在LSDB的基础上使用SPF算法进行运算,建立起到达每个网络的最短路径树。最后,通过最短路径树得出到达目的网络的最优路由,并将其加入到IP路由表中。 OSPF直接运行在IP协议之上,使用IP协议号89。 OSPF有五种报文类型,每种报文都使用相同的OSPF报文头。 Hello报文:最常用的一种报文,用于发现、维护邻居关系。并在广播和NBMA(None-Broadcast Multi-Access)类型的网络中选举指定路由器DR(Designated Router)和备份指定路由器BDR

(Backup Designated Router)。 DD报文:两台路由器进行LSDB数据库同步时,用DD报文来描述自己的LSDB。DD报文的内容包括LSDB中每一条LSA的头部(LSA的头部可以唯一标识一条LSA)。LSA头部只占一条LSA的整个数据量的一小部分,所以,这样就可以减少路由器之间的协议报文流量。LSR报文:两台路由器互相交换过DD报文之后,知道对端的路由器有哪些LSA是本地LSDB 所缺少的,这时需要发送LSR报文向对方请求缺少的LSA,LSR只包含了所需要的LSA的摘要信息。 LSU报文:用来向对端路由器发送所需要的LSA。 LSACK报文:用来对接收到的LSU报文进行确认。 邻居和邻接关系建立的过程如下: Down:这是邻居的初始状态,表示没有从邻居收到任何信息。 Attempt:此状态只在NBMA网络上存在,表示没有收到邻居的任何信息,但是已经周期性的向邻居发送报文,发送间隔为HelloInterval。如果RouterDeadInterval间隔内未收到邻居的Hello报文,则转为Down状态。 Init:在此状态下,路由器已经从邻居收到了Hello报文,但是自己不在所收到的Hello报文的邻居列表中,尚未与邻居建立双向通信关系。 2-Way:在此状态下,双向通信已经建立,但是没有与邻居建立邻接关系。这是建立邻接关系以前的最高级状态。 ExStart:这是形成邻接关系的第一个步骤,邻居状态变成此状态以后,路由器开始向邻居发送DD报文。主从关系是在此状态下形成的,初始DD序列号也是在此状态下决定的。在此状态下发送的DD报文不包含链路状态描述。 Exchange:此状态下路由器相互发送包含链路状态信息摘要的DD报文,描述本地LSDB的

汇编实验3.18:用户登录验证程序的实现

题目:程序执行后,给出操作提示,请用户输入用户名和密码;用户在输入密码时,程序不回显输入字符;只有当用户名输入的用户名、密码字符串和程序内定的字符串相同时,才显示欢迎界面,并返回DOS。界面颜色自定(彩色或黑白)。 程序清单: DATA SEGMENT USE16 MESG1 DB 0DH,0AH DB 'Please enter your username:$' LL EQU $-MESG1 BUF DB 30 DB ? DB 30 DUP(?) BUF1 DB 6 DUP(?) MIMA DB '666666' WA DB 'Wrong Answer!$' AC DB 'Welcome!$' USER DB 'wonz' WU DB 'Wrong Username$' PASSWORD DB 'Please enter your password:$' BUF2 DB 4 DUP(?) COUNT DB 3 DATA ENDS CODE SEGMENT USE16 ASSUME CS:CODE,DS:DATA,ES:DATA ;ES附加段也要,待显示字符放进ES BEG: MOV AX,DATA MOV DS,AX MOV ES,AX ;AX传给ES MOV AX,0003H INT 10H

AGAIN1: ;MOV AX,0003H ;INT 10H ;MOV DH,12 ;MOV DL,(80-LL)/2 MOV AH,09H MOV DX,OFFSET MESG1 ;取偏移地址 INT 21H MOV AX,1301H MOV BL,01001111B MOV CX,LL MOV DH,12 MOV DL,(80-LL)/2 MOV BX,OFFSET BUF2 MOV CX,4 ;判断用户名是否正确 LAST1: MOV AH,01H ;输入4位用户名 INT 21H MOV [BX],AL ;低位传给BX INC BX ;BX后移一位,一共移4次 LOOP LAST1 MOV DI,OFFSET BUF2 MOV SI,OFFSET USER CLD MOV CX,4 ;比较4次 REPE CMPSB ;字符串比较,包括CX-1 JZ AGAIN2 ;ZF=1,表示一样,跳到AGAIN2 MOV AH,2 MOV DL,0AH ;换行 INT 21H MOV AH,09H MOV DX,OFFSET WU INT 21H DEC COUNT JZ EXIT JMP AGAIN1 ;再输入一次用户名 AGAIN2:

相关主题
文本预览
相关文档 最新文档