Jump to content
N.red.user

Zgomot in sisteme

Recommended Posts

#!/usr/bin/php
<?php

/**********************************************
Noise making script by dj.thd
Sends random alphanumeric data with optinal custom payload to specified destination
Make sure to not set a very low max_packets_per_conn and very high max_reqs_per_sec, as this will deplete you OS sockets due to TIME_WAIT (TCP)
Examples:

./noise.php 172.27.0.30 80 tcp "GET /%RANDOM%.php HTTP/1.1\r\nHost: 172.27.0.30\r\n\r\n" (send random HTTP GET requests with .php extension)
./noise.php 192.168.1.1 53 udp (send random data to DNS server)

**********************************************/

function print_usage()
{
printf("Usage: php -f noise.php (IP|hostname) port [protocol] [payload] [rand_min_len] [rand_max_len] [max_reqs_per_sec] [max_packets_per_conn]\n");
printf(" protocol: tcp|udp, default = tcp\n");
printf(" payload: string to be sent with %%RANDOM%% to be substituted by noise, default = '%%RANDOM%%'\n");
printf(" rand_min_len: random data min length in bytes, default = 16\n");
printf(" rand_max_len: random data max length in bytes, default = 64\n");
printf(" max_reqs_per_sec: maximum chunks of data sent per sec, default = 100\n");
printf(" max_packets_per_conn: maximum chunks of data to sent before opening new connection, default = 50\n");
printf("\n");
}

function connect_socket($protocol, $host, $port)
{
switch($protocol) {
case 'tcp':
$socket_type = SOCK_STREAM;
$socket_protocol = SOL_TCP;
break;
case 'udp':
$socket_type = SOCK_DGRAM;
$socket_protocol = SOL_UDP;
break;
default:
printf("Not supported protocol! Valid options: tcp, udp\n");
print_usage();
die();
}

$socket = socket_create(AF_INET, $socket_type, $socket_protocol);

if(!$socket) {
return false;
}

$is_connection_oriented = $protocol == 'tcp';

if($is_connection_oriented && !socket_connect($socket, $host, intval($port))) {
socket_close($socket);
return false;
}

return $socket;
}

function generate_random_string($rand_min_len, $rand_max_len)
{
$rand_charset = "abcdefghijklmnopqrsuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$rand_charset_len = strlen($rand_charset)-1;
$len = mt_rand($rand_min_len, $rand_max_len);
$result = '';
for($i = 0; $i < $len; $i++) {
$result .= $rand_charset[mt_rand(0, $rand_charset_len)];
}
return $result;
}

function generate_noise($payload, $rand_min_len, $rand_max_len)
{
static $random_identifier = '%RANDOM%';
$result = $payload;;
$replace_pos = strpos($result, $random_identifier);
while($replace_pos !== false) {
$result = substr_replace($result, generate_random_string($rand_min_len, $rand_max_len), $replace_pos, strlen($random_identifier));
$replace_pos = strpos($result, $random_identifier);
}
return $result;
}

// entry point

if(!isset($argv[1]) || !isset($argv[2])) {
printf("Missing arguments!\n");
print_usage();
die();
}

$host = $argv[1];
$port = $argv[2];
$protocol = isset($argv[3]) ? $argv[3] : 'tcp';
$payload = isset($argv[4]) ? $argv[4] : '%RANDOM%';
$rand_min_len = isset($argv[5]) ? intval($argv[5]) : 16;
$rand_max_len = isset($argv[6]) ? intval($argv[6]) : 64;
$max_reqs_per_sec = isset($argv[7]) ? intval($argv[7]) : 100;
$max_packets_per_conn = isset($argv[8]) ? intval($argv[8]) : 50;

$is_connection_oriented = $protocol == 'tcp';

$success = 0;
$failed = 0;
$counter = 0;

$start_time = microtime(true);
$last_report_time = 0;
$socket = false;

do {
if(microtime(true) - $last_report_time > 10) {
printf("total = %d, success = %d, failed = %d, ops/sec = %.2f\n", $success+$failed, $success, $failed,
($success+$failed)/(microtime(true)-$start_time));
$last_report_time = microtime(true);
}
usleep(1000000/$max_reqs_per_sec);
if(!$socket) {
$socket = @socket_sendto($socket, $data, strlen($data), $host, $port, 0);
}
if($sent) {
$success++;
$sent_packets_this_conn++;
} else {
$failed++;
socket_close($socket);
$socket = false;
}
if($sent_packets_this_conn >= $max_packets_per_conn) {
socket_close($socket);
$socket = false;
}
} while(true);


Scriptul îsi explica singur ce face...

Pe scurt pute?i pune zgomot in orice sistem!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...