博文
常见街头骗术37招(2006-11-16 22:46:00)
摘要:街头骗术大全,更新中
常见街头骗术37招
骗术一:
通常是一男一女带个小孩,遇到模样老实的(比如我 ) ,上前 说,钱丢了,没钱回家,给几块钱坐车吧。还有说是来深圳找亲戚,没找着,钱用光了,给几块钱给他们买点吃的。第一次遇到这种骗术往往容易上当,我 在大学时就上当过。骗子骗了几块钱,马上又去骗别人。在深圳路边遇到过多次,广州一般出现在好又多,万佳等超市附近。
骗术二:
路边某个青年男子,带着个包,坐在地下,用粉笔在地下写一些 什么“找不到工作,太饿了,请好心人给点钱买东西吃”。一样是骗子,如果 到深圳、广州所有地方走一圈,保证可以找到上百个这样的骗子。
骗术三:
大学时室友遇到过一次,来深圳后本人遇到过三次。大概流程是 这样的:当你从银行取钱出来,或者到邮政局存钱的话,旁边会有两个串通好的男子,一个假装把一捆钱丢在地上,往前走,后面的骗子故意在你面前将钱 捡起来,然后把你拉到一边,把捡到的那叠钱放到你身上。而前面丢钱的骗子则返回,问后面的骗子是否捡到了钱,并且要后面的骗子搜身。后面的骗子说 没有,然后把你拉到一边,说捡到的钱平分,现在钱在你身上,我现在跟他去搜身,我怕你在我去搜身后逃之夭夭,所以你要把你身上的部分钱押在我这 里。如果你真的将你自己的部分钱押给他们,就再也找不到人了。你打开那捡到的一叠钱,会发现,表面是一张人民币,里面全是白纸。
骗术四:
就是手机短消息了,说什么你中了。。。。奖(比如笔记本电脑) 云云,而你如果一个电话打过去,她们会叫你将钱寄到某个帐号,说是奖品的 邮寄费。而你真的相信了,寄出去的钱就如同石沉大海。
骗术五:
路边的押注。几个碗倒盖地下,骗子凭借很快的手法,将一粒棋 子放在某个碗下,让你去猜。如果你押50元,猜中了他倒赔你50,猜错了这50 元就输了。这样的骗子,往往会有一群骗子来故意充当观众,起哄或者押钱。 最近广州太平洋电脑城附近很多。
骗术六:想起一个行骗的例子,尤其逢年过节,大家要警惕。我遇到一 次,还真的上当了。--有一个人抗一袋米,然后敲你家门,一张口就说:有一个60多岁的老太太在我们店买了米,让我先送过来,她还要去其他地方买东 西。米50块......
用单片机破译计算机开机密码(2006-11-16 14:24:00)
摘要:
用单片机破译计算机开机密码
发信人: oBigeyes (以不变应万变), 信区: Circuit
标 题: 用单片机破译计算机开机密码zz
发信站: 水木社区 (Thu Jun 22 02:19:23 2006), 站内
目前主流计算机的BIOS均为AWARD公司生产的,CMOS开机密码最长为
8个字符,采用穷举法看似有非常多的键盘组合,但经过加密运算后的有效“密文”只
有16位,即65536种,因此有大量“重复”的密码,即虽然输入的键盘组合不一
样,但CMOS中的密文是一样的,实际效果是一样的。对应这65536种密文,每
个密文只需找出一种键盘组合即可。本文讲述如何用单片机来计算出这65536种键
盘组合,并输给计算机,采用穷举法来破译CMOS密码。
一、CMOS密码加密运算方法
CMOS加密运算是:从低位到高位每一位的ASCII码左移2(n-1)位之
后相加,其中n为位数,相加结果即为密文,存入CMOS。如果密码位数较多,运算
结果超过16位,则将超出16位的部分再与低16位相加,保留此结果。
以4位密码“abcd”为例,计算机内部是将“d”的ASCII码64H保留,“
c”的ASCII值63H向左移2位,b的ASCII值62H向左移4位,a的A
SCII值61H左移6位,然后将这四个数相加得到一个16位数,此数2050H
即为运算后的密文,存入CMOS。用十进制数表示此过程即为:100+994+
9816+9764=8272转为十六进制为2050H。
二、密文向密码反推算法
由加密算法可知,肯定会存在多个密码运算后形成的密文相同的情况,因此用一个
密文,可以反推出很多组密码来,我们只需要其中一组即可。
从10进制的角度出发,密码的ASCII码与密文的关系符合如下方程:
X1×1+X2×4+X3×16+X4×64+X5×256… …=密文
其中X1,X2,X3,X4等分别为密码从低到高位的ASCI......
教你学会编写Linux设备驱动(2006-11-16 14:22:00)
摘要:教你学会编写Linux设备驱动 [ZZ]
内核版本: 2.4.22
阅读此文的目的: 学会编写Linux设备驱动。
阅读此文的方法: 阅读以下2个文件: hello.c,asdf.c。
此文假设读者:
已经能用C语言编写Linux应用程序,
理解"字符设备文件, 块设备文件, 主设备号, 次设备号",
会写简单的Shell脚本和Makefile。
1. "hello.c"
--------------------------------
/*
* 这是我们的第一个源文件,
* 它是一个可以加载的内核模块,
* 加载时显示"Hello,World!",
* 卸载时显示"Bye!"。
* 需要说明一点,写内核或内核模块不能用写应用程序时的系统调用或函数库,
* 因为我们写的就是为应用程序提供系统调用的代码。
* 内核有专用的函数库,如, , 等,
* 现在还没必要了解得很详细,
* 这里用到的printk的功能类似于printf。
* "/usr/src/linux"是你实际的内核源码目录的一个符号链接,
* 如果没有现在就创建一个,因为下面和以后都会用到。
* 编译它用"gcc -c -I/usr/src/linux/include hello.c",
* 如果正常会生成文件hello.o,
* 加载它用"insmod hello.o",
* 只有在文本终端下才能看到输出。
* 卸载它用"rmmod hello"
*/
/*
* 小技巧: 在用户目录的.bashrc里加上一行:
* alias mkmod='gcc -c -I/usr/src/linux/include'
* 然后重新登陆Shell,
c51模拟串口(2006-11-16 13:58:00)
摘要:c51模拟串口[ZZ]
//作者:晒太阳的小猪
在电路设计当中,经常会感觉控制器mcu的串口sci数量太少,一般mcu的sci数量不会超过3个(其实包含有3个的就是很多的了)。要想使用更多的串口sci,就得选用硬件串口uart扩展芯片或者采用软件协议利用一般的端口来模拟sci协议。利用软件模拟的方法是最廉价的设计方法。现在把c51模拟串口sci的程序提供出来,供大家享用。
/**********************************************
IO 口模拟232通讯程序,频率9600
占用定时器0
**********************************************/
#i nclude <MAIN.h>
#i nclude <ABSACC.h>
#i nclude <INTRINS.h>
#i nclude <STRING.h>
#define uint unsigned int
#define uchar unsigned char
#define REN_485 P21 //为0则可以接受,否则发送
#define TIMER0_ENABLE TL0=TH0; TR0=1;
#define TIMER0_DISABLE TR0=0;
//#define F_TM F0
bit F_TM;
uchar time_count;
sbit BT_SND =P3^1;
sbit BT_REC =P3^0;
sbit ACC0= ACC^0;
sbit ACC1= ACC^1;
sbit ACC2= ACC^2;
sbit ACC3= ACC^3;
sbit ACC4= ACC^4;
sbit ACC5= ACC^5;
sbit ACC6= ACC^6;
sbit ACC7= ACC^7;
void IntTimer0() interrupt 1 using 1
别踩static的地雷(2006-11-16 13:52:00)
摘要:只要做过项目的朋友对关键字static应该都有一些了解,但未见了解很全面的。在C语言中,关键字static有以下明显的作用:1.static变量分配到静态内存中,这一点和全局非静态变量相同。
2.在函数体,static变量只要不进行修改操作,在被调用过程中其值将保持不变。
3.在模块内,全局static变量可以被模块内所有函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量,具有私有特点。
4.在模块内,一个static函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用,也具有私有特点。
如果我们能够很好地利用static的这些特性,书写高内聚低耦合,更具模块化的代码就不会显得象句口号;如果不能很好地理解和使用它,一切都只是空谈。下面来举个例子来说明static在实际应用可能会遇到问题。
如果要求实现下面的接口:为每个大小约1600字节的音视频裸数据(audio/video)添加包头(packet header),然后将打过包头的整个数据包发送到网络。打过包头的数据包格式如下:
<------packet----->
| header | data |
我想有人可能会这么做:
#define MAX_PACKET_SIZE 1600
typedef struct _header
{
bool type; /*数据包类型*/
bool length; /*数据包类型*/
...
}header;
bool send......
如何设计一个合适的电源(2006-11-16 13:49:00)
摘要:如何设计一个合适的电源
对于现在一个电子系统来说,电源部分的设计也越来越重要,我想通过和大家探讨一些自己关于电源设计的心得,来个抛砖引玉,让我们在电源设计方面能够都有所深入和长进。
Q1:如何来评估一个系统的电源需求
Answer:对于一个实际的电子系统,要认真的分析它的电源需求。不仅仅是关心输入电压,输出电压和电流,还要仔细考虑总的功耗,电源实现的效率,电源部分对负载变化的瞬态响应能力,关键器件对电源波动的容忍范围以及相应的允许的电源纹波,还有散热问题等等。功耗和效率是密切相关的,效率高了,在负载功耗相同的情况下总功耗就少,对于整个系统的功率预算就非常有利了,对比LDO和开关电源,开关电源的效率要高一些。同时,评估效率不仅仅是看在满负载的时候电源电路的效率,还要关注轻负载的时候效率水平。
至于负载瞬态响应能力,对于一些高性能的CPU应用就会有严格的要求,因为当CPU突然开始运行繁重的任务时,需要的启动电流是很大的,如果电源电路响应速度不够,造成瞬间电压下降过多过低,造成CPU运行出错。
一般来说,要求的电源实际值多为标称值的+-5%,所以可以据此计算出允许的电源纹波,当然要预留余量的。
散热问题对于那些大电流电源和LDO来说比较重要,通过计算也是可以评估是否合适的。
Q2:如何选择合适的电源实现电路
Answer:根据分析系统需求得出的具体技术指标,可以来选择合适的电源实现电路了。一般对于弱电部分,包括了LDO(线性电源转换器),开关电源电容降压转换器和开关电源电感电容转换器。相比之下,LDO设计最易实现,输出纹波小,但缺点是效率有可能不高,发热量大,可提供的电流相较开关电源不大等等。而开关电源电路设计灵活,效率高,但纹波大,实现比较复杂,调试比较烦琐等等。
Q3:如何为开关电源电路选择合适的元器件和参数
Answer:很多的未使用过开关电源设计的工程师会对它产生一定的畏惧心理,比如担心开关电源的干扰问题,PCB layout问题,元器件的参数和类型选择问题等。其实只要了解了,使用一个开关电源设计还是非常方便的。
一个开关电源一般包含有开关电源控制器和输出两部分,有些控制器会将MOSFET集成到芯片中去,这样使用就更简单了,也简化了PCB设计,但是设计的灵活性就减少了一些。
开关控制器基本上就是一个闭环的反馈控制系统,所以一般都会有一个反馈......
硬件工程师必看(2006-11-16 13:46:00)
摘要:硬件工程师必看---必杀技学习[转载]
1 充分了解各方的设计需求,确定合适的解决方案
启动一个硬件开发项目,原始的推动力会来自于很多方面,比如市场的需要,基于整个系统架构的需要,应用软件部门的功能实现需要,提高系统某方面能力的需要等等,所以作为一个硬件系统的设计者,要主动的去了解各个方面的需求,并且综合起来,提出最合适的硬件解决方案。比如A项目的原始推动力来自于公司内部的一个高层软件小组,他们在实际当中发现原有的处理器板IP转发能力不能满足要求,从而对于系统的配置和使用都会造成很大的不便,所以他们提出了对新硬件的需求。根据这个目标,硬件方案中就针对性的选用了两个高性能网络处理器,然后还需要深入的和软件设计者交流,以确定内存大小,内部结构,对外接口和调试接口的数量及类型等等细节,比如软件人员喜欢将控制信令通路和数据通路完全分开来,这样在确定内部数据走向的时候要慎重考虑。项目开始之初是需要召开很多的讨论会议的,应该尽量邀请所有相关部门来参与,好处有三个,第一可以充分了解大家的需要,以免在系统设计上遗漏重要的功能,第二是可以让各个部门了解这个项目的情况,提早做好时间和人员上协作的准备,第三是从感情方面讲,在设计之初各个部门就参与了进来,这个项目就变成了大家共同的一个心血结晶,会得到大家的呵护和良好合作,对完成工作是很有帮助的。
2 原理图设计中要注意的问题
原理图设计中要有“拿来主义”,现在的芯片厂家一般都可以提供参考设计的原理图,所以要尽量的借助这些资源,在充分理解参考设计的基础上,做一些自己的发挥。当主要的芯片选定以后,最关键的外围设计包括了电源,时钟和芯片间的互连。电源是保证硬件系统正常工作的基础,设计中要详细的分析:系统能够提供的电源输入;单板需要产生的电源输出;各个电源需要提供的电流大小;电源电路效率;各个电源能够允许的波动范围;整个电源系统需要的上电顺序等等。比如A项目中的网络处理器需要1.25V作为核心电压,要求精度在+5%- -3%之间,电流需要12A左右,根据这些要求,设计中采用5V的电源输入,利用Linear的开关电源控制器和IR的MOSFET搭建了合适的电源供应电路,精度要求决定了输出电容的ESR选择,并且为防止电流过大造成的电压跌落,加入了远端反馈的功能。时钟电路的实现要考虑到目标电路的抖动等要求,A项目中......
一个linux设备驱动例程(2006-11-16 13:41:00)
摘要:/*
* 这个文件是一个内核模块。
* 内核模块的编译,加载和卸载在前面已经介绍了。
* 这个模块的功能是,创建一个字符设备。
* 这个设备是一块4096字节的共享内存。
* 内核分配的主设备号会在加载模块时显示。
*/
/* 开始例行公事 */
#ifndef __KERNEL__
# define __KERNEL__
#endif
#ifndef MODULE
# define MODULE
#endif
#include <linux/config.h>
#include <linux/module.h>
#ifdef CONFIG_SMP
#define __SMP__
#endif
MODULE_LICENSE("GPL");
/* 结束例行公事 */
#include <asm/uaccess.h> /* copy_to_user(), copy_from_user */
#include <linux/fs.h> /* struct file_operations, register_chrdev(), ... */
#include <linux/kernel.h> /* printk()在这个文件里 */
#include <linux/sched.h> /* 和任务调度有关 */
#include <linux/types.h> /* u8, u16, u32 ... */
/*
* 关于内核功能库,可以去网上搜索详细资料,
*/
/* 文件被操作时的回调功能 */
static int asdf_open (struct inode *inode, struct file *filp);
static int asdf_release (struct inode *inode, struct file *filp);
static ssize_t asdf_read (struct file *filp, char *buf, size......
鼠标形状绘制分析-嵌入式开发(2006-11-16 13:35:00)
摘要:
鼠标形状绘制分析-嵌入式开发
//鼠标形状绘制分析-嵌入式开发
//鼠标所在LCD为黑、白两色屏
//鼠标形状数据结构描述如下:
const uint8 Gliethttp_MouseArrow[] = {
0x50, 0x00, 0x00, //1
0x64, 0x00, 0x00, //2
0x69, 0x00, 0x00, //3
0x6A, 0x40, 0x00, //4
0x6A, 0x90, 0x00, //5
0x6A, 0xA4, 0x00, //6
0x6A, 0xA9, 0x00, //7
0x6A, 0xAA, 0x40, //8
0x6A, 0xAA, 0x90, //9
0x6A, 0xA5, 0x54, //10
0x69, 0xA4, 0x00, //11
0x64, 0x69, 0x00, //12
0x50, 0x69, 0x00, //13
0x40, 0x1A, 0x40, //14
0x00, 0x1A, 0x40, //15
......
如何编写Linux设备驱动程序(2006-11-16 13:34:00)
摘要:[转载]序言
Linux是Unix操作系统的一种变种,在Linux下编写驱动程序的原理和思想完全类似于其他的Unix系统,但它与dos或window环境下的驱动程序有很大的区别。在Linux环境下设计驱动程序,思想简洁,操作方便,功能也很强大,但是支持函数少,只能依赖kernel中的函数,有些常用的操作要自己来编写,而且调试也不方便。本人这几周来为实验室自行研制的一块多媒体卡编制了驱动程序,获得了一些经验,愿与Linux fans共享,有不当之处,请予指正。
以下的一些文字主要来源于khg,johnsonm的Write linux device driver,Brennan's Guide to Inline Assembly,The Linux A-Z,还有清华BBS上的有关device driver的一些资料. 这些资料有的已经过时,有的还有一些错误,我依据自己的试验结果进行了修正.
一、Linux device driver 的概念
系统调用是操作系统内核和应用程序之间的接口,设备驱动程序是操作系统内核和机器硬件之间的接口.设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件, 应用程序可以象操作普通文件一样对硬件设备进行操作.设备驱动程序是内核的一部分,它完成以下的功能:
1.对设备初始化和释放.
2.把数据从内核传送到硬件和从硬件读取数据.
3.读取应用程序传送给设备文件的数据和回送应用程序请求的数据.
4.检测和处理设备出现的错误.
在Linux操作系统下有两类主要的设备文件类型,一种是字符设备,另一种是块设备.字符设备和块设备的主要区别是:在对字符设备发出读/写请求时,实际的硬件I/O一般就紧接着发生了,块设备则不然,它利用一块系统内存作缓冲区,当用户进程对设备请求能满足用户的要求,就返回请求的数据,如果不能,就调用请求函数来进行实际的I/O操作.块设备是主要针对磁盘等慢速设备设计的,以免耗费过多的CPU时间来等待.
已经提到,用户进程是通过设备文件来与实际的硬件打交道.每个设备文件都都有其文件属性(c/b),表示是字符设备还蔤强樯璞?另外每个文件都有两个设备号,第一个是主设备号,标识驱动程序,第二个是从设备号,标识使用同一个设备驱......