用Lua语言编写Wireshark dissector插件

Wireshark是一款著名的网络协议分析工具,基于GPLv2协议开源,支持Linux、Windows、MacOS等多个操作系统。

Wireshark is the world's foremost network protocol analyzer, and is the de facto (and often de jure) standard across many industries and educational institutions.

Wireshark development thrives thanks to the contributions of networking experts across the globe. It is the continuation of a project that started in 1998.

Wireshark已经支持数千种协议,对新协议的支持还在不断增加。**今天,你发明了一个新的网络协议,也想让Wireshark识别,你该怎么办呢?**你有两个选择:

  1. 发布你的网络协议,等到有1,000,000人每天使用你的协议时,Wireshark就会支持你的协议
  2. 编写一个Wireshark插件,自己动手、丰衣足食

如果你选择了前者,请按下CTRL+D,然后在你改变主意的时候再回来。

守株待兔骗过UAC

User Account Control (UAC)Windows Vista操作系统引入的一项安全基础架构技术。 应用程序只拥有标准帐户权限,除非管理员明确授予其更高的权限。 这样,只有用户信任的程序才能获得高权限,而恶意软件则没有对系统造成破坏所需的权限。

为什么需要UAC?

在2003年之前,我一直使用着Windows 98。 Windows 98有一个“用户帐户”设置,设置后会在开机时出现密码输入框。 可是我惊奇的发现,在密码输入框中简单的点击“取消”按钮,就可以进入系统,并且所有操作并不会受到限制。 Windows 98的多个用户帐户,仅仅是桌面自定义的区分,并没有对操作权限作任何限制。 如果想删除一个帐户,只需到C:\WINDOWS删掉用户名.pwl文件就可以了。

2003年我开始使用Windows XP Professional。 第一次打开新电脑,没有要求输入密码的提示,就直接进入了桌面。 在安装完毕日常使用的软件后,我为Administrator帐户设置了密码,并且创建了一个Users组的帐户来进行日常操作。

很快我发现,《写作之星WDS》软件无法正常启动了。 作为正版用户,我给翰林汇公司打了电话;客服人员告诉我,1.0版本是为Windows 98设计的,在Windows XP中则必须使用管理员帐户才能启动。 经过多次尝试,我发现只需把我的帐户加入Power Users组,就可以正常启动《写作之星WDS》,但是仍然无法打开和保存文件、只好复制、粘贴。

用TinyGet投票

前几天,有人托我在东方网的某个评选活动中帮他投票,票数多多益善——也就是所谓的“刷票”。

投票活动页面

打开投票页面,先手工投几票,发现这个活动的投票不需要登录,对于IP地址、投票频率都没有任何限制。

用Fiddler2截取投票HTTP报文

Fiddler is a Web Debugging Proxy which logs all HTTP(S) traffic between your computer and the Internet. Fiddler allows you to inspect all HTTP(S) traffic, set breakpoints, and "fiddle" with incoming or outgoing data. Fiddler includes a powerful event-based scripting subsystem, and can be extended using any .NET language.

Fiddler is freeware and can debug traffic from virtually any application, including Internet Explorer, Mozilla Firefox, Opera, and thousands more.

《后天》影评:生命、信仰、承诺

《后天》主要讲述的是全球变暖、气候问题。 同时,我还看到了另外一些美国人的价值观——

生命:美国人把生命放在相当重要的位置。影片中,每个人都以他自己认为正确的方式,尽可能延长、保存自己与别人的生命。可是,"正确的方式"是有争议的,很多人由于错误的判断,而丧失了生命。

信仰:人活着是要有一定的信仰的。在图书馆中,人们不得不燃烧图书来产生热量、防止被冻僵。即便如此,《圣经》是不可以烧掉的——《圣经》是美国人的信仰。

承诺:Jack答应过儿子"I will come for you",在汽车故障的情况下,他不顾生命危险,步行前往图书馆寻找儿子。那位医生,也一直照料着Peter,一直等待着救护车的到来。

这部影片还是相当精彩的,在此向各位推荐。 建议观看英文原声、无字幕版本,还是能够听懂的。

信息系统计算模型:从C/S、B/S到云计算

随着计算机软件的不断发展,计算机软件的科学计算、信息处理两大用途中,信息处理应用变得越来越广泛。信息处理软件自始就是多用户的:UNIX上的mail是最早的信息处理软件之一,它的作用是在同一台UNIX机器的不同用户间传递文本信件。计算机网络出现后,多用户的信息处理软件得到进一步发展,演变成“信息系统”。一个基于计算机的信息系统,是以计算机软件、硬件、存储和电信等技术为核心的人机系统。

回到过去——单机时代

最早的信息处理软件mail是多用户的,但是它只能在同一台机器的不同用户间传递信息,而不能实现跨机器的传递。uucp可以实现跨主机的信息传递,但是主机间的网络连接不是持续的,信息到达的时间无法保证。那时,计算机信息处理仍然是以单机为主,通过软盘或非持续的网络连接在主机间交换数据。

在中文市场,求伯君开发的WPS字处理软件取得了很大的市场份额。WPS最早的版本基于彩色文本界面,通过控制字符决定文字、段落的格式。WPS处理的对象是中文文档,信息处理的主要目的是根据需要的格式打印文档——信息在计算机上的处理是次要的,文档的主要形式是打印稿。

FoxBase等单机版数据库管理系统也迅速发展。开发者在此类数据库基础上,开发了单机版本的图书馆、工资等各类管理信息系统

P2P流量监控Web平台的设计与实现

摘要

P2P点对点传输的不断增长占用大量骨干网带宽,影响关键业务的正常运行。本文首先介绍了主要的P2P协议识别技术,讨论了改进思路。然后安装了一个基于iptables和l7filter的P2P流量监控节点,并用AJAX和PHP编写了一个Web监控平台以便通过Web管理监控节点、在图形界面中查看P2P流量日志,组成了一套P2P流量监控系统。

关键词 P2P,流量,监控,网络,l7filter

ABSTRACT

Fast growth of Peer-to-Peer traffic are taking more and more backbone network bandwidth, and may slow down key businesses. In this paper, major P2P identification techniques and a way to enhance them are introduced at first. Then we set up a P2P traffic detection router based on iptables and l7filter. A Web application is designed and implemented with AJAX and PHP, so that a network administrator can manage the router or view router logs in this Web application. The router and the Web application make up a P2P detection system.

GPA计算器

2月14日,我发现我的网站流量陡然上升;当时,我以为网站受攻击了,但没有发现什么异常。 第二天一看统计,大量用户从校内网和饮水思源BBS站访问了我2月3日制作的一个小工具——上海交通大学本科生GPA计算器

谷歌访问统计

我很早就知道GPA的概念——学积点的加权平均;GPA是评选奖学金、出国申请的依据。 我也很想知道自己的GPA,然而GPA的计算涉及所有学科的成绩,计算起来非常复杂,即使使用BBS上找到了几个GPA计算工具,也需要一个个输入成绩和学分。 2月3日,我在选课系统上查看成绩单的时候想到,能否读取成绩单、自动计算GPA呢? 由于计算GPA需要知道入学以来每个学期的全部成绩,而选课系统每页只有一个学期的成绩,我又想到了教务处网站上的“本科修业情况查询”功能。

查出自己的修业情况,然后看HTML源代码,写出XPath表达式,两小时不到,我就做出了一个方便的GPA计算器——在Firefox里,在修业情况上按下CTRL+U查看源代码、CTRL+C复制,然后到计算器页面CTRL+V粘贴,鼠标一点,GPA就算出来了。 接下来几天,又修改程序,放弃XPath、改用getElementsByTagName,使得程序能支持IE浏览器;还做了些搜索引擎优化。

我没有宣传这个工具,只是网站首页有一个链接。 在搜索引擎收录后,校内网、饮水思源BBS站出现了多个介绍此程序的帖子,出国板还把它列入了置底帖。 然后,就出现了访问量陡然上升的情况。

生日圆梦

2008年2月12日,我的21周岁生日。

早在一年多以前,我就有一个梦想——观看一场上海著名的《ERA-时空之旅》超级多媒体梦幻剧。 苦于上网不便、不了解订票途径,一直没能如愿。 前几天春节、拿到了一些压岁钱,在电视广告“秀一个上海给世界看”的鼓舞下,访问 http://www.era-shanghai.com/ 再用Windows Live Messenger与客服联系,总算在网上预定了座位,今天和爸爸妈妈一起去看戏了。

共和新路上的上海马戏城是《ERA-时空之旅》的固定演出地点;自2005年9月27日开演以来,已经连续演出了近千场。 据搜狐新闻,该演出先期设计制作成本为3000万元、每天演出的运营成本达到7万元。 原先,我对它的了解仅仅是2007年东方卫视除夕晚会出现的“时空飞车”这个节目录像、以及8位摩托勇士;一个月前,又在《新民晚报》上看到了“晃板踢碗”节目表演者妻子的文章。

我站在上海马戏城门外

高架一路畅通,提前一个多小时到达了上海马戏城。 去售票处一看,计算机屏幕上显示着我的姓名及预定的数量;报上姓名,付款取票。 由于时间还早,我们去附近超市走了一圈。

dbMySQL数据源访问类

dbMySQL类,用于PHP访问MySQL数据库,而编程更加方便、安全性更高。

<?php
class dbMySQL {//数据源访问类
	private $conn;//连接
	private $prefix;//表名前缀
	private $sql=NULL;//上一条SQL语句
	private $result=NULL;//结果
	private $rows=0;//行数
	private $rows_got=0;//已提取行数
	//$db=new dbMySQL(主机,用户名,密码,数据库名,表名前缀,是否永久连接);
	function __construct($host,$username,$password,$dbname,$prefix='',$pconnect=TRUE) {//连接
		$connect_function=$pconnect?'mysql_pconnect':'mysql_connect';
		$this->conn=@$connect_function($host,$username,$password) or die('不能连接到MySQL数据源服务');
		mysql_query("SET NAMES 'utf8'",$this->conn);
		@mysql_select_db($dbname,$this->conn) or die('MySQL数据源中数据库不存在');
		$this->prefix=$prefix;
	}
	private function close() {//如果上一个结果存在,清除它
		if ($this->result!=NULL) mysql_free_result($this->result);
	}
	public function execute_sql($SQL) {//执行
		//echo $SQL;
		$this->close();
		$this->sql=$SQL;
		mysql_query($SQL,$this->conn);
		$err=mysql_error($this->conn); if ($err!='') die($err);
		$this->result=NULL;
		$this->rows=mysql_affected_rows($this->conn);
		$this->rows_got=0;
	}
	public function execute($SQL,$p=NULL,$prefix='###') {//带参数执行
		$s=str_replace($prefix,$this->prefix,$SQL);
		if ($p==NULL) { $this->execute_sql($s); return; }
		foreach ($p as $i => $v) {
			if (ctype_digit($i{0}) && !is_numeric($v)) die('SQL数值型参数错误 '.$i.'=>'.$v);
			$vv=ctype_lower($i{0})?"'".mysql_escape_string($v)."'":$v;
			$s=str_replace('?'.$i,$vv,$s);
		}
		$this->execute_sql($s);
	}
	//带参数执行、查询说明
	//数组$p "a"->"ppp"
	//SELECT * FROM j WHERE m=?a 解析为 SELECT * FROM j WHERE m='ppp'ִ
	//参数名称第一位是小写字母,作为字符型参数,编码并加单引号
	//参数名称第一位是数字,作为数字型参数,如果不是数字就出错
	//参数名称第一位是其他情况,直接带入SQL表达式
	//$prefix表示前缀占位符,默认###,FROM ###kk在前缀是pr_时解析为FROM pr_kk
	public function query_sql($SQL) {//查询
		//echo $SQL;
		$this->close();
		$this->sql=$SQL;
		$this->result=mysql_query($SQL,$this->conn);
		$err=mysql_error($this->conn); if ($err!='') die($err);
		$this->rows=mysql_num_rows($this->result);
		$this->rows_got=0;
	}
	public function query($SQL,$p=NULL,$prefix='###') {//带参数查询
		$s=str_replace($prefix,$this->prefix,$SQL);
		if ($p==NULL) { $this->query_sql($s); return; }
		foreach ($p as $i => $v) {
			if (ctype_digit($i{0}) && !is_numeric($v)) die('SQL数值型参数错误 '.$i.'=>'.$v);
			$vv=ctype_lower($i{0})?"'".mysql_escape_string($v)."'":$v;
			$s=str_replace('?'.$i,$vv,$s);
		}
		$this->query_sql($s);
	}
	public function read() {//提取一行为关联数组,如果已提取完则返回NULL
		if ($this->result==NULL) return NULL;
		if ($this->rows_got==$this->rows) return NULL;
		++$this->rows_got;
		return mysql_fetch_assoc($this->result);
	}
	public function num_rows() {//总行数
		return $this->rows;
	}
	public function eof() {//是否提取完了?
		return ($this->rows_got==$this->rows);
	}
}
?>

dbMySQL优点

  • 高安全性:强制检查类型、自动转义,避免SQL注入漏洞
  • 方便编程:面向对象语法,不必写mysql_fetch_assoc等长长的函数名
  • 方便编程:仿reader机制,直接从对象读出数据,不必再写$resultID
  • 支持表名前缀:允许在一个数据库中运行多个应用

dbMySQL样例代码

超声波水下扩频通信系统的设计

一、认识超声波

声音是一种压力波:介质分子有规律的振动,使周围的介质产生疏密变化,这就产生了声波。声音作为波的一种,可以通过傅立叶变换分解为不同频率不同强度正弦波的叠加。人耳可以听到的声音的频率范围是20Hz~20kHz,高于这个范围的波动称为超声波。通常认为,超声波的频率范围是20kHz~500kHz。狗和蝙蝠等动物可以听到高达160kHz的声音,因此超声波只是对人而言。

超声波的传播速度与在相同介质中普通声波的传播速度相同:0℃海平面的空气中是332m/s,水中是1450m/s,铁中是5000m/s。介质密度愈大,音速愈快。在空气中,音速会依空气之状态(如湿度、温度、密度)不同而有不同数值,如一万米高空之音速约为295m/s,每升高1℃音速增加0.607m/s。

超声波在介质中传播时,由于超声波与介质的相互作用,会产生以下四种效应:机械效应、空化作用、热效应、化学效应。

超声波的特点:传播方向性强、能量易于集中;能在各种不同介质中传播、可传播足够远的距离;与介质的相互作用适中、易于携带有关介质状态的信息。