位置于:书籍教程首页>>操作系统>>windows2K>>正文

拔号上网登陆脚本的制作

资料:http://xp163.com/
 拨号上网是指人们用调制解调器和电话线拨入拨号网络服务器,验证身份后登录到拨号网络服务器(或所在的网络)。通过它的出口连上因特网。目前国内上网用户的软件平台多为Windows 95/98,其中最为普遍的登录方式是采用点对点协议(Peer-Peer Protocol,PPP),该协议在拨号用户与服务器之间建立点对点连接,以登录到服务器上。在这一登录过程中,服务器需要对远程用户有个身份验证的过程,反应到操作中就是需要用户输入帐号与口令。接收用户输入的帐号与密码后,服务器经验证无误后,就让用户登录,若验证失败,则不让用户登录。

  在Windows 95/98中,提供了一个拨号连接程序给拨号网络用户使用,它的使用方法比较方便,在用图形界面对拨号过程进行一些配置后,即可连接使用。一般情况下,在连接程序的窗口中输入帐号密码后,登录的验证过程可在后台进行而不需用户的干预。但有时,所登录的服务器需要两次验证(往往是在路由器上多了一层验证),这样,第二次验证过程就无法在后台进行了,用户只能将登录选项改为“拨号后出终端窗口”,通过手工输入帐号密码完成第二次验证。由于帐号密码较难记忆,在终端窗口中又不能修改,往往因为输入错误而导致验证失败,不仅给用户带来不方便,也浪费了不少宝贵的电话费。

  由于一般用户对服务器端的设置无可奈何,第二次的验证无法避免,但若能使其自动化,也就克服了手工输入的缺点。为了实现这个功能,就要用到登录脚本。

  登录脚本,顾名思义就是为了登录过程写好的脚本文件,通过文件中存储的命令行与服务器进行交互,自动完成登录过程而不需人工干预。也许有人会认为既然是跟服务器进行通讯,它所用的语言一定高深莫测,但实际上,如果对它稍加分析,便会发现它其实并无太多的奥秘。

  在Windows 95/98中的Program Files目录中有个Accessories目录,其中有几个后缀为scp的文件,即为登录脚本文件的示例,其中pppmenu.scp是PPP登录方式的示例脚本。每一个脚本文件都必须有一个名为“Main”的过程(即一段程序),所有的脚本文件都从“Main”开始执行。脚本中的注释以“;”开始。下面就以pppmenu.scp为例,讲讲怎样制作一个脚本文件,需要说明的是示例中的主机(host)即上述的服务器。

  该脚本文件示例怎样与一个有菜单系统的主机建立一个PPP连接。脚本文件中的过程(一段程序)以“Proc过程名”开始,以“Endproc”结束;

  main过程 

  proc main 

  ;以下的变量要根据您的拨号网络服务器不同而 

  ;做写改动

  ;将登录失败时重试的次数置为3 

  integer nTries = 3 

  ;定义登录时的提示信息,将下句中 

  ;的“Username:”替换为

  ;您的主机在询问帐号时的提示信息,如 

  ;"UserID:"等 

  string szLogin = "username:"

  ;将帐号的超时时间设为3秒,即若输入帐号后 

  ;3秒中主机不响应

  ;用户即超时,此次登录视为失败。

  integer nLoginTimeout = 3 

  ;定义系统要求密码的提示信息与超时设置 

  string szPW = "password:"

  integer nPWTimeout = 3 

  ;这里定义您输入正确的帐号密码后出的提示,

  ;请按您 

  ;的主机提示更改该变量的值

  string szPrompt = "annex:"

  ;如果您的主机在验证后显示菜单要求用户选择 

  ;的话,假设有如下菜单:

  ;1: Our special GUI 

  ;2: Establish slip connection 

  ;3: Establish PPP connection 

  ;4: Establish shell access 

  ;5: Download our software 

  ;6: Exit 

  ;Please enter a number to select it!

  ;定义要选择的菜单项,如下的例子选择3,"^M"

  ;代表回车

  string szConnect = "3^M"

  ;如果不想在脚本中得到IP地址,将下列值设为

  ;False,一般情况下不用在脚本中得到IP地址,

  ;建议将其用';'注释掉。

  boolean bUseSlip = FALSE 

  ;各变量定义完毕,下面将开始执行程序 

  ;延迟2秒以免主机来不及响应,建议将时间改 

  ;短或注释该句 

  delay 2 

  ;发送两次回车给主机,若非特殊需要,建议注

  ;释该句 

  transmit "^M^M"

  ;当重试的次数小于规定的最高次数时,继续尝

  ;试登录

  while 0 < nTries do 

  ;在输入帐号之前,等待登录提示,直到超时,

  ;若出现帐号提示后,跳转到以Dologin为标签

  ;开头的语句执行,

  ;执行到最后返回调用点 

  waitfor szLogin then DoLogin 

  until nLoginTimeout 

  ;以TryAgain标签语句开始的程序段 

  TryAgain:

  ;重试时先输入一个回车键,若主机不需如此,

  ;请注释掉 

  transmit "^M" ; ping 

  ;因为已重试过,故将重试次数减1 

  nTries = nTries - 1 

  ;循环语句的结尾

  endwhile 

  ;跳转到已BailOut为标签的语句执行;即转成人 

  ;工输入 

  goto BailOut 

  ;以DoLogin标签语句开始的程序段 

  DoLogin:

  ;输入帐号,请将真实帐号边上加双引号替换下 

  ;面的$USERID 

  transmit $USERID, raw 

  ;敲回车将帐号传给主机 

  transmit "^M"

  ;等待主机出输入密码提示

  ;在超时时限内等待输入密码提示

  waitfor szPW until nPWTimeout 

  ;若超时,跳到以TryAgain标签开始的地方重试 

  if FALSE == $SUCCESS then 

  goto TryAgain 

  endif 

  ;输入密码,请将真实帐号边上加双引号替换下 

  ;面的$PASSWORD 

  transmit $PASSWORD, raw 

  ;敲回车将帐号传给主机 

  transmit "^M"

  ;等待主机出验证成功提示

  waitfor szPrompt 

  ;若有菜单项,选择菜单

  transmit szConnect 

  ;若不需取得IP,建议将下面一段注释掉 

  if bUseSlip then 

  ;下列两种情况只能取其一,请将另一种注释掉 

  ;若知主机的IP提示,将显示IP前的提示替换

  ;下面的"Your address is "

  waitfor "Your address is "

  set ipaddr getip 

  ;若不知主机的IP提示,执行下面一句取得IP 

  set ipaddr getip 2 

  ;结束If语句 

  endif 

  ;跳出脚本文件 

  goto Done 

  ;以BailOut标签语句开始的程序段 

  BailOut:

  ;出现一些不能响应的错误,将键盘打开,接受 

  ;用户手工输入 

  set screen keyboard on 

  ;停止脚本文件运行 

  halt 

  ;以Done标签语句开始的程序段 

  Done:

  ;结束运行当前程序段 

  ;过程结束 

  endproc 

  

  将上述脚本按您的主机的情况在文本编辑器中配置好后,存成一个.scp文件,在连接属性中的“制作脚本”标签中将该文件的完整名填入框中,同时选中拨号时最小化终端窗口。另外在“常规”标签中调制解调器的设置中,在选项的标签下去掉“拨号后出终端窗口”选项。

  此时再拨号,帐号密码通过第一次验证后,在状态条中出现一个最小化的终端窗口,恢复它的窗口尺寸后就会发现,它与原来的终端窗口几乎一样,唯一的不同是再也不用麻烦您输入什么了,在自动验证完毕后该窗体会自动关闭,这时,你就可以畅游Internet的海洋了。

  脚本在给你带来不少方便的同时,也有一个致命的弱点——保密性差,因为我们把密码用明文写在文件里了,这样,所有能看到该文件的人都有可能知道密码。所谓有得必有失,在方便与保密之间,我想你会有自己的选择。

  摘自《计算机世界日报》

  编后:想想平时每天上网时都要重复地输入用户名及口令——虽然安全(其实也不一定,还是有很多其它方法也可以“偷”到密码),但也有些让人厌烦……所以,这篇文章介绍的就是一个“一劳永逸”的方法。至于密码明文保存的问题,只要是在家中上网,那还有什么可怕的?!



 拔号上网登陆脚本的制作相关说明
 拔号上网登陆脚本的制作相关说明

 

 书籍教程站内推荐信息
 书籍教程网站地图