注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

且行且记录

点滴记录,行的更远!

 
 
 

日志

 
 

试了下星号密码查看居然可以  

2017-06-10 19:20:51|  分类: 一些练习 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

在看雪上看到的一篇在xp,win7下不用注入dll的方法查看密码。

》》》参考

支持Win7的星号密码查看器的实现
heiheiabcd  2012-12-17 11:12 ? 28041
dwStyle = GetWindowLong(hwndPoint, GWL_STYLE);//获取密码框原来样式
SetWindowWord(hwndPoint, GWL_STYLE, 0);//取消所有样式
SetWindowLong(hwndPoint, GWL_STYLE, dwStyle & ~ES_PASSWORD);//去掉密码属性
SendMessage(hwndPoint, WM_GETTEXT, sizeof(szTitle) / sizeof(TCHAR), (LPARAM)szTitle);//没有了ES_PASSWORD属性WM_GETTEXT可以成功
SetWindowLong(hwndPoint, GWL_STYLE, dwStyle);//还原密码框原来样式

》》》
我试了下居然可以得到,然后就顺便把以前的练习windows枚举窗口的例子

改了下,让他输出你指定词的窗口所有密码窗口的密码。

下面是用xp的管理修改用户密码框做的测试。

还试了win2012 sever r2也能成功。

d:\temp>getpwd 密码
星号密码查看!

hwnd = 0x001e0294, title = 命令提示符 - getpwd 密码

hwnd = 0x000d0290, title = 为 test 设置密码
hwnd = 0x000401fc, id = 0x00000494, pwd = 111222
hwnd = 0x000401ea, id = 0x00000495, pwd = 22222222

》》代码

//cl getpwd.cpp user32.lib
#include <windows.h>
#include <stdio.h>

char inctxt[256];

BOOL CALLBACK EnumChildWindowsProc(HWND hwnd, LPARAM lParam)
{
 char buff[128];
 DWORD dwStyle;

 dwStyle = GetWindowLong(hwnd, GWL_STYLE);
 if (dwStyle & ES_PASSWORD)
 {
  dwStyle = GetWindowLong(hwnd, GWL_STYLE);//获取密码框原来样式
  SetWindowWord(hwnd, GWL_STYLE, 0);//取消所有样式
  SetWindowLong(hwnd, GWL_STYLE, dwStyle & ~ES_PASSWORD);//去掉密码属性
  SendMessage(hwnd, WM_GETTEXT, sizeof(buff), (LPARAM)buff);//没有了ES_PASSWORD属性WM_GETTEXT可以成功
  SetWindowLong(hwnd, GWL_STYLE, dwStyle);//还原密码框原来样式
  printf("hwnd = 0x%08x, id = 0x%08x, pwd = %s\n", hwnd, GetWindowLong(hwnd, GWL_ID), buff);
 }
 return TRUE;
}

BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
 char buff[256];
 SendMessage(hwnd, WM_GETTEXT, 256, (LPARAM)buff);
 if (strstr(buff, inctxt) != NULL)
 {
 printf("\nhwnd = 0x%08x, title = %s\n", hwnd, buff);
 EnumChildWindows(hwnd, EnumChildWindowsProc, 0);
 }

 return TRUE;
}

int main(int argc, char *argv[])
{
 printf("星号密码查看!\n");
 if (argc != 2)
 {
 printf("示例: 得到标题含\"密码\"两字的窗口内所有密码框内的密码\n");
 printf("getpwd 密码\n");
 return 0;
 }
 strcpy(inctxt, argv[1]);
 EnumWindows(EnumWindowsProc, 0);
 return 0;
}

  评论这张
 
阅读(6)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017