Linux iad1-shared-b7-18 6.6.49-grsec-jammy+ #10 SMP Thu Sep 12 23:23:08 UTC 2024 x86_64
Apache
: 67.205.6.31 | : 216.73.216.20
Cant Read [ /etc/named.conf ]
8.2.29
fernandoquevedo
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
README
+ Create Folder
+ Create File
/
usr /
share /
perl5 /
Image /
ExifTool /
[ HOME SHELL ]
Name
Size
Permission
Action
Charset
[ DIR ]
drwxr-xr-x
Lang
[ DIR ]
drwxr-xr-x
AES.pm
18.66
KB
-rw-r--r--
AFCP.pm
10.38
KB
-rw-r--r--
AIFF.pm
9.59
KB
-rw-r--r--
APE.pm
9.06
KB
-rw-r--r--
APP12.pm
10.44
KB
-rw-r--r--
ASF.pm
30.21
KB
-rw-r--r--
Apple.pm
5.43
KB
-rw-r--r--
Audible.pm
11.52
KB
-rw-r--r--
BMP.pm
10.45
KB
-rw-r--r--
BPG.pm
7.53
KB
-rw-r--r--
BZZ.pm
17.46
KB
-rw-r--r--
BigTIFF.pm
11.27
KB
-rw-r--r--
BuildTagLookup.pm
121.94
KB
-rw-r--r--
CBOR.pm
11.51
KB
-rw-r--r--
Canon.pm
375.39
KB
-rw-r--r--
CanonCustom.pm
84.32
KB
-rw-r--r--
CanonRaw.pm
29.68
KB
-rw-r--r--
CanonVRD.pm
75.2
KB
-rw-r--r--
CaptureOne.pm
7.85
KB
-rw-r--r--
Casio.pm
62.21
KB
-rw-r--r--
Charset.pm
16.01
KB
-rw-r--r--
DICOM.pm
245.09
KB
-rw-r--r--
DJI.pm
6.31
KB
-rw-r--r--
DNG.pm
31.59
KB
-rw-r--r--
DPX.pm
9.51
KB
-rw-r--r--
DV.pm
9.75
KB
-rw-r--r--
DarwinCore.pm
15.43
KB
-rw-r--r--
DjVu.pm
12.46
KB
-rw-r--r--
EXE.pm
50.3
KB
-rw-r--r--
Exif.pm
246.64
KB
-rw-r--r--
FITS.pm
5.73
KB
-rw-r--r--
FLAC.pm
9.89
KB
-rw-r--r--
FLIF.pm
11.65
KB
-rw-r--r--
FLIR.pm
59.45
KB
-rw-r--r--
Fixup.pm
12.43
KB
-rw-r--r--
Flash.pm
27.5
KB
-rw-r--r--
FlashPix.pm
87.44
KB
-rw-r--r--
Font.pm
27.34
KB
-rw-r--r--
FotoStation.pm
7.97
KB
-rw-r--r--
FujiFilm.pm
54.47
KB
-rw-r--r--
GE.pm
2
KB
-rw-r--r--
GIF.pm
21.85
KB
-rw-r--r--
GIMP.pm
8.35
KB
-rw-r--r--
GPS.pm
19.53
KB
-rw-r--r--
GeoTiff.pm
87.51
KB
-rw-r--r--
Geotag.pm
62.87
KB
-rw-r--r--
GoPro.pm
28
KB
-rw-r--r--
H264.pm
39.29
KB
-rw-r--r--
HP.pm
8
KB
-rw-r--r--
HTML.pm
22.1
KB
-rw-r--r--
HtmlDump.pm
32.8
KB
-rw-r--r--
ICC_Profile.pm
45.63
KB
-rw-r--r--
ID3.pm
56.91
KB
-rw-r--r--
IPTC.pm
39.54
KB
-rw-r--r--
ISO.pm
6.81
KB
-rw-r--r--
ITC.pm
6.63
KB
-rw-r--r--
Import.pm
12.83
KB
-rw-r--r--
InDesign.pm
10.4
KB
-rw-r--r--
JPEG.pm
24.3
KB
-rw-r--r--
JPEGDigest.pm
212.38
KB
-rw-r--r--
JSON.pm
6.15
KB
-rw-r--r--
JVC.pm
3.57
KB
-rw-r--r--
Jpeg2000.pm
49.65
KB
-rw-r--r--
Kodak.pm
120.47
KB
-rw-r--r--
KyoceraRaw.pm
4.31
KB
-rw-r--r--
LIF.pm
4.66
KB
-rw-r--r--
LNK.pm
22.02
KB
-rw-r--r--
Leaf.pm
16.34
KB
-rw-r--r--
Lytro.pm
7.56
KB
-rw-r--r--
M2TS.pm
37.11
KB
-rw-r--r--
MIE.pm
102.09
KB
-rw-r--r--
MIEUnits.pod
13.68
KB
-rw-r--r--
MIFF.pm
9.05
KB
-rw-r--r--
MNG.pm
16.22
KB
-rw-r--r--
MOI.pm
4.14
KB
-rw-r--r--
MPC.pm
4.05
KB
-rw-r--r--
MPEG.pm
22.32
KB
-rw-r--r--
MPF.pm
8.94
KB
-rw-r--r--
MRC.pm
18.39
KB
-rw-r--r--
MWG.pm
30.64
KB
-rw-r--r--
MXF.pm
252.65
KB
-rw-r--r--
MacOS.pm
30.7
KB
-rw-r--r--
MakerNotes.pm
68.93
KB
-rw-r--r--
Matroska.pm
34.44
KB
-rw-r--r--
Microsoft.pm
52.13
KB
-rw-r--r--
Minolta.pm
99.93
KB
-rw-r--r--
MinoltaRaw.pm
16.49
KB
-rw-r--r--
Motorola.pm
5.31
KB
-rw-r--r--
Nikon.pm
431.96
KB
-rw-r--r--
NikonCapture.pm
28.13
KB
-rw-r--r--
NikonCustom.pm
290.78
KB
-rw-r--r--
NikonSettings.pm
71.88
KB
-rw-r--r--
Nintendo.pm
3.24
KB
-rw-r--r--
OOXML.pm
13.61
KB
-rw-r--r--
Ogg.pm
8.81
KB
-rw-r--r--
Olympus.pm
139.89
KB
-rw-r--r--
OpenEXR.pm
10.26
KB
-rw-r--r--
Opus.pm
2.22
KB
-rw-r--r--
Other.pm
2.63
KB
-rw-r--r--
PCX.pm
3.72
KB
-rw-r--r--
PDF.pm
90.77
KB
-rw-r--r--
PGF.pm
4.04
KB
-rw-r--r--
PICT.pm
33.2
KB
-rw-r--r--
PLIST.pm
17.07
KB
-rw-r--r--
PLUS.pm
147.71
KB
-rw-r--r--
PNG.pm
60.72
KB
-rw-r--r--
PPM.pm
4.97
KB
-rw-r--r--
PSP.pm
9.02
KB
-rw-r--r--
Palm.pm
11.9
KB
-rw-r--r--
Panasonic.pm
96.62
KB
-rw-r--r--
PanasonicRaw.pm
31.77
KB
-rw-r--r--
Parrot.pm
20.95
KB
-rw-r--r--
Pentax.pm
220.46
KB
-rw-r--r--
PhaseOne.pm
26.24
KB
-rw-r--r--
PhotoCD.pm
18.25
KB
-rw-r--r--
PhotoMechanic.pm
8.09
KB
-rw-r--r--
Photoshop.pm
43.36
KB
-rw-r--r--
PostScript.pm
29.11
KB
-rw-r--r--
PrintIM.pm
3.44
KB
-rw-r--r--
Qualcomm.pm
43.43
KB
-rw-r--r--
QuickTime.pm
409.72
KB
-rw-r--r--
QuickTimeStream.pl
126.03
KB
-rw-r--r--
RIFF.pm
70.97
KB
-rw-r--r--
RSRC.pm
9.58
KB
-rw-r--r--
RTF.pm
13.46
KB
-rw-r--r--
Radiance.pm
4.56
KB
-rw-r--r--
Rawzor.pm
6.17
KB
-rw-r--r--
Real.pm
26.89
KB
-rw-r--r--
Reconyx.pm
14.2
KB
-rw-r--r--
Red.pm
10.82
KB
-rw-r--r--
Ricoh.pm
37.18
KB
-rw-r--r--
Samsung.pm
54.64
KB
-rw-r--r--
Sanyo.pm
11.83
KB
-rw-r--r--
Scalado.pm
3.91
KB
-rw-r--r--
Shift.pl
23.28
KB
-rw-r--r--
Shortcuts.pm
9.81
KB
-rw-r--r--
Sigma.pm
33.16
KB
-rw-r--r--
SigmaRaw.pm
23.45
KB
-rw-r--r--
Sony.pm
439.69
KB
-rw-r--r--
SonyIDC.pm
11.95
KB
-rw-r--r--
Stim.pm
4.53
KB
-rw-r--r--
TagInfoXML.pm
33.14
KB
-rw-r--r--
TagLookup.pm
647.18
KB
-rw-r--r--
TagNames.pod
1.76
MB
-rw-r--r--
Text.pm
8.12
KB
-rw-r--r--
Theora.pm
3.41
KB
-rw-r--r--
Torrent.pm
11.58
KB
-rw-r--r--
Unknown.pm
1.69
KB
-rw-r--r--
VCard.pm
17.31
KB
-rw-r--r--
Validate.pm
29.75
KB
-rw-r--r--
Vorbis.pm
8.13
KB
-rw-r--r--
WTV.pm
12.97
KB
-rw-r--r--
WriteCanonRaw.pl
24.29
KB
-rw-r--r--
WriteExif.pl
130.6
KB
-rw-r--r--
WriteIPTC.pl
29.6
KB
-rw-r--r--
WritePDF.pl
29.02
KB
-rw-r--r--
WritePNG.pl
16.07
KB
-rw-r--r--
WritePhotoshop.pl
10.85
KB
-rw-r--r--
WritePostScript.pl
26.71
KB
-rw-r--r--
WriteQuickTime.pl
89.63
KB
-rw-r--r--
WriteXMP.pl
70.49
KB
-rw-r--r--
Writer.pl
301.76
KB
-rw-r--r--
XMP.pm
176.89
KB
-rw-r--r--
XMP2.pl
81.66
KB
-rw-r--r--
XMPStruct.pl
36.66
KB
-rw-r--r--
ZIP.pm
27.61
KB
-rw-r--r--
ZISRAW.pm
7.85
KB
-rw-r--r--
iWork.pm
7.79
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : Audible.pm
#------------------------------------------------------------------------------ # File: Audible.pm # # Description: Read metadata from Audible audio books # # Revisions: 2015/04/05 - P. Harvey Created # # References: 1) https://github.com/jteeuwen/audible # 2) https://code.google.com/p/pyaudibletags/ # 3) http://wiki.multimedia.cx/index.php?title=Audible_Audio #------------------------------------------------------------------------------ package Image::ExifTool::Audible; use strict; use vars qw($VERSION); use Image::ExifTool qw(:DataAccess :Utils); $VERSION = '1.02'; sub ProcessAudible_meta($$$); sub ProcessAudible_cvrx($$$); %Image::ExifTool::Audible::Main = ( GROUPS => { 2 => 'Audio' }, NOTES => q{ ExifTool will extract any information found in the metadata dictionary of Audible .AA files, even if not listed in the table below. }, # tags found in the metadata dictionary (chunk 2) pubdate => { Name => 'PublishDate', Groups => { 2 => 'Time' } }, pub_date_start => { Name => 'PublishDateStart', Groups => { 2 => 'Time' } }, author => { Name => 'Author', Groups => { 2 => 'Author' } }, copyright => { Name => 'Copyright', Groups => { 2 => 'Author' } }, # also seen (ref PH): # product_id, parent_id, title, provider, narrator, price, description, # long_description, short_title, is_aggregation, title_id, codec, HeaderSeed, # EncryptedBlocks, HeaderKey, license_list, CPUType, license_count, <12 hex digits>, # parent_short_title, parent_title, aggregation_id, short_description, user_alias # information extracted from other chunks _chapter_count => { Name => 'ChapterCount' }, # from chunk 6 _cover_art => { # from chunk 11 Name => 'CoverArt', Groups => { 2 => 'Preview' }, Binary => 1, }, ); # 'tags' atoms observed in Audible .m4b audio books (ref PH) %Image::ExifTool::Audible::tags = ( GROUPS => { 0 => 'QuickTime', 2 => 'Audio' }, NOTES => 'Information found in "tags" atom of Audible M4B audio books.', meta => { Name => 'Audible_meta', SubDirectory => { TagTable => 'Image::ExifTool::Audible::meta' }, }, cvrx => { Name => 'Audible_cvrx', SubDirectory => { TagTable => 'Image::ExifTool::Audible::cvrx' }, }, tseg => { Name => 'Audible_tseg', SubDirectory => { TagTable => 'Image::ExifTool::Audible::tseg' }, }, ); # 'meta' information observed in Audible .m4b audio books (ref PH) %Image::ExifTool::Audible::meta = ( PROCESS_PROC => \&ProcessAudible_meta, GROUPS => { 0 => 'QuickTime', 2 => 'Audio' }, NOTES => 'Information found in Audible M4B "meta" atom.', Album => 'Album', ALBUMARTIST => { Name => 'AlbumArtist', Groups => { 2 => 'Author' } }, Artist => { Name => 'Artist', Groups => { 2 => 'Author' } }, Comment => 'Comment', Genre => 'Genre', itunesmediatype => { Name => 'iTunesMediaType', Description => 'iTunes Media Type' }, SUBTITLE => 'Subtitle', Title => 'Title', TOOL => 'CreatorTool', Year => { Name => 'Year', Groups => { 2 => 'Time' } }, track => 'ChapterName', # (found in 'meta' of 'tseg' atom) ); # 'cvrx' information observed in Audible .m4b audio books (ref PH) %Image::ExifTool::Audible::cvrx = ( PROCESS_PROC => \&ProcessAudible_cvrx, GROUPS => { 0 => 'QuickTime', 2 => 'Audio' }, NOTES => 'Audible cover art information in M4B audio books.', VARS => { NO_ID => 1 }, CoverArtType => 'CoverArtType', CoverArt => { Name => 'CoverArt', Groups => { 2 => 'Preview' }, Binary => 1, }, ); # 'tseg' information observed in Audible .m4b audio books (ref PH) %Image::ExifTool::Audible::tseg = ( GROUPS => { 0 => 'QuickTime', 2 => 'Audio' }, tshd => { Name => 'ChapterNumber', Format => 'int32u', ValueConv => '$val + 1', # start counting from 1 }, meta => { Name => 'Audible_meta2', SubDirectory => { TagTable => 'Image::ExifTool::Audible::meta' }, }, ); #------------------------------------------------------------------------------ # Process Audible 'meta' tags from M4B files (ref PH) # Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) tag table ref # Returns: 1 on success sub ProcessAudible_meta($$$) { my ($et, $dirInfo, $tagTablePtr) = @_; my $dataPt = $$dirInfo{DataPt}; my $dataPos = $$dirInfo{DataPos}; my $dirLen = length $$dataPt; return 0 if $dirLen < 4; my $num = Get32u($dataPt, 0); $et->VerboseDir('Audible_meta', $num); my $pos = 4; my $index; for ($index=0; $index<$num; ++$index) { last if $pos + 3 > $dirLen; my $unk = Get8u($dataPt, $pos); # ? (0x80 or 0x00) last unless $unk == 0x80 or $unk == 0x00; my $len = Get16u($dataPt, $pos + 1); # tag length $pos += 3; last if $pos + $len + 6 > $dirLen or not $len; my $tag = substr($$dataPt, $pos, $len); # tag ID my $ver = Get16u($dataPt, $pos + $len); # version? last unless $ver == 0x0001; my $size = Get32u($dataPt, $pos + $len + 2);# data size $pos += $len + 6; last if $pos + $size > $dirLen; my $val = $et->Decode(substr($$dataPt, $pos, $size), 'UTF8'); unless ($$tagTablePtr{$tag}) { my $name = Image::ExifTool::MakeTagName(($tag =~ /[a-z]/) ? $tag : lc($tag)); AddTagToTable($tagTablePtr, $tag, { Name => $name }); } $et->HandleTag($tagTablePtr, $tag, $val, DataPt => $dataPt, DataPos => $dataPos, Start => $pos, Size => $size, Index => $index, ); $pos += $size; } return 1; } #------------------------------------------------------------------------------ # Process Audible 'cvrx' cover art atom from M4B files (ref PH) # Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) tag table ref # Returns: 1 on success sub ProcessAudible_cvrx($$$) { my ($et, $dirInfo, $tagTablePtr) = @_; my $dataPt = $$dirInfo{DataPt}; my $dataPos = $$dirInfo{DataPos}; my $dirLen = length $$dataPt; return 0 if 0x0a > $dirLen; my $len = Get16u($dataPt, 0x08); return 0 if 0x0a + $len + 6 > $dirLen; my $size = Get32u($dataPt, 0x0a + $len + 2); return 0 if 0x0a + $len + 6 + $size > $dirLen; $et->VerboseDir('Audible_cvrx', undef, $dirLen); $et->HandleTag($tagTablePtr, 'CoverArtType', undef, DataPt => $dataPt, DataPos => $dataPos, Start => 0x0a, Size => $len, ); $et->HandleTag($tagTablePtr, 'CoverArt', undef, DataPt => $dataPt, DataPos => $dataPos, Start => 0x0a + $len + 6, Size => $size, ); return 1; } #------------------------------------------------------------------------------ # Read information from an Audible .AA file # Inputs: 0) ExifTool ref, 1) dirInfo ref # Returns: 1 on success, 0 if this wasn't a valid AA file sub ProcessAA($$) { my ($et, $dirInfo) = @_; my $raf = $$dirInfo{RAF}; my ($buff, $toc, $entry, $i); # check magic number return 0 unless $raf->Read($buff, 16) == 16 and $buff=~/^.{4}\x57\x90\x75\x36/s; # check file size if (defined $$et{VALUE}{FileSize}) { # first 4 bytes of the file should be the filesize unpack('N', $buff) == $$et{VALUE}{FileSize} or return 0; } $et->SetFileType(); SetByteOrder('MM'); my $bytes = 12 * Get32u(\$buff, 8); # table of contents size in bytes $bytes > 0xc00 and $et->Warn('Invalid TOC'), return 1; # read the table of contents $raf->Read($toc, $bytes) == $bytes or $et->Warn('Truncated TOC'), return 1; my $tagTablePtr = GetTagTable('Image::ExifTool::Audible::Main'); # parse table of contents (in $toc) for ($entry=0; $entry<$bytes; $entry+=12) { my $type = Get32u(\$toc, $entry); next unless $type == 2 or $type == 6 or $type == 11; my $offset = Get32u(\$toc, $entry + 4); my $length = Get32u(\$toc, $entry + 8) or next; $raf->Seek($offset, 0) or $et->Warn("Chunk $type seek error"), last; if ($type == 6) { # offset table next if $length < 4 or $raf->Read($buff, 4) != 4; # only read the chapter count $et->HandleTag($tagTablePtr, '_chapter_count', Get32u(\$buff, 0)); next; } # read the chunk $length > 100000000 and $et->Warn("Chunk $type too big"), next; $raf->Read($buff, $length) == $length or $et->Warn("Chunk $type read error"), last; if ($type == 11) { # cover art next if $length < 8; my $len = Get32u(\$buff, 0); my $off = Get32u(\$buff, 4); next if $off < $offset + 8 or $off - $offset + $len > $length; $et->HandleTag($tagTablePtr, '_cover_art', substr($buff, $off-$offset, $len)); next; } # parse metadata dictionary (in $buff) $length < 4 and $et->Warn('Bad dictionary'), next; my $num = Get32u(\$buff, 0); $num > 0x200 and $et->Warn('Bad dictionary count'), next; my $pos = 4; # dictionary starts immediately after count require Image::ExifTool::HTML; # (for UnescapeHTML) $et->VerboseDir('Audible Metadata', $num); for ($i=0; $i<$num; ++$i) { my $tagPos = $pos + 9; # position of tag string $tagPos > $length and $et->Warn('Truncated dictionary'), last; # (1 unknown byte ignored at start of each dictionary entry) my $tagLen = Get32u(\$buff, $pos + 1); # tag string length my $valLen = Get32u(\$buff, $pos + 5); # value string length my $valPos = $tagPos + $tagLen; # position of value string my $nxtPos = $valPos + $valLen; # position of next entry $nxtPos > $length and $et->Warn('Bad dictionary entry'), last; my $tag = substr($buff, $tagPos, $tagLen); my $val = substr($buff, $valPos, $valLen); unless ($$tagTablePtr{$tag}) { my $name = Image::ExifTool::MakeTagName($tag); $name =~ s/_(.)/\U$1/g; # change from underscore-separated to mixed case AddTagToTable($tagTablePtr, $tag, { Name => $name }); } # unescape HTML character references and convert from UTF-8 $val = $et->Decode(Image::ExifTool::HTML::UnescapeHTML($val), 'UTF8'); $et->HandleTag($tagTablePtr, $tag, $val, DataPos => $offset, DataPt => \$buff, Start => $valPos, Size => $valLen, Index => $i, ); $pos = $nxtPos; # step to next dictionary entry } } return 1; } 1; # end __END__ =head1 NAME Image::ExifTool::Audible - Read meta information from Audible audio books =head1 SYNOPSIS This module is used by Image::ExifTool =head1 DESCRIPTION This module contains definitions required by Image::ExifTool to read meta information from Audible audio books. =head1 AUTHOR Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =head1 REFERENCES =over 4 =item L<https://github.com/jteeuwen/audible> =item L<https://code.google.com/p/pyaudibletags/> =item L<http://wiki.multimedia.cx/index.php?title=Audible_Audio> =back =head1 SEE ALSO L<Image::ExifTool::TagNames/Audible Tags>, L<Image::ExifTool(3pm)|Image::ExifTool> =cut
Close