File: securesubscribe.pl

package info (click to toggle)
uwsgi 2.0.29-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 6,684 kB
  • sloc: ansic: 87,027; python: 7,001; cpp: 1,131; java: 708; perl: 678; sh: 585; ruby: 555; makefile: 148; xml: 130; cs: 121; objc: 37; php: 28; erlang: 20; javascript: 11
file content (36 lines) | stat: -rw-r--r-- 814 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/usr/bin/perl

use Crypt::OpenSSL::RSA;
use IO::Socket::INET;

open PK,$ARGV[3];
my @lines = <PK>;
close PK;

$rsa_priv = Crypt::OpenSSL::RSA->new_private_key(join('',@lines));

my %items = {};

$items{'key'} = $ARGV[1];
$items{'address'} = $ARGV[2];

my $uwsgi_pkt = '';

foreach(keys %items) {
	$uwsgi_pkt .= pack('v', length($_)).$_.pack('v', length($items{$_})).$items{$_};	
}

my $unix_check = time();

$uwsgi_pkt .= pack('v', 4).'unix'.pack('v', length($unix_check)).$unix_check;

my $signature = $rsa_priv->sign($uwsgi_pkt);

$uwsgi_pkt .= pack('v', 4).'sign'.pack('v', length($signature)).$signature;


my $udp = new IO::Socket::INET(PeerAddr => $ARGV[0], Proto => 'udp');

$udp->send(pack('CvC', 224, length($uwsgi_pkt), 0).$uwsgi_pkt);

print ''.(length($uwsgi_pkt)+4).' bytes sent to '.$ARGV[0]."\n";