实验:自定义Windows帐号的RID值

Windows帐号的SID由“S”、SID版本号、颁发机构、子颁发机构、RID组成,本文讨论的是最后一段RID的自定义。

Windows安全原理与技术老师给我推荐了一篇文章:《EFS加密的一线生机-加密帐户被删的补救方法》,文中介绍了在Windows中创建指定RID值帐号的方法。10月14日,我对文中的方法作了验证。现在我将发给老师的电子邮件整理成这篇文章。

实验环境:Windows Server 2003 SP2 en-us @ VMware Server

RID的自定义

《EFS加密的一线生机》提到的修改RID方法是:在Windows中,下一个新建帐户所分配的RID是由HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account注册表项的F键值所确定的。F键值是二进制类型的数据,在偏移量0048处的四个字节,定义下一个帐户的RID。

批处理下载全校毕业照

从Windows 95开始,Windows操作系统正式脱离了DOS。在图形界面以外,“MS-DOS方式”和“命令提示符”仍然是Windows用户常用的工具。命令行下的批处理,则是Windows系统中最方便的编程工具。

早在Windows之前,DOS中就已经有了“批处理”这个概念,批处理文件的扩展名为bat。从Windows XP开始,command.com变成了cmd.exe,命令行解释器更是增加了大量新功能,使批处理的功能更为强大;许多外部命令(需要独立exe或com程序)变成了内部命令,使批处理的性能有所提高;批处理文件的扩展名是bat或cmd。

下面,我将介绍如何用一个批处理文件下载全校的毕业照。

考察情况

上海交通大学F05级毕业生的毕业照由上海瀚源数码科技有限公司负责拍摄。拍摄后3天,学生可以登录瀚源数码网站,查询与校对本人的图像信息。查询过程中,需要输入学号和身份证号码,两者匹配才能看到照片。

守株待兔骗过UAC

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

为什么需要UAC?

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

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

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

用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,然后在你改变主意的时候再回来。

用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.

打开Fiddler2,将浏览器的代理服务器设置为Fiddler2监听的端口(默认为127.0.0.1:8888)。然后为候选人投一票,Fiddler2里有了反应: 投票报文

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

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

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

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

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

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

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

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

回到过去——单机时代

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

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

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

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);
    }
}
?>

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

一、认识超声波

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

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

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

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