等待已久的全国上半年软件水平考试的成绩终于出来了,我考的是程序员。虽然我很自信肯定能通过,不过,我还是很期待最终的分数。
最终的成绩:上午62,下午71,顺利地通过了考试,而且成绩还不错(因为是75分制的 ^_^)。
如愿拿到了程序员的证书,当然,这不是最终目标,因为还有软件设计师,还有英语。
加油,为了下一个目标而奋斗!
CoffeeCat
2007-07-17
经过了将近1个星期的翻译,WinPcap V4.01 中文手册 正式发布了! 翻译确实是一件很辛苦的事情,希望我的翻译能为大家带来方便,愿大家充分利用WinPcap库,创造出优秀的应用程序来,当然,不要用来开发黑客软件喔~~~ 本手册只有高级部分没有翻译,我怕翻的不准确,就保留原文啦,还请大家见谅。 在线阅读:http://WinPcap.CoffeeCat.net.cn 意见讨论:http://wyx.web.shiep.edu.cn/CoffeeCat/studio/article.asp?id=40CoffeeCat2007-07-16
这学期,我们网络的课程设计的软件部分,是编写一个捕获数据包的程序。本来,我打算用C++编写基于WinPcap的程序,不过由于我不会MFC,所以只能做出Dos这样的界面,于是,我就用基于JpCap的Java语言写。
程序写完了,在我自己机器上运行,没什么问题,难得出现一次Unexpected Error的提示,我也没理会它。
今天,去学校的机房运行,顿时傻眼,因为程序根本不能运行,每次运行都会出现Unexpected Error。以下是程序:
import jpcap.*;
import jpcap.packet.*;
import java.sql.Timestamp;
//创建一个执行接口PacketReceiver类的一个实例IP类
class IP implements PacketReceiver
{
public void receivePacket(Packet packet)
{
System.out.println("捕获一个IP数据报");
System.out.println();
System.out.println("捕获时间为:"+new Timestamp((packet.sec * 1000) + (packet.usec / 1000)) );
System.out.println();
System.out.println("IP头长度为:"+packet.header.length);
System.out.println();
System.out.println("目的IP地址为:"+((IPPacket)packet).dst_ip.toString());
System.out.println();
System.out.println("数据内容为:");
for(int i=0;i<packet.data.length;i++){
System.out.print(Byte.toString(packet.data[i]));}
System.out.println();
System.out.println();
}
public static void main(String[] args) throws Exception
{
//返回一个网络设备列表
NetworkInterface[] devices = JpcapCaptor.getDeviceList();
//打开连接设备实例1,提取每次数据包中前2000字节,设置网卡为混杂模式,最后指定超时时间为20
JpcapCaptor jpcap = JpcapCaptor.openDevice( devices[1], 2000, true, 20);
//指定捕获一个数据包,如果设为-1,则为无限循环地捕获,调用抽象方法void receive(Packet packet)
jpcap.loopPacket(-1, new IP());
}
}
根据分析,程序在(IPPacket)packet出错,错误提示信息大致为:
#
# An unexpected error has been detected by HotSpot Virtual Machine:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x6d75c5cc, pid=2320, tid=1692
#
# Java VM: Java HotSpot(TM) Client VM (1.5.0_08-b03 mixed mode, sharing)
# Problematic frame:
# V [jvm.dll+0x9c5cc]
#
# An error report file with more information is saved as hs_err_pid2320.log
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
#
很明显,出错的原因肯定是我们的packet不能转换成IPPacket,也就是说,我们捕捉到的数据包不是IPPacket。
解决这个问题的最简单的方法,就是把处理packet的程序放到try和catch中,那么,一旦程序在IPPacket处发生奔溃,那就说明程序捕获的不是IP数据报,那就不会再显示出来,当然,在catch块中,你也可以进行其它的操作。
修改
receivePacket函数中的程序如下:
public void receivePacket(Packet packet)
{
try
{
System.out.println("捕获一个IP数据报");
System.out.println();
System.out.println("捕获时间为:"+new Timestamp((packet.sec * 1000) + (packet.usec / 1000)) );
System.out.println();
System.out.println("IP头长度为:"+packet.header.length);
System.out.println();
System.out.println("目的IP地址为:"+((IPPacket)packet).dst_ip.toString());
System.out.println();
System.out.println("数据内容为:");
for(int i=0;i<packet.data.length;i++){
System.out.print(Byte.toString(packet.data[i]));}
System.out.println();
System.out.println();
}
catch( Exception e )
{
}
}
出现这个错误的原因,我觉得是因为学校的机房中了病毒的缘故,那些病毒会发送很多不规则的数据包,从而导致了packet和IPPacket之间的强制转换不成功,从而导致程序奔溃。同时,我们机房中还是用了ARP协议,所以,在网络中,也有ARP的数据包。当我们想将packet强制转换成ARP的包,也是不行的。
所以,当你出现了以上问题,请你检查一下你的程序里面是否存在着包之间的强制类型转换,并且,一定要把强制类型转换的语句放到try...catch语句块中进行处理。
最后,附上我写的程序,供大家学习和下载
特别注意:
1:JCCFrame.java是主程序
2:在运行程序前,请依次安装WinPcap3.0和JpCap0.6。我特别推荐安装JpCap0.6而不是0.7,因为0.6的安装包做的比较好,一次安装,全部到位,如果你用0.7,那么你还要为JpCap.jar进行其它配置,很容易出错。
3:在安装JpCap0.6时,请选中JpCap0.6 for JDK。
下载地址:
http://www.cnitblog.com/Files/CoffeeCat/JCCFrame.rarCoffeeCat
2007年7月13日
我的个人主页正式上线,地址:http://www.CoffeeCat.net.cn
那里的IT博文板块将和这里同步更新
今天,看到一张很特殊的JPEG文件,如下图
http://www.cnitblog.com/images/cnitblog_com/coffeecat/20060817160921_hI0egShrTUiz.jpg
将这张图片放到一个文件夹中,然后查看缩略图,竟然发现,缩略图和原图不是一样的。
我再次用windows picture and fax viewer打开这个图片的时候,显示正在下载...然后显示出原图。
我的第一反应告诉我,我有可能中病毒了,因为以前我听说过有种JPEG病毒,但是一直没有见识过,直到这次,我发现JPEG不仅仅是一种编码。。。
为什么JPEG还要带有下载功能呢?让我感到很莫名。就像rm文件,本身是一个媒体文件,竟然带有执行外部应用程序等其他不联系的功能,真让人摸不着头脑,真不晓得设计编码的人是怎么想的,这些用不着的功能不仅没为我们提供任何方便,反而增加了文件的后门,削弱了系统的安全性。
CoffeeCat
2007-07-04
今天开电脑,突然发现我的XP跳出来一个提示:you may be a victim of software counterfeiting。我意识到我昨天安装的Windows更新中,有1个是正版验证程序。这下让我傻掉,不仅在系统启动的登陆窗口下会出现这种提示,而且在任务栏旁边,也会时常跳出气球提示,虽然现在只有提示出现,可我不知道用一阵子以后系统会出现什么状况,晕阿。
当务之急,当然是卸载咯。
按照常规的方法,我打开控制面板,添加删除程序,然后点击显示更新,这样就能把更新显示出来了。在N多更新中,我找到了Windows Genuine Advange Notification这一项,不过让我傻眼,他说:This update can't be removed.
那怎么办呢?网上查。网上的解决方法是下载一个破解补丁,然后到安全模式下怎么怎么的。。。我觉得太烦了,所以没有尝试。
最简单的解决方法如下:于是我想到了windows自带的系统恢复,尝试了一下,效果超好,已经完全恢复到我原先的系统了,而且操作简单。
1:开始-->程序-->附件-->系统工具-->系统恢复
2:然后找到一个还原点(也就是你要回到几号),当然,这个日期必须早于你安装这个更新的日期,找到以后点下一步,再确定,系统会重启,重启以后就好了。
Tips: 当你恢复完成以后,等于你就回到了安装这个更新以前的状态,所以,自动更新还会提示你安装这个更新,这次,你千万不要再安装啦!
方法:
1:点开自动更新,发现有两个选项,我们选自定义安装
2:然后找到里面的 KB905474 这个更新,把前面的勾去掉,点击取消左边的那个按钮
3:弹出的对话框中,勾选“不要再提示我安装这些更新”,然后点确定
希望本文对你有所帮助!
CoffeeCat
2007-06-30
Office2007默认的保存类型是docx,这种文档类型不兼容Office2003及以前版本,致使很多用户在2007上编辑的文件,在2003上不能打开。
这里提供两种有效的方法
1:将docx文件转换成doc文件,这是一个在线的转换工具,只需要选择您要转换的文件,再输入电子邮件地址,系统将会将转换好的文件发送到您的邮箱。不过由于系统的负担可能太大,转换出来的文件好像不能即时收到,要过段时间。
地址:
http://docx-converter.com
2:安装一个微软提供的插件,就可以让Office2003兼容Office2007了。
软件下载地址:
点击下载CoffeeCat
2007-06-13
最近,我使用FlashFXP老是遇到上传不了,几字节的小文件有时还可以传上去,但大一点的就不行了。其先,我还以为是我的ISP关闭了FTP服务,或者是我的路由器坏了,不过今天终于发现了原因,原来是Windows自带的防火墙的问题...
今天用FlashFXP和原先一样,速度像蜗牛,不过,突然,系统弹出来一个提示框,问我是否要阻止FlashFXP连接互联网,顿时,我茅塞顿开,原来,这就是困扰我多时的问题。在系统没有弹出这个提示框的时候,软件会一直被防火墙封锁,所以会连不上。
进入控制面板,里面有Windows防火墙这一项,打开它,并选择中间那个选项卡,在列表中是允许访问网络的程序,只要把不能上网的软件添加进去,就可以了。
不过,经过了上述经历,我终于发现,Windows防火墙其实防不住火,否则,我的几字节的小文件怎么能突破防火墙,顺利上传上去呢?
我这两天在研究一些Javascript代码,正好对能编辑的iframe很感兴趣,然后就自己写了个可编辑的iframe,可在IE中能运行出来,而在FireFox中却始终无法成功,让我很困惑。
我在百度上搜索了好一阵子,始终没有找到正确的答案,最后,我还是通过Google在Mozilla的官网找到了答案。其实解决方法很简单,在此和大家分享一下。
我一开始的核心代码是这样的
<html>
<head>
</head>
<body>
<iframe id="myiframe" style="width:750px; height:400px; border:1;"></iframe>
</body>
<script language="javascript">
<!--
document.getElementById("myiframe").contentWindow.document.designMode="on";
-->
</script>
</html>
这段代码在IE中完全没有问题,而在FireFox中全无反应。
还要注意,<script>段一定要写在<iframe>的下面,否则将会出现myiframe对象无定义的错误。经过修改的代码
<html>
<head>
</head>
<script language="javascript">
<!--
function start()
{
document.getElementById("myiframe").contentWindow.document.designMode="on";
}
-->
</script>
<body onLoad="start()">
<iframe id="myiframe" style="width:750px; height:400px; border:1;"></iframe>
</body>
</html>
very easy,but it's the sollution.
CoffeeCat
2007-04-26
这几天我在尝试使用UTF-8编码做网站,又恰好使用了eWebEditor,而eWebEditor使用的是GB2312编码,这就造成了我的网站编码不统一,最终导致了乱码的产生。
为了解决这个问题,我将GB2312的eWebEditor的转换成了UTF-8编码,现在网站正常运行了。同时,我也将eWebEditor2.8(UTF-8编码)的版本共享给大家,方便大家在UTF-8编码网站中使用eWebEditor。
下载地址:http://www.cnitblog.com/Files/CoffeeCat/eWebEditor2.8(UTF-8).rar注:此版本在某些环境下会出现与数据库相关的运行错误,可能是数据库环境的关系吧。由于发布的时间已经很久了,而且eWebEditor已经出到v6.0了,所以我不打算调试了。需要下载的朋友可以尝试运行一下,如果出错了,也不要见怪。在此我强烈鄙视一下在回复中骂孙子骂老子的人,一点都不懂得感恩。这些回复我已删除。
CoffeeCat
2007-04-23