in reply to How to use Convert::ASN1 ?
Here is a simple (non-ASN.1) decoder based on your specification:
#!/usr/bin/perl -w use strict; my $message = pack 'H*', join '', qw( 9f a1 0b 00 9f a1 0b 00 9f be 00 02 00 15 9f be 01 81 0f 01 55 18 f3 0b 24 99 20 10 00 10 00 00 00 01 9f be 19 81 09 00 01 10 60 18 00 38 38 11 9f be 1b 08 02 01 10 ff ff ff ff ff a1 06 82 04 04 00 00 00 ); _unpack_message($message); sub _unpack_message { my $message = shift; print "Tag Length Data\n"; while ($message) { my $tag = unpack 'H6', substr $message, 0, 3, ''; my $length = unpack 'C', substr $message, 0, 1, ''; if ($length == 0x81) { $length = unpack 'C', substr $message, 0, 1, ''; } my $template = 'H' . $length * 2; my $data = unpack $template, substr $message, 0, $leng +th, ''; printf "%s %-6d %s\n", $tag, $length, $data; } } __END__ Prints: Tag Length Data 9fa10b 0 9fa10b 0 9fbe00 2 0015 9fbe01 15 015518f30b24992010001000000001 9fbe19 9 000110601800383811 9fbe1b 8 020110ffffffffff a10682 4 04000000
--
John.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: How to use Convert::ASN1 ?
by bh_perl (Monk) on Jun 25, 2010 at 04:46 UTC |