内容摘要:利用SendDlgItemMessage()或SetDlgItemText()来输入用户名及密码。利用SendMessage()发送“确定”消息。这样一来,就利用程序完成了整个网络登录过程。在重复这个过程中采用枚举的用户名和密码,进而完成网络用户名及密码的枚举猜解。
Windows网络用户密码猜解算法的主要思想是:利用Windows提供的窗口枚举函数EnumWindows ()找到网络登录窗口。利用子窗口枚举函数EnumChildWindows ()或GetNext-DlgTabItem()和GetWindowLong()定位网络登录窗口上的各个控件。利用SendDlgItemMessage()或SetDlgItemText()来输入用户名及密码。利用SendMessage()发送“确定”消息。这样一来,就利用程序完成了整个网络登录过程。在重复这个过程中采用枚举的用户名和密码,进而完成网络用户名及密码的枚举猜解。
一、猜解过程流程:
为说明问题,下面只写出主要的过程。对于关键过程给出用VC++实现的源码。下面的流程中Mutex.Lock和Mutex.UnLock之间的代码只允许单线程访问。“密码枚举完”是指用户指定的字符集合已被枚举完,程序将再枚举一个新的用户名,然后重新枚举这个字符集合。关于源码中各函数的具体用法,请参阅MSDN。关于多线程的用法,可参阅《VisualC++技术内幕》。
下面给出关键流程的源代码(程序流程见图1-1):

1. 全局变量:
struct _Thread
{
CWinThread *pThread;
};
_Thread WindowThread[iProc],PassTread[1],UserTread[1]; )//iProc:窗口枚举线程数
CEvent gEventNextPass;//取下一个密码,为实现同步引进
CEvent gEventPassOk;//已取得密码,为实现同步引进
CEvent gEventNextUser;//取下一个用户名,为实现同步引进
CEvent gEventUserOk;// 已取得用户名,为实现同步引进
CMutex gMutex;//互斥量,只允许单线程访问
char cCurrentPass[MAX_PASSWORD_LENGTH]; file://当前使用的密码。
char cCurrentUser[MAX_USER_LENGTH];//当前使用的用户名2. 线程启动:
责编:豆豆技术应用
点击搜索更多"Windows网络"相关信息
正在加载评论...
- 江民12月22日病毒播报:Trojan/StartPage.avs
- 瑞星12月21日病毒:MSN圣诞照片
- McAfee:08年十大威胁预测 即时消息病毒突增
- 熊猫烧香变身瓢虫病毒 预计圣诞节前后爆发
- 木马病毒泛滥 杀毒软件厂商频频出招
- 安全警报:12月21日值得注意病毒列表
- 网友谈:我们还需要桌面Linux的反病毒吗?
- 安全技巧:关于ARP病毒造成断网的处理方法
- 另类病毒防范技巧 权限法杀毒法
- 单节锂离子电池保护芯片的设计