File: udp.t

package info (click to toggle)
libnetpacket-perl 1.5.0-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 264 kB
  • ctags: 124
  • sloc: perl: 1,060; makefile: 2
file content (43 lines) | stat: -rw-r--r-- 1,154 bytes parent folder | download | duplicates (5)
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
37
38
39
40
41
42
43
use strict;
use warnings;

use Test::More tests => 8;

use NetPacket::Ethernet;
use NetPacket::IP;
use NetPacket::UDP qw/ udp_strip /;

my $datagram = binarize( <<'END_DATAGRAM' );
00 90 d0 23 ed 2a 00 1c bf ca a3 d5 08 00 45 00 
00 30 00 00 40 00 40 11 30 5a 0a 00 00 a5 84 b1 
7b 0d eb 11 0d 96 00 1c 42 7f 00 01 00 00 21 12 
a4 42 fd 95 e8 83 8a 05 28 45 6a 8e f1 e2
END_DATAGRAM

my $eth = NetPacket::Ethernet->decode( $datagram );
my $ip = NetPacket::IP->decode( $eth->{data} );
my $udp = NetPacket::UDP->decode( $ip->{data}, $ip );

is unpack( "H*", $udp->{data} ) 
    => '000100002112a442fd95e8838a0528456a8ef1e2', 'UDP payload (STUN)';

is $udp->{src_port} => 60177, 'src_port';
is $udp->{dest_port} => 3478, 'dest_port';
is $udp->{len} => 28, 'len';
is $udp->{cksum} => 17023, 'cksum';

is $udp->{src_port} => 60177, 'src_port';
is $udp->{dest_port} => 3478, 'dest_port';

is unpack( "H*", udp_strip($udp->encode($ip)) ) => 
    '000100002112a442fd95e8838a0528456a8ef1e2', 'udp_strip()';


sub binarize {
    my $string = shift;

    $string =~ s/^\s*#.*?$//mg;   # remove comments

    return join '' => map { chr hex } split ' ', $string;
}