网站运维、系统运维管理研究
2006/01/31网络编程

59条评论
47 views

对经MS Script Encode加密的ASP进行解密

微软的脚本编码器( SCRENC.EXE )是微软提供的可以对ASP脚本源码进行编码加密的一个工具。应用开发商通过使用这个工具,达到 Web 主机和 Web 客户不能查看或修改它们的源代码。有关SCRENC.EXE的详细内容请参看笔者的文章《对ASP脚本源代码进行加密》。 在某种情况下如果我们忘了做源码备份,就无法再进行加工、修改了。怎么能把加过密的代码再恢复回来呢?

  在这里,我们提供一个解密软件(ZWDECODE.EXE 需要这个软件者请查阅http://www.zhengwei.net),使用这个工具可以对经过MS Script Encode加密的ASP文件进行解密,把源代码还原。

  例如可以把类似于如下的代码:

  <SCRIPT language=JScript.Encode>

   #@~^QwIAAA==@#@&0; mDkW P7nDb0zZKD.n1YAMGhk+Dvb`@#@&P,kW`UC7kLlDGDcl22gl:n~{'P3~dYMc*iNz&R @*^#~@

  </SCRIPT>

  还原成:

  <SCRIPT language=JScript>

   function verifyCorrectBrowser(){

    if(navigator.appName == "Microsoft Internet Explorer")

     if (navigator.appVersion.indexOf ("5.") >= 0)

      return(true);

     else

      return(false);

    }

   function getAppropriatePage(){

    var str1 = "Had this been an actual Web site, a page compatible with ";

    var str2 = "browsers other than ";

    var str3 = "Microsoft Internet Explorer 5.0 ";

    var str4 = "would have been loaded.";

    if (verifyCorrectBrowser())

     document.write(str1 + str3 + str4);

    else

     document.write(str1 + str2 + str3 + str4);

   }

  </SCRIPT>

  ZWDECODE.EXE是一个运行在DOS PROMAPT的命令工具,以下是该程序的语法解释:

  描述

   对经过MS Script Encode加密的ASP文件进行解密,使其恢复成源代码。

  语法

   ZWDECODE inputfile outputfile

   inputfile 必需的。要被解密的文件名称,包括相对于当前目录的任何需要的路径信息。

   outputfile 必需的。要生成的输出文件的名称,包括相对于当前目录的任何需要的路径信息。

  注意:

   本程序只能用于恢复自己丢失源代码的程序,不可用于其它用途。为了安全起见,在解密前要做好备份。

[down=attachment/month_0601/82006131104330.rar]点击下载此文件[/down]

加密你的ASP页面—Script Encoder初探

一、概述

一直以来,ASP技术受到了越来越多朋友的喜爱,使用ASP从事WEB开发的人也越来越多。ASP一个非常明显的特征是页面在服务器端经过处理之后发送到浏览器中的内容为标准的HTML格式,这样有效的保护了页面程序的原代码不被客户端轻易获取(当然MS的BUG不断那是另一回事了。^_^)。但是另一个普遍存在的问题是:由于ASP页面是纯文本的形式存放,在服务器端可以轻易看到全部编程逻辑。这样给ASP应用商业化带来了一定的困难。解决的方法一般是使用组件技术将编程逻辑封装入DLL之中,但问题是:

1、如果每段代码都组件化似乎工作量太大了,也没有必要。

2、还有很多网友(比如象浪子一样:-<)根本就不会编写组件。在这样的背景下,微软推出了Script Encoder1.0。一个命令行的脚本加密工具。

Script Encoder的特点是:

它只加密页面中嵌入的脚本代码,其他部分,如HTML的TAG仍然保持原样不变。处理后的文件中被加密过的部分为只读内容,对加密部分的任何修改都将导致整个加密后的文件不能使用。Script Encoder加密过的ASP文件还将使Script Debugger之类的脚本调试工具失效。

Script Encoder是可以对Client Side Script加密,也可以对Server Side Script加密。

二、使用简介

Script Encoder是个命令行工具,执行文件为SCRENC.EXE。它的操作非常简单:

SCRENC [/s] [/f] [/xl] [/l defLanguage ] [/e defExtension] inputfile outputfile

/s 可选。让Script Encoder“安静”的工作,即执行过程

没有屏幕输出。(我使用的感觉忽略它,同样没有屏幕

输出。没什么用,懒得理了。)

/f 可选。指定输出文件是否覆盖同名输入文件。忽略,将

不执行覆盖。

/xl 可选。是否在.asp文件的顶部添加@Language指令。忽略,

将添加。

/l defLanguage 可选。指定Script Encoder加密中选择的缺省脚本语言。

文件中不包含这种脚本语言特性的脚本将被Script Encoder

忽略。对于HTML和脚本文件来说,JScript为内置缺省脚

本语言。对于ASP文件,VBScript为缺省脚本语言。同时

对于扩展名为.vbs或.js的文件Script Encoder有自适应

能力。

/e defExtension 可选。指定待加密文件的文件扩展名。缺省状态下,Script

Encoder能识别asa,asp,cdx,htm,html,js,sct和vbs文件。

三、常见问题和注意事项

1、在JOY ASP中几次看到有网友使用Script Encoder时出现如下错误:

&#34;Script Encoder object <&#34;Scripting.Encoder&#34;> not found &#34;

其原因:是使用Script Encoder需要Script Engine 5.0或以上脚本引擎的支持。

解决的办法有两个,升级浏览器到IE5或安装Script Engine 5.0。

2、在加密Global.asa时,加密完成后访问出现:

Active Server Pages 错误 &#39;ASP 0137&#39;

无效通用脚本

global.asa, 行1

Script 块必须是允许的 Global.asa 过程之一。< %…% > 中的 Script 原语不

允许在 global.asa 文件中。允许的过程只能是 Application_OnStart ,

Application_OnEnd , Session_OnStart , 或 Session_OnEnd。

加密后的global.asa文件为:

<%@ LANGUAGE = VBScript.Encode %><SCRIPT LANGUAGE=VBScript.Encode

RUNAT=Server>#@~^nAIAAA==@#@&amp;?i~Pzww^k1CYbWU{}xjOmDY@#@&amp;@#@&amp;BP</SCRIPT>

<SCRIPT LANGUAGE=VBScript.Encode RUNAT=Server>#@~^OgEAAA==@#@&amp;?i~Pzww^k

1CYbWU{}x3U9@#@&amp;@#@&amp;P,P?O~sbVr8Ln^DPxPUnD7+. ;D+COr==^#~@</SCRIPT>

<SCRIPT LANGUAGE=VBScript.Encode RUNAT=Server>#@~^DQMAAA==@#@&amp;?i~PU+/kk

KU{}xjYmDO@#@&amp;@#@&amp;E~NnJ*Px~rCl1V+MJ@#@&amp;3Hf,?`A@#@&amp;ftEAAA==^#~@</SCRIPT>

<SCRIPT LANGUAGE=VBScript.Encode RUNAT=Server>#@~^WwIAAA==@#@&amp;?i~PU+/kk

KU{}x3×9@#@&amp;(6P?d/bWxvEj{!/DmmG[JbP@!@*PrCC^0+DE~:tnx@#@&amp;</SCRIPT>

出现这个错误的原因是:在加密完的global.asa文件顶部被写入了

<%@ LANGUAGE = VBScript.Encode %>

解决的办法是手动删去这一行或者使用/xl参数加密即可。

3、Script Encoder对Remote Scripting无效。

四、总结

根据我个人的体会,Script Encoder还是比较好用的。使用简单,加密后的脚本运行也比较稳定。不过这个东西仅仅是阻止了你随意的查看脚本原代码,估计相应的解密工具不久就会出来的。所以建议可能的话,大家还是花点时间学习一下组件技术,我觉得可以将这两个结合起来运用的。正如微软的文档所说:Setting an engine to deal with encoded script is only one side of the equation. How do you encode yourscript? There are two mechanisms to do this: a command-line script encoder and a COM-based object model...

附:

Script Encoder 下载地址:

http://msdn.microsoft.com/scripting/vbscript/download/x86/sce10en.exe

Windows Script Engine 5.0

Windows 95, Windows 98 &amp; Windows NT 4.0 - CHS 中文版 下载地址:

http://www.microsoft.com/msdownload/vbscript/scripting.asp?msid=32186&amp;plat=x86&amp;lang=Chinese/Simplified

[down=attachment/month_0601/b2006131104126.rar]点击下载此文件[/down]

命令行下添加SQL用户的方法

需要有管理员权限,在命令下先建立一个c: est.qry文件,内容如下:

exec master.dbo.sp_addlogin test,123

EXEC sp_addsrvrolemember &#39;test, &#39;sysadmin&#39;

然后在DOS下执行:cmd.exe /c isql -E /U alma /P /i c: est.qry

2006/01/27网络编程

37条评论
52 views

为Serv-U提供在线修改密码功能

首先是要搞清楚Serv-U的用户信息在INI文件中是如何保存的,密码又是如何加密的。INI文件的结构比较简单,修改密码的话只要找到以[User=@UserID|1]节,并修改其下的Password键的值即可。@UserID指的是用户的登录ID。

1[GLOBAL]

2Version=6.1.0.5

3PacketTimeOut=300

4

5

6

7[Domain1]

8User1=

9User2=

10User3=

11

12

13

14[USER=abc|1]

15Password=niE383DC3710266ECAE04A6B3A18A2966D

16HomeDir=D:

17AlwaysAllowLogin=1

18ChangePassword=1

19TimeOut=600

20Note1=&#34;Wizard generated account&#34;

21Access1=D:

22

23

用户密码的加密方法可以在Ser-U官方网站的知识库查到

http://rhinosoft.com/KBArticle.asp?RefNo=1177&amp;prod=su

Manually Entering Encrypted Passwords into the ServUDaemon.ini File

To generate an encrypted password, first two random characters (the &#39;salt&#39; – in the range a..z, A..Z) are added to the beginning of the clear-text password. This is then hashed using MD5 and the resulting hash is hex-encoded. The result of this is written as plain-text starting with the 2 salt characters followed by the hex-encoded hash.

For a user account in the .ini file, this will look like:

Password=cb644FB1F31184F8D3D169B54B3D46AB1A

The salt is the string &#34;cb&#34;, the MD5 hash is &#34;644FB1F31184F8D3D169B54B3D46AB1A&#34;.

When verifying a user&#39;s password, Serv-U will do the same. It parses the salt from the user&#39;s stored password (ie. &#34;cb&#34; in this case), prepends it the password the user sent to it by the client, MD5 hashes it, and compares the result with the stored hash. If the values are equal, then the entered password is correct.

加密的方法也就是随机生成两个字母,然后将字母和密码进行拼接,再求它们的MD5值,最后将随机字母放在MD5值的前面便是加密后的密码。

接下来就可以根据以上的分析编写程序来实现在线修改了。

1 /**//// <summary>

2 /// 获取指定字符串的MD5值

3 /// </summary>

4 /// <param name=&#34;strContent&#34;></param>

5 /// <returns></returns>

6 public String MD5( String strContent )

7 {

8 System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();

9 byte[] bytes = System.Text.Encoding.UTF8.GetBytes( strContent );

10 bytes = md5.ComputeHash( bytes );

11 md5.Clear();

12 string ret = &#34;&#34;;

13 for(int i=0 ; i<bytes.Length ; i++)

14 {

15 ret += Convert.ToString(bytes,16).PadLeft(2,&#39;0&#39;);

16 }

17 return ret.PadLeft(32,&#39;0&#39;).ToUpper();

18 }

19

20

21 /**//// <summary>

22 /// 生成随便字符串,字符串长度为2

23 /// </summary>

24 /// <returns></returns>

25 public string GetRandomString()

26 {

27 string strReturn = &#34;&#34;;

28 Random ran = new Random();

29 strReturn += Convert.ToChar( ran.Next( 26 ) + &#39;a&#39; ).ToString();

30 strReturn += Convert.ToChar( ran.Next( 26 ) + &#39;a&#39; ).ToString();

31 return strReturn;

32 }

33

34 //由指定的随机字母和登录密码生成加密后的密码

35 public string Cr&#101;ateCryPassword( string strFrontChars, string strPassword )

36 {

37 return strFrontChars + MD5( strFrontChars + strPassword ).ToUpper().Trim();

38 }

39

40 /**//// <summary>

41 /// “修改密码”的点击事件,在此事件中对密码进行修改

42 /// </summary>

43 /// <param name=&#34;sender&#34;></param>

44 /// <param name=&#34;e&#34;></param>

45 private void btnModifyPwd_Click(object sender, System.EventArgs e)

46 {

47 string strUserID = txtLoginID.Text;

48 if( strUserID == String.Empty )

49 {

50 controlMessage.InnerHtml = &#34;用户名不能为空&#34;;

51 return;

52 }

53

54 //判断两次密码输入是否相同

55 if( txtNewPassword.Text != txtConfirmPassword.Text )

56 {

57 controlMessage.InnerHtml = &#34;两次输入的密码不一致,请重新输入&#34;;

58 return;

59 }

60

61 IniFile ini = new IniFile( _strServUDaemonPath );

62 string strSectionValue = &#34;USER=&#34; + strUserID.Trim() + &#34;|1&#34;;

63

64 //通过读取指定用户的HomeDir来确定是否存在该用户

65 if( ini.ReadString( strSectionValue, &#34;HomeDir&#34;, &#34;&#34; ) == &#34;&#34; )

66 {

67 controlMessage.InnerHtml = &#34;指定的用户不存在&#34;;

68 return;

69 }

70

71 //开始判断密码是否正确

72 string strPassword = ini.ReadString( strSectionValue, &#34;Password&#34;, &#34;&#34; );

73

74 string strPasswordFrontTwoChars;

75 bool bPasswordRight = false;

76 if( strPassword.Length > 2 )

77 {

78 //读取密码中包含的随机字母

79 strPasswordFrontTwoChars = strPassword.Substring( 0, 2 );

80 if( Cr&#101;ateCryPassword( strPasswordFrontTwoChars, txtOldPassword.Text ) == strPassword )

81 {//密码符合

82 bPasswordRight = true;

83 }

84 else

85 {//密码不符

86 bPasswordRight = false;

87 }

88 }

89 else if( strPassword == txtOldPassword.Text ) //原密码为空

90 {

91 bPasswordRight = true;

92 }

93 else

94 {

95 bPasswordRight = false;

96 }

97

98 if( bPasswordRight )

99 {

100 //密码正确,写入新的密码,并设置自动加载新的设置,以便下一次更改时仍有效

101 ini.WriteString( strSectionValue, &#34;Password&#34;, Cr&#101;ateCryPassword( GetRandomString(), txtNewPassword.Text ) );

102 controlMessage.InnerHtml = &#34;完成密码修改&#34;;

103 }

104 else

105 {

106 controlMessage.InnerHtml = &#34;原密码错误&#34;;

107 }

108

109 }

以上代码中的_strServUDaemonPath变量用于保存ServUDaemon.ini文件所在的路径,该值可以在PageLoad事件中通过Web.Config设置取得。

但事情并没有就此结束。经过测试,发现在存在一个严重的问题:修改密码后只有重启Serv-U才能使修改后的密码生效。那不是等于没什么用嘛,管理员总不可能没事老在那里重启服务器来使密码修改生效吧。

再次回来Serv-U的官方知识库,查到了如下一条内容:

Manually Updating the ServUDaemon.ini File

Whenever changes are made directly to the ServUDaemon.ini file, add the following line under the Global area in the INI file.

ReloadSettings=True

Serv-U regularly checks the INI file for this setting. If it is present, Serv-U will refresh all stored settings for every domain on the server. This allows Serv-U to recognize the changes without having to be restarted.

After Serv-U loads the changes, it removes the &#34;ReloadSettings=True&#34; entry. This allows you to enter it again next time any changes are made.

也就是说,只要在INI文件的GLOBAL节添加键ReloadSettings并设置它的值为True便可以实现修改密码后自动更新了。于是只要修改原代码,在101行和102行之间插入如下一句代码即可:

ini.WriteString( &#34;GLOBAL&#34;, &#34;ReloadSettings&#34;, &#34;True&#34; );

到这里,一个在线修改Serv-U密码的网页就全部完成了。

程序中的IniFile是一个封装了API对INI文件操作的类,仅需要实现对字符串的读取和写入即可。

SERV-U配置文件祥解

SERV-U的目录文件结构说明

Servudaemon.exe serv-u的服务程序,主文件

Servudaemon.ini serv-u的配置文件,记录用户信息,服务器参数

Seruadmin.exe serv-u管理界面

Servuadmin.ini serv-u管理界面配置文件

Servutray.exe serv-u系统托盘程序

SERV-U配置文件例子

[GLOBAL]

Version=5.0.0.0

RegistrationKey=HsVRCjxHMe/HwDOrrUxqeMuChKO0DdlzUy2tCGgcdMVQDs/7P9EdwjKrowsPF//h4YObIvknAH/FHA95cfEyb3wzQp2v7UfOzCFEFq722

ProcessID=1172

[DOMAINS]

Domain1=0.0.0.0||21|Wizard Generated Domain|1|0|0

[Domain1]

User1=admin|1|0

[USER=admin|1]

Password=hr1589A4F0334FDF55D52F26DFA2D3CCEB

HomeDir=g:

RelPaths=1

DiskQuota=1|153600000|0

SpeedLimitUp=5120

SpeedLimitDown=5120

TimeOut=600

Maintenance=System

Note1=&#34;Administrator User&#34;

Access1=g:|RWAMELCDP

SERV-U配置文件分析

配置文件对大小写不敏感

行与行之间允许空行

主要分为2段

[GLOBAL]

全局变量段

主要设置SERV-U的注册号,以及刷新标志

[DOMAINS]

域名配置段

包括在serv-u下添加的所有域信息以及域以下用户列表

#具体分析

[GLOBAL]

Version=5.0.0.0

#无需改动.版本号

RegistrationKey=HsVRCjxHMe/HwDOrrUxqeMuChKO0DdlzUy2tCGgcdMVQDs/7P9EdwjKrowsPF//h4YObIvknAH/FHA95cfEyb3wzQp2v7UfOzCFEFq722

#无需改动.产品注册码

ProcessID=1172

#无需改动.注册号

ReloadSettings=True

#在修改INI文件后需加入此项,这时SERV-U会自动刷新配置文件并生效,此项随之消失.再有修改再次添加

[DOMAINS]

Domain1=0.0.0.0||21|Wizard Generated Domain|1|0|0

#无需改动.新增加的域的IP地址以及说明.

# 格式

# Domain1= IP地址 | 端口 | 域显示名称 | 是否生效 | 是否显示 | 是否删除

#IP地址为0.0.0.0时,SERV-U自动适配系统所分配的IP地址

#当生效位置0,则此域禁用

#当显示位置0,此域不生效并且在控制面板不显示此项

#当删除位置0,则ReloadSettings设置为Ture后,即刷新后,自动删除此域名以下所有内容

[Domain1]

#无需改动.与上面添加的域对应.是此域内的一些公共设置

User1=admin|1|0

#必填.用户列表

# 格式

# User序号 = 用户名 | 是否生效 | 是否删除

#User添加时必须按照序号排列,如果跳号,则跳号的不生效.如果序号重复.则排列在后的无效.

#是否生效置0,则此用户禁用

#是否删除置1,则刷新后删除用户信息,包括配置. 如果置2,则域下所有用户均删除.

[USER=admin|1]

#用户配置段,这些段的排列不分先后

# 格式 [ USER=用户名 | 是否?120

TimeOut=600

Maintenance=System

Note1=&#34;Administrator User&#34;

Access1=g:|RWAMELCDP

SERV-U配置文件分析

配置文件对大小写不敏感

行与行之间允许空行

主要分为2段

[GLOBAL]

全局变量段

主要设置SERV-U的注册号,以及刷新标志

[DOMAINS]

域名配置段

包括在serv-u下添加的所有域信息以及域以下用户列表

#具体分析

[GLOBAL]

Version=5.0.0.0

#无需改动.版本号

RegistrationKey=HsVRCjxHMe/HwDOrrUxqeMuChKO0DdlzUy2tCGgcdMVQDs/7P9EdwjKrowsPF//h4YObIvknAH/FHA95cfEyb3wzQp2v7UfOzCFEFq722

#无需改动.产品注册码

ProcessID=1172

#无需改动.注册号

ReloadSettings=True

#在修改INI文件后需加入此项,这时SERV-U会自动刷新配置文件并生效,此项随之消失.再有修改再次添加

[DOMAINS]

Domain1=0.0.0.0||21|Wizard Generated Domain|1|0|0

#无需改动.新增加的域的IP地址以及说明.

# 格式

# Domain1= IP地址 | 端口 | 域显示名称 | 是否生效 | 是否显示 | 是否删除

#IP地址为0.0.0.0时,SERV-U自动适配系统所分配的IP地址

#当生效位置0,则此域禁用

#当显示位置0,此域不生效并且在控制面板不显示此项

#当删除位置0,则ReloadSettings设置为Ture后,即刷新后,自动删除此域名以下所有内容

[Domain1]

#无需改动.与上面添加的域对应.是此域内的一些公共设置

User1=admin|1|0

#必填.用户列表

# 格式

# User序号 = 用户名 | 是否生效 | 是否删除

#User添加时必须按照序号排列,如果跳号,则跳号的不生效.如果序号重复.则排列在后的无效.

#是否生效置0,则此用户禁用

#是否删除置1,则刷新后删除用户信息,包括配置. 如果置2,则域下所有用户均删除.

[USER=admin|1]

#用户配置段,这些段的排列不分先后

# 格式 [ USER=用户名 | 是否显示 ]

Password=hr1589A4F0334FDF55D52F26DFA2D3CCEB

#必填.密码.算法为随机产生2个字符,如hr.将hr+明文密码(如test)使用MD5加密,如MD5(&#34;hrtest&#34;,生成密码后将所有小写字符变为大写

#在最前加上这两个随机字符&#34;hr&#34;+&#34;1589A4F0334FDF55D52F26DFA2D3CCEB&#34;,生成最终密码

HomeDir=g:

#必填.Home目录,用户登陆后的所在目录

RelPaths=1

#无需改动.锁定用户于Home目录,

DiskQuota=1|153600000|0

#必填.磁盘限额

# 格式 DiskQuota = 生效位 | 限制容量 | 实际使用量

#容量均以字节计算

SpeedLimitUp=5120

#可选.上传最大速度.以字节计算

SpeedLimitDown=5120

#可选.下载最大速度.以字节计算

TimeOut=600

#无需改动.超时,以秒计算,默认10分钟

Maintenance=System

#可选.用户权限,默认无此项

Note1=&#34;Administrator User&#34;

#可选.注释.默认无此项

Access1=g:|RWAMELCDP

#必填.对于目录的存储权限,默认权限为RWAMLCDP.权限排列无需按照顺序.

# 格式 Access序号 = 目录 | 权限

#R 读取

#W 写入

#A 附加

#M 修改

#E 执行–由于安全原因,所有帐号均不能开启此权限

#L 目录列表

#C 建立目录

#D 删除目录

#P 将权限继承给子目录

标准的serv-u用户配置段例

[Domain1]

User1=admin|1|0

User2=test|1|0

[USER=admin|1]

Password=hr1589A4F0334FDF55D52F26DFA2D3CCEB

HomeDir=g:

RelPaths=1

DiskQuota=1|153600000|0

TimeOut=600

Access1=g:|RWAMLCDP

[USER=test|1]

Password=hr1589A4F0334FDF55D52F26DFA2D3CCEB

HomeDir=f: est

RelPaths=1

DiskQuota=1|153600000|0

TimeOut=600

Access1=f: est|RWAMLCDP

2006/01/25网络编程

46条评论
36 views

网页木马后翌

网页木马后缀]asp,php,htm,html,asa,aspx,shtml

[网页木马名称]砍客C/S木马Ver1.2

[特征码]if Session(&#34;b&#34;)<>&#34;&#34; then execute Session(&#34;b&#34;)%>

[网页木马名称]砍客数据库木马1.0

[特征码]<%execute request(&#34;kker&#34;)%>

[网页木马名称]lanker微型PHP后门2.0正式版

[特征码]<?php eval($_POST[cmd])

[网页木马名称]Newmm小型ASP木马

[特征码]<% Response.write &#34;本文件绝对路径&#34; %>

[网页木马名称]ASP站长助手6.0

[特征码]http://www.GXGL.com/images/FileType/

[网页木马名称]diy.asp加密版

[特征码]烁空设计友情修改版

[网页木马名称]海阳ASP2005木马_娇娘美化版

[特征码]确认要插入后门吗

[网页木马名称]海阳顶端网ASP木马2006

[特征码]海阳顶端网ASP木马2006

2006/01/24杂七杂八

37条评论
35 views

你永远玩不过制定规则的人!

狐狸跟街上走着,迎面碰上了老狼。老狼伸手就给他一大嘴巴,&#34;让你丫不戴帽子&#34;。

狐狸很郁闷地回家了,弄一帽子戴着。

第二天又碰上老狼了,又挨了一大嘴巴,&#34;让你丫戴帽子&#34;。

如是几次,总挨打。狐狸想,这么老挨打不是个事儿啊,不行,我得找老虎投诉去。

刚到老虎家门口,就听老虎在屋里说话。

&#34;你也不能老这么蛮不讲理打狐狸阿,回头狐狸找我投诉来,我也不好罩着你啊。好歹咱面子上得过得去,我教你一招:下回你见着狐狸,跟他说:给我弄点儿洗衣服的来。他给你拿肥皂来,你就打他一顿,说我要的是洗衣粉,谁让你拿肥皂。 他拿洗衣粉来,你也能打,说我要肥皂,谁让你拿洗衣粉。要不然你跟他说,去,给我找个女人来。他给你找个胖的,你打他一顿说我要瘦的;给你找个瘦的,你也打一顿,说我要胖的。这样不结了,你也能打他,我面子上也能说得过去。

狐狸一听,得,咱也别投诉了,回家吧。

第二天,狐狸在街上又撞上老狼。老狼大喝一声:去,给我找点儿洗衣服的来。

狐狸不慌不忙:你是要洗衣粉阿,还是要肥皂啊?

老狼一听,嗯?有一手阿。又说:去,给我找个女人来。

狐狸还是不慌不忙:你是要胖的啊,还是瘦的?

老狼一听勃然大怒,伸手就给狐狸一个大嘴巴:让你丫不戴帽子!

几个有意思的web 2.0 网站

转载自:亚嬉士的博客,有删改。

豆瓣评论(www.douban.com)

你在读什么书?你想读什么书?你读了什么书?爱读书的人总能找到同样爱读书的朋友,心灵与心灵的碰撞也就从这个共同的爱好开始。阿北这个web 2.0型网站正在逐渐稳健但不缓慢的增长着。在这里,你还可以找到对电影或者音乐有通好的朋友,当然,发表一番议论,挥洒一下文字,都有可能得到他人的回应。

爱米网(www.aimi.cn)

一个利用标签(tag)形成的web2.0网站。你可以在这里定下一个目标,许下一个愿望,看看其他人是不是跟你有同样的目标和愿望,与他人分享经验,相互勉励。同样的,一个共同的目标,就可以形成一个朋友圈,并能够相互交流。爱米网最大的特点在首页,一大堆稀奇古怪的愿望必有一个吸引你,而各种愿望字体的大小就表示参与的人的多少,所以看到“结婚”,“我想发大财”之类的愿望以超大号字体显示并不用感到奇怪。

百万首页

英文原版:www.milliondollarhomepage.com

中文克隆:www.1baiwan.com

不知道是做网站的疯了,异想天开,还是看网站的疯了,脑袋坏掉。反正不管怎么样,百万首页在过去的几个月内,从英国大学生Alex为筹集自己的学费开始建这么个有意思的首页开始,在中国至少已经产生了20个以上的模仿网站。这个网站有点不可思议,将网站首页按横100行竖100列分成一万个格子,每个格子售价100美金,作者希望从而能赚到100万美金。MY GOD!是不是疯了,但就在写这篇日志的时候,网站已经卖出了608,100美元,销售额完成过半,距离目标只剩下40万了。而中文克隆站竟然也卖出了28万元。买下格子的人都会很精心的设计自己的LOGO,小的一格,出手阔绰的则可以一下干掉100格。有人计算过,百万首页所引起的关注带来的流量性价比甚至好于Google Adwords广告,所以会有这么多疯狂买家也应该可以理解。只是第一个是创新,第二个叫模仿,第三个就只能叫做抄袭了,中国人善抄袭,但也没见青出于蓝而胜于蓝者,此百万首页命运大抵相似。

采录:互联网周刊:百万首页究竟是骗局还是新模式

        --互联网周刊 董璐 王亚雪

新闻事件的起因源于英国一个名叫Alex学生的大胆创意。从小就喜欢奇思怪想的Alex为了筹集自己的大学学费而又不想跟银行借贷款,于是在今年的8月26日突发奇想,只用10分钟就建立了一个名叫百万首页的网站(milliondollarhomepage.com),然后将这个网站的首页平均分成1万份,每一份只是一个小小的格子,他宣称每个格子卖100美元,于是一个几乎是零成本的网页在经过Alex的创意后,总价值就变成了一个高达百万美元的网页。买家可以在自己购买的格子中随意放任何东西,包括自己网站的LOGO、名字、或者特意设计的图片链接等等。

  如果是你,当你听到这个消息时,会认为这是一场无聊的骗局,还是一种不被理解的新经济模式?

  是天才还是骗子?

  Alex自认为他是个天才,在美国目前也还没有人质疑过他的动机和做法,至少还没有人曾说他是个骗子。Alex在建成网站时就公布了他的个人真实信息,希望用自己的诚信来担保他会对买格子的用户负责。当时他并不在乎这1万个格子是否真能卖出去,不过是抱着试试看的心态。他觉得即使只能卖出1%,也算是种成功。

  可是,最终的结果却超乎了Alex的想象。在短短不到两个月的时间中(截至文章发稿前),Alex已经卖出了4281个格子,并收获了42万8千美元。这些找到买主的格子,里面有公益广告、中文培训基地、个人网站、下载基地……等等,将鼠标停留在格子上就会看到详细的说明,他们都被外国人用好的创意打扮得花枝招展。

  现在,Alex每天都会接到好几千封的电子邮件,包括媒体的采访。已经有包括中国在内的26个国家和地区的63家媒体对他进行了采访和报道,打扰的人太多以至于现在他不得不将自己的个人真实地址从网站中撤掉。但还是会有人不停地来买格子,而且大的订单还在不断地出现。自9月份以来,50个格子以上的订单已经有7份,在Alexa的排名中他的网站已经窜升至第1939名(截止发稿前)。

  设计通过卖格子就能够变成百万富翁,这听起来更像一个天方夜谭中的故事,然而21岁的Alex却真正通过这个创意在迈向成功。

返回顶部