Jianwen 的个人资料Jianwen的共享空间照片日志列表更多 工具 帮助

日志


局域网共享快速开通/关闭

打开一个记事本,把下面的内容复制进去,保存之后,把扩展名改为Reg,双击导入,就可以了,这样就关闭了所有的默认共享了。别人一般是无法访问您的电脑了!

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Lsa]
"restrictanonymous"=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa]
"restrictanonymous"=dword:00000001
; 以上两行在系统中的位置是:本地安全策略-安全选项-网络访问:不允许SAM帐户和共享
; 的匿名枚举。系统默认值是:已停用。
; 解说:操作系统默认:利用ipc$通道可以建立空连接,匿名枚举出该机有多少帐户。显然
; 有一定的安全隐患。本系统已设为不允许空连接了。以此提高单机拨号上网的安全性。
; 负面影响是局域网不能互访了。要更改一下才可以解决。

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa]
"limitblankpassworduse"=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Lsa]
"limitblankpassworduse"=dword:00000001
; 以上两行在系统中的位置是:本地安全策略--安全选项--帐户:使用空白密码的本地帐户
; 只允许进行控制台登录。系统默认值是:已启用。
; 解说:很多人的帐户是不加密码的。这样,当局域网中别的电脑访问本机时,会弹出错误提示:
; 登录失败:用户帐户限制………。这是XP系统的一条安全策略造成的,防止别人趁你空密码时
; 进入你的电脑。如果你觉得无所谓,不必做这些限制,那就把它设为:已停用。

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{75048700-EF1F-11D0-9888-006097DEACF9}\Count]
"HRZR_EHAPCY"=hex:0C,00,00,00,2A,00,00,00,90,AF,A4,87,A4,95,C6,01
"HRZR_EHAPCY:"P:\JVAQBJF\flfgrz32\sverjnyy.pcy",Jvaqbjf 防火墙"=hex:0C,00,00,00,13,00,00,00,90,AF,A4,87,A4,95,C6,01
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\RNG]
"Seed"=hex:AC,6F,9A,2B,11,64,44,68,EC,90,1B,76,72,A7,0A,14,\
4C,79,37,BB,FD,BD,70,B2,B2,58,D5,B5,89,5C,B6,4E,\
3B,18,A5,26,46,BC,3E,6A,30,A4,7D,A0,56,E6,6A,B5,\
57,3A,BF,A1,CD,CA,B6,64,4C,F9,0E,D2,64,ED,86,1F,\
61,F6,D1,01,0B,7C,8D,BD,73,10,C8,4E,57,93,4E,90
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\GloballyOpenPorts\List]
"445:TCP"="445:TCP:LocalSubNet:Disabled:@xpsp2res.dll,-22005"
"137:UDP"="137:UDP:LocalSubNet:Disabled:@xpsp2res.dll,-22001"
"138:UDP"="138:UDP:LocalSubNet:Disabled:@xpsp2res.dll,-22002"
"139:TCP"="139:TCP:LocalSubNet:Disabled:@xpsp2res.dll,-22004"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Epoch]
"Epoch"=dword:000001FC
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\GloballyOpenPorts\List]
"445:TCP"="445:TCP:LocalSubNet:Disabled:@xpsp2res.dll,-22005"
"137:UDP"="137:UDP:LocalSubNet:Disabled:@xpsp2res.dll,-22001"
"138:UDP"="138:UDP:LocalSubNet:Disabled:@xpsp2res.dll,-22002"
"139:TCP"="139:TCP:LocalSubNet:Disabled:@xpsp2res.dll,-22004"
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\SharedAccess\Epoch]
"Epoch"=dword:000001FC
; 以上数值对应系统中的位置:控制面板--防火墙--例外--文件和打印机共享。系统默认:不选。
; 解说:所有的策略都设置好了,局域网依然不能访问,提示:您没有权限使用网络资源,找
; 不到网络路径!呵呵,真是令人火冒三丈!其实XP还有一道关卡,就是防火墙,必须要经过
; 防火墙的允许才行。
;《西山社区 http://www.k0513.com/》感谢您的使用。

如你还想开通的话,请编辑下面的内容进记事本,保存为Reg的注册表,双击导入就可以了。

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Lsa]
"restrictanonymous"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa]
"restrictanonymous"=dword:00000000
; 以上两行在系统中的位置是:本地安全策略-安全选项-网络访问:不允许SAM帐户和共享
; 的匿名枚举。系统默认值是:已停用。
; 解说:操作系统默认:利用ipc$通道可以建立空连接,匿名枚举出该机有多少帐户。显然
; 有一定的安全隐患。本系统已设为不允许空连接了。以此提高单机拨号上网的安全性。
; 负面影响是局域网不能互访了。要更改一下才可以解决。

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa]
"limitblankpassworduse"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Lsa]
"limitblankpassworduse"=dword:00000000
; 以上两行在系统中的位置是:本地安全策略--安全选项--帐户:使用空白密码的本地帐户
; 只允许进行控制台登录。系统默认值是:已启用。
; 解说:很多人的帐户是不加密码的。这样,当局域网中别的电脑访问本机时,会弹出错误提示:
; 登录失败:用户帐户限制………。这是XP系统的一条安全策略造成的,防止别人趁你空密码时
; 进入你的电脑。如果你觉得无所谓,不必做这些限制,那就把它设为:已停用。

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{75048700-EF1F-11D0-9888-006097DEACF9}\Count]
"HRZR_EHAPCY"=hex:0C,00,00,00,26,00,00,00,F0,FB,E5,52,64,95,C6,01
"HRZR_EHAPCY:"P:\JVAQBJF\flfgrz32\sverjnyy.pcy",Jvaqbjf 防火墙"=hex:0C,00,00,00,08,00,00,00,F0,FB,E5,52,64,95,C6,01
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\GloballyOpenPorts\List]
"445:TCP"="445:TCP:LocalSubNet:Enabled:@xpsp2res.dll,-22005"
"137:UDP"="137:UDP:LocalSubNet:Enabled:@xpsp2res.dll,-22001"
"138:UDP"="138:UDP:LocalSubNet:Enabled:@xpsp2res.dll,-22002"
"139:TCP"="139:TCP:LocalSubNet:Enabled:@xpsp2res.dll,-22004"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Epoch]
"Epoch"=dword:000001ED
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Print\Providers]
"LogonTime"=hex:E8,31,8E,4F,64,95,C6,01
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\GloballyOpenPorts\List]
"445:TCP"="445:TCP:LocalSubNet:Enabled:@xpsp2res.dll,-22005"
"137:UDP"="137:UDP:LocalSubNet:Enabled:@xpsp2res.dll,-22001"
"138:UDP"="138:UDP:LocalSubNet:Enabled:@xpsp2res.dll,-22002"
"139:TCP"="139:TCP:LocalSubNet:Enabled:@xpsp2res.dll,-22004"
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\SharedAccess\Epoch]
"Epoch"=dword:000001ED
; 以上数值对应系统中的位置:控制面板--防火墙--例外--文件和打印机共享。系统默认:不选。
; 解说:所有的策略都设置好了,局域网依然不能访问,提示:您没有权限使用网络资源,找
; 不到网络路径!呵呵,真是令人火冒三丈!其实XP还有一道关卡,就是防火墙,必须要经过
; 防火墙的允许才行。
;《西山社区 http://www.k0513.com/》作者编写。感谢您的使用。

Windows系统RunAs命令的DIY改造【原创】

【破文标题】Windows系统RunAs命令的DIY改造
【破文作者】FishSeeWater
【作者主页】htp://shuihua.hostrocket.com
【作者邮箱】yujianshui99@163.com
【所属组织】BCG
【软件名称】RunAs.EXE
【下载地址】Microsoft的
【破解工具】OllyDbg(cao_cong汉化版) + C32Asm
【保护方式】无
【软件限制】不接受密码参数
【破解难度】简单
-----------------------------------------------------------------
【软件介绍】
    Microsoft系统自带的命令,不用我多罗嗦了吧:)
-----------------------------------------------------------------
【DIY声明】
    最近由于公司领导要求“计算机资料保密”,我决定采用WIN2000的系统特性加上NTFS权限完成。用Win2003架了台服务器,然后为每位工程师建了User帐户,但是发现好几个CAD软件在User用户下没法运行,但通过右键的“运行方式”以"Administrator"运行就没事儿,调整组权限,整了好几天也没能搞定,微软出于安全考虑 RunAs 命令不能直接跟密码参数。每次都要单独输入密码,这样的话那我岂不要~~*&@#$$@:(。在网上找RunAs命令的程序实现方式,准备写个程序调用CAD来运行,可是用LogonUser();CreateProcessAsUse();CreateProcessWithLogonW()这几个函数死活不行,LogonUser()总是返加1314错误,郁闷。无奈之下,还是打RunAs的主意吧。让它支持密码参数不就OK了:)
-----------------------------------------------------------------
【破解分析】
    好!开始:

    首先预习一下基础知识,控制台程序获取运行参数是用GetCommandLine(VOID)函数
    打开OD加载目标程序,参数为 "/user:administrator cmd.exe"
然后下断点BPX GetCommandLine 回车
F9运行,程序断在01001572 CALL DWORD PTR DS:[<&KERNEL32.GetCommandLineW>; |[GetCommandLineW

瞧瞧它是怎样RunAs的:)
F8一步一步走:
[CODE]
01001555  |.  50   PUSH EAX                                      ; /pArgc
01001556  |.  895D>MOV DWORD PTR SS:[EBP-1C],EBX                 ; |
01001559  |.  895D>MOV DWORD PTR SS:[EBP-20],EBX                 ; |
0100155C  |.  895D>MOV DWORD PTR SS:[EBP-C],EBX                  ; |
0100155F  |.  895D>MOV DWORD PTR SS:[EBP-18],EBX                 ; |
01001562  |.  895D>MOV DWORD PTR SS:[EBP-38],EBX                 ; |
01001565  |.  8975>MOV DWORD PTR SS:[EBP-4],ESI                  ; |
01001568  |.  895D>MOV DWORD PTR SS:[EBP-14],EBX                 ; |
0100156B  |.  C745>MOV DWORD PTR SS:[EBP-7C],44                  ; |
//得到参数
01001572  |.  FF15>CALL DWORD PTR DS:[<&KERNEL32.GetCommandLineW>; |[GetCommandLineW
01001578  |.  50   PUSH EAX                                      ; |CmdLine
//得到参数个数
01001579  |.  FF15>CALL DWORD PTR DS:[<&SHELL32.CommandLineToArg>; \CommandLineToArgvW
0100157F  |.  8BC8 MOV ECX,EAX
01001581  |.  3BCB CMP ECX,EBX
01001583  |.  894D>MOV DWORD PTR SS:[EBP+8],ECX
01001586  |.  0F85>JNZ runas.0100163E
0100158C  |.  895D>MOV DWORD PTR SS:[EBP-4],EBX
.......
.......
.......
//比较参数个数,不等于3就跳走,显示RunAs的帮助(自身的程序名也算一个参数)
0100163E  |> \8B45>MOV EAX,DWORD PTR SS:[EBP-14]
01001641  |.  83F8>CMP EAX,5
01001644  |.  74 0>JE SHORT runas.01001650
01001646  |.  83F8>CMP EAX,4
01001649  |.  74 0>JE SHORT runas.01001650
0100164B  |.  83F8>CMP EAX,3
0100164E  |.  75 7>JNZ SHORT runas.010016CF
01001650  |>  8D50>LEA EDX,DWORD PTR DS:[EAX-2]
//以下是判断并取出第二个参数"administraor" (第一个参数是RunAs.exe)
01001653  |.  8975>MOV DWORD PTR SS:[EBP-8],ESI
01001656  |.  3BD6 CMP EDX,ESI
01001658  |.  7C 7>JL SHORT runas.010016CA
0100165A  |.  8D79>LEA EDI,DWORD PTR DS:[ECX+4]
0100165D  |>  8B07 MOV EAX,DWORD PTR DS:[EDI]
0100165F  |.  66:8>CMP WORD PTR DS:[EAX],2F
01001663  |.  75 6>JNZ SHORT runas.010016CF
01001665  |.  0FB7>MOVZX ECX,WORD PTR DS:[EAX+2]
01001669  |.  83F9>CMP ECX,4E                                    ;  Switch (cases 45..75)
0100166C  |.  7F 1>JG SHORT runas.0100167E
0100166E  |.  0F84>JE runas.01001BA4
01001674  |.  83F9>CMP ECX,45
01001677  |.  75 5>JNZ SHORT runas.010016CF
01001679  |>  8975>MOV DWORD PTR SS:[EBP-1C],ESI                 ;  Cases 45 ('E'),65 ('e') of switch 01001669
0100167C  |.  EB 4>JMP SHORT runas.010016BF
0100167E  |>  83E9>SUB ECX,50
01001681  |.  74 3>JE SHORT runas.010016BC
01001683  |.  83E9>SUB ECX,5
01001686  |.  74 1>JE SHORT runas.0100169F
01001688  |.  83E9>SUB ECX,10
0100168B  |.^ 74 E>JE SHORT runas.01001679
0100168D  |.  83E9>SUB ECX,9
01001690  |.  0F84>JE runas.01001BA4
01001696  |.  49   DEC ECX
01001697  |.  49   DEC ECX
01001698  |.  74 2>JE SHORT runas.010016BC
0100169A  |.  83E9>SUB ECX,5
0100169D  |.  75 3>JNZ SHORT runas.010016CF
0100169F  |>  83C0>ADD EAX,4                                     ;  Cases 55 ('U'),75 ('u') of switch 01001669
010016A2  |>  66:8>/MOV CX,WORD PTR DS:[EAX]
.......
.......
.......
010016CD  |. /75 0>JNZ SHORT runas.010016DC
010016CF  |> |E8 8>CALL runas.0100125B                           ;  Default case of switch 01001669
010016D4  |> |895D>MOV DWORD PTR SS:[EBP-4],EBX
010016D7  |. |E9 5>JMP runas.01001B38
//加载提示资源串"键入密码administrator:"
010016DC  |> \8B3D>MOV EDI,DWORD PTR DS:[<&USER32.LoadStringW>]  ;  USER32.LoadStringW
010016E2  |.  8D85>LEA EAX,DWORD PTR SS:[EBP-630]
010016E8  |.  68 F>PUSH 1F4                                      ; /Count = 1F4 (500.)
010016ED  |.  50   PUSH EAX                                      ; |Buffer
010016EE  |.  68 7>PUSH 1B76                                     ; |RsrcID = STRING "Enter password for"
010016F3  |.  FF35>PUSH DWORD PTR DS:[1003020]                   ; |hInst = 01000000
010016F9  |.  FFD7 CALL EDI                                      ; \LoadStringW
010016FB  |.  8B35>MOV ESI,DWORD PTR DS:[<&USER32.CharToOemW>]   ;  USER32.CharToOemW
01001701  |.  8D85>LEA EAX,DWORD PTR SS:[EBP-8EC]
01001707  |.  50   PUSH EAX                                      ; /pDest
01001708  |.  8D85>LEA EAX,DWORD PTR SS:[EBP-630]                ; |
0100170E  |.  50   PUSH EAX                                      ; |pSrc
0100170F  |.  FFD6 CALL ESI                                      ; \CharToOemW
01001711  |.  FF75>PUSH DWORD PTR SS:[EBP-C]                     ; /String
01001714  |.  8B1D>MOV EBX,DWORD PTR DS:[<&KERNEL32.lstrlenW>]   ; |kernel32.lstrlenW
0100171A  |.  FFD3 CALL EBX                                      ; \lstrlenW
0100171C  |.  3D F>CMP EAX,1F4
01001721  |.  76 0>JBE SHORT runas.0100172E
01001723  |.  8B45>MOV EAX,DWORD PTR SS:[EBP-C]
01001726  |.  66:8>AND WORD PTR DS:[EAX+3E6],0
0100172E  |>  8D85>LEA EAX,DWORD PTR SS:[EBP-D9C]
01001734  |.  50   PUSH EAX
01001735  |.  FF75>PUSH DWORD PTR SS:[EBP-C]
01001738  |.  FFD6 CALL ESI
0100173A  |.  8D85>LEA EAX,DWORD PTR SS:[EBP-D9C]
01001740  |.  50   PUSH EAX                                      ; /<%s>
01001741  |.  8D85>LEA EAX,DWORD PTR SS:[EBP-8EC]                ; |
01001747  |.  50   PUSH EAX                                      ; |<%s>
01001748  |.  68 8>PUSH runas.0100118C                           ; |format = "%s %s:"
0100174D  |.  FF15>CALL DWORD PTR DS:[<&MSVCRT.printf>]          ; \printf
01001753  |.  83C4>ADD ESP,0C
01001756  |.  8D85>LEA EAX,DWORD PTR SS:[EBP-248]
//这个104是干嘛的?难道是最大长度?请高手指点:)
0100175C  |.  68 0>PUSH 104                                      ; /Arg2 = 00000104
//压入变量地址
01001761  |.  50   PUSH EAX                                      ; |Arg1
//下面是调用ReadConsoleW函数读取键盘输入的密码
01001762 >|.  E8 4>CALL runas.010011B0                           ; \读入密码
01001767  |.  85C0 TEST EAX,EAX
01001769  |.  74 4>JE SHORT runas.010017AD
0100176B  |.  8D85>LEA EAX,DWORD PTR SS:[EBP-630]
........
........
........
0100179B  |.  68 3>PUSH runas.01001134                           ; |format = "%s"
010017A0  |.  FF15>CALL DWORD PTR DS:[<&MSVCRT.printf>]          ; \printf
010017A6  |.  59   POP ECX
010017A7  |.  59   POP ECX
010017A8  |.  E9 4>JMP runas.010019ED
//处理输入的密码
010017AD  |>  8D85>LEA EAX,DWORD PTR SS:[EBP-248]
010017B3  |.  50   PUSH EAX                                      ; /Translation
010017B4  |.  8D85>LEA EAX,DWORD PTR SS:[EBP-248]                ; |
010017BA  |.  50   PUSH EAX                                      ; |OemString
010017BB  |.  FF15>CALL DWORD PTR DS:[<&USER32.OemToCharA>]      ; \OemToCharA
010017C1  |.  8D85>LEA EAX,DWORD PTR SS:[EBP-248]
//将密码复制后保存
010017C7  |.  50   PUSH EAX                                      ; /<%S>
010017C8  |.  8D85>LEA EAX,DWORD PTR SS:[EBP-1198]               ; |
010017CE  |.  68 8>PUSH runas.01001184                           ; |Format = "%S"
010017D3  |.  50   PUSH EAX                                      ; |s
010017D4  |.  FF15>CALL DWORD PTR DS:[<&USER32.wsprintfW>]       ; \wsprintfW
010017DA  |.  83C4>ADD ESP,0C
010017DD  |.  8D85>LEA EAX,DWORD PTR SS:[EBP-E0]
010017E3  |.  6A 3>PUSH 32
010017E5  |.  50   PUSH EAX
010017E6  |.  68 7>PUSH 1B77
010017EB  |.  FF35>PUSH DWORD PTR DS:[1003020]                   ;  runas.01000000
010017F1  |.  FFD7 CALL EDI
010017F3  |.  8B45>MOV EAX,DWORD PTR SS:[EBP-14]
010017F6  |.  8B4D>MOV ECX,DWORD PTR SS:[EBP+8]
//得到命令行参数的第三个参数长度。(DS:[ECX+EAX*4-4]为第三个参数)
010017F9  |.  FF74>PUSH DWORD PTR DS:[ECX+EAX*4-4]
010017FD  |.  FFD3 CALL EBX                                      ;  kernel32.lstrlenW
010017FF  |.  8BF8 MOV EDI,EAX
01001801  |.  8D85>LEA EAX,DWORD PTR SS:[EBP-E0]
01001807  |.  50   PUSH EAX
01001808  |.  FFD3 CALL EBX
0100180A  |.  FF75>PUSH DWORD PTR SS:[EBP-C]
........
........
........
01001A0B  |.  C745>MOV DWORD PTR SS:[EBP-24],400
01001A12  |.  EB 0>JMP SHORT runas.01001A17
01001A14  |>  8B5D>MOV EBX,DWORD PTR SS:[EBP-38]
01001A17  |>  8D45>LEA EAX,DWORD PTR SS:[EBP-34]
//调用CreateProcessWithLogonW函数以"administrator"身份创建进程
01001A1A  |.  50   PUSH EAX                                      ; /Arg11
01001A1B  |.  8D45>LEA EAX,DWORD PTR SS:[EBP-7C]                 ; |
01001A1E  |.  50   PUSH EAX                                      ; |Arg10
01001A1F  |.  8B45>MOV EAX,DWORD PTR SS:[EBP-14]                 ; |
01001A22  |.  53   PUSH EBX                                      ; |Arg9
01001A23  |.  FF75>PUSH DWORD PTR SS:[EBP-20]                    ; |Arg8
01001A26  |.  FF75>PUSH DWORD PTR SS:[EBP-24]                    ; |Arg7
01001A29  |.  FF74>PUSH DWORD PTR DS:[EDI+EAX*4-4]               ; |Arg6
01001A2D  |.  8D85>LEA EAX,DWORD PTR SS:[EBP-1198]               ; |
01001A33  |.  6A 0>PUSH 0                                        ; |Arg5 = 00000000
01001A35  |.  FF75>PUSH DWORD PTR SS:[EBP-10]                    ; |Arg4
01001A38  |.  50   PUSH EAX                                      ; |Arg3
01001A39  |.  FF75>PUSH DWORD PTR SS:[EBP-18]                    ; |Arg2
01001A3C  |.  FF75>PUSH DWORD PTR SS:[EBP-C]                     ; |Arg1
01001A3F  |.  FF15>CALL DWORD PTR DS:[<&ADVAPI32.CreateProcessWi>; \CreateProcessWithLogonW
01001A45  |.  85C0 TEST EAX,EAX
01001A47  |.  0F85>JNZ runas.01001B36
01001A4D  |.  33FF XOR EDI,EDI
01001A4F  |.  C745>MOV DWORD PTR SS:[EBP-10],7B

////////////////////////////////////
[CODE]
过程基本分析完毕,要想达到我们的目的,只要在ReadConsoleW函数之后,将我们的已有密码添上就OK了。

思路:1、先将程序中提示输入密码和读取密码的函数NOP掉!从10016e2处开始一直到1001766
      2、我们有现成的密码,也不用他来处理,所以嘛处理过程也NOP!从1007AD处开始到1007D4(哈哈,这下有足够的空间来写我们的代码了)
      3、由于我们要用参数型式添入密码,而程序中有检测参数个数的语句,所以在CommandLineToArgvW函数后,将参数个数减1。

好!开工:
  首先处理步骤1和2 
    然后修改1001586处
           01001586  JNZ runas.0100163E 为 01001586  JNZ runas.010016F2
    在010016EF处添加语句
    010016EF   JMP SHORT runas.01001767  //正常运行时跳过下面处理参数的两句  
    在010016F2处添加语句
    010016F2   DEC DWORD PTR SS:[EBP-14] //将参数个数减1
    010016F5   JMP runas.0100163E        //跳回去
  处理参数完毕,再处理密码:
  修改01001767 处
    01001767 TEST EAX,EAX 为 01001767 XOR EAX,EAX //标志位为零
  从010017AF处开始添加语句
    010017AF  MOV EAX,DWORD PTR SS:[EBP-14]
    010017B2  INC EAX      //将参数个数加1
    010017B3  MOV ECX,DWORD PTR SS:[EBP+8]  
    010017B6  NOP
    010017B7  NOP
    010017B8  MOV EAX,DWORD PTR DS:[ECX+EAX*4-4]
    010017BC  PUSH EAX                                      ; /String2
    010017BD  LEA EAX,DWORD PTR SS:[EBP-1198]               ; |
    010017C3  NOP                                           ; |
    010017C4  PUSH EAX                                      ; |String1
    010017C5  CALL DWORD PTR DS:[<&KERNEL32.lstrcpyW>]      ; \lstrcpyW
OK!!!处理完成!!!运行试试!真爽:)
再写个外壳调用就OK了:)
收工
-----------------------------------------------------------------
                                        本文章写于2006-1-25 09:04:55 By FishSeeWater

Windows XP Home版更改为Pro版的方法

   近日一家德国计算机杂志《CT》透露了一种将Windows XP Home版更改为Pro版的方法,只需更改安装文件两个字节便可。这个方法可以解决很多原本在HOME版上受限制的功能,就好象计算机安装了Windows XP pro版本一样。(相关报道:   近日一家德国计算机杂志《CT》透露了一种将Windows XP Home版更改为Pro版的方法,只需更改安装文件两个字节便可。这个方法可以解决很多原本在HOME版上受限制的功能,就好象计算机安装了Windows XP pro版本一样。(相关报道:天上掉馅饼?改2字节将Win XP Home变成Pro?!

    由于HOME版和PRO版在售价方面存在很大差异(大约100美元!),如果通过简单修改两个字节就能使得HOME摇身一变成为PRO的话微软公司的打击盗版计划将会变得更加艰巨。

    这个消息来自于国外,究竟该方法适合不适合国内版本的XP系统呢?或者该方法是虚假或杜撰的呢?没有人能保证该方法的有效性。笔者也在第一时间对该方法进行了尝试。整个测试步骤如下:

    一、修改系统光盘

    该方法无法修改已经安装好的Windows操作系统的版本,而只能在安装CD上做手脚(或者PC厂商提供的恢复CD)。另外修改后的系统还需要我们重新刻录成光盘。

    第一步:将WindowsXP HOME版安装光盘的所有目录文件复制到本地硬盘。如果硬盘空间不足可以只复制安装CD根目录以及i386目录的文件。

    第二步:修改I386目录下的setupreg.hiv文件中的两个字节。方法为通过任务栏的“开始->运行->输入regedt32”打开注册表编辑器。

    小提示:

    只能通过regedt32打开注册表编辑器,而不能使用常规的regedit来打开。

    第三步:通过注册表编辑器菜单中的“注册表->加载配置单元”来调用setupreg.hiv文件。

    第四步:在弹出的加载配置单元窗口中选择我们复制到本地硬盘的XP HOME版系统光盘上的i386目录。在该目录中找到setupreg.hiv文件,然后点“打开”按钮。

    第五步:接着系统要求为该配置单元起一个名字,我们随便输入一个即可。这里笔者输入setupreg,然后点“确定”按钮。

    第六步:在注册表编辑器中找到setupreg项,定位到ControlSet001\Services\setupdd这个项上。在右边的窗口中双击reg_binary键值。编辑二进制代码将将“01”改为“00”再将“02改为00”。修改完毕后点“确定”按钮。

    第七步:修改完毕后我们还要更新setupreg.hiv文件,通过菜单的“注册表->保存项”来完成。

    第八步:保存成同名文件setupreg.hiv,并将这个新文件覆盖原来的setupreg.hiv文件。如果直接覆盖会提示当前setupreg.hiv文件正在使用而无法覆盖的警告。

    第九步:最后在注册表编辑器中选择“注册表->卸载配置单元”完成组件的释放工作。

    第十步:在出现“注册表编辑器将卸载当前选定的项和它所有的子项”的警告后点“是”按钮。

    至此完成了系统安装文件的修改工作,我们再把修改后的文件刻录成新的Windows XP系统光盘即可体验2字节搞定WIN XP版本的操作了。

二、安装系统

    使用修改后的XP光盘进行安装和以往安装系统没有任何区别。但在安装过程显示界面却出现了区别,看来修改setupreg.hiv文件的两字节还是起到了作用。

    现象一:

    安装时的许可协议仍然为Windows XP Home Edition,没有任何改变。

    现象二:

    在复制系统文件时出现的界面已经变成了Windows XP Professional版本的安装界面了。

    现象三:

    启动操作系统时出现的界面也不是HOME版的了,而变成了Professional版。

    现象四:

    安装Windows界面的提示也成了Windows XP Professional版的功能介绍了。

    现象五:

    安装完操作系统后需要激活,使用算号器算出来的号使用HOME版的仍然有效。

    现象六:

    要求输入操作系统CD-KEY时填写的也是HOME版的注册号才能正常通过。

    在安装过程中我们感到非常迷惑,一会是HOME版一会是PRO版,到底这个系统安装的是什么版本呢?修改两个字节的效果仅仅是外观吗?在功能上真的能实现HOME到PRO版的提升吗?

    三、使用改装的系统
    终于可以登录改装过的操作系统了,让我们对他进行彻彻底底的分析吧!

    1.Windows简介

    打开Windows漫游窗口发现仍然显示的是HOME版本。

    2.关于Windows

    通过资源管理的关于windows中查看Windows版本信息已经变成了Professional版。

    3.“我的电脑”属性

    在“我的电脑”上选择“属性”,然后在“常规”标签中也可以看到系统是Professional版。

    4.用户管理

    本来在HOME版本的计算机管理中是没有“本地用户和组”的选项的,改装后的“系统在控制面板->管理工具->计算机管理”界面可以看到本地用户和组的选项,这样我们管理用户会变得更加轻松,和PRO版一模一样了。

    5.Windows组件信息

    通过“控制面板->添加删除程序”发现里头的windows组件和HOME版的一样,仍然没有IIS组件的安装选项,这一点和HOME一样。

    6.远程桌面功能

    在“开始->程序->附件”的通讯下有了新的远程桌面连接程序,这一点在HOME版是没有的,我们可以在改装的系统中使用远程桌面连接程序远程管理服务器了。另外在“我的电脑”的属性中的远程标签,我们也看到了容许打开“远程桌面连接”的选项,和PRO版的一样,而没有改装的HOME版中只有“远程协助”没有“远程桌面连接”。

    7.补丁的安装

    在这个版本上安装SP2出现错误提示,看来不能在修改的Windows XP HOME系统中安装SP2,只能使用集成SP2的安装盘。  

    8.应用软件的安装

    笔者使用了几个只能安装在服务器版本上的软件发现都可以正常安装,看来修改过的HOME版还是可以欺骗部分可装在XP PRO但不可以在HOME的软件,比如Diskeeper服务器版等。

    9.组策略

    修改过的HOME版XP还是不能使用组策略。通过“开始->运行->输入gpedit.msc”收到错误提示,看来MMC单元还是不能通过这种简单修改来安装在HOME版上的。

四、功能再突破
   
    笔者决定使用网上说的突破HOME安装IIS的方法来解决改装XP仍然不能安装IIS的问题。当然网上说的是使用PRO版本XP安装光盘进行修改,笔者使用修改后的HOME版来尝试突破。

    第一步:首先在运行中输入"c:\windows\inf\sysoc.inf",系统会自动使用记事本打开sysoc.inf这个文件。在sysoc.inf中找到"[Components]"这一段,并继续找到类似"iis=iis.dll,OcEntry,iis.inf,hide,7"的一行字,把这一行替换为"iis=iis2.dll,OcEntry,iis2.inf,,7"。之后保存并关闭。

    第二步:把修改过的Windows XP光盘插入光驱,同时按下Shift键禁止光驱的自动运行。在运行中输入"CMD"然后回车,打开命令行模式,在命令行下输入下列的两条命令,在每一行命令结束后回车:

Expand d:\i386\iis.dl_ c:\windows\system32\setup\iis2.dll
Expand d:\i386\iis.in_ c:\windows\inf\iis2.inf

    小提示:

    上面的命令适用于光驱为D盘,WIN XP安装在C盘的情况。实际情况中笔者光驱为J盘,安装XP在E盘。

    第三步:在“控制面板->添加删除程序->添加删除WINDOWS组件”中就可以看到一个没有名字的选项,这个就是IIS组件。我们选中他。

    第四步:安装完毕后我们就可以在管理工具中看到server extensions的图标了,虽然IIS功能没有全部实现但也达到了HOME版相关功能的提升。

    总结:不管怎么说用修改后的操作系统安装光盘安装的系统还是在很多方面比HOME功能强大的,不过在核心问题上例如使用组策略及安装IIS方面还是没有得到根本解决。因此还不能当作彻底解决HOME到PRO版的方法。



    由于HOME版和PRO版在售价方面存在很大差异(大约100美元!),如果通过简单修改两个字节就能使得HOME摇身一变成为PRO的话微软公司的打击盗版计划将会变得更加艰巨。

    这个消息来自于国外,究竟该方法适合不适合国内版本的XP系统呢?或者该方法是虚假或杜撰的呢?没有人能保证该方法的有效性。笔者也在第一时间对该方法进行了尝试。整个测试步骤如下:

    一、修改系统光盘

    该方法无法修改已经安装好的Windows操作系统的版本,而只能在安装CD上做手脚(或者PC厂商提供的恢复CD)。另外修改后的系统还需要我们重新刻录成光盘。

    第一步:将WindowsXP HOME版安装光盘的所有目录文件复制到本地硬盘。如果硬盘空间不足可以只复制安装CD根目录以及i386目录的文件。

    第二步:修改I386目录下的setupreg.hiv文件中的两个字节。方法为通过任务栏的“开始->运行->输入regedt32”打开注册表编辑器。

    小提示:

    只能通过regedt32打开注册表编辑器,而不能使用常规的regedit来打开。

    第三步:通过注册表编辑器菜单中的“注册表->加载配置单元”来调用setupreg.hiv文件。

    第四步:在弹出的加载配置单元窗口中选择我们复制到本地硬盘的XP HOME版系统光盘上的i386目录。在该目录中找到setupreg.hiv文件,然后点“打开”按钮。

    第五步:接着系统要求为该配置单元起一个名字,我们随便输入一个即可。这里笔者输入setupreg,然后点“确定”按钮。

    第六步:在注册表编辑器中找到setupreg项,定位到ControlSet001\Services\setupdd这个项上。在右边的窗口中双击reg_binary键值。编辑二进制代码将将“01”改为“00”再将“02改为00”。修改完毕后点“确定”按钮。

    第七步:修改完毕后我们还要更新setupreg.hiv文件,通过菜单的“注册表->保存项”来完成。

    第八步:保存成同名文件setupreg.hiv,并将这个新文件覆盖原来的setupreg.hiv文件。如果直接覆盖会提示当前setupreg.hiv文件正在使用而无法覆盖的警告。

    第九步:最后在注册表编辑器中选择“注册表->卸载配置单元”完成组件的释放工作。

    第十步:在出现“注册表编辑器将卸载当前选定的项和它所有的子项”的警告后点“是”按钮。

    至此完成了系统安装文件的修改工作,我们再把修改后的文件刻录成新的Windows XP系统光盘即可体验2字节搞定WIN XP版本的操作了。

二、安装系统

    使用修改后的XP光盘进行安装和以往安装系统没有任何区别。但在安装过程显示界面却出现了区别,看来修改setupreg.hiv文件的两字节还是起到了作用。

    现象一:

    安装时的许可协议仍然为Windows XP Home Edition,没有任何改变。

    现象二:

    在复制系统文件时出现的界面已经变成了Windows XP Professional版本的安装界面了。

    现象三:

    启动操作系统时出现的界面也不是HOME版的了,而变成了Professional版。

    现象四:

    安装Windows界面的提示也成了Windows XP Professional版的功能介绍了。

    现象五:

    安装完操作系统后需要激活,使用算号器算出来的号使用HOME版的仍然有效。

    现象六:

    要求输入操作系统CD-KEY时填写的也是HOME版的注册号才能正常通过。

    在安装过程中我们感到非常迷惑,一会是HOME版一会是PRO版,到底这个系统安装的是什么版本呢?修改两个字节的效果仅仅是外观吗?在功能上真的能实现HOME到PRO版的提升吗?

    三、使用改装的系统
    终于可以登录改装过的操作系统了,让我们对他进行彻彻底底的分析吧!

    1.Windows简介

    打开Windows漫游窗口发现仍然显示的是HOME版本。

    2.关于Windows

    通过资源管理的关于windows中查看Windows版本信息已经变成了Professional版。

    3.“我的电脑”属性

    在“我的电脑”上选择“属性”,然后在“常规”标签中也可以看到系统是Professional版。

    4.用户管理

    本来在HOME版本的计算机管理中是没有“本地用户和组”的选项的,改装后的“系统在控制面板->管理工具->计算机管理”界面可以看到本地用户和组的选项,这样我们管理用户会变得更加轻松,和PRO版一模一样了。

    5.Windows组件信息

    通过“控制面板->添加删除程序”发现里头的windows组件和HOME版的一样,仍然没有IIS组件的安装选项,这一点和HOME一样。

    6.远程桌面功能

    在“开始->程序->附件”的通讯下有了新的远程桌面连接程序,这一点在HOME版是没有的,我们可以在改装的系统中使用远程桌面连接程序远程管理服务器了。另外在“我的电脑”的属性中的远程标签,我们也看到了容许打开“远程桌面连接”的选项,和PRO版的一样,而没有改装的HOME版中只有“远程协助”没有“远程桌面连接”。

    7.补丁的安装

    在这个版本上安装SP2出现错误提示,看来不能在修改的Windows XP HOME系统中安装SP2,只能使用集成SP2的安装盘。  

    8.应用软件的安装

    笔者使用了几个只能安装在服务器版本上的软件发现都可以正常安装,看来修改过的HOME版还是可以欺骗部分可装在XP PRO但不可以在HOME的软件,比如Diskeeper服务器版等。

    9.组策略

    修改过的HOME版XP还是不能使用组策略。通过“开始->运行->输入gpedit.msc”收到错误提示,看来MMC单元还是不能通过这种简单修改来安装在HOME版上的。

四、功能再突破
   
    笔者决定使用网上说的突破HOME安装IIS的方法来解决改装XP仍然不能安装IIS的问题。当然网上说的是使用PRO版本XP安装光盘进行修改,笔者使用修改后的HOME版来尝试突破。

    第一步:首先在运行中输入"c:\windows\inf\sysoc.inf",系统会自动使用记事本打开sysoc.inf这个文件。在sysoc.inf中找到"[Components]"这一段,并继续找到类似"iis=iis.dll,OcEntry,iis.inf,hide,7"的一行字,把这一行替换为"iis=iis2.dll,OcEntry,iis2.inf,,7"。之后保存并关闭。

    第二步:把修改过的Windows XP光盘插入光驱,同时按下Shift键禁止光驱的自动运行。在运行中输入"CMD"然后回车,打开命令行模式,在命令行下输入下列的两条命令,在每一行命令结束后回车:

Expand d:\i386\iis.dl_ c:\windows\system32\setup\iis2.dll
Expand d:\i386\iis.in_ c:\windows\inf\iis2.inf

    小提示:

    上面的命令适用于光驱为D盘,WIN XP安装在C盘的情况。实际情况中笔者光驱为J盘,安装XP在E盘。

    第三步:在“控制面板->添加删除程序->添加删除WINDOWS组件”中就可以看到一个没有名字的选项,这个就是IIS组件。我们选中他。

    第四步:安装完毕后我们就可以在管理工具中看到server extensions的图标了,虽然IIS功能没有全部实现但也达到了HOME版相关功能的提升。

    总结:不管怎么说用修改后的操作系统安装光盘安装的系统还是在很多方面比HOME功能强大的,不过在核心问题上例如使用组策略及安装IIS方面还是没有得到根本解决。因此还不能当作彻底解决HOME到PRO版的方法。

通过电子邮件发布日志

通过电子邮件发布日志

具体的方法是:登陆你的Blogger帐号,进入控制面板,更改设置,在“电子邮件”中,在Mail-to-Blogger地址中可以自定义一个邮件地址,发送到此地址的邮件会自动post到你的blog,BlogSend地址是另外一个电子邮件地址,只要一发布文章,系统会将其邮寄文章到此地址。
  另外,在更新Blogger时你也可以同时更新MSN Space。因为MSN Space也是支持邮件发布的,因此将Blogger发布后发送邮件的BlogSend地址修改为MSN Space的发布邮件地址,这样在Blogger上发布一篇文章后,系统就会自动将文章内容发送到Msn Spaces里,这样就同时更新了两个博客。
  值得注意的是,Blogger默认的编码是UTF-8编码,因此发送邮件的时候要将邮件编码设置为UTF-8的格式,建议登陆GMail发送邮件。一来GMail默认就是UTF-8格式的,编码全兼容,二来GMail支持自动保存功能,不怕电脑死机后丢失文章,三来GMail还可以自动备份发出去的文章,以免文章丢失。

特种搜索引擎

一、查找电子邮件、电话号码、人物
  1、555-1212 http://www.555-1212.com
  查询电话号码
  2、Yahoo! People Search http://people.yahoo.com
  查询电子邮件和电话号码
  3、WhoWhere http://www.whowhere.com
  查询email和电话号码
  4、Switchboard http://www.swotchboard.com
  可提供商业企业查询、电子邮件查询、寻人、地图和线路查询等。
  5、Look4U http://www.looku.com
  搜索全球的华人。
  6、World Pages http://www.worldpages.com
  查询电子邮件、电话号码、政府信息等。
  7、InfoSpace http://www.infospace.com
  查询电话号码、传真号码、股票价格、天气预报等。
  8、Bigyellow http://www.bigyellow.com
  可广泛查找电子邮件、人物、企业、机构等信息。
  二、查询地图信息
  1、Mapblast http://www.mapblast.com
  可以查询美国地图、加拿大地图和世界地图信息。
  2、MapQuest http://www.mapquest.com
  它的显著特点是为用户提供驾驶路径和行车距离查询,开始以提供美
国境内的地图信息为主,后来逐渐增加了查询其它国家城市地图、交互性
地图的服务。
  3、MapsOnUs http://www.mapsonus.com
  是一个功能全面的网络地图信息查询工具,提供地图查询、驾驶线
路查询、黄页查询等。
  4、图行天下 http://www.go2map.com/
  这是国人开发的一个电子地图信息查询工具,可以查各省及城市交
通信息,各城市每天更新,为你提供生活、休闲、旅游等各方面帮助。
  5、城市交通旅游电子地图 http://www.afmap.com.cn/
  这也是国人开发的一个电子地图服务网,可在线查询各大城市地图。
可快速缩放,漫游等。
  三、查询图像信息
  1、Alta Vista图像 http://www.altavisa.digital.com
  这是著名的搜索引擎提供的图像检索功能。
  2、HotBot图像检索 http://www.hotbot.com
  搜索引擎HotBot在其高级检索中也提供了图像检索功能。
  3、Image Surfer http://ipix.yahoo.com
  是Yahoo公司推出的图像检索服务。
  4、QBIC http://www.qbic.almaden.ibm.com
  它可以依据图像的内容特征进行检索。
  5、Websek http://www.ctr.columbia.edu/webseek
  你可以利用分类、关键词以及图像内容特征进行图像检索。
  6、Virage http://www.virage.com
  它专门从事图像及声像信息检索,除了检索静态图像外,Virage还提
供了对动态影像的检索服务。
  7、Scour.NET http://www.scour.net
  专门搜集多媒体资料,包括图像、声音、影像及动画等。
  四、其他
  1、Jobengine http://www.jobengine.com
  帮你找工作。
  2、todo http://www.todo.com.tw
  这是一个书签式搜索引擎,为你收集了许多好站,酷站。
  3、Title http://www.title.net
  利用它你可查询邮件列表、新闻组、FTP服务器、ISP等。
  4、PA Mailing Lists http://www.neosoft.com/cgi-bin/paml-search
  帮你查询邮件列表。
  5、File Z http://www.filez.com
  专门用于查找文件。
  6、Dejanews http://www.dejanews.com/info/toplevel.html
  查询新闻组的工具。
  7、Liszt http://www.liszt.com
  专门查询邮件列表
  8、Humor http://www.humorsearch.com
  专门收集幽默、笑话
  9、MP3spy http://www.mp3spy.com
  专门搜索MP3音乐

注: 这篇东西是从那里来的, 我也忘了, 如果原作者看到就跟我联系, 我将写入引用地址, 谢谢!

Tags:, , , ,

wordpress电子邮件发布日志

      使用wordpress建立博客不少时间了, 大概有8个月之余了吧, 一直采用离线编辑器发文的方式发布博客日志, 但一直听说可以使用电子邮件(email)来发布日志, 心中一直想一试, 但恨于自己一直没有行动, 一直拖到这几天。

      昨天没有发布日志, 是因为一直在搞这个email发布博客日记的问题, 别看是一个小小的电子邮件发布博客, 但也折腾了N长的时间, 算来也有整整一天了。 到今天, 确切的说到目前(就现在)算是真正搞定了这个email发文, 同时给自己的博客安装了一个插件 — “ DJ EmailPublish ”, 这个应该是国人开发的, 他的博客在这里: “ 阿亮遇見熊 ”。 我利用这个插件把我这里发布的日志同时发布到我的live spaces, 大家见这里: http://sdeccn.spaces.live.com/, 这个插件还可以发布到另外的wordpress站点, 比如Blogger。 我测试就用了这里: http://2i2j.yo2.cn/

      不过在搞定整个email发文过程中, 真的是费了我不少的力气和时间 — 不过这也主要是由于我比较笨导致的:), 显示发现email发出去的文章, http://2i2j.yo2.cn/ 能够收到, 但只有标题没有正文, 奇怪ing。 没办法, 只能看wordpress的wp-mail.php, 发现wordpress对email发布日志的限制很严格, 用了一堆的限制条件, 导致我测试的文章都没有出现正文, 调整我发布日志的方式, 总算最后能弄出个正文来, 心里那个爽啊。 这下我本来就准备写文发布我的成果了。 慢, 我又测试了一个中文日志, 天哪! 都是乱码, 没有办法下眼睛啊。 得了, 论文暂停吧。 这为了解决这个乱码的问题, 又花费了我今天一个晚上。

      好了, 现在我来说说我用电子邮件(email)发文所碰到的问题和解决方案, 注意: 该问题是在wordpress 2.1.3 中测试, 解决方案也针对该版本的wordpress。

问题1: 只有标题, 没有正文

    该问题是这段代码惹的祸, 在wp-mail.php中有这么一段:

 if ($content_type == ‘multipart/alternative’) {
  $content = explode(’–’.$boundary, $content);
  $content = $content[2];
  echo $content;
  $content = explode(’Content-Transfer-Encoding: quoted-printable’, $content);
  $content = strip_tags($content[1], ‘<img><p><br><i><b><u><em><strong><strike><font><span><div>’);
 }

这段代码就是用来获取正文的, 可是wordpress的开发者估计只测试很少的一部分发文邮件, 可能也没有把邮件发文当作重点, 没有对其做更多的种类区分。

这里首先判断发文邮件的编码, 如果是 ‘multipart/alternative’ , 就执行if{}中的内容, 一般性的邮件我看了都差不多是这样的格式 ‘multipart/alternative’, 所以大部分的email发布日志都会到这个if中走一遭的, 也就因为走了一遭, 把正文内容走没了。 请看这里:  

  $content = explode(’–’.$boundary, $content);
  $content = $content[2];

这两句语句, 可能会导致 $content 是空的, 它这里用了 $content = $content[2]; 一般的邮件如果不用两种格式发email的话, 就不太可能出现两个 boundary, 从而就会导致 $content[2] 是没有的, 这样正文也就没有了。 好了, 这个解决方案就是让你的电子邮件工具发email时采用两种模式:“纯文本和HTML”同时发出email, 这个可以在电子邮件客户端中可以设置的,这样就可以在这里取得$content[2]是HTML编码的emial内容了, 也就达到了目的。

不要以为过了这一关就万事大吉了, 不行, 下面还有一个陷阱。 请看这里:

  $content = explode(’Content-Transfer-Encoding: quoted-printable’, $content);
  $content = strip_tags($content[1], ‘<img><p><br><i><b><u><em><strong><strike><font><span><div>’);
 }

这里还有一个让你没有正文的地方, 这里在 ‘Content-Transfer-Encoding: quoted-printable’ 打断前后内容本来是一个好想法, 这样可以输出内容而不输出编码一类的信息了。 不过就是这个 ‘quoted-printable’ 惹的祸, 有很多的邮件根本不用这个编码, 比如outlook我没有找到, outlook采用了base64的编码, 这样这里就检测不到, 这个时候 $content[1] 就是空的, 也就是用empty就可以检测到的, 不过这里没有检测, empty的也就用上去了, 自然你的正文也就不会有了。 所以解决方案是你要设置电子邮件客户端使用 ‘quoted-printable’ 来发文

这个问题有的时候不会发生, 比如说你的 ‘Content-Transfer-Encoding’ 不是 ‘multipart/alternative’  的时候就不会了, 就我所知, thunderbird 光使用HTML编码发送的时候就不会是 ‘multipart/alternative’  了, 而是 ‘text/html’ , 这样就可以绕过这个if语句而不会出现没有正文了, 不过你可能会看到有编码等垃圾信息出现在你的post article的正文中了, 这个时候, 根据wp-mail.php 的设定, 你可以在正文开始前先写入这么一个符号 “::”, 它就会帮你去掉这些垃圾信息而输出正文了!

      第一个问题就这样算是解决了, 可第二个问题就麻烦了。

问题2: 发布的中文日志全部都是乱码

    解决了第一个问题之后, 发现我可以发布英文的日志了, 完全ok, 可是当测试中文日志的时候, 意想不到的事情又发生了, 竟然发出去的文章都是乱码, 那怎么看啊, 总不至于叫我每天都用email写英文吧? 可解决方案在那里呢? 不幸的是, 我没有找到确切的解决方案, 这里有一个修改wp-mail.php的方案, 我就不转载了, 因为我觉得没有什么意义, 我要发布的文章不是在自己的服务器上, 没有权利去修改的, 有兴趣的自己看看去: “ 用wordpress随时随地写blog ”。

    我想到了一个办法就是把汉字变成编码 “&#xxxx;” 的形式, 这样就可以在任何网页下显示了, 也就解决了乱码的问题, 可是通过email发这样不现实, 怎么转换成编码呢? 不过幸好我是不需要直接用客户端写日志的, 我是通过“ DJ EmailPublish ”把我写的日志再发送到别的博客上去而已, 所以我只需要修改 “ DJ EmailPublish ”就可以了, 不过说要修改 “ DJ EmailPublish ”把好好的一个汉字拆成 “&#xxxx;” 的编码也不容易, 我最后只能从alinks中找了一段代码, 是将%uxxxx的编码转换成&#xxxx的编码, 可在alinks中将utf-8字符转换成%uxxxx的函数用的是javascript中的escape(), 这样我就不行了, 幸好我又找到了一段可以将utf8字符转换成%uxxxx的php代码,用来替代javascript中的escape()函数, 解决了该问题。

      至此完成了我最初想达到的目的, 从这件事情上来看wordpress今后要走的路有很重要的一点是在字符处理上的国际化, 这样就再也不用这么麻烦了!

      这篇文章可以用来测试结果, 如果大家有兴趣不妨去这里看看: http://2i2j.yo2.cn/, 不过别急, 这个地方我要到明天早上才发出去, 我要先看看 Live Spaces 能不能获取到这篇文章

Email 發布模組 (DJ-Email-Publish)

Email 發布模組

Email 發布模組 (DJ-Email-Publish)

Description

  • When you publish a new post, this plugins will send the post to your other blogs (such as msn spaces) via email.

Newest Download

My Demo Site

ChangeLog

  • 1.5 (2007.05.27)
    • Integrating with the PHPMailer class since Wordpress 2.2, and you can set the email encoding of each target blog. If Wordpress don't have the PHPMailer (below 2.2), this plugin will use mail() instead of PHPMailer class.
    • For setting email encoding, 'base64' should be enough for most blogs (for example, MSN or Blogger). If you want post via email to another Wordpress blog, try to use 'none'.
    • You can set the "Publish Type" for each target blog.

DJ-Email-Publish v1.5 Option Image

  • 1.4.3 (2007.04.17)
    • Thank to Yarak found $path variable

      '?page=dj-email-publish\dj-email-publish.php'

      causes the options do not be save properly under Windows environment.

  • 1.4 (2006.12.13)
    • Migrating the file dj-email-publish.php into dj-email-publish/ directory. You need to reactive this plugin if you upgrade from version 1.3 or earlier.
    • Non-English title will be showed correctly in MSN or Blogger. Will not look like as follows:
      • beta,有人反應有問題啊
  • 1.3 (2006.08.09)
    • You can send the post with different modes now.
      • Only Title.
      • Summary ( If <!--more--> is existed, then send the post as summary, else as fulltext. )
      • and FullText.
  • 1.2 (2006.06.28)
    • You can trigger dj-email-publish via xml-rpc clients(such as performancing) now.
  • 1.1 (2006.05.09)
    • 新增此頁,此頁將為此模組的永久網頁。
    • 寄送時, title 處,遇到 dash 時,用空白取代。
    • 管理端 Options/Email Publish 下,可設定三組 email.
  • 1.0 (2006.04.14)

一些問題

    • 設置電子信箱之後發表新文章的確可以發送到 xxxx◎gmail.com這個郵箱 但是卻不能同步發布在msn space上 這是為什麼呢?
      • 請確定 msn space 上「設定」==> 「電郵發布」的以下選項
        • 「開啟電郵發佈功能」是否開啟?
        • 「輸入您的電子郵件地址」==> 限制可發布的郵件,特別注意是否寄出的 email address 和您想像的一樣,若您的 gmail 等其他信箱可以收信,檢查郵件的 Source 是否有其他郵件 address 來源,特別是 hosting web (比如 dreamhost.com),您的信箱可能是 xxxx@derjohng.com,但您可能要設成 xxxx@xxxx.dreamhost.com 才能成功。
        • 選擇是否要立即發佈您的內容」 ==> 預設是「草稿模式」,檢查是有設成「立即發布」?
      • 另外,我目前測試的結果,就不知為什麼仍會有幾封送去 xxxx@gmail.com 成功的同時,送去 msn spaces 就是會不見。

    • PHP 是不是要設 mail()? 。但怎麼設呢?
      • 請參考 這裡  , 簡單而言,就是修改 /etc/php.ini 裡的 [mail function] 設定,包括
        • SMTP = localhost
        • sendmail_from = me@localhost.com 
        • sendmail_path = /usr/sbin/sendmail -t -i
        • 等..

将电子邮件发布博客进行到底(MSN Spaces)

到今天为止三天了, 整整的三天就在搞定一个问题 — 那就是“如何用电子邮件(email)发布博客日志”, 此效率之低下, 也够被大家伙嘲笑的了。 呵呵, 那没有办法, 谁让我那么笨哪!

      不过幸好, 脑子还不算最秀逗, 昨天搞出了email发布博客日志到wordpress, 中文也不出乱码了; 今天也把msn spaces(live spaces)也搞定了, 可以完全从 DJ EmailPublish 中发送邮件到msn spaces发布文章了, 总算又了了一笔心事!

      接下来就说说要把博客日志发布到msn spaces中需要做的, 首先当然是要在msn spaces中进行设置, 这个就不细说了, 自己去申请一个live spaces 然后从选项中设置“电子邮件发布”就可以了, 给各位截一个图。

这个里面没有什么难的, 只要按照步骤一步步做就可以了, 关键一点在这里, 就在第一步中, 让你填写那些要发布过来的电子邮件(email)的地址, 这个里面如果你用一般的邮箱发信只要填写你邮箱的地址就可以了, 但如果你用 DJ EmailPublish 发信, 那你就得注意了, 这个时候不是在 DJ EmailPublish 程序说说写的那个from了, 也就是说不是你在 DJ EmailPublish 发出的邮件中看到的发件人的那个地址了, 如果你去看看邮件的原始代码, 你会发现有这么一行语句:

Return-Path:  < xx @ xx.xx >

      一般的情况下,如果你是从某个信箱发信的话, 这个语句中的email地址应该跟发件人(From)中的email地址一致, 但我们从服务器中发的时候, 虽然这个发件人(From)的地址你还可以自己更改, 但这个Return-Path是不会变的, 它就是服务器设定的发送email的地址, 这个时候如果你在msn spaces中的“发件人”电子邮件地址中 设置的是你自己写的那个From的话, 那就肯定不会在msn spaces中出现你的文章了, 除非你的From恰好和服务器的Return-Path吻合, 这个时候你应该把live spaces中的“发件人”电子邮件地址改成是Return-Path中的电子邮件地址就可以了。 具体怎么看这个邮件地址, 你就先用 DJ EmailPublish 发一个邮件到你的邮箱中, 然后看这个邮件的源代码就可以找到了。 一句话, 就是把msn spaces中的“发件人”电子邮件地址设置成 Return-Path 中的email地址就可以实现用 DJ EmailPublish 发布博客日志了!

LIVE SPACE新版之日志发布方法三(利用邮件发日志)

Windows Live Spaces提供了多种日志发布方式. 1. 直接在共享空间中发布. 2. 使用Windows Live Writer发布. 3. 电子邮件发布.

第三种发布空间日志的功能虽然不常用, 但是对于商务/旅行等等Windows Mobile或者其他Mobile用户来说, 直接以邮件发布方式将非常便捷.

[配置方式]

1. 登陆共享空间->选项->电子邮件发布->打开电子邮件发布->输入你的电子邮件地址



2. 共享空间给自己添加了机密字来保证安全性.



3. 选择发布设置. 


[发布方式]

1. 登陆到你在配置1中输入的某一电子邮箱, 发送电子邮件至配置2中的共享空间邮件地址. 请习惯共享空间邮件地址这种方法, 因为在未来的Spaces中可能还会陆续用到这种方法. 点击发送.



2. 此时查看你的共享空间, 你已经发现日志成功发布了. 



[为什么?]

用户很纳闷为什么要用电子邮件发布这种方式?  既然能上网那就可以直接用上面所述的直接在共享空间中发布或者使用Windows Live Writer发布阿!

这是对我们普通用户而言的. 而对于手机上网用户, 由于移动设备的浏览局限性, 直接通过电子邮件发送则更为便捷.

实际上, Windows Live Spaces同样针对移动设备用户提供了专门的入口, http://mobile.spaces.live.com



通过移动设备登陆Mobile Spaces后, 我们能够得到几乎和桌面用户相近的体验. 我们能够直接发布日志, 上传图片等等. 通过移动设备我们同样可以看到自己联系人名单上的空间, 也可以浏览其他人的, 发布评论,还可以配置自己的空间.

感谢Easy Start To The Day

隐藏在Win2003中的“冷招”

随着Windows Server 2003操作系统的推出,让各位朋友充分体验到新一代操作系统的无穷魅力。对于Windows Server 2003的基本操作,相信朋友们早已是烂熟于心,不过该系统还有许多看上去非常“冷僻”的地方,本文作一介绍。

强行删除已卸载程序的“影子”

许多应用程序被执行了卸载命令后,还有可能在Windows Server 2003系统的“添加或删除程序”列表中看到它的影子。此时单击列表中的“删除”按钮,并不能将已卸载程序的“影子”删除掉,反而系统会提示你删除出错。要是有多个应用程序被卸载的话,就可能在“添加或删除程序”列表中,留下多个“影子”,这些“影子”一天不删除,就会成为系统一天的“负担”。此时,你可以按下面方法,来强行删除已卸载程序的“影子”:

● 依次执行“开始”“运行”命令,在弹出的对话框中,输入Regedit命令,打开注册表编辑窗口;

● 在该窗口中,依次展开子键HKEY_ LOCAL_MACHINE\SOFTWARE\Microsoft\ Windows\CurrentVersion\Uninstall,如图1所示;



● 继续展开子键Uninstall,随后你就能看到对应子键下面的卸载条目,当然也包含已卸载程序的“影子”。选中它,再依次执行菜单栏中的“编辑” “删除”命令,就能将已卸载程序的“影子”彻底删除;

● 退出注册表编辑窗口后,重新打开“添加或删除程序”对话框,你会发现已卸载程序的“影子”不复存在了。

对IE冲浪速度的要求,当然是越快越好了。即使现在已经升级到Windows Server 2003以及IE 6,但你还在想尽一切办法,让IE再快一些,而Windows Server 2003系统恰好能够让你如愿:

● 执行“开始”“运行”命令,输入注册表编辑命令“Regedit”,在弹出的编辑窗口中,逐级打开子键HKEY_LOCAL _MACHINE\Software\Microsoft \Windows\CurrentVersion\Explorer \RemoteComputer\NameSpace;

● 展开NameSpace子键,选中{D6277990-4C6A-11CF-8D87-00AA0060F5BF}(图2),并用鼠标右键单击,从右键菜单中执行“删除”命令;



● 关闭注册表编辑窗口,重新将计算机启动,再打开IE来上网,看看此时上网速度是不是比以前快了一些?呵呵,要是你以前冲浪速度很慢的话,修改注册表后,就可能有明显感觉。

Windows Server 2003系统在默认安装时,都会产生默认的共享文件夹,共享名称分别为c$、d$、ipc$以及admin$。一旦攻击者知道该系统的管理员密码后,可能通过“\\工作站名\共享名称”的方法,来打开系统的指定文件夹,如此一来,可能会存在安全隐患。为此,我们很有必要将Windows Server 2003系统默认的共享隐患,立即从系统中清除掉。尽管使用优化大师,轻松单击鼠标就能完成清除任务,不过对于“赤手空拳”的你,该怎样清除这些共享隐患呢?下面的内容,将会给你答案。

打开系统的运行对话框,在其中输入“cmd”命令,将屏幕切换到命令行状态。在该状态下,直接输入字符串命令“net share 共享名 /del”,就可以将指定的共享文件夹删除了。例如,要是想删除远程管理共享的话,可以直接执行命令“net share admin$ /del”就可以了。

不过上面的方法,只能暂时性地删除系统默认的共享文件夹,重新启动系统后,这些默认共享又会“卷土重来”。为了实现“一劳永逸”的效果,你可以修改注册表,来将默认共享一次性清除。但这种方法对于不熟悉注册表的菜鸟朋友来说,可能比较危险。为此,你可以按下面的步骤,来实现彻底共享清除:

● 在DOS命令行状态下,直接输入命令“Net Share”,随后Windows Server 2003系统将自动显示出本系统中的所有默认共享文件夹。当然,你也在Windows界面下,打开“计算机管理”窗口,来查看系统的共享资源,如图3所示。如此一来,你就清楚要删除哪些隐藏的共享文件夹了。



● 你可以打开记事本窗口,在该窗口中,依次输入下面的代码:

@echo off

net share c$ /del

net share d$ /del

net share ipc$ /del

net share admin$ /del

● 完成上面的代码输入后,执行记事本窗口中的“文件”“保存”命令,将其保存为“del.txt”文件,再返回到资源管理器窗口中,将“del.txt”文件的扩展名修改为“del.bat”。在资源管理器窗口中,为“del.bat”文件创建一个快捷运行方式,并将该快捷方式直接拖动到“开始”菜单中的“启动”选项里。

● 重新启动计算机系统,就可以自动将系统所有的隐藏共享文件夹全部取消了,这样就能将系统安全隐患降低到最低限度。

在同一局域网中,安装了Windows Server 2003的两台工作站之间的相互访问,并不是一件简单的事情。要想轻松实现相互访问,必须做到以下几点:

● 在两台工作站上,都必须将GUEST帐号重新起用,同时在本地安全策略中,也要启动GUEST帐号。

● 要保证局域网工作站之间轻松互访,还必须安装好NetBEUI协议,同时要将资源设置为共享。

● 要将Windows Server 2003工作站设置为同一工作组。在进行这项设置时,可以用鼠标右键单击系统桌面上的“我的电脑”图标。从打开的右键菜单中执行“属性”命令,在随后的窗口中,打开“计算机名”标签页面。在该页面中,先检查一下工作组名称是否设置正确。要是不正确的话,直接单击“更改”按钮,打开一个计算机名称更改窗口,选中“隶属于”设置项处的“工作组”选项,再在对应的文本框中,正确输入局域网中规定的工作组名称,如图4所示。输入完毕后,单击“完成”按钮,重新将系统启动一次,就可以让Windows Server 2003之间轻松实现互访。

Windows Server 2003系统在默认安装时,可以支持同时使用3个LPT端口。当你需要更多打印端口时,还可以通过修改注册表,来扩展Windows Server 2003系统可以支持的LPT端口数,最大能扩展到9个。拓展生成的LPT端口,日后将自动出现在打印安装向导框中:

● 在开始菜单中,单击“运行”命令,在随后出现的运行对话框中,输入注册表编辑命令Regedit,打开注册表编辑窗口;

● 在该窗口中,依次展开子键HKEY_ LOCAL_MACHINE\SOFTWARE \Microsoft\Windows NT \CurrentVersion\Ports,如图5所示。将鼠标移动到右侧子窗口的空白区域处,单击一下右键,再依次选中“编辑” “新建”“字符串值”选项,将新创建的字符串值取名为“LPT8”;



● 退出注册表编辑窗口,再将系统界面切换到CMD命令行状态,输入“net stop spooler”字符串命令,单击回车键后,系统将自动关闭当前的假脱机服务;

● 输入“net start spooler”字符串命令,系统又会将假脱机服务重新启动起来,这样新创建的LPT端口,才会生效。按照相同方法,你可以添加LPT7、LPT6等端口。

在默认状态下,Windows Server 2003都是以标准优先级的方式,来运行每一个应用程序或进程的,而使用不同的优先级运行程序,被运行的程序或进程占用CPU的时间比例是不一样的。通常优先级别高的,占用CPU的时间比例就大。不过,你可以按下面方法,为特定应用程序,设置指定优先级,以保证程序能顺畅地运行:

● 同时按下键盘上的复合键Ctrl-Alt-Delete,打开任务管理器窗口。在该窗口中,单击“进程”标签,从进程列表中选中目标程序或进程,并用鼠标右键单击。

● 从弹出的右键菜单中,选中“设置优先级”选项,从下级菜单中,再选中合适的优先级别,如图6所示。设置完毕后,当前运行的目标程序或进程,其优先级立即生效,而一旦程序或进程关闭的话,其优先级又会自动恢复为系统默认的状态



系统一旦检测到当前运行的应用程序有错误出现,会自动弹出一个报告窗口,询问你是否要将当前发生的错误,报告给 Microsoft公司,要是单击“是”,系统可能会花很长时间来“递交”报告。显然这种功能会影响你对系统高效操作。为此,你可以按下面步骤,将错误弹出窗口屏蔽掉:

依次执行“控制面板”   “系统”命令,在随后出现的系统属性窗口中,打开“高级”标签页面,在该页面中单击一下“错误汇报”按钮,在随后的界面中,选中“禁用错误汇报”选项,单击“确定”按钮后,设置就会生效。

当然,你也可以通过设置让Windows Server 2003只在指定程序运行出错时,才弹出错误报告窗口。具体方法为:将前面窗口中的“启用错误汇报”选项选中,如图7所示,再单击“选择程序”,在随后窗口中,将“所有在列表中的程序”选项选中,并从中选择目标应用程序。当然也可以单击“添加”命令,将位于其他位置的程序,加入到列表中。



游戏对许多朋友来说,其吸引力绝对不亚于“毒品”。为了避免玩游戏上瘾,你可以按下面方法,来屏蔽游戏组件:

● 执行“开始”   “控制面板”命令,双击“添加/删除Windows组件”,在随后出现的窗口中,将“游戏”组件删除掉;

● 为了避免用户重新安装Windows系统自带的游戏组件,你还必须将游戏组件隐藏起来,隐藏时可以打开系统资源管理器窗口,依次展开Windows文件夹、inf文件夹;

● 在inf文件夹窗口中,鼠标右键单击Sysoc.inf文件(该文件记录了系统各组件的具体属性信息),从弹出的快捷菜单中,依次执行“打开方式”   “选择程序”,从随后的应用程序列表中,选择记事本或写字板工具。

● 这样Sysoc.inf文件中的代码,就会被文本编辑器打开,找到[Components]中的“Games=ocgen.dll,OcEntry, games.inf, 7”代码,将其修改为“Games=ocgen.dll,OcEntry,games.inf,hide,7”(这一步的目的,就是将游戏组件的属性修改为Hide),如图8所示。



● 依次执行文本编辑器中的“文件”   “保存”命令,让Sysoc.inf文件以原名保存。完成上面的设置后,打开“添加/删除Windows组件”窗口,你会发现“游戏”组件没有了。

ExplorerCanvas:IE瀏覽器上的js修正檔

之前還信心滿滿地跟人家說,不會有人在瀏覽器上開發圖形函式庫呢~今天就被打巴掌了。

這個 ExplorerCanvas 程式也不算是讓 IE 瀏覽器上跑 2D 圖形運算的函式庫,它其實是一個讓 javascript 程設師能設計跨瀏覽器的 javascript 程式。為什麼要這樣作呢!原因就出在微軟喜歡用自己的方式來造輪子,所以其他的 Firefox 、 Opera 、 Safari 都支援相同的 tags 來完成 2D 的圖形運算,但 IE 用自己的 ActiveX 元件。

所以只要在你的網頁前頭先載入這個 ExplorerCanvas.js 檔,那麼你呼叫執行的 js 就不用分瀏覽器了。

下面是它的一些範例:

http://www.nchu-cm.com/examples/example3.html - 裡面的圖有4mb,請小心使用。
http://www.nchu-cm.com/examples/example2.html
http://www.nchu-cm.com/examples/example1.html

世界何其大,還是仔細研究過再說吧!

 

推薦

我的 Windows XP 是不裝防毒軟體的,第一、它會拖慢我的速度;第二、我的安全觀念還不錯,除了不亂裝來源不明的軟體,我上網都是用 Firefox 瀏覽器,它輕快、安全、瀏覽頁面效果好,而我最喜歡的一個功能是:「它可以用<Ctrl>+<加>把字放大到你看得到為止」,強烈建議你 下載附加 Google 工具列的 Firefox, 以取得更佳的瀏覽效果

另外各位可以看到我的站台中放著我與內人的結婚照與大家分享我們的喜悅。過去是自行安裝一個 Gallary2 相簿系統來將相片備份在網路上,然而並不是每個人都可以架一個網站來作這件事的。但把相片放置在網路上是有其需要的,第一、可以多了一個備份的地方;第二、如果你想分享給親友,只要貼個連結即可;第三、如果不想分享只要按個按鈕就能隱藏相簿。

我推薦各位使用 picasa ,現在我為了省事,也是把所有的舊相片全搬到 picasaweb 去了。因為我是使用 picasa 軟體,所以搬相片非常簡單,按個鈕就可以把相片全上傳出去,過程當中,你還可以設定相簿公開或是隱藏,或是也可以用 picasa 軟體來 以更快的速度瀏覽網路。下載附加 Google 工具列的 FirefoxGoogle Pack 就是 Google 軟體集,除了給你 Picasa 軟體,它也提供免費的防毒軟體,防間諜軟體及一些好用的小工具。滿建議你們全裝的。

最後,各位一定有注意到我的 Blog 到處都有 Google 所提供的廣告,對吧!這些廣告都是用 Google AdSense 作出來的,這些廣告讓我在 5 個月內賺了 9 塊美金,錢是不多,但我也沒花什麼力氣呀!我只是寫寫文章而已,而寫文章本來就是我的收穫了。所以你也可以 透過 Google AdSense 使您的網站產生收益。這樣除了練習自己的思考能力,還有錢可以拿,不賴吧!
 

微软DropMyRights轻松设置管理权限

 在过去的文章里我曾谈论过管理员帐号中的运行程序问题。如想养成安全使用计算机的习惯,以管理员的身份进行操作是个不错的主意。对刚起步的人而言,你的数据及计算机容易遭到来自互联网上的攻击;由于意外(或恶意)侵入也会做出不可挽回的改变。

  然后,了解与执行之间却存在差距,因为想以管理员身份处理许多日常事务并不容易,除非你作为管理员登录。

  但如果你要经常以管理员身份在网络中工作,但在运行某些重要程序(如Web浏览)时需要比平时更少的特权,又该怎么做呢?

  为满足这部分人的需要,微软推出了名为DropMyRights的工具。它在用于Windows XP和Windows Serve 2003中后,该工具可使你在运行某一程序时取消部分密钥令牌和特权。比如在%systemroot%\system32目录中创建文件,中止或取消程序,更改注册值等。所有这些任务通常要求以管理员身份访问工作,DropMyRights可在程序进程的基础上取消这些特权。

  该程序执行起来非常简单。创建DropMyRights的快捷方式,将安全运行的可执行路径作为命令行参数。例如,你在c:\dmr\下安装有DropMyRights,并想安全运行互联网搜索,可将C:\dmr\dropmyrights.exe "c:\program files\internet explore\iexplore.exe"设为快捷方式的目标。在命令行末端也可提供其他三个命令行参数。N作为普通用户(默认情况下)运行应用程序;C作为受一定限制(客户级)的用户运行应用程序;U作为非信任用户运行应用程序。(最后一个对许多应用程序都不适用。)

  DropMyRights可作为MSI安装包从http://download.microsoft.com/download/f/2/e/f2e49491-efde-4bca-9057-adc89c476ed4/DropMyRights.msi这里下载,你可在SMDN网站上查看关于该应用程序的完整文章(最初是用作安全运行程序的例子)。

另类方法破解微软EFS加密文件的尝试

本文记录的是我偶然的一次破解EFS文件加密技术的经历。这仅是我偶然发现的一个方法,而不是一种破解技术,因为内中的原理我仅能推测,而使用的软件也都是别人设计的。我顶多算是比别人更早地找到了组合利用某些既有工具的方法而已。————题记
EFS(Encrypting File System,加密文件系统)加密是一种基于NTFS磁盘技术的加密技术。EFS加密基于公钥策略。在使用EFS加密一个文件或文件夹时,系统首先会生成一个由伪随机数组成的FEK(File Encryption Key,文件加密钥匙),然后将利用FEK和数据扩展标准X算法创建加密后的文件,并把它存储到硬盘上,同时删除未加密的原始文件。接下来系统利用你的公钥加密FEK,并把加密后的FEK存储在同一个加密文件中。而在访问被加密的文件时,系统首先利用当前用户的私钥解密FEK,然后利用FEK解密出文件。在首次使用EFS时,如果用户还没有公钥/私钥对(统称为密钥),则会首先生成密钥,然后加密数据。如果你登录到了域环境中,密钥的生成依赖于域控制器,否则它就依赖于本地机器。说起来非常复杂,但是实际使用过程中就没有那么麻烦了。EFS加密的用户验证过程是在登录Windows时进行的,只要登录到Windows,就可以打开任何一个被授权的加密文件。换句话说,EFS加密系统对用户是透明的。这也就是说,如果你加密了一些数据,那么你对这些数据的访问将是完全允许的,并不会受到任何限制。而其他非授权用户试图访问你加密过的数据时,就会收到“访问拒绝”的错误提示。

我的电脑一般来说不会有别人使用,而我经常重装系统,又懒得备份密钥,所以我从来没有使用过Windows 2003或者Windows XP的EFS功能。今天读到了一些关于EFS密钥没有备份因而数据无法恢复的求助帖子,所以突然想出一个点子想试着解开EFS的加密。
我构造的试验环境是在Windows XP Pro SP2系统中的一块NTFS磁盘上建立一个test文件夹,启用EFS加密。文件夹中是一个加密过的文本文件1.txt。现在我先用另一个帐户去尝试读取这个文件,然后在第二个系统中(相当于重装系统没有证书的情况)再次尝试读取这个文件。
第一步,启用我系统中的GUEST帐户。
此时从资源管理器中是不能访问test文件夹的。
打开cmd,在任务管理器中终止explorer.exe进程,打开PsExec尝试用system登录。
失败。提示进程无法创建。看来全县不够。
回到管理员帐户,新建一个管理员帐户test并以之登录。
在test帐户中运行资源管理器可以访问test文件夹,但是不能打开1.txt加密文件。
此时再用上法以system登录。此时打开文件为乱码!
运行IceSword.exe,在 文件 中定位test文件夹。右键选择1.txt,复制到桌面,文件名任意,后缀不变。
双击打开文件,正常读出!第一步破解EFS成功!
第二步,登陆Windows Server 2003 SP1系统(管理员身份)。
使用上述方法再次复制1.txt到桌面,打开后出现乱码,和system读取时情况一致。第二种尝试失败。
总结:
本方法意义:
目前仅适用于察看系统中其他人使用EFS加密过的文件(请读者务必不要做违法及危害他人权利的事!),在系统重装或私钥丢失情况下的文件恢复有待进一步地探索。
本方法使用的两个软件:
PsExec IceSword。前者是国外非常流行的远程控制软件,命令行界面。后者则是PJF制作的国内著名隐藏进程察看软件冰刃。
本方法适用条件:
1. 需要足够运行上述两个软件的权限(如果可以结合net user命令的话应该不难,这只是一个小提示,读者还请自律happy.gif)。
2. 系统内还有该EFS加密文件对应的密钥(这一条件是基于我的初步推测)
本方法成功的原因浅析:
1. 利用了system帐户特有的内核级权限,这可能是能够读取管理员或其他正常用户密钥的条件。
2. IceSword特有的读取加密文件的技术。关于这一点,是我最百思不得其解的地方,真希望能听到PJF亲自阐述一下这是如何实现的0.0