Netcat.pl Zor Bulursunuz

sanalasker

Spys-Z
Katılım
3 Eki 2012
Mesajlar
384
Tepkime puanı
0
Puanları
0
Arkadaşlar Bi Repi Eksik Etmeyin :)

Kod:
#!/usr/bin/perl -w
#######################################################
# netcat.pl
# Written by: Brandon Zehm <caspian @ dotconf.net>
#
# License:
#
# netcat.pl (hereafter referred to as “program”) is free software;
# you can redistribute it and/or modify it under the terms of the GNU General
# Public License as published by the Free Software Foundation; either version
# 2 of the License, or (at your option) any later version.
# Note that when redistributing modified versions of this source code, you
# must ensure that this disclaimer and the above coder’s names are included
# VERBATIM in the modified code.
#
# Disclaimer:
# This program is provided with no warranty of any kind, either expressed or
# implied. It is the responsibility of the user (you) to fully research and
# comprehend the usage of this program. As with any tool, it can be misused,
# either intentionally (you’re a vandal) or unintentionally (you’re a moron).
# THE AUTHOR(S) IS(ARE) NOT RESPONSIBLE FOR ANYTHING YOU DO WITH THIS PROGRAM
# or anything that happens because of your use (or misuse) of this program,
# including but not limited to anything you, your lawyers, or anyone else
# can dream up. And now, a relevant quote directly from the GPL:
#
# NO WARRANTY
#
# 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
# FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
# OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
# PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
# OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
# TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
# PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
# REPAIR OR CORRECTION.
#
# —
#
# Whee, that was fun, wasn’t it? Now let’s all get together and think happy
# thoughts – and remember, the same class of people who made all the above
# legal spaghetti necessary are the same ones who are stripping your rights
# away with DVD CCA, DMCA, stupid software patents, and retarded legal
# challenges to everything we’ve come to hold dear about our internet.
# So enjoy your dwindling “freedom” while you can, because 1984 is coming
# sooner than you think. :[
#
#######################################################
use strict;
use Socket qw (:DEFAULT :crlf);
use IO::Socket;

## Global Variable(s)
my *conf = (
"name" => "netcat.pl",
"version" => "v0.65",
"debug" => "0",

"passphrase" => "The Default Pass-Phrase should be changed!",

"mode" => "", ## This will either be 'server' or 'client'
"server" => "", ## The remote server name/ip for client operation
"port" => "", ## Local or remote port
"timeout" => "60",
"disableDNS" => "0",
"crypt" => 0,
);

#############################
##
## MAIN PROGRAM
##
#############################

## Process Command Line
processCommandLine();

###################
## CLIENT MODE ##
###################

if ($conf{'mode'} eq 'client') {

## Connect to remote host:port
my $result = connectTo($conf{'server'}, $conf{'port'}, $conf{'timeout'});

## Reset alarm()
alarm(0);

## Print Connection Result
quit($result,1) if ($result !~ /SUCCESS/);

## Send all data
my $data = "";
while (<STDIN>) {
if ($conf{'crypt'}) {
## We want to break data into 16384 byte chuncks (this is so the encrypted data doesn't get out of allignment)
$data .= $_;
if (length($data) >= 16384) {
$data =~ s/(.{16384})//s;
$_ = RC4($conf{'passphrase'}, $&);
print SERVER $_;
}
}
else {
print SERVER $_;
}
}

## If crypt'ing check for leftovers
if ($conf{'crypt'}) {
$_ = RC4($conf{'passphrase'}, $data) if ($data);
print SERVER $_;
}

## Disconnect
disconnect();

## Quit
quit("",0);

}

###################
## SERVER MODE ##
###################

elsif ($conf{'mode'} eq 'server') {

## Open a socket and listen for an incoming connection
alarm($conf{'timeout'});
my $socket = IO::Socket::INET->new( LocalPort => $conf{'port'},
Proto => 'tcp',
Listen => 1
) or quit("ERROR: Failed to open tcp port $conf{'port'}",1);
my $data_socket = $socket->accept();
alarm(0);

## Recieve data and print to stdout
my $data = "";
while (<$data_socket>) {
if ($conf{'crypt'}) {
## We want to break data into 16384 byte chuncks
$data .= $_;
if (length($data) >= 16384) {
$data =~ s/(.{16384})//s;
print RC4($conf{'passphrase'}, $&);
}
}
else {
print $_;
}
}

## If crypt'ing check for leftovers
if ($conf{'crypt'}) {
print RC4($conf{'passphrase'}, $data) if ($data);
}

## Close network socket
$data_socket->close();
$socket->close();

## Quit
quit("",0);

}
else {
quit("Looks like some command line parameters were incorrect!\nTry \"$conf{'name'} --help\"\n", 1);
}

#########################################################
## SUB: help
##
## hehe, for all those newbies ;)
#########################################################
sub help {
print <<EOM;

$conf{'name'}-$conf{'version'} by Brandon Zehm <caspian@dotconf.net>

Usage:
Connect to somewhere: $conf{'name'} [-options] hostname port
Listen for inbound: $conf{‘name’} -l -p port [-options]

Options:
-l Listen mode, for inbound connects
-n Numeric-only IP addresses, no DNS
-p port Local port number
-w secs Timeout for connects and final net reads
-rc4 RC4 encode/decode all data with a pass-phrase. *
* Set pass-prase by editing this ******.

EOM
quit(“”, 1);
}

######################################################################
## Function: initialize ()
##
## Does all the ****** startup jibberish.
##
######################################################################
sub initialize {

## Set STDOUT to flush immediatly
$| = 1;

## Intercept signals
$SIG{‘QUIT’} = sub { quit(“$$ – EXITING: Received SIG$_[0]“, 1); };
$SIG{‘INT’} = sub { quit(“$$ – EXITING: Received SIG$_[0]“, 1); };
$SIG{‘KILL’} = sub { quit(“$$ – EXITING: Received SIG$_[0]“, 1); };
$SIG{‘TERM’} = sub { quit(“$$ – EXITING: Received SIG$_[0]“, 1); };

## ALARM and HUP signals are not supported in Win32
unless ($^O =~ /win/i) {
$SIG{‘HUP’} = sub { quit(“$$ – EXITING: Received SIG$_[0]“, 1); };
$SIG{‘ALRM’} = sub { quit(“$$ – EXITING: Received SIG$_[0]“, 1); };
}

return(1);
}

######################################################################
## Function: processCommandLine ()
##
## Processes command line storing important data in global var *conf
##
######################################################################
sub processCommandLine {

############################
## Process command line ##
############################

my $numargv = @ARGV;
my $counter = 0;
for ($counter = 0; $counter < $numargv; $counter++) {

if ($ARGV[$counter] =~ /^-l$/) { ## Listen Mode ##
$conf{‘mode’} = ‘server’;
}

elsif ($ARGV[$counter] =~ /^-n$/) { ## Numeric Only – (No DNS) ##
$conf{‘disableDNS’} = 1;
}

elsif ($ARGV[$counter] =~ /^-p$/) { ## Local Port ##
$counter++;
$conf{‘port’} = $ARGV[$counter];
}

elsif ($ARGV[$counter] =~ /^-w$/) { ## Timeout ##
$counter++;
$conf{‘timeout’} = $ARGV[$counter];
}

elsif ($ARGV[$counter] =~ /^-rc4$/) { ## RC4 Encode/Decode Data ##
$conf{‘crypt’} = 1;
}

elsif ($ARGV[$counter] =~ /^-h$|^–help$/) { ## Help ##
help();
}

else { ## Server ##

if (!$conf{‘mode’}) {
$conf{‘mode’} = ‘client’;
$conf{‘server’} = $ARGV[$counter];
$counter++;
$conf{‘port’} = $ARGV[$counter];
}
else {
quit(“ERROR: The option ‘$ARGV[$counter]‘ is unrecognised.\n”);
}
}
}

###################################################
## Verify required variables are set correctly ##
###################################################
if (!$conf{‘mode’}) {
help();
}
if (!$conf{‘port’}) {
help();
}

return(1);
}

######################################################################
## Function: connectTo($server, $port, $timeout)
## Assumes port is 80 if $port is blank.
## Connects $server:$post to a global socket named
## SERVER
## Returns a text message describing the success or failure
######################################################################
sub connectTo {
my *incoming = ();
## Get incoming variables
(
$incoming{‘server’},
$incoming{‘port’},
$incoming{‘timeout’}
) = @_;

print “$$ – connectTo() – sub entry\n” if ($conf{‘debug’} > 5);
my $return = 1;
my $alarm = 0;

## Setup alarm()
$SIG{‘ALRM’} = sub { setAlarmTrue($alarm, $incoming{‘timeout’}); };
alarm($incoming{‘timeout’});

## Check incoming variables
$incoming{‘port’} = 80 if (!$incoming{‘port’});
return(“$$ – ERROR: connectTo() Incoming \$server variable was empty.”) if ($incoming{‘server’} eq “”);

## Open a IP socket in stream mode with tcp protocol.
print “$$ – connectTo() – requesting a streaming tcp/ip socket from the system\n” if ($conf{‘debug’} > 5);
socket(SERVER, PF_INET, SOCK_STREAM, getprotobyname(‘tcp’)) || ($return = 0);
return(“$$ – ERROR: [$incoming{'server'}:$incoming{'port'}] Connection timeout exceeded.”) if ($alarm);
return(“$$ – ERROR: Problem opening a tcp/ip socket with the system.”) if ($return == 0);

## Create the data structure $dest by calling sockaddr_in(port, 32bit IP)
print “$$ – connectTo() – creating data structure from server name and port\n” if ($conf{‘debug’} > 5);
my $inet_aton = inet_aton($incoming{‘server’})
|| return(“$$ – ERROR: Hostname [$incoming{'server'}] DNS lookup failed.”);
return(“$$ – ERROR: [$incoming{'server'}:$incoming{'port'}] Connection timeout exceeded.”) if ($alarm);
my $dest = sockaddr_in ($incoming{‘port’}, $inet_aton)
|| return(“$$ – ERROR: Calling sockaddr_in() returned an error”);
return(“$$ – ERROR: [$incoming{'server'}:$incoming{'port'}] Connection timeout exceeded.”) if ($alarm);

## Connect our socket to SERVER
print “$$ – connectTo() – connecting the socket to the server\n” if ($conf{‘debug’} > 5);
connect(SERVER, $dest) || ($return = 0);
return(“$$ – ERROR: [$incoming{'server'}:$incoming{'port'}] Connection timeout exceeded.”) if ($alarm);
return(“$$ – ERROR: Connection attempt to [$incoming{'server'}:$incoming{'port'}] failed!”) if ($return == 0);
print “$$ – connectTo() – successfully connected to $incoming{‘server’}:$incoming{‘port’}\n” if (($conf{‘debug’} > 5) && ($return));

## Return success
print “$$ – connectTo() – sub exit: returning [$return]\n” if ($conf{‘debug’} > 5);
return(“$$ – SUCCESS: Connection to [$incoming{'server'}:$incoming{'port'}] succeeded.”);
}

sub setAlarmTrue {
${$_[0]}=1;
$SIG{‘ALRM’} = sub { setAlarmTrue($_[0]); };
alarm(${$_[1]});
}

######################################################################
## Function: RC4 ($passphrase, $plaintext) or
## ($passphrase, $encrypted)
##
## The following code was pulled from the perl package:
## Crypt::RC4 – Perl implementation of the RC4 encryption algorithm
##
## Synopsis:
## $encrypted = RC4( $passphrase, $plaintext );
## $decrypt = RC4( $passphrase, $encrypted );
######################################################################
sub RC4 {
my $x = 0;
my $y = 0;

my $key = shift;
my @k = unpack( ‘C*’, $key );
my @s = 0..255;

for ($x = 0; $x != 256; $x++) {
$y = ( $k[$x * @k] + $s[$x] + $y ) * 256;
@s[$x, $y] = @s[$y, $x];
}

$x = $y = 0;

my $z = undef;

for ( unpack( ‘C*’, shift ) ) {
$x = ($x + 1) * 256;
$y = ( $s[$x] + $y ) * 256;
@s[$x, $y] = @s[$y, $x];
$z .= pack ( ‘C’, $_ ^= $s[( $s[$x] + $s[$y] ) * 256] );
}

return $z;
}

######################################################################
# SUB: disconnect()
# Closes the SERVER socket.
# Returns 1 on success 0 on failure.
######################################################################
sub disconnect {
print “$$ – disconnect() – sub entry\n” if ($conf{‘debug’} > 5);
my $return = 1;
if (!(close SERVER)) { ## and drop the connection.
## print “$$ – ERROR: There was an error disconnecting form the server\n”;
$return = 0; ## Return failure if we didn’t disconnect correctly
}
print “$$ – disconnect() – disconnected from the server successfully\n” if ($conf{‘debug’} > 5);
print “$$ – disconnect() – sub exit: returning [$return]\n” if (($conf{‘debug’} > 5) && ($return));
return($return); ## Return
}

######################################################################
## Function: quit (string $message, int $errorLevel)
##
## Exits the program, optionally printing $message. It returns
## an exit error level of $errorLevel to the system (0 means no
## errors, and is assumed if empty.)
##
######################################################################
sub quit {
my *incoming = ();
(
$incoming{‘message’},
$incoming{‘errorLevel’}
) = @_;
$incoming{‘errorLevel’} = 0 if (!defined($incoming{‘errorLevel’}));

## Print exit message
if ($incoming{‘message’} ne “”) {
print “$incoming{‘message’}\n”;
}

## Exit
exit($incoming{‘errorLevel’});
}

About these ads
 

RujAjan

Özel Üye
Katılım
28 Eki 2012
Mesajlar
2,486
Tepkime puanı
1
Puanları
0
rep verme suan kapali kardesm : )
 

x-Qey

Özel Üye
Katılım
21 Eyl 2012
Mesajlar
1,843
Tepkime puanı
0
Puanları
0
Yaş
30
images
 

occibital

Forumdan Uzaklaştırıldı
Katılım
13 May 2013
Mesajlar
363
Tepkime puanı
0
Puanları
0
ne işe yariyo kardeş bu :
 

mersin escort mersin e ticaret bodrum escort fethiye escort alanya escort konya escort marmaris escort bodrum escort vozol puff sakarya escort sakarya escort sakarya escort sakarya escort sakarya escort sakarya escort sakarya escort sakarya escort sakarya escort ankara escort meritking giriş
Üst
Copyright® Ajanlar.org 2012