⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rewrite.pl

📁 此包是为perl或者 Python等高级语言提供一个库
💻 PL
字号:
#!/usr/bin/perl## see http://search.cpan.org/~atrak/NetPacket-0.04/#use strict;BEGIN {	push @INC,"perl";	push @INC,"build/perl";	push @INC,"NetPacket-0.04";};use nfqueue;use NetPacket::IP qw(IP_PROTO_TCP);use NetPacket::TCP;my $q;sub cleanup(){	print "unbind\n";	$q->unbind();	print "close\n";	$q->close();}sub cb(){	my ($dummy,$payload) = @_;	print "Perl callback called!\n";	print "dummy is $dummy\n" if $dummy;	if ($payload) {		print "len: " . $payload->get_length() . "\n";		my $ip_obj = NetPacket::IP->decode($payload->get_data());		print $ip_obj, "\n";		print("$ip_obj->{src_ip} => $ip_obj->{dest_ip} $ip_obj->{proto}\n");		print "Id: " . $payload->swig_id_get() . "\n";		if($ip_obj->{proto} == IP_PROTO_TCP) {			# decode the TCP header			my $tcp_obj = NetPacket::TCP->decode($ip_obj->{data});			print "TCP src_port: $tcp_obj->{src_port}\n";			print "TCP dst_port: $tcp_obj->{dest_port}\n";			print "TCP flags   : $tcp_obj->{flags}\n";			print "TCP data    : $tcp_obj->{data}\n";			if (length($tcp_obj->{data})) {				print "data is defined\n";				#$tcp_obj->{data} = 'gruik';				$tcp_obj->{data} =~ s/GET.*/GET \//m;				print "**********\n";				print $tcp_obj->{data};				print "**********\n";			}                        # try modifying the packet                        #$ip_obj->{src_ip} = "1.2.3.4";                        #$tcp_obj->{src_port} = 42;			#$ip_obj->{dest_ip} = "213.186.33.19";                        $ip_obj->{data} = $tcp_obj->encode($ip_obj);                        my $modified_payload = $ip_obj->encode();                        my $ip2 = NetPacket::IP->decode($modified_payload);                        print("$ip2->{src_ip} => $ip2->{dest_ip} $ip2->{proto}\n");			my $tcp2 = NetPacket::TCP->decode($ip2->{data});			print "TCP src_port: $tcp2->{src_port}\n";			print "TCP dst_port: $tcp2->{dest_port}\n";                        print "data length: ", length($modified_payload), "\n";                        my $ret = $payload->set_verdict_modified($nfqueue::NF_ACCEPT,$modified_payload,length($modified_payload));			print "ret: $ret\n";		}		$payload->set_verdict($nfqueue::NF_DROP);	}}$q = new nfqueue::queue();print "open\n";$q->open();print "bind\n";$q->bind();$SIG{INT} = "cleanup";#print "set callback, wrong argument type (should fail)\n";#$q->set_callback("blah");print "setting callback\n";$q->set_callback(\&cb);print "creating queue\n";$q->create_queue(0);print "trying to run\n";$q->try_run();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -