#!/usr/bin/perl # Automatically generated by beSTORM(tm) # Copyright Beyond Security (c) 2003-2007 ($Revision: 3741 $) # Attack vector: # M0:P0:B0.BT0:B0.BT0:B0.BT0:B0.BT0 # Module: # DNP3 use strict; use warnings; use Getopt::Std; use IO::Socket::INET; $SIG{INT} = \&abort; my $host = '192.168.4.52'; my $port = 20000; my $proto = 'udp'; my $sockType = SOCK_DGRAM; my $timeout = 1; #Read command line arguments my %opt; my $opt_string = 'hH:P:t:'; getopts( "$opt_string", \%opt ); if (defined $opt{h}) { usage() } #3. Close connection close ($sock); #The end sub receive { my $sock = shift; my $timeout = shift; my $tmpbuf; my $buf = ""; while(1) { # Example from perldoc -f alarm eval { local $SIG{ALRM} = sub { die "timeout\n" }; alarm $timeout; my $ret = read $sock, $tmpbuf, 1; #We read data one byte at a time. if ( !defined $ret or $ret == 0 ) { #EOF die "timeout\n"; } alarm 0; $buf .= $tmpbuf; }; if ($@) { #time out if($@ eq "timeout\n") { last; } else { die "receive aborted\n"; } } } #while return $buf; } sub abort { print "aborting...\n"; if ($sock) { close $sock; } die "User aborted operation\n"; } sub usage { print "usage: $0 [-hHPt]\n"; print "-h\t: this help message\n"; print "-H\t: override default host - $host\n"; print "-P\t: override default port - $port\n"; print "-t\t: set socket timeout in seconds\n"; exit 0; }