#!/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!