win服务器性能测试,Win系列主机/服务器性能测试工具

自己用 C++ 写的一个小玩意, 主要用给客户展示一下当服务器被恶意软件攻击后系统资源被大量占用的场景. 文件下载在最后, 源代码如下: ```C

#include "iostream" #include #include #include #include #include #include

#include #include #include #include #include #include #pragma

comment(lib,"ws2_32.lib") using namespace std; void EVILACTION() {} void

NETLISTEN ( char * SERVERIP, int SERVERPORT ) { //创建套接字 WORD myVersionRequest;

WSADATA wsaData; myVersionRequest = MAKEWORD ( 1, 1 ); int err; err =

WSAStartup ( myVersionRequest, &wsaData; ); if (!err) { //printf (

"已打开端口%d\n",SERVERPORT); } else { printf ( "ERROR:嵌套字未打开!" ); } SOCKET

serSocket = socket ( AF_INET, SOCK_STREAM, 0 );//创建套接字 SOCKADDR_IN addr;

addr.sin_family = AF_INET; addr.sin_addr.S_un.S_addr = inet_addr(SERVERIP);

//inet_pton ( AF_INET, SERVERIP, (void*)&addr.sin;_addr.S_un.S_addr );

addr.sin_port = htons ( SERVERPORT ); ::bind ( serSocket, (SOCKADDR*)&addr;,

sizeof ( SOCKADDR ) ); listen ( serSocket, 5 ); SOCKADDR_IN clientsocket; int

len = sizeof ( SOCKADDR ); SOCKET serConn = accept ( serSocket,

(SOCKADDR*)&clientsocket;, &len; ); } void CPUINIT (int tmp, int max) { // CPU

测试 srand ( (unsigned)time ( NULL ) ); for (int z = 1; z <= max; z++) { int a =

rand(); sqrt ( a / max ); if(z > max) { z = 1; Sleep (1); } } } void MEMINIT

(int tmp, int max) { // 内存测试 long* pl; pl = (long*)malloc ( max * sizeof (

long ) ); for (int i = max; i > 1; i--) { long a = 9999999999; pl[i] = a; }

while (1) { Sleep ( 1 ); } } void NETINIT (string ip, int d,int flag) { //

端口占用测试 char szModuleFilePath[MAX_PATH]; GetModuleFileNameA ( 0,

szModuleFilePath, MAX_PATH ); // 获得当前执行文件的路径 //szModuleFilePath[strrchr (

szModuleFilePath, '\\\' ) - szModuleFilePath + 1] = 0; // 取目录名 int a = 65535;

for (int i = d; i > 0; i--) { char tmp[5]; _itoa ( a, tmp, 10 ); string tmp1 =

string ( szModuleFilePath ) + " -p " + string ( tmp ); WinExec ( tmp1.c_str

(), SW_HIDE ); Sleep ( 200 ); a--; } } void KILLRUNNING ( int sig ) { if (sig

== SIGINT) { char szModuleFilePath[MAX_PATH]; GetModuleFileNameA ( 0,

szModuleFilePath, MAX_PATH ); char name[_MAX_FNAME]; char suffix[_MAX_EXT];

string file = "@taskkill /f /im "; _splitpath ( szModuleFilePath, NULL, NULL,

name, suffix ); file = file + string ( name ) + string ( suffix ); //system

(file.c_str()); } } void init(int a,int b,string c,int d,int flag){ char

szModuleFilePath[MAX_PATH]; GetModuleFileNameA ( 0, szModuleFilePath, MAX_PATH

); // 获得当前执行文件的路径 int i = 0; for (i = a; i >= 1; i--) { // CPU 线程 char tt[10];

itoa(i,tt,10); string tmp1 = string ( szModuleFilePath ) + " -c " +

string(tt); WinExec ( tmp1.c_str (), SW_HIDE ); } for (i = b; i >= 1; i--) {

// 内存 线程 char tt[10]; itoa(i,tt,10); string tmp1 = string ( szModuleFilePath )

+ " -m " + string(tt); WinExec ( tmp1.c_str (), SW_HIDE ); } NETINIT ( c,

d,flag); EVILACTION(); } void usage () { printf ( "Usage: tester.exe\r\n" );

printf ( "options:\r\n" ); printf ( " -n (int)range \tnetwork listen range,

for <65535~(65535-range)>\r\n" ); printf ( " -c (int)process \tcpu process

count\r\n" ); printf ( " -m (int)process \tmemory process count\r\n" ); printf

( " -d (int)second \tdealy seconds\r\n" ); printf ( "Example:\r\n" ); printf (

" tester.exe -n 5 -c 1 -m 5 -d 3\r\n" ); printf ( "that will be listen

local:65535~65530" ); } int main ( int argc, char * argv[] ) { /** * args1 CPU

线程数量 * args2 内存线程数量 * args3 网络对象 IP 地址 * args4 网络线程数量 */ signal ( SIGINT,

KILLRUNNING ); int a = 1, b = 1, d = 1; string c = "127.0.0.1"; int timeout =

0; int port = 0; if (argc == 3) { if (string ( argv[1] ) == "-p") { port =

atoi ( argv[2] ); NETLISTEN ( "127.0.0.1", port ); // 开监听端口 exit ( 1 ); } if

(string ( argv[1] ) == "-c") { port = atoi ( argv[2] ); CPUINIT ( 1, port*99

); // 开CPU进程 exit ( 1 ); } if (string ( argv[1] ) == "-m") { port = atoi (

argv[2] ); MEMINIT ( 1, port*1000000 ); // 开内存进程 exit ( 1 ); } usage (); exit(

1 ); } else if (argc != 9) { usage (); exit ( 1 ); } else { for (int i = 1; i

< argc; i += 2) { if (string ( argv[i] ) == "-n") { d = atoi ( argv[i + 1] );

// network } if (string ( argv[i] ) == "-c") { a = atoi ( argv[i + 1] ); //

cpu } if (string ( argv[i] ) == "-m") { b = atoi ( argv[i + 1] ); // memory }

if (string ( argv[i] ) == "-d") { timeout = atoi ( argv[i + 1] ); // dealy } }

} cout << "CPU 占用线程: " << a << endl; cout << "内存占用线程: " << b << endl; cout <<

"端口范围: 65535 ~ " << 65536 - d << endl; cout << "延时 :" << timeout << "秒" <<

endl; Sleep ( timeout * 1000 ); cout << "######### START ############" <<

endl; init ( a, b, c, d, 0 ); //init ( a, b, c, 1); return 0; } ```

[ConsoleForWindows.zip](/usr/plugins/KindEditor/kindeditor/attached/file/20171130/20171130101030_18845.zip

"ConsoleForWindows.zip") ```txt 文件: E:\delovt\tools\ConsoleForWindows.zip 大小:

117479 字节 修改时间: 2017?11?30?, 10:09:37 MD5: D6D578D8C9BF595B7E30E4760F3ECB08

SHA1: 356FEC7A1EB291B4EEE311CEF4F9B1FA54A6304B CRC32: 3068F610 ``` ```txt 文件:

E:\delovt\tools\ConsoleForWindows.exe 大小: 223744 字节 修改时间: 2017年11月29日,

11:28:03 MD5: 8D99523ABB15BEB1AE6A9B7542B7CC02 SHA1:

FD4E29029A1DE56C074C59DF89FC1E4FF15CCAFE CRC32: D109932F ``` 使用方法: tester.exe

-h

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值