1 2=head1 HDR EXAMPLES 3 4This document will help you understand how to use the I<hdr> command which is a part of the B<Data::HexDump::Range> module. 5Some advanced examples use the module directly. 6 7The latest version is at L<http://search.cpan.org/search?query=Data%3A%3AHexDump%3A%3ARange>. 8 9This document contains many embeded examples in HTML format. It is mean to be processed by I<pod2html> or equivalent. 10 11=head2 When in the hexdump land, do as hexdump does 12 13Without range definition I<hdr> acts like I<hexdump>. 14 15 >$ hdr file_name 16 17=begin html 18 19<pre style ="font-family: monospace; background-color: #000 ;"> 20 21<span style='color:#fff;'>00000000</span> <span style='color:#0f0;'>63 6f 6d 6d 69 74 20 38 38 30 39 63 38 65 38 34 </span> <span style='color:#0f0;'>commit 8809c8e84</span> 22<span style='color:#fff;'>00000010</span> <span style='color:#0f0;'>65 62 33 32 33 62 62 61 61 33 36 36 39 65 39 34 </span> <span style='color:#0f0;'>eb323bbaa3669e94</span> 23<span style='color:#fff;'>00000020</span> <span style='color:#0f0;'>38 62 36 38 35 30 32 36 63 33 35 66 61 35 39 20 </span> <span style='color:#0f0;'>8b685026c35fa59 </span> 24<span style='color:#fff;'>00000030</span> <span style='color:#0f0;'>28 48 45 41 44 2c 20 6d 61 73 74 65 72 29 0a 41 </span> <span style='color:#0f0;'>(HEAD, master).A</span> 25<span style='color:#fff;'>00000040</span> <span style='color:#0f0;'>75 74 68 6f 72 3a 20 6e 61 64 69 6d 20 6b 68 65 </span> <span style='color:#0f0;'>uthor: nadim khe</span> 26<span style='color:#fff;'>00000050</span> <span style='color:#0f0;'>6d 69 72 20 3c 6e 6b 68 40 63 70 61 6e 2e 6f 72 </span> <span style='color:#0f0;'>mir <nkh@cpan.or</span> 27<span style='color:#fff;'>00000060</span> <span style='color:#0f0;'>67 3e 0a 44 61 74 65 3a 20 20 20 53 75 6e 20 41 </span> <span style='color:#0f0;'>g>.Date: Sun A</span> 28<span style='color:#fff;'>00000070</span> <span style='color:#0f0;'>70 72 20 31 38 20 30 33 3a 33 32 3a 30 33 20 32 </span> <span style='color:#0f0;'>pr 18 03:32:03 2</span> 29<span style='color:#fff;'>00000080</span> <span style='color:#0f0;'>30 31 30 20 2b 30 32 30 30 0a 0a 20 20 20 20 41 </span> <span style='color:#0f0;'>010 +0200.. A</span> 30</pre> 31 32=end html 33 34=head2 Output format 35 36The default output format is B<ANSI>. B<ASCII> is like B<ANSI> without the colors. 37 38=head3 ASCII 39 40 00000000 63 6f 6d 6d 69 74 20 38 38 30 39 63 38 65 38 34 commit 8809c8e84 41 00000010 65 62 33 32 33 62 62 61 61 33 36 36 39 65 39 34 eb323bbaa3669e94 42 00000020 38 62 36 38 35 30 32 36 63 33 35 66 61 35 39 20 8b685026c35fa59 43 00000030 28 48 45 41 44 2c 20 6d 61 73 74 65 72 29 0a 41 (HEAD, master).A 44 00000040 75 74 68 6f 72 3a 20 6e 61 64 69 6d 20 6b 68 65 uthor: nadim khe 45 00000050 6d 69 72 20 3c 6e 6b 68 40 63 70 61 6e 2e 6f 72 mir <nkh@cpan.or 46 00000060 67 3e 0a 44 61 74 65 3a 20 20 20 53 75 6e 20 41 g>.Date: Sun A 47 00000070 70 72 20 31 38 20 30 33 pr 18 03 48 49=head3 ANSI and HTML 50 51Both format will generate colorized output. 52 53=head2 Range descritption 54 55 format range example 56 57 normal range => integer header, 4, bright_blue 58 comment => # data section start, # 59 extra header => @ header, @, red 60 bitfield => [XInteger][xInteger]bInteger bitfield, X2x4b4 # X is byte offset, x is bit offset 61 skip range => XInteger boring, X256,, comment 62 63Note that the integer part can be a hexadecimal value starting with I<0x>. 64 65=head3 Direct command line defintion 66 67You can define your range description on the command line by passing a string to the I<--range_description> (short I<-r>) option. 68 69 hdr -r 'magic, 5, :other,37 :bf,b8 :skip,X32,, I skipped :more, 20' 70 71=head3 Definition from a file 72 73The I<--range_description> option also accept a file name for a range description written in Perl format. 74 75 hdr -r my_range_description_file 76 77=head4 simple file 78 79 [ 80 ['data header', 5, 'blue on_cyan'], 81 ['data', 20, 'blue on_bright_yellow'], 82 ] ; 83 84=head4 more structured file 85 86 use strict ; 87 use warnings ; 88 89 # any perl code you may need to generate your range definition 90 91 my $data_range = # definition to re-use 92 [ 93 ['data header', 5, 'blue on_cyan'], 94 ['data', 20, 'blue on_bright_yellow'], 95 ] ; 96 97 my $structured_range = 98 [ 99 ['zero size', 0], 100 [ 101 ['magic cookie', 12, 'red'], 102 ['padding', 32, 'yellow'], 103 $data_range, 104 ], 105 ['A comment', '#'], 106 [ 107 ['extra data', 18, undef], 108 [ 109 $data_range, 110 ['footer', 4, 'bright_yellow on_red'], 111 ] 112 ], 113 ] ; 114 115 $structured_range ; # return the range description 116 117See Also L<Advanced usage> 118 119=head2 Decimal dump 120 121You can get a decimal dump instead for an hexidecimal dump. 122 123 hdr -r 'header,20 :DATA,4 :c,b24 :e,x4b5 :uninterresting, x16 :more,20' -display_dec_dump 1 -display_hex_dump 0 -rul -col -o ver 124 125=begin html 126 127<pre style ="font-family: monospace; background-color: #000 ;"> 128<span style = 'color:#fff; '>RANGE_NAME OFFSET CUMULATI DEC_DUMP ASCII_DUMP </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 129</span><span style = 'color:#fff; '> 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 0123456789012345 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 130</span><span style = 'color:#fff; color:#0f0; '>header </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>068 097 116 097 058 058 072 101 120 068 117 109 112 058 058 082 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>Data::HexDump::R</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 131</span><span style = 'color:#fff; color:#0f0; '>header </span><span style = 'color:#fff; color:#0f0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000010</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000010</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>097 110 103 101 </span><span style = 'color:#fff; color:#0f0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>ange</span><span style = 'color:#fff; color:#0f0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 132</span><span style = 'color:#fff; color:#ff0; '></span><span style = 'color:#fff; color:#ff0; '>DATA </span><span style = 'color:#fff; color:#ff0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000014</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; color:#ff0; '>010 061 061 061 </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; color:#ff0; '>.===</span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 133</span><span style = 'color:#fff; color:#0ff; '>.c </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>00 .. 23</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>--- 061 061 061 value: 4013373 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>.bitfield: -=== </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 134</span><span style = 'color:#fff; color:#f0f; '>.e </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '>04 .. 08</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '>--- --- --- 019 value: 19 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '>.bitfield: ---. </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 135</span><span style = 'color:#fff; color:#f00; '>>>uninterresting</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000018</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000027</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f00; '>000 000 000 016 skipped: 16 bytes </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f00; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 136</span><span style = 'color:#fff; color:#ff0; '></span><span style = 'color:#fff; color:#ff0; '>more </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000028</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; color:#ff0; '>061 010 010 039 072 101 120 097 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; color:#ff0; '>=..'Hexa</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 137</span><span style = 'color:#fff; color:#ff0; '>more </span><span style = 'color:#fff; color:#ff0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000030</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000008</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>100 101 099 105 097 108 032 082 097 110 103 101 </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>decial Range</span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 138</span> 139</pre> 140 141=end html 142 143You can also have both dumps simulteanously. Check the display option of the I<hdr> command. 144 145=head2 Colors and Headers 146 147=head3 Showing the column header and the rulers 148 149 $>hdr -col -rul your_file 150 151You can also insert a header anywhere, except as a first range since -col and -rul are made for that, by adding a header range in your 152range definition. 153 154 $> hdr -r 'zzz,50: show_header,@,red: data,20' -o ver -col -rul some_file 155 RANGE_NAME OFFSET CUMULATI HEX_DUMP ASCII_DUMP 156 0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789012345 157 zzz 00000000 00000000 44 61 74 61 3a 3a 48 65 78 44 75 6d 70 3a 3a 52 Data::HexDump::R 158 zzz 00000010 00000010 61 6e 67 65 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ange.=========== 159 zzz 00000020 00000020 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 27 48 65 78 61 =========..'Hexa 160 zzz 00000030 00000030 64 65 de 161 RANGE_NAME OFFSET CUMULATI HEX_DUMP ASCII_DUMP 162 0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789012345 163 data 00000032 00000000 63 69 61 6c 20 52 61 6e 67 65 20 44 75 6d cial Range Dum 164 data 00000040 0000000e 70 65 72 27 20 20 per' 165 166=head3 Defining your own colors 167 168Define a custom color file containing a data in the format below andd pass it as argument to option I<--colors> 169 170 { 171 HTML => 172 { 173 # custom color name 174 custom => 'color:#f00; background-color:#ff0; ', 175 176 # the normal ansi color 177 reset => '', 178 white => 'color:#aaa; ', 179 black => 'color:#000; ', 180 green => 'color:#0a0; ', 181 ... 182 }, 183 ANSI => 184 { 185 # custom color name, it's a good idea to define them on both formats 186 custom => 'bright_red on_bright_yellow; ', 187 188 reset => '', 189 white => 'white', 190 ... 191 }, 192 } 193 194=head3 Colorize only the range you give color to 195 196By default I<hdr> will assign colors to ranges you don't give a color to. 197 198 hdr -r 'A,10:B,10,red:C,10:D,10,green' -col -rul 199 200=begin html 201 202<pre style ="font-family: monospace; background-color: #000 ;"> 203<span style = 'color:#fff; color:#fff; '>OFFSET HEX_DUMP ASCII_DUMP RANGE_ </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 204</span><span style = 'color:#fff; color:#fff; '> 0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789012345 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 205</span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>63 6f 6d 6d 69 74 20 31 39 39 </span><span style = 'color:#fff; color:#a00; '>61 34 62 31 32 37 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>commit 199</span><span style = 'color:#fff; color:#a00; '>a4b127</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>A</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; color:#a00; '>B</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 206</span><span style = 'color:#fff; '>00000010</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#a00; '>62 32 39 66 </span><span style = 'color:#fff; color:#ff0; '>39 31 64 32 65 36 33 66 39 35 </span><span style = 'color:#fff; color:#0a0; '>66 38 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#a00; '>b29f</span><span style = 'color:#fff; color:#ff0; '>91d2e63f95</span><span style = 'color:#fff; color:#0a0; '>f8</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#a00; '>B</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; color:#ff0; '>C</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; color:#0a0; '>D</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 207</span><span style = 'color:#fff; '>00000020</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0a0; '>63 34 30 62 64 65 31 39 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0a0; '>c40bde19 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0a0; '>D</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 208</span> 209</pre> 210 211=end html 212 213If you only want the ranges you gave a color to to be colorized,use the I<--color bw> option 214 215 hdr -r 'A,10:B,10,red:C,10:D,10,green' -col -rul -color bw 216 217=begin html 218 219<pre style ="font-family: monospace; background-color: #000 ;"> 220<span style = 'color:#fff; color:#fff; '>OFFSET HEX_DUMP ASCII_DUMP RANGE_ </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 221</span><span style = 'color:#fff; color:#fff; '> 0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789012345 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 222</span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#fff; '>63 6f 6d 6d 69 74 20 31 39 39 </span><span style = 'color:#fff; color:#a00; '>61 34 62 31 32 37 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#fff; '>commit 199</span><span style = 'color:#fff; color:#a00; '>a4b127</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#fff; '>A</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; color:#a00; '>B</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 223</span><span style = 'color:#fff; '>00000010</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#a00; '>62 32 39 66 </span><span style = 'color:#fff; color:#fff; '>39 31 64 32 65 36 33 66 39 35 </span><span style = 'color:#fff; color:#0a0; '>66 38 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#a00; '>b29f</span><span style = 'color:#fff; color:#fff; '>91d2e63f95</span><span style = 'color:#fff; color:#0a0; '>f8</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#a00; '>B</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; color:#fff; '>C</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; color:#0a0; '>D</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 224</span><span style = 'color:#fff; '>00000020</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0a0; '>63 34 30 62 64 65 31 39 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0a0; '>c40bde19 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0a0; '>D</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 225</span> 226</pre> 227 228=end html 229 230=head2 Input 231 232=head3 from file or stdin 233 234 hdr -r 'magic cooookie, 5, ...' -rul -o ver -col my_file 235 236or pipe your data into I<hdr> 237 238 cat my_file | hdr -r 'magic, 5, ...' -rul -o ver -col 239 240=head3 Too little data 241 242I<hdr> will display one or more warnings is there is not enough data for all the defined ranges. 243 244 Warning: range 'xxx' size 32 was shortened to 8 due to maximum size limit 245 Warning: More ranges to display but no more data. 246 247=head3 Too much data 248 249I<hdr> only uses the part that is used by your range descriptions. The rest is ignored. 250 251If you want to use an existing range description that contains many range definitions, you can use the I<--maximum_size> option 252to limit the amount of data I<hdr> will use. 253 254 $>hdr -r 'A,50:B,50:C,50:D,50' --maximum_size 100 255 256will display a warning: 257 258 Warning: More ranges to display but no more data. 259 260and this dump: 261 262=begin html 263 264<pre style ="font-family: monospace; background-color: #000 ;"> 265<span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>44 61 74 61 3a 3a 48 65 78 44 75 6d 70 3a 3a 52 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>Data::HexDump::R</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>A</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 266</span><span style = 'color:#fff; '>00000010</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>61 6e 67 65 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>ange.===========</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>A</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 267</span><span style = 'color:#fff; '>00000020</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 27 48 65 78 61 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>=========..'Hexa</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>A</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 268</span><span style = 'color:#fff; '>00000030</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>64 65 </span><span style = 'color:#fff; color:#ff0; '>63 69 61 6c 20 52 61 6e 67 65 20 44 75 6d </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>de</span><span style = 'color:#fff; color:#ff0; '>cial Range Dum</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>A</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; color:#ff0; '>B</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 269</span><span style = 'color:#fff; '>00000040</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>70 65 72 27 20 20 77 69 74 68 20 63 6f 6c 6f 72 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>per' with color</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>B</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 270</span><span style = 'color:#fff; '>00000050</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>2c 20 62 69 74 66 69 65 6c 64 73 20 61 6e 64 20 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>, bitfields and </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>B</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 271</span><span style = 'color:#fff; '>00000060</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>73 6b 69 70 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>skip </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>B</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 272</span> 273</pre> 274 275=end html 276 277=head2 Bitfields 278 279 $> hdr -r 'header,1 :DATA,4 :c,b9 :d,b3 :e,x4b5 :the end,8 :x,b3 :data,47 :v,x90b8' -o ver 280 281=head3 Vertical mode 282 283=begin html 284 285<pre style ="font-family: monospace; background-color: #000 ;"> 286<span style = 'color:#fff; color:#0f0; '>header </span><span style = 'color:#fff; color:#0f0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>44 </span><span style = 'color:#fff; color:#0f0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>D</span><span style = 'color:#fff; color:#0f0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 287</span><span style = 'color:#fff; color:#ff0; '></span><span style = 'color:#fff; color:#ff0; '>DATA </span><span style = 'color:#fff; color:#ff0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000001</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; color:#ff0; '>61 74 61 3a </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; color:#ff0; '>ata:</span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 288</span><span style = 'color:#fff; color:#0ff; '>.c </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>00 .. 08</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>-- -- 01 3a -----------------------100111010 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>.bitfield: --.: </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 289</span><span style = 'color:#fff; color:#f0f; '>.d </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '>00 .. 02</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '>-- -- -- 02 -----------------------------010 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '>.bitfield: ---. </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 290</span><span style = 'color:#fff; color:#f00; '></span><span style = 'color:#fff; color:#f00; '>the end </span><span style = 'color:#fff; color:#f00; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000005</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f00; '> </span><span style = 'color:#fff; color:#f00; '>3a 48 65 78 44 75 6d 70 </span><span style = 'color:#fff; color:#f00; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f00; '> </span><span style = 'color:#fff; color:#f00; '>:HexDump</span><span style = 'color:#fff; color:#f00; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 291</span><span style = 'color:#fff; color:#ff0; '>.x </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>00 .. 02</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>-- -- -- 00 -----------------------------000 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>.bitfield: ---. </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 292</span><span style = 'color:#fff; color:#0ff; '></span><span style = 'color:#fff; color:#0ff; '>data </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>0000000d</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '> </span><span style = 'color:#fff; color:#0ff; '>3a 3a 52 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '> </span><span style = 'color:#fff; color:#0ff; '>::R</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 293</span><span style = 'color:#fff; color:#0ff; '>data </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000010</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000003</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>61 6e 67 65 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>ange.===========</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 294</span><span style = 'color:#fff; color:#0ff; '>data </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000020</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000013</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 27 48 65 78 61 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>=========..'Hexa</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 295</span><span style = 'color:#fff; color:#0ff; '>data </span><span style = 'color:#fff; color:#0ff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000030</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000023</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>64 65 63 69 61 6c 20 52 61 6e 67 65 </span><span style = 'color:#fff; color:#0ff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>decial Range</span><span style = 'color:#fff; color:#0ff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 296</span><span style = 'color:#fff; color:#0f0; '>.v </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>90 .. 97</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>-- -- -- 59 01011001------------------------ </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>.bitfield: ---Y </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 297</span> 298</pre> 299 300=end html 301 302=head3 Horizontal mode 303 304By default, bitmaps are not displayed in horizontal mode as they tend to clutter the display. You can force the display of bitfields in vertical 305mode by seting the I<--display_bitfields> option to true. 306 307without I<--display_bitfields> option set: 308 309=begin html 310 311<pre style ="font-family: monospace; background-color: #000 ;"> 312<span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '></span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>44 </span><span style = 'color:#fff; color:#ff0; '>61 74 61 3a </span><span style = 'color:#fff; color:#f00; '>3a 48 65 78 44 75 6d 70 </span><span style = 'color:#fff; color:#0ff; '>3a 3a 52 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>D</span><span style = 'color:#fff; color:#ff0; '>ata:</span><span style = 'color:#fff; color:#f00; '>:HexDump</span><span style = 'color:#fff; color:#0ff; '>::R</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>header</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; color:#ff0; '>DATA</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; color:#f00; '>the end</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; color:#0ff; '>data</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 313</span><span style = 'color:#fff; '>00000010</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>61 6e 67 65 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>ange.===========</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>data</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 314</span><span style = 'color:#fff; '>00000020</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 27 48 65 78 61 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>=========..'Hexa</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>data</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 315</span><span style = 'color:#fff; '>00000030</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>64 65 63 69 61 6c 20 52 61 6e 67 65 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>decial Range </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>data</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 316</span> 317</pre> 318 319=end html 320 321with I<--display_bitfields> option set to true: 322 323=begin html 324 325<pre style ="font-family: monospace; background-color: #000 ;"> 326<span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '></span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '></span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>44 </span><span style = 'color:#fff; color:#ff0; '>61 74 61 3a </span><span style = 'color:#fff; color:#f00; '>3a 48 65 78 44 75 6d 70 </span><span style = 'color:#fff; color:#0ff; '>3a 3a 52 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>D</span><span style = 'color:#fff; color:#ff0; '>ata:</span><span style = 'color:#fff; color:#f00; '>:HexDump</span><span style = 'color:#fff; color:#0ff; '>::R</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>header</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; color:#ff0; '>DATA</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; color:#f00; '>the end</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; color:#0ff; '>data</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 327</span><span style = 'color:#fff; color:#0ff; '>00 .. 08</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>DATA </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>-- -- 01 3a -----------------------100111010 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>.bitfield: --.: </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>.c </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 328</span><span style = 'color:#fff; color:#f0f; '>00 .. 02</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>DATA </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '>-- -- -- 02 -----------------------------010 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '>.bitfield: ---. </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '>.d </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 329</span><span style = 'color:#fff; color:#ff0; '>00 .. 02</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f00; '>the end </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>-- -- -- 00 -----------------------------000 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>.bitfield: ---. </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>.x </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 330</span><span style = 'color:#fff; '>00000010</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>61 6e 67 65 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>ange.===========</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>data</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 331</span><span style = 'color:#fff; '>00000020</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 27 48 65 78 61 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>=========..'Hexa</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>data</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 332</span><span style = 'color:#fff; '>00000030</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>64 65 63 69 61 6c 20 52 61 6e 67 65 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>decial Range </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>data</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 333</span><span style = 'color:#fff; color:#0f0; '>90 .. 97</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>data </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>-- -- -- 59 01011001------------------------ </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>.bitfield: ---Y </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>.v </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 334</span> 335</pre> 336 337=end html 338 339=head3 Not enough data for the bitfield 340 341If you define an offset and a bit amout that sets the bitfields outside the data range, or you define a bitfield with more than 32 bits, The bitfields will be displayed as an error message. 342 343 hdr -r 'x,b3 :A, 1 : y,X3x2b16 :z, b33' 344 345=begin html 346 347<pre style ="font-family: monospace; background-color: #000 ;"> 348<span style = 'color:#fff; color:#0f0; '>data </span><span style = 'color:#fff; color:#0f0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>44 </span><span style = 'color:#fff; color:#0f0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>D</span><span style = 'color:#fff; color:#0f0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 349</span><span style = 'color:#fff; color:#ff0; '></span><span style = 'color:#fff; color:#ff0; '>DATA </span><span style = 'color:#fff; color:#ff0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000001</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; color:#ff0; '>61 74 61 3a </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; color:#ff0; '>ata:</span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 350</span><span style = 'color:#fff; color:#0ff; '>.c </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>00 .. 49</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>Error: bitfield is more than 32 bits long (50) </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>Error: bitfield </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 351</span><span style = 'color:#fff; color:#f0f; '>.d </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '>30 .. 32</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '>Error: 33 bits needed but only 32 bits available</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '>Error: 33 bits n</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 352</span><span style = 'color:#fff; color:#f00; '>.e </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f00; '>04 .. 08</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f00; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f00; '>-- -- -- 13 -----------------------10011---- </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f00; '>.bitfield: ---. </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 353</span><span style = 'color:#fff; color:#ff0; '></span><span style = 'color:#fff; color:#ff0; '>the end </span><span style = 'color:#fff; color:#ff0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000005</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; color:#ff0; '>3a 48 65 78 44 75 6d 70 </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; color:#ff0; '>:HexDump</span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 354</span> 355</pre> 356 357=end html 358 359=head3 Bitfield offset 360 361The format for a bitfield is I<[XInteger][xInteger]>B<b>I<[Integer]>. You can use I<X> for byte offset and I<x> for bit offset. If no size is given after I<b>, the bitfield consists of a single bit 362 363Examples: 364 365=over 2 366 367=item * X1x1b - second bit of the second byte 368 369=item * X3x8b4 - 4 first bits of the fifth byte 370 371=item * X4b8 - fifth byte 372 373=item * X1x0b8 - second byte 374 375=back 376 377 hdr -r 'data,4 :X1b1,X1b1 :X3x8b4,X3x8b4 :X4b8,X4b8 :X1x0b8,X1x0b8 :end data, 8' -o ver 378 379Remember that bit zero is on the right side by default. Also notice that since we have no fifth byte an error is displayed. 380 381=begin html 382 383<pre style ="font-family: monospace; background-color: #000 ;"> 384<span style = 'color:#fff; color:#0f0; '>data </span><span style = 'color:#fff; color:#0f0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>44 61 74 61 </span><span style = 'color:#fff; color:#0f0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>Data</span><span style = 'color:#fff; color:#0f0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 385</span><span style = 'color:#fff; color:#ff0; '>.X1b1 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>08 .. 08</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>-- -- -- 00 -----------------------0-------- </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>.bitfield: ---. </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 386</span><span style = 'color:#fff; color:#0ff; '>.X3x8b4 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>32 .. 35</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>Error: 36 bits needed but only 32 bits available</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>Error: 36 bits n</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 387</span><span style = 'color:#fff; color:#f0f; '>.X4b8 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '>32 .. 39</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '>Error: 40 bits needed but only 32 bits available</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '>Error: 40 bits n</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 388</span><span style = 'color:#fff; color:#f00; '>.X1x0b8 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f00; '>08 .. 15</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f00; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f00; '>-- -- -- 74 ----------------01110100-------- </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f00; '>.bitfield: ---t </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 389</span><span style = 'color:#fff; color:#ff0; '></span><span style = 'color:#fff; color:#ff0; '>end data </span><span style = 'color:#fff; color:#ff0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000004</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; color:#ff0; '>3a 3a 48 65 78 44 75 6d </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; color:#ff0; '>::HexDum</span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 390</span> 391</pre> 392 393=end html 394 395With B<BIT_ZERO_ON_LEFT> set 396 397=begin html 398 399<pre style ="font-family: monospace; background-color: #000 ;"> 400<span style = 'color:#fff; color:#0f0; '>data </span><span style = 'color:#fff; color:#0f0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>44 61 74 61 </span><span style = 'color:#fff; color:#0f0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>Data</span><span style = 'color:#fff; color:#0f0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 401</span><span style = 'color:#fff; color:#ff0; '>.X1b1 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>08 .. 08</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>-- -- -- 00 --------0----------------------- </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>.bitfield: ---. </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 402</span><span style = 'color:#fff; color:#0ff; '>.X3x8b4 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>32 .. 35</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>Error: 36 bits needed but only 32 bits available</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>Error: 36 bits n</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 403</span><span style = 'color:#fff; color:#f0f; '>.X4b8 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '>32 .. 39</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '>Error: 40 bits needed but only 32 bits available</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '>Error: 40 bits n</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 404</span><span style = 'color:#fff; color:#f00; '>.X1x0b8 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f00; '>08 .. 15</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f00; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f00; '>-- -- -- 61 --------01100001---------------- </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f00; '>.bitfield: ---a </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 405</span><span style = 'color:#fff; color:#ff0; '></span><span style = 'color:#fff; color:#ff0; '>end data </span><span style = 'color:#fff; color:#ff0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000004</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; color:#ff0; '>3a 3a 48 65 78 44 75 6d </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; color:#ff0; '>::HexDum</span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 406</span> 407</pre> 408 409=end html 410 411=head2 Skip Ranges 412 413Say you have data with data that you are not interrested in seeing in the hexdump. 414 415 $>hdr -r 'magic, 5 :other,37 :uninterresting,45 :more, 20' 416 417=begin html 418 419<pre style ="font-family: monospace; background-color: #000 ;"> 420<span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>44 61 74 61 3a </span><span style = 'color:#fff; color:#ff0; '>3a 48 65 78 44 75 6d 70 3a 3a 52 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>Data:</span><span style = 'color:#fff; color:#ff0; '>:HexDump::R</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>magic</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; color:#ff0; '>other</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 421</span><span style = 'color:#fff; '>00000010</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>61 6e 67 65 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>ange.===========</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>other</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 422</span><span style = 'color:#fff; '>00000020</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>3d 3d 3d 3d 3d 3d 3d 3d 3d 0a </span><span style = 'color:#fff; color:#0ff; '>0a 27 48 65 78 61 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>=========.</span><span style = 'color:#fff; color:#0ff; '>.'Hexa</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>other</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; color:#0ff; '>uninterresting</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 423</span><span style = 'color:#fff; '>00000030</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>64 65 63 69 61 6c 20 52 61 6e 67 65 20 44 75 6d </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>decial Range Dum</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>uninterresting</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 424</span><span style = 'color:#fff; '>00000040</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>70 65 72 27 20 20 77 69 74 68 20 63 6f 6c 6f 72 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>per' with color</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>uninterresting</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 425</span><span style = 'color:#fff; '>00000050</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>2c 20 62 69 74 66 69 </span><span style = 'color:#fff; color:#f0f; '>65 6c 64 73 20 61 6e 64 20 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>, bitfi</span><span style = 'color:#fff; color:#f0f; '>elds and </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>uninterresting</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; color:#f0f; '>more</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 426</span><span style = 'color:#fff; '>00000060</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '>73 6b 69 70 20 72 61 6e 67 65 73 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '>skip ranges </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '>more</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 427</span> 428</pre> 429 430=end html 431 432Change the I<uninterresting> range definition to skip the data. 433 434 $>hdr -r 'magic, 5 :other,37 :uninterresting,X45 :more, 20' 435 436=begin html 437 438<pre style ="font-family: monospace; background-color: #000 ;"> 439<span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>44 61 74 61 3a </span><span style = 'color:#fff; color:#ff0; '>3a 48 65 78 44 75 6d 70 3a 3a 52 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>Data:</span><span style = 'color:#fff; color:#ff0; '>:HexDump::R</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>magic</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; color:#ff0; '>other</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 440</span><span style = 'color:#fff; '>00000010</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>61 6e 67 65 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>ange.===========</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>other</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 441</span><span style = 'color:#fff; '>00000020</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>3d 3d 3d 3d 3d 3d 3d 3d 3d 0a </span><span style = 'color:#fff; color:#0ff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>=========.</span><span style = 'color:#fff; color:#0ff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>other</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; color:#0ff; '>>>uninterresting</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 442</span><span style = 'color:#fff; '>00000050</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '> </span><span style = 'color:#fff; color:#f0f; '>65 6c 64 73 20 61 6e 64 20 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '> </span><span style = 'color:#fff; color:#f0f; '>elds and </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>>>uninterresting</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; color:#f0f; '>more</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 443</span><span style = 'color:#fff; '>00000060</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '>73 6b 69 70 20 72 61 6e 67 65 73 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '>skip ranges </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '>more</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 444</span> 445</pre> 446 447=end html 448 449In vertical mode 450 451=begin html 452 453<pre style ="font-family: monospace; background-color: #000 ;"> 454<span style = 'color:#fff; color:#0f0; '>magic </span><span style = 'color:#fff; color:#0f0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>44 61 74 61 3a </span><span style = 'color:#fff; color:#0f0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>Data:</span><span style = 'color:#fff; color:#0f0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 455</span><span style = 'color:#fff; color:#ff0; '></span><span style = 'color:#fff; color:#ff0; '>other </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000005</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; color:#ff0; '>3a 48 65 78 44 75 6d 70 3a 3a 52 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; color:#ff0; '>:HexDump::R</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 456</span><span style = 'color:#fff; color:#ff0; '>other </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000010</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>0000000b</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>61 6e 67 65 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>ange.===========</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 457</span><span style = 'color:#fff; color:#ff0; '>other </span><span style = 'color:#fff; color:#ff0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000020</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>0000001b</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>3d 3d 3d 3d 3d 3d 3d 3d 3d 0a </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>=========.</span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 458</span><span style = 'color:#fff; color:#0ff; '>>>uninterresting</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>0000002a</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000056</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>00 00 00 2d bytes skipped </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 459</span><span style = 'color:#fff; color:#f0f; '></span><span style = 'color:#fff; color:#f0f; '>more </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000057</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '> </span><span style = 'color:#fff; color:#f0f; '>65 6c 64 73 20 61 6e 64 20 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '> </span><span style = 'color:#fff; color:#f0f; '>elds and </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 460</span><span style = 'color:#fff; color:#f0f; '>more </span><span style = 'color:#fff; color:#f0f; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000060</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000009</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '>73 6b 69 70 20 72 61 6e 67 65 73 </span><span style = 'color:#fff; color:#f0f; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '>skip ranges</span><span style = 'color:#fff; color:#f0f; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 461</span> 462</pre> 463 464=end html 465 466=head2 Comment 467 468You can use comments to introduce the ranges that are going to be displayed next and thus make it easier to understand 469 470 [ 471 ['data header', 5, 'blue on_cyan'], 472 ['Next is a very interresting data section', #, 'bright_white on_red'], 473 ['data', 20, 'blue on_bright_yellow'], 474 ] ; 475 476 477 $>hdr -o vertical -r 'magic, 5 :first interresting data section,#, black on_bright_cyan :other,37 :something,45 :second interresting data section,#,black on_bright_cyan :other,37 :something,45 :We are done, #, black on_bright_cyan :more, 20' 478 479 480=begin html 481 482<pre style ="font-family: monospace; background-color: #000 ;"> 483<span style = 'color:#fff; color:#0f0; '>magic </span><span style = 'color:#fff; color:#0f0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>44 61 74 61 3a </span><span style = 'color:#fff; color:#0f0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>Data:</span><span style = 'color:#fff; color:#0f0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 484</span><span style = 'color:#fff; color:#000; background-color:#0ff; '>"first interresting data section"</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 485</span><span style = 'color:#fff; color:#ff0; '></span><span style = 'color:#fff; color:#ff0; '>other </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000005</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; color:#ff0; '>3a 48 65 78 44 75 6d 70 3a 3a 52 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; color:#ff0; '>:HexDump::R</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 486</span><span style = 'color:#fff; color:#ff0; '>other </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000010</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>0000000b</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>61 6e 67 65 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>ange.===========</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 487</span><span style = 'color:#fff; color:#ff0; '>other </span><span style = 'color:#fff; color:#ff0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000020</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>0000001b</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>3d 3d 3d 3d 3d 3d 3d 3d 3d 0a </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>=========.</span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 488</span><span style = 'color:#fff; color:#0ff; '></span><span style = 'color:#fff; color:#0ff; '>something </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>0000002a</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '> </span><span style = 'color:#fff; color:#0ff; '>0a 27 48 65 78 61 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '> </span><span style = 'color:#fff; color:#0ff; '>.'Hexa</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 489</span><span style = 'color:#fff; color:#0ff; '>something </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000030</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000006</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>64 65 63 69 61 6c 20 52 61 6e 67 65 20 44 75 6d </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>decial Range Dum</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 490</span><span style = 'color:#fff; color:#0ff; '>something </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000040</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000016</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>70 65 72 27 20 20 77 69 74 68 20 63 6f 6c 6f 72 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>per' with color</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 491</span><span style = 'color:#fff; color:#0ff; '>something </span><span style = 'color:#fff; color:#0ff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000050</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000026</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>2c 20 62 69 74 66 69 </span><span style = 'color:#fff; color:#0ff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>, bitfi</span><span style = 'color:#fff; color:#0ff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 492</span><span style = 'color:#fff; color:#000; background-color:#0ff; '>"second interresting data section"</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 493</span><span style = 'color:#fff; color:#f0f; '></span><span style = 'color:#fff; color:#f0f; '>other </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000057</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '> </span><span style = 'color:#fff; color:#f0f; '>65 6c 64 73 20 61 6e 64 20 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '> </span><span style = 'color:#fff; color:#f0f; '>elds and </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 494</span><span style = 'color:#fff; color:#f0f; '>other </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000060</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000009</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '>73 6b 69 70 20 72 61 6e 67 65 73 0a 0a 0a 49 4e </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '>skip ranges...IN</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 495</span><span style = 'color:#fff; color:#f0f; '>other </span><span style = 'color:#fff; color:#f0f; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000070</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000019</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '>53 54 41 4c 4c 41 54 49 4f 4e 0a 2d </span><span style = 'color:#fff; color:#f0f; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '>STALLATION.-</span><span style = 'color:#fff; color:#f0f; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 496</span><span style = 'color:#fff; color:#f00; '></span><span style = 'color:#fff; color:#f00; '>something </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>0000007c</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f00; '> </span><span style = 'color:#fff; color:#f00; '>2d 2d 2d 2d </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f00; '> </span><span style = 'color:#fff; color:#f00; '>----</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 497</span><span style = 'color:#fff; color:#f00; '>something </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000080</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000004</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f00; '>2d 2d 2d 2d 2d 2d 2d 0a 0a 54 6f 20 69 6e 73 74 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f00; '>-------..To inst</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 498</span><span style = 'color:#fff; color:#f00; '>something </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000090</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000014</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f00; '>61 6c 6c 20 74 68 69 73 20 6d 6f 64 75 6c 65 20 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f00; '>all this module </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 499</span><span style = 'color:#fff; color:#f00; '>something </span><span style = 'color:#fff; color:#f00; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>000000a0</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000024</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f00; '>74 79 70 65 20 74 68 65 20 </span><span style = 'color:#fff; color:#f00; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f00; '>type the </span><span style = 'color:#fff; color:#f00; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 500</span><span style = 'color:#fff; color:#000; background-color:#0ff; '>"We are done"</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 501</span><span style = 'color:#fff; color:#ff0; '></span><span style = 'color:#fff; color:#ff0; '>more </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>000000a9</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; color:#ff0; '>66 6f 6c 6c 6f 77 69 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; color:#ff0; '>followi</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 502</span><span style = 'color:#fff; color:#ff0; '>more </span><span style = 'color:#fff; color:#ff0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>000000b0</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000007</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>6e 67 3a 0a 0a 20 20 20 70 65 72 6c 20 </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>ng:.. perl </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 503</span> 504</pre> 505 506=end html 507 508=head2 Advanced Usage 509 510First, read the module documentation. 511 512=head3 dynamic range generation 513 514The parser below will alternatively return a 'from 0' or 'from 1' range description depending on the first byte of the data to display 515 516 sub my_parser 517 { 518 my ($dumper, $data, $offset) = @_ ; 519 520 my $first_byte = unpack ("x$offset C", $data) ; 521 522 $offset < length($data) 523 ? $first_byte == ord(0) 524 ? ['from "0"', 5, 'bright_yellow'] 525 : ['from "1"', 3, 'bright_green'] 526 : undef ; 527 } 528 my $data = '01' x 20 ; 529 print $hdr->dump(\&my_parser, $data) ; 530 531=begin html 532 533<pre style ="font-family: monospace; background-color: #000 ;"> 534<span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '></span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>30 31 30 31 30 </span><span style = 'color:#fff; color:#0f0; '>31 30 31 </span><span style = 'color:#fff; color:#ff0; '>30 31 30 31 30 </span><span style = 'color:#fff; color:#0f0; '>31 30 31 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>01010</span><span style = 'color:#fff; color:#0f0; '>101</span><span style = 'color:#fff; color:#ff0; '>01010</span><span style = 'color:#fff; color:#0f0; '>101</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>5:from "0"</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; color:#0f0; '>3:from "1"</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; color:#ff0; '>5:from "0"</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; color:#0f0; '>3:from "1"</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 535</span><span style = 'color:#fff; '>00000010</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '></span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>30 31 30 31 30 </span><span style = 'color:#fff; color:#0f0; '>31 30 31 </span><span style = 'color:#fff; color:#ff0; '>30 31 30 31 30 </span><span style = 'color:#fff; color:#0f0; '>31 30 31 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>01010</span><span style = 'color:#fff; color:#0f0; '>101</span><span style = 'color:#fff; color:#ff0; '>01010</span><span style = 'color:#fff; color:#0f0; '>101</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>5:from "0"</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; color:#0f0; '>3:from "1"</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; color:#ff0; '>5:from "0"</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; color:#0f0; '>3:from "1"</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 536</span><span style = 'color:#fff; '>00000020</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>30 31 30 31 30 </span><span style = 'color:#fff; color:#0f0; '>31 30 31 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>01010</span><span style = 'color:#fff; color:#0f0; '>101 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>5:from "0"</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; color:#0f0; '>3:from "1"</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 537</span> 538</pre> 539 540=end html 541 542=head3 IPV4 header 543 544Below is the range description for an IPV4 header: 545 546 use strict ; 547 use warnings ; 548 549 my $IPV4_header = 550 [ 551 ['IPV4_header', '#', 'bright_white on_red'], 552 [ 553 ['Version, Header length, Differentiated Services, Total Length', '#', 'blue on_cyan'], 554 ['First 32 bits', 4], 555 ['Version', 'b4'], 556 ['Header length', 'x4b4'], 557 ['Differentiated Services', 'x8b8'], 558 # Differentiated Services (DS) 559 # # bit 3: 0 = Normal Delay, 1 = Low Delay 560 # # bit 4: 0 = Normal Throughput, 1 = High Throughput 561 # # bit 5: 0 = Normal Reliability, 1 = High Reliability 562 # # bit 6: 0 = Normal Cost, 1 = Minimize Monetary Cost 563 # (defined by RFC 1349) 564 # # bit 7: never defined 565 ['Total length', 'x16b16'], 566 ], 567 568 [ 569 ['Identification, Flags, Fragment Offset', '#', 'blue on_cyan'], 570 ['Second 32 bits', 4], 571 ['Identification', 'b16'], 572 573 ['reserved', 'x16b1'], 574 ["Don't Fragment", 'x17b1'], 575 ['More Fragments', 'x18b1'], 576 # bit 0: Reserved; must be zero. As an April Fools joke, proposed for use in RFC 3514 as the "Evil bit". 577 # bit 1: Don't Fragment (DF) 578 # bit 2: More Fragments (MF) 579 580 ['Fragment Offset', 'x19b13'], 581 ], 582 583 [ 584 ['Time to Live, Protocol, Header Checksum', '#', 'blue on_cyan'], 585 ['Third 32 bits', 4], 586 ['Time to Live', 'b8'], 587 ['Protocol', 'x8b8'], 588 ['Header Checksum', 'x16b16'], 589 [], 590 ], 591 592 ['Addresses and options', '#', 'blue on_cyan'], 593 ['Source Address', 4], 594 ['Destination Address', 4], 595 [ 596 sub 597 { 598 my ($self, $data, $offset, $size, $range) = @_ ; 599 600 my ($header_length_chunk) = grep {$_->{NAME} eq 'Header length'} @{$self->{GATHERED}} ; 601 my $header_length = ord(substr($header_length_chunk->{DATA}, 0, 1)) & 0x0f ; 602 603 if($header_length > 5) 604 { 605 return ['Options', 4, undef ,'header length > 5, extracting options'] ; 606 } 607 else 608 { 609 # Note that we could choose to return a comment range instead 610 #~ return ['header length < 5, no options', '#', undef, undef] ; 611 612 return undef, 'Skipping option field header length < 5'; 613 } 614 } 615 ], 616 ['Data', '#', 'blue on_cyan'], 617 ['Data', 128] # display some of the data 618 ] ; 619 620Note that the B<Options> field is an optional field that is present when the B<Header length> is greater than 5. For the B<Options> field, we 621define subroutine which verifies the value of the B<Header length> and selectively returns a range description or nothing. 622 623In vertical mode 624 625 $> hdr -r t/parse_ipv4.pl -display_ascii_dump 0 -bit_zero_on_left -o ver 626 627=begin html 628 629<pre style ="font-family: monospace; background-color: #000 ;"> 630<span style = 'color:#fff; color:#fff; background-color:#a00; '>"IPV4_header"</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 631</span><span style = 'color:#fff; color:#00a; background-color:#0aa; '>"Version, Header length, Differentiated Services, Total Length"</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 632</span><span style = 'color:#fff; color:#0f0; '>First 32 bits </span><span style = 'color:#fff; color:#0f0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>44 61 74 61 </span><span style = 'color:#fff; color:#0f0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 633</span><span style = 'color:#fff; color:#ff0; '>.Version </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>00 .. 03</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>-- -- -- 04 0100---------------------------- </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 634</span><span style = 'color:#fff; color:#0ff; '>.Header length </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>04 .. 07</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>-- -- -- 04 ----0100------------------------ </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 635</span><span style = 'color:#fff; color:#f0f; '>.Differentiated </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '>08 .. 15</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '>-- -- -- 61 --------01100001---------------- </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 636</span><span style = 'color:#fff; color:#f00; '>.Total length </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f00; '>16 .. 31</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f00; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f00; '>-- -- 74 61 ----------------0111010001100001 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 637</span><span style = 'color:#fff; color:#00a; background-color:#0aa; '>"Identification, Flags, Fragment Offset"</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 638</span><span style = 'color:#fff; color:#ff0; '></span><span style = 'color:#fff; color:#ff0; '>Second 32 bits </span><span style = 'color:#fff; color:#ff0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000004</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; color:#ff0; '>3a 3a 48 65 </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 639</span><span style = 'color:#fff; color:#0ff; '>.Identification </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>00 .. 15</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>-- -- 3a 3a 0011101000111010---------------- </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 640</span><span style = 'color:#fff; color:#0f0; '>.reserved </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>16 .. 16</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>-- -- -- 00 ----------------0--------------- </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 641</span><span style = 'color:#fff; color:#0ff; '>.Don't Fragment </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>17 .. 17</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>-- -- -- 01 -----------------1-------------- </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 642</span><span style = 'color:#fff; color:#f00; '>.More Fragments </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f00; '>18 .. 18</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f00; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f00; '>-- -- -- 00 ------------------0------------- </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 643</span><span style = 'color:#fff; color:#f0f; '>.Fragment Offset</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '>19 .. 31</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '>-- -- 08 65 -------------------0100001100101 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 644</span><span style = 'color:#fff; color:#00a; background-color:#0aa; '>"Time to Live, Protocol, Header Checksum"</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 645</span><span style = 'color:#fff; color:#fff; '></span><span style = 'color:#fff; color:#fff; '>Third 32 bits </span><span style = 'color:#fff; color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000008</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#fff; '> </span><span style = 'color:#fff; color:#fff; '>78 44 75 6d </span><span style = 'color:#fff; color:#fff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 646</span><span style = 'color:#fff; color:#0f0; '>.Time to Live </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>00 .. 07</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>-- -- -- 78 01111000------------------------ </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 647</span><span style = 'color:#fff; color:#ff0; '>.Protocol </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>08 .. 15</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>-- -- -- 44 --------01000100---------------- </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 648</span><span style = 'color:#fff; color:#0ff; '>.Header Checksum</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>16 .. 31</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>-- -- 75 6d ----------------0111010101101101 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 649</span><span style = 'color:#fff; color:#00a; background-color:#0aa; '>"Addresses and options"</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 650</span><span style = 'color:#fff; color:#f0f; '></span><span style = 'color:#fff; color:#f0f; '>Source Address </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>0000000c</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '> </span><span style = 'color:#fff; color:#f0f; '>70 3a 3a 52 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 651</span><span style = 'color:#fff; color:#f00; '>Destination Addr</span><span style = 'color:#fff; color:#f00; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000010</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f00; '>61 6e 67 65 </span><span style = 'color:#fff; color:#f00; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 652</span><span style = 'color:#fff; color:#00a; background-color:#0aa; '>"Data"</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 653</span><span style = 'color:#fff; color:#ff0; '></span><span style = 'color:#fff; color:#ff0; '>Data </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000014</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; color:#ff0; '>0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 654</span><span style = 'color:#fff; color:#ff0; '>Data </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000020</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>0000000c</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 27 48 65 78 61 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 655</span><span style = 'color:#fff; color:#ff0; '>Data </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000030</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>0000001c</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>64 65 63 69 61 6c 20 52 61 6e 67 65 20 44 75 6d </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 656</span><span style = 'color:#fff; color:#ff0; '>Data </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000040</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>0000002c</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>70 65 72 27 20 20 77 69 74 68 20 63 6f 6c 6f 72 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 657</span><span style = 'color:#fff; color:#ff0; '>Data </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000050</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>0000003c</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>2c 20 62 69 74 66 69 65 6c 64 73 20 61 6e 64 20 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 658</span><span style = 'color:#fff; color:#ff0; '>Data </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000060</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>0000004c</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>73 6b 69 70 20 72 61 6e 67 65 73 0a 0a 0a 49 4e </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 659</span><span style = 'color:#fff; color:#ff0; '>Data </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000070</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>0000005c</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>53 54 41 4c 4c 41 54 49 4f 4e 0a 2d 2d 2d 2d 2d </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 660</span><span style = 'color:#fff; color:#ff0; '>Data </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000080</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>0000006c</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>2d 2d 2d 2d 2d 2d 2d 0a 0a 54 6f 20 69 6e 73 74 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 661</span><span style = 'color:#fff; color:#ff0; '>Data </span><span style = 'color:#fff; color:#ff0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000090</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>0000007c</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>61 6c 6c 20 </span><span style = 'color:#fff; color:#ff0; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 662</span> 663</pre> 664 665=end html 666 667In horizontal mode 668 669 $> hdr -r t/parse_ipv4.pl -display_ascii_dump 0 -bit_zero_on_left -display_bitfields 1 -display_comment_range 0 670 671=begin html 672 673<pre style ="font-family: monospace; background-color: #000 ;"> 674<span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '></span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '></span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>44 61 74 61 </span><span style = 'color:#fff; color:#ff0; '>3a 3a 48 65 </span><span style = 'color:#fff; color:#fff; '>78 44 75 6d </span><span style = 'color:#fff; color:#f0f; '>70 3a 3a 52 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>First 32 bits</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; color:#ff0; '>Second 32 bits</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; color:#fff; '>Third 32 bits</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; color:#f0f; '>Source Address</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 675</span><span style = 'color:#fff; color:#ff0; '>00 .. 03</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>First 32</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>-- -- -- 04 0100---------------------------- </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>.Version </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 676</span><span style = 'color:#fff; color:#0ff; '>04 .. 07</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>First 32</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>-- -- -- 04 ----0100------------------------ </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>.Header length </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 677</span><span style = 'color:#fff; color:#f0f; '>08 .. 15</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>First 32</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '>-- -- -- 61 --------01100001---------------- </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '>.Differentiated </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 678</span><span style = 'color:#fff; color:#f00; '>16 .. 31</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>First 32</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f00; '>-- -- 74 61 ----------------0111010001100001 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f00; '>.Total length </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 679</span><span style = 'color:#fff; color:#0ff; '>00 .. 15</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>Second 3</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>-- -- 3a 3a 0011101000111010---------------- </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>.Identification </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 680</span><span style = 'color:#fff; color:#0f0; '>16 .. 16</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>Second 3</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>-- -- -- 00 ----------------0--------------- </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>.reserved </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 681</span><span style = 'color:#fff; color:#0ff; '>17 .. 17</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>Second 3</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>-- -- -- 01 -----------------1-------------- </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>.Don't Fragment </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 682</span><span style = 'color:#fff; color:#f00; '>18 .. 18</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>Second 3</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f00; '>-- -- -- 00 ------------------0------------- </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f00; '>.More Fragments </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 683</span><span style = 'color:#fff; color:#f0f; '>19 .. 31</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>Second 3</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '>-- -- 08 65 -------------------0100001100101 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f0f; '>.Fragment Offset</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 684</span><span style = 'color:#fff; color:#0f0; '>00 .. 07</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#fff; '>Third 32</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>-- -- -- 78 01111000------------------------ </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0f0; '>.Time to Live </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 685</span><span style = 'color:#fff; color:#ff0; '>08 .. 15</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#fff; '>Third 32</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>-- -- -- 44 --------01000100---------------- </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>.Protocol </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 686</span><span style = 'color:#fff; color:#0ff; '>16 .. 31</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#fff; '>Third 32</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>-- -- 75 6d ----------------0111010101101101 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#0ff; '>.Header Checksum</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 687</span><span style = 'color:#fff; '>00000010</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f00; '>61 6e 67 65 </span><span style = 'color:#fff; color:#ff0; '>0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#f00; '>Destination Addr</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; color:#ff0; '>Data</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 688</span><span style = 'color:#fff; '>00000020</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 27 48 65 78 61 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>Data</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 689</span><span style = 'color:#fff; '>00000030</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>64 65 63 69 61 6c 20 52 61 6e 67 65 20 44 75 6d </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>Data</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 690</span><span style = 'color:#fff; '>00000040</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>70 65 72 27 20 20 77 69 74 68 20 63 6f 6c 6f 72 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>Data</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 691</span><span style = 'color:#fff; '>00000050</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>2c 20 62 69 74 66 69 65 6c 64 73 20 61 6e 64 20 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>Data</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 692</span><span style = 'color:#fff; '>00000060</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>73 6b 69 70 20 72 61 6e 67 65 73 0a 0a 0a 49 4e </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>Data</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 693</span><span style = 'color:#fff; '>00000070</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>53 54 41 4c 4c 41 54 49 4f 4e 0a 2d 2d 2d 2d 2d </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>Data</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 694</span><span style = 'color:#fff; '>00000080</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>2d 2d 2d 2d 2d 2d 2d 0a 0a 54 6f 20 69 6e 73 74 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>Data</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 695</span><span style = 'color:#fff; '>00000090</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>61 6c 6c 20 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; color:#ff0; '>Data</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '> 696</span> 697</pre> 698 699=end html 700 701=head3 Comments that help 702 703Remember that you can, while generating your ranges, assign the comment field 704 705 ['range_name', 4, 'red', 'comment of great help'] 706 707You can also pass a sub reference in place of the comment. The sub will be called just before the range is displayed. It is passed information 708about the data to be displayed (data and offset). This allows you to dynamically generate a comment string. 709 710 ['size', 1, undef, 711 sub 712 { 713 my ($self, $data, $offset, $size, $range) = @_ ; 714 715 my $size = ord(substr($data, $offset, 1)) ; 716 717 for($size) 718 { 719 $_ == 1 and do {return 'size is: S' } ; 720 $_ == 2 and do {return 'size is: M'} ; 721 $_ == 3 and do {return 'size is: L'} ; 722 $_ == 4 and do {return 'size is: XL'} ; 723 724 return 'Error in size range!' ; 725 } 726 } 727 ], 728 729Which would generate : 730 731 ... 732 size 00000022 00000000 32 2 Error in size range! 733 size 00000023 00000000 01 . size is: S 734 ... 735 736=head2 Let the computer do the heavy lifting 737 738B<hdr> may be a nice tool to run from the command line but you can also use it in shell scripts to generate reports. I generally write I<pod> so I let I<hdr> generate my pod 739snippets with embeded html hexdumps. 740 741 printf "=head1 MY REPORT\n\n" > report.pod 742 printf "=head2 The data\n\n" >> report.pod 743 744 hdr -r 'A,55:B,5:bf,x3b5:C,18:D,10' Changes -col -rul -format HTML -display_command_line -start_tag '=begin html' -end_tag '=end html' >> report.pod 745 hdr -r 'B,5:bf,x3b5:C,18:D,10' Changes -col -rul -offset 55 -format HTML -display_command_line -start_tag '=begin html' -end_tag '=end html' >> report.pod 746 hdr -r 'B,5:bf,x3b5:C,18:D,10' Changes -col -rul -offset 55 -offset_start 55 -format HTML -display_command_line -start_tag '=begin html' -end_tag '=end html' >> report.pod 747 748 echo "=head2 Nicely synchronized\n\n" >> report.pod 749 hdr -r 'B,5:bf,x3b5:C,18:D,10' Changes -col -rul -offset 55 -offset_start 55 -format HTML -display_command_line -start_color bright_yellow -start_tag '=begin html' -end_tag '=end html' >> report.pod 750 751 pod2html report.pod > report.html 752 753=head1 Bash completion script 754 755B<hdr> can generate a bash completion script 756 757 $> hdr --generate_bash_completion > hdr_completion 758 $> source hdr_completion 759 760=head1 Helping out 761 762You contribute when you: 763 764=over 2 765 766=item * report errors 767 768=item * send some examples of your data/output 769 770=item * send parsers or other scripts in which you use hdr or B<Data::HexDump::Range> 771 772=item * send new requirement, patches, documentation enhancements 773 774=item * pass the word around so more people use hdr and I get more feedback 775 776=item * plant a tree, save a cat/dog or both, bike instead for driving, spread some love around you, :) 777 778=back 779 780=head1 AUTHOR 781 782 Nadim ibn hamouda el Khemir 783 CPAN ID: NKH 784 mailto: nadim@cpan.org 785 786=head1 COPYRIGHT & LICENSE 787 788Copyright 2010 Nadim Khemir. 789 790This program is free software; you can redistribute it and/or 791modify it under the terms of either: 792 793=over 4 794 795=item * the GNU General Public License as published by the Free 796Software Foundation; either version 1, or (at your option) any 797later version, or 798 799=item * the Artistic License version 2.0. 800 801=back 802 803=head1 SUPPORT 804 805You can also look for information at: 806 807=over 4 808 809=item * RT: CPAN's request tracker 810 811Please report any bugs or feature requests to L<bug-data-hexdump-range@rt.cpan.org>. 812 813=back 814 815=head1 SEE ALSO 816 817B<hexd> from libma L<http://www.ioplex.com/~miallen/libmba/> 818 819=cut 820