Linux ns1.utparral.edu.mx 6.8.0-79-generic #79~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Fri Aug 15 16:54:53 UTC 2 x86_64
Apache/2.4.58 (Unix) OpenSSL/1.1.1w PHP/8.2.12 mod_perl/2.0.12 Perl/v5.34.1
: 10.10.1.9 | : 10.10.1.254
Cant Read [ /etc/named.conf ]
daemon
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
README
+ Create Folder
+ Create File
/
usr /
bin /
[ HOME SHELL ]
Name
Size
Permission
Action
X11
[ DIR ]
drwxr-xr-x
[
50.44
KB
-rwxr-xr-x
aa-enabled
34.52
KB
-rwxr-xr-x
aa-exec
34.52
KB
-rwxr-xr-x
aa-features-abi
30.52
KB
-rwxr-xr-x
aconnect
22.38
KB
-rwxr-xr-x
acpidbg
1.58
KB
-rwxr-xr-x
acpi_listen
18.57
KB
-rwxr-xr-x
add-apt-repository
14.14
KB
-rwxr-xr-x
addpart
14.38
KB
-rwxr-xr-x
airscan-discover
146.85
KB
-rwxr-xr-x
alsabat
42.44
KB
-rwxr-xr-x
alsaloop
83.33
KB
-rwxr-xr-x
alsamixer
84.29
KB
-rwxr-xr-x
alsatplg
74.38
KB
-rwxr-xr-x
alsaucm
30.84
KB
-rwxr-xr-x
amidi
30.38
KB
-rwxr-xr-x
amixer
62.45
KB
-rwxr-xr-x
anydesk
16.4
MB
-rwxr-xr-x
anydesk-global-settings
54
B
-rwxr-xr-x
apg
274
B
-rwxr-xr-x
apgbfm
26.16
KB
-rwxr-xr-x
aplay
82.42
KB
-rwxr-xr-x
aplaymidi
26.38
KB
-rwxr-xr-x
apport-bug
2.51
KB
-rwxr-xr-x
apport-cli
13.05
KB
-rwxr-xr-x
apport-collect
2.51
KB
-rwxr-xr-x
apport-unpack
2.02
KB
-rwxr-xr-x
appres
14.3
KB
-rwxr-xr-x
appstreamcli
118.23
KB
-rwxr-xr-x
apropos
47.28
KB
-rwxr-xr-x
apt
18.38
KB
-rwxr-xr-x
apt-add-repository
14.14
KB
-rwxr-xr-x
apt-cache
82.47
KB
-rwxr-xr-x
apt-cdrom
26.47
KB
-rwxr-xr-x
apt-config
26.39
KB
-rwxr-xr-x
aptdcon
1.01
KB
-rwxr-xr-x
apt-extracttemplates
22.47
KB
-rwxr-xr-x
apt-ftparchive
230.48
KB
-rwxr-xr-x
apt-get
50.47
KB
-rwxr-xr-x
apt-key
27.51
KB
-rwxr-xr-x
apt-mark
50.47
KB
-rwxr-xr-x
apt-sortpkgs
38.4
KB
-rwxr-xr-x
apturl
273
B
-rwxr-xr-x
apturl-gtk
1.51
KB
-rwxr-xr-x
arch
30.51
KB
-rwxr-xr-x
arecord
82.42
KB
-rwxr-xr-x
arecordmidi
30.39
KB
-rwxr-xr-x
arm2hpdl
14.31
KB
-rwxr-xr-x
arpaname
14.3
KB
-rwxr-xr-x
aseqdump
26.38
KB
-rwxr-xr-x
aseqnet
22.43
KB
-rwxr-xr-x
aspell
142.48
KB
-rwxr-xr-x
aspell-import
2
KB
-rwxr-xr-x
atobm
14.3
KB
-rwxr-xr-x
avahi-browse
30.39
KB
-rwxr-xr-x
avahi-browse-domains
30.39
KB
-rwxr-xr-x
avahi-publish
26.38
KB
-rwxr-xr-x
avahi-publish-address
26.38
KB
-rwxr-xr-x
avahi-publish-service
26.38
KB
-rwxr-xr-x
avahi-resolve
22.38
KB
-rwxr-xr-x
avahi-resolve-address
22.38
KB
-rwxr-xr-x
avahi-resolve-host-name
22.38
KB
-rwxr-xr-x
avahi-set-host-name
14.38
KB
-rwxr-xr-x
avinfo
22.26
KB
-rwxr-xr-x
awk
154.79
KB
-rwxr-xr-x
axfer
90.38
KB
-rwxr-xr-x
b2sum
50.52
KB
-rwxr-xr-x
baobab
238.58
KB
-rwxr-xr-x
base32
34.51
KB
-rwxr-xr-x
base64
34.51
KB
-rwxr-xr-x
basename
34.51
KB
-rwxr-xr-x
basenc
46.51
KB
-rwxr-xr-x
bash
1.33
MB
-rwxr-xr-x
bashbug
6.66
KB
-rwxr-xr-x
bc
90.82
KB
-rwxr-xr-x
bdftopcf
42.26
KB
-rwxr-xr-x
bdftruncate
14.15
KB
-rwxr-xr-x
bitmap
106.31
KB
-rwxr-xr-x
bluemoon
38.23
KB
-rwxr-xr-x
bluetoothctl
274.8
KB
-rwxr-xr-x
bluetooth-sendto
34.4
KB
-rwxr-xr-x
bmtoa
14.32
KB
-rwxr-xr-x
boltctl
122.98
KB
-rwxr-xr-x
bootctl
70.49
KB
-rwxr-xr-x
brltty
1012.04
KB
-rwxr-xr-x
brltty-ctb
286.73
KB
-rwxr-xr-x
brltty-trtxt
238.62
KB
-rwxr-xr-x
brltty-ttb
270.81
KB
-rwxr-xr-x
broadwayd
118.3
KB
-rwxr-xr-x
browse
25.46
KB
-rwxr-xr-x
btattach
30.23
KB
-rwxr-xr-x
btmgmt
165
KB
-rwxr-xr-x
btmon
850.3
KB
-rwxr-xr-x
bunzip2
38.38
KB
-rwxr-xr-x
busctl
90.49
KB
-rwxr-xr-x
busybox
2.09
MB
-rwxr-xr-x
bwrap
70.47
KB
-rwxr-xr-x
bzcat
38.38
KB
-rwxr-xr-x
bzcmp
2.17
KB
-rwxr-xr-x
bzdiff
2.17
KB
-rwxr-xr-x
bzegrep
3.69
KB
-rwxr-xr-x
bzexe
4.78
KB
-rwxr-xr-x
bzfgrep
3.69
KB
-rwxr-xr-x
bzgrep
3.69
KB
-rwxr-xr-x
bzip2
38.38
KB
-rwxr-xr-x
bzip2recover
14.3
KB
-rwxr-xr-x
bzless
1.27
KB
-rwxr-xr-x
bzmore
1.27
KB
-rwxr-xr-x
calibrate_ppa
26.38
KB
-rwxr-xr-x
canberra-gtk-play
18.22
KB
-rwxr-xr-x
cancel
14.3
KB
-rwxr-xr-x
captoinfo
86.41
KB
-rwxr-xr-x
cat
34.46
KB
-rwxr-xr-x
catman
34.76
KB
-rwxr-xr-x
cautious-launcher
853
B
-rwxr-xr-x
cd-create-profile
26.29
KB
-rwxr-xr-x
cd-fix-profile
26.29
KB
-rwxr-xr-x
cd-iccdump
14.29
KB
-rwxr-xr-x
cd-it8
22.29
KB
-rwxr-xr-x
chacl
22.3
KB
-rwxr-xr-x
chage
70.49
KB
-rwxr-sr-x
chardet
965
B
-rwxr-xr-x
chardetect
965
B
-rwxr-xr-x
chattr
14.31
KB
-rwxr-xr-x
chcon
58.51
KB
-rwxr-xr-x
check-language-support
2.71
KB
-rwxr-xr-x
cheese
266.39
KB
-rwxr-xr-x
chfn
71.01
KB
-rwsr-xr-x
chgrp
54.51
KB
-rwxr-xr-x
chmod
54.51
KB
-rwxr-xr-x
choom
22.38
KB
-rwxr-xr-x
chown
58.51
KB
-rwxr-xr-x
chrt
26.38
KB
-rwxr-xr-x
chsh
43.76
KB
-rwsr-xr-x
chvt
14.23
KB
-rwxr-xr-x
ciptool
34.34
KB
-rwxr-xr-x
ckbcomp
146.31
KB
-rwxr-xr-x
cksum
34.41
KB
-rwxr-xr-x
clear
14.31
KB
-rwxr-xr-x
clear_console
14.23
KB
-rwxr-xr-x
cmp
42.39
KB
-rwxr-xr-x
codepage
14.15
KB
-rwxr-xr-x
col
22.38
KB
-rwxr-xr-x
colcrt
14.38
KB
-rwxr-xr-x
colormgr
58.29
KB
-rwxr-xr-x
colrm
14.38
KB
-rwxr-xr-x
column
34.38
KB
-rwxr-xr-x
comm
34.52
KB
-rwxr-xr-x
compose
18.06
KB
-rwxr-xr-x
corelist
15.01
KB
-rwxr-xr-x
cp
138.51
KB
-rwxr-xr-x
cpan
8.16
KB
-rwxr-xr-x
cpan5.34-x86_64-linux-gnu
8.18
KB
-rwxr-xr-x
cpio
141.64
KB
-rwxr-xr-x
cpp
906.82
KB
-rwxr-xr-x
cpp-11
906.82
KB
-rwxr-xr-x
cpupower
1.58
KB
-rwxr-xr-x
c_rehash
6.8
KB
-rwxr-xr-x
crontab
38.64
KB
-rwxr-sr-x
csplit
106.51
KB
-rwxr-xr-x
ctstat
22.66
KB
-rwxr-xr-x
cupstestppd
62.38
KB
-rwxr-xr-x
cut
38.51
KB
-rwxr-xr-x
cvt
14.14
KB
-rwxr-xr-x
cvtsudoers
296.4
KB
-rwxr-xr-x
dash
122.74
KB
-rwxr-xr-x
date
102.51
KB
-rwxr-xr-x
dbus-cleanup-sockets
14.29
KB
-rwxr-xr-x
dbus-daemon
227.32
KB
-rwxr-xr-x
dbus-monitor
26.29
KB
-rwxr-xr-x
dbus-run-session
14.29
KB
-rwxr-xr-x
dbus-send
26.29
KB
-rwxr-xr-x
dbus-update-activation-environment
14.29
KB
-rwxr-xr-x
dbus-uuidgen
14.29
KB
-rwxr-xr-x
dbxtool
26.3
KB
-rwxr-xr-x
dc
46.24
KB
-rwxr-xr-x
dconf
58.21
KB
-rwxr-xr-x
dd
66.52
KB
-rwxr-xr-x
ddstdecode
18.31
KB
-rwxr-xr-x
deallocvt
14.23
KB
-rwxr-xr-x
debconf
2.79
KB
-rwxr-xr-x
debconf-apt-progress
11.27
KB
-rwxr-xr-x
debconf-communicate
608
B
-rwxr-xr-x
debconf-copydb
1.68
KB
-rwxr-xr-x
debconf-escape
647
B
-rwxr-xr-x
debconf-set-selections
2.92
KB
-rwxr-xr-x
debconf-show
1.78
KB
-rwxr-xr-x
debian-distro-info
22.95
KB
-rwxr-xr-x
deb-systemd-helper
20.89
KB
-rwxr-xr-x
deb-systemd-invoke
6.01
KB
-rwxr-xr-x
deja-dup
322.51
KB
-rwxr-xr-x
delpart
14.38
KB
-rwxr-xr-x
delv
45.32
KB
-rwxr-xr-x
desktop-file-edit
96.44
KB
-rwxr-xr-x
desktop-file-install
96.44
KB
-rwxr-xr-x
desktop-file-validate
76.69
KB
-rwxr-xr-x
devdump
183.27
KB
-rwxr-xr-x
df
83.08
KB
-rwxr-xr-x
dfu-tool
110.3
KB
-rwxr-xr-x
dh_bash-completion
4.31
KB
-rwxr-xr-x
dh_installxmlcatalogs
9.22
KB
-rwxr-xr-x
dh_perl_openssl
1.5
KB
-rwxr-xr-x
diff
130.55
KB
-rwxr-xr-x
diff3
54.52
KB
-rwxr-xr-x
dig
150.83
KB
-rwxr-xr-x
dir
134.98
KB
-rwxr-xr-x
dircolors
38.52
KB
-rwxr-xr-x
dirmngr
433.02
KB
-rwxr-xr-x
dirmngr-client
54.92
KB
-rwxr-xr-x
dirname
30.38
KB
-rwxr-xr-x
dirsplit
16.74
KB
-rwxr-xr-x
distro-info
22.89
KB
-rwxr-xr-x
dmesg
70.61
KB
-rwxr-xr-x
dnsdomainname
22.23
KB
-rwxr-xr-x
dnssec-cds
51.39
KB
-rwxr-xr-x
dnssec-dsfromkey
38.38
KB
-rwxr-xr-x
dnssec-importkey
38.38
KB
-rwxr-xr-x
dnssec-keyfromlabel
42.38
KB
-rwxr-xr-x
dnssec-keygen
46.38
KB
-rwxr-xr-x
dnssec-revoke
30.38
KB
-rwxr-xr-x
dnssec-settime
46.38
KB
-rwxr-xr-x
dnssec-signzone
94.41
KB
-rwxr-xr-x
dnssec-verify
30.39
KB
-rwxr-xr-x
domainname
22.23
KB
-rwxr-xr-x
do-release-upgrade
10.42
KB
-rwxr-xr-x
dpkg
310.69
KB
-rwxr-xr-x
dpkg-deb
134.49
KB
-rwxr-xr-x
dpkg-divert
118.49
KB
-rwxr-xr-x
dpkg-maintscript-helper
20.71
KB
-rwxr-xr-x
dpkg-query
138.52
KB
-rwxr-xr-x
dpkg-realpath
4.09
KB
-rwxr-xr-x
dpkg-split
98.51
KB
-rwxr-xr-x
dpkg-statoverride
46.26
KB
-rwxr-xr-x
dpkg-trigger
42.41
KB
-rwxr-xr-x
driverless
30.32
KB
-rwxr-xr-x
driverless-fax
537
B
-rwxr-xr-x
du
146.51
KB
-rwxr-xr-x
dumpkeys
158.71
KB
-rwxr-xr-x
duplicity
5.21
KB
-rwxr-xr-x
dvipdf
1007
B
-rwxr-xr-x
echo
34.3
KB
-rwxr-xr-x
ed
54.49
KB
-rwxr-xr-x
edit
18.06
KB
-rwxr-xr-x
editor
276.52
KB
-rwxr-xr-x
editres
72.69
KB
-rwxr-xr-x
efibootdump
22.15
KB
-rwxr-xr-x
efibootmgr
43.27
KB
-rwxr-xr-x
egrep
28
B
-rwxr-xr-x
eject
42.23
KB
-rwxr-xr-x
enc2xs
40.84
KB
-rwxr-xr-x
encguess
3.01
KB
-rwxr-xr-x
enchant-2
26.29
KB
-rwxr-xr-x
enchant-lsmod-2
18.29
KB
-rwxr-xr-x
env
42.95
KB
-rwxr-xr-x
envsubst
34.38
KB
-rwxr-xr-x
eog
18.37
KB
-rwxr-xr-x
eps2eps
639
B
-rwxr-xr-x
eqn
188.45
KB
-rwxr-xr-x
esc-m
14.16
KB
-rwxr-xr-x
eutp
26.16
KB
-rwxr-xr-x
evince
519.73
KB
-rwxr-xr-x
evince-previewer
70.52
KB
-rwxr-xr-x
evince-thumbnailer
18.38
KB
-rwxr-xr-x
ex
1.45
MB
-rwxr-xr-x
expand
34.53
KB
-rwxr-xr-x
expiry
22.59
KB
-rwxr-sr-x
expr
102.41
KB
-rwxr-xr-x
factor
70.51
KB
-rwxr-xr-x
faillog
22.59
KB
-rwxr-xr-x
fallocate
22.38
KB
-rwxr-xr-x
false
26.3
KB
-rwxr-xr-x
fc-cache
22.23
KB
-rwxr-xr-x
fc-cat
18.23
KB
-rwxr-xr-x
fc-conflist
14.23
KB
-rwxr-xr-x
fc-list
14.23
KB
-rwxr-xr-x
fc-match
14.23
KB
-rwxr-xr-x
fc-pattern
14.23
KB
-rwxr-xr-x
fc-query
14.23
KB
-rwxr-xr-x
fc-scan
14.23
KB
-rwxr-xr-x
fc-validate
14.23
KB
-rwxr-xr-x
fgconsole
14.23
KB
-rwxr-xr-x
fgrep
28
B
-rwxr-xr-x
file
26.56
KB
-rwxr-xr-x
file2brl
26.21
KB
-rwxr-xr-x
file-roller
528.85
KB
-rwxr-xr-x
filezilla
3.79
MB
-rwxr-xr-x
fincore
22.42
KB
-rwxr-xr-x
find
275.48
KB
-rwxr-xr-x
findmnt
63.61
KB
-rwxr-xr-x
firefox
2.32
KB
-rwxr-xr-x
flock
22.48
KB
-rwxr-xr-x
fmt
38.51
KB
-rwxr-xr-x
fold
34.51
KB
-rwxr-xr-x
fonttosfnt
38.16
KB
-rwxr-xr-x
foo2ddst
30.96
KB
-rwxr-xr-x
foo2ddst-wrapper
16.86
KB
-rwxr-xr-x
foo2hbpl2
30.99
KB
-rwxr-xr-x
foo2hbpl2-wrapper
17.91
KB
-rwxr-xr-x
foo2hiperc
42.99
KB
-rwxr-xr-x
foo2hiperc-wrapper
18.11
KB
-rwxr-xr-x
foo2hp
38.96
KB
-rwxr-xr-x
foo2hp2600-wrapper
18.75
KB
-rwxr-xr-x
foo2lava
42.95
KB
-rwxr-xr-x
foo2lava-wrapper
19.61
KB
-rwxr-xr-x
foo2oak
38.89
KB
-rwxr-xr-x
foo2oak-wrapper
17.45
KB
-rwxr-xr-x
foo2qpdl
43.03
KB
-rwxr-xr-x
foo2qpdl-wrapper
19.06
KB
-rwxr-xr-x
foo2slx
30.93
KB
-rwxr-xr-x
foo2slx-wrapper
17.19
KB
-rwxr-xr-x
foo2xqx
31
KB
-rwxr-xr-x
foo2xqx-wrapper
17.16
KB
-rwxr-xr-x
foo2zjs
43.03
KB
-rwxr-xr-x
foo2zjs-icc2ps
14.31
KB
-rwxr-xr-x
foo2zjs-pstops
2.93
KB
-rwxr-xr-x
foo2zjs-wrapper
25.34
KB
-rwxr-xr-x
foomatic-rip
107.41
KB
-rwxr-xr-x
fprintd-delete
86.38
KB
-rwxr-xr-x
fprintd-enroll
90.86
KB
-rwxr-xr-x
fprintd-list
78.38
KB
-rwxr-xr-x
fprintd-verify
86.38
KB
-rwxr-xr-x
free
26.23
KB
-rwxr-xr-x
ftp
178.9
KB
-rwxr-xr-x
funzip
22.3
KB
-rwxr-xr-x
fuser
39.31
KB
-rwxr-xr-x
fusermount
34.38
KB
-rwsr-xr-x
fusermount3
34.38
KB
-rwsr-xr-x
futurize
960
B
-rwxr-xr-x
fwupdagent
190.3
KB
-rwxr-xr-x
fwupdate
82.3
KB
-rwxr-xr-x
fwupdmgr
190.3
KB
-rwxr-xr-x
fwupdtool
394.92
KB
-rwxr-xr-x
fzputtygen
210.23
KB
-rwxr-xr-x
fzsftp
562.73
KB
-rwxr-xr-x
gamemoded
154.65
KB
-rwxr-xr-x
gamma4scanimage
14.3
KB
-rwxr-xr-x
gapplication
22.38
KB
-rwxr-xr-x
gatttool
103.45
KB
-rwxr-xr-x
gcalccmd
314.39
KB
-rwxr-xr-x
gcore
3.4
KB
-rwxr-xr-x
gcr-viewer
14.37
KB
-rwxr-xr-x
gdb
9.8
MB
-rwxr-xr-x
gdb-add-index
4.52
KB
-rwxr-xr-x
gdbtui
126
B
-rwxr-xr-x
gdbus
50.38
KB
-rwxr-xr-x
gdialog
9.01
KB
-rwxr-xr-x
gdk-pixbuf-csource
14.33
KB
-rwxr-xr-x
gdk-pixbuf-pixdata
14.31
KB
-rwxr-xr-x
gdk-pixbuf-thumbnailer
18.39
KB
-rwxr-xr-x
gdmflexiserver
22.78
KB
-rwxr-xr-x
gdm-screenshot
18.41
KB
-rwxr-xr-x
gedit
14.3
KB
-rwxr-xr-x
genisoimage
645.9
KB
-rwxr-xr-x
geqn
188.45
KB
-rwxr-xr-x
GET
15.82
KB
-rwxr-xr-x
getconf
34.29
KB
-rwxr-xr-x
geteltorito
6.06
KB
-rwxr-xr-x
getent
38.65
KB
-rwxr-xr-x
getfacl
30.81
KB
-rwxr-xr-x
getkeycodes
14.23
KB
-rwxr-xr-x
getopt
22.38
KB
-rwxr-xr-x
gettext
34.38
KB
-rwxr-xr-x
gettext.sh
5.07
KB
-rwxr-xr-x
ghostscript
14.15
KB
-rwxr-xr-x
ginstall-info
103.23
KB
-rwxr-xr-x
gio
90.4
KB
-rwxr-xr-x
gio-querymodules
14.3
KB
-rwxr-xr-x
gipddecode
18.31
KB
-rwxr-xr-x
gjs
22.72
KB
-rwxr-xr-x
gjs-console
22.72
KB
-rwxr-xr-x
gkbd-keyboard-display
14.3
KB
-rwxr-xr-x
glib-compile-schemas
50.3
KB
-rwxr-xr-x
gnome-calculator
914.84
KB
-rwxr-xr-x
gnome-calendar
644.57
KB
-rwxr-xr-x
gnome-characters
299
B
-rwxr-xr-x
gnome-control-center
4.47
MB
-rwxr-xr-x
gnome-disk-image-mounter
22.38
KB
-rwxr-xr-x
gnome-disks
727.49
KB
-rwxr-xr-x
gnome-extensions
62.45
KB
-rwxr-xr-x
gnome-font-viewer
94.85
KB
-rwxr-xr-x
gnome-help
66.23
KB
-rwxr-xr-x
gnome-keyring
22.54
KB
-rwxr-xr-x
gnome-keyring-3
22.54
KB
-rwxr-xr-x
gnome-keyring-daemon
993.29
KB
-rwxr-xr-x
gnome-language-selector
1.41
KB
-rwxr-xr-x
gnome-logs
190.88
KB
-rwxr-xr-x
gnome-power-statistics
66.28
KB
-rwxr-xr-x
gnome-session
803
B
-rwxr-xr-x
gnome-session-custom-session
54
B
-rwxr-xr-x
gnome-session-inhibit
22.31
KB
-rwxr-xr-x
gnome-session-properties
66.26
KB
-rwxr-xr-x
gnome-session-quit
14.61
KB
-rwxr-xr-x
gnome-shell
26.63
KB
-rwxr-xr-x
gnome-shell-extension-tool
1.67
KB
-rwxr-xr-x
gnome-shell-perf-tool
10.36
KB
-rwxr-xr-x
gnome-system-monitor
350.36
KB
-rwxr-xr-x
gnome-terminal
3.32
KB
-rwxr-xr-x
gnome-terminal.real
75.52
KB
-rwxr-xr-x
gnome-terminal.wrapper
2.65
KB
-rwxr-xr-x
gnome-text-editor
14.3
KB
-rwxr-xr-x
gnome-thumbnail-font
26.3
KB
-rwxr-xr-x
gnome-todo
406.87
KB
-rwxr-xr-x
gnome-www-browser
2.32
KB
-rwxr-xr-x
gpasswd
70.38
KB
-rwsr-xr-x
gpg
1
MB
-rwxr-xr-x
gpg-agent
312.96
KB
-rwxr-xr-x
gpgcompose
496.48
KB
-rwxr-xr-x
gpgconf
126.73
KB
-rwxr-xr-x
gpg-connect-agent
82.99
KB
-rwxr-xr-x
gpgparsemail
34.38
KB
-rwxr-xr-x
gpgsm
418.9
KB
-rwxr-xr-x
gpgsplit
26.55
KB
-rwxr-xr-x
gpgtar
63.39
KB
-rwxr-xr-x
gpgv
271.04
KB
-rwxr-xr-x
gpg-wks-server
115.05
KB
-rwxr-xr-x
gpg-zip
3.43
KB
-rwxr-xr-x
gpic
200.04
KB
-rwxr-xr-x
gpu-manager
78.82
KB
-rwxr-xr-x
grdctl
26.38
KB
-rwxr-xr-x
grep
178.45
KB
-rwxr-xr-x
gresource
22.3
KB
-rwxr-xr-x
groff
94.5
KB
-rwxr-xr-x
grog
2.71
KB
-rwxr-xr-x
grops
162.55
KB
-rwxr-xr-x
grotty
118.52
KB
-rwxr-xr-x
groups
34.51
KB
-rwxr-xr-x
grub-editenv
376.95
KB
-rwxr-xr-x
grub-file
816.45
KB
-rwxr-xr-x
grub-fstest
937.92
KB
-rwxr-xr-x
grub-glue-efi
247.86
KB
-rwxr-xr-x
grub-kbdcomp
1.64
KB
-rwxr-xr-x
grub-menulst2cfg
228.13
KB
-rwxr-xr-x
grub-mkfont
272.42
KB
-rwxr-xr-x
grub-mkimage
361.05
KB
-rwxr-xr-x
grub-mklayout
252.17
KB
-rwxr-xr-x
grub-mknetdir
417.66
KB
-rwxr-xr-x
grub-mkpasswd-pbkdf2
256.2
KB
-rwxr-xr-x
grub-mkrelpath
247.58
KB
-rwxr-xr-x
grub-mkrescue
998.47
KB
-rwxr-xr-x
grub-mkstandalone
493.95
KB
-rwxr-xr-x
grub-mount
760.84
KB
-rwxr-xr-x
grub-ntldr-img
38.24
KB
-rwxr-xr-x
grub-render-label
828.83
KB
-rwxr-xr-x
grub-script-check
275.7
KB
-rwxr-xr-x
grub-syslinux2cfg
781.34
KB
-rwxr-xr-x
gs
14.15
KB
-rwxr-xr-x
gsbj
350
B
-rwxr-xr-x
gsdj
352
B
-rwxr-xr-x
gsdj500
352
B
-rwxr-xr-x
gsettings
30.3
KB
-rwxr-xr-x
gslj
353
B
-rwxr-xr-x
gslp
350
B
-rwxr-xr-x
gsnd
277
B
-rwxr-xr-x
gst-device-monitor-1.0
22.4
KB
-rwxr-xr-x
gst-discoverer-1.0
34.32
KB
-rwxr-xr-x
gst-inspect-1.0
62.4
KB
-rwxr-xr-x
gst-launch-1.0
38.33
KB
-rwxr-xr-x
gst-play-1.0
50.4
KB
-rwxr-xr-x
gstreamer-codec-install
22.15
KB
-rwxr-xr-x
gst-stats-1.0
34.38
KB
-rwxr-xr-x
gst-tester-1.0
14.31
KB
-rwxr-xr-x
gst-typefind-1.0
18.31
KB
-rwxr-xr-x
gtbl
126.48
KB
-rwxr-xr-x
gtf
18.31
KB
-rwxr-xr-x
gtk4-builder-tool
54.43
KB
-rwxr-xr-x
gtk4-encode-symbolic-svg
7.99
MB
-rwxr-xr-x
gtk4-launch
18.46
KB
-rwxr-xr-x
gtk4-query-settings
14.3
KB
-rwxr-xr-x
gtk4-update-icon-cache
38.73
KB
-rwxr-xr-x
gtk-builder-tool
34.73
KB
-rwxr-xr-x
gtk-encode-symbolic-svg
18.41
KB
-rwxr-xr-x
gtk-launch
18.46
KB
-rwxr-xr-x
gtk-query-settings
14.3
KB
-rwxr-xr-x
gtk-update-icon-cache
38.57
KB
-rwxr-xr-x
gunzip
2.29
KB
-rwxr-xr-x
gzexe
6.3
KB
-rwxr-xr-x
gzip
91.23
KB
-rwxr-xr-x
h2ph
28.54
KB
-rwxr-xr-x
h2xs
59.51
KB
-rwxr-xr-x
hardlink
34.43
KB
-rwxr-xr-x
hbpldecode
26.31
KB
-rwxr-xr-x
hciattach
56.3
KB
-rwxr-xr-x
hciconfig
164.02
KB
-rwxr-xr-x
hcitool
159.76
KB
-rwxr-xr-x
hd
50.39
KB
-rwxr-xr-x
head
42.51
KB
-rwxr-xr-x
HEAD
15.82
KB
-rwxr-xr-x
helpztags
2.46
KB
-rwxr-xr-x
hex2hcd
18.23
KB
-rwxr-xr-x
hexdump
50.39
KB
-rwxr-xr-x
hipercdecode
18.31
KB
-rwxr-xr-x
host
118.82
KB
-rwxr-xr-x
hostid
30.51
KB
-rwxr-xr-x
hostname
22.23
KB
-rwxr-xr-x
hostnamectl
30.38
KB
-rwxr-xr-x
hp-align
9.14
KB
-rwxr-xr-x
hp-check
39.2
KB
-rwxr-xr-x
hp-clean
7.05
KB
-rwxr-xr-x
hp-colorcal
9.08
KB
-rwxr-xr-x
hp-config_usb_printer
6.98
KB
-rwxr-xr-x
hp-doctor
12.69
KB
-rwxr-xr-x
hp-firmware
6.47
KB
-rwxr-xr-x
hp-info
6.26
KB
-rwxr-xr-x
hp-levels
6.85
KB
-rwxr-xr-x
hp-logcapture
12.15
KB
-rwxr-xr-x
hp-makeuri
5.6
KB
-rwxr-xr-x
hp-pkservice
3.13
KB
-rwxr-xr-x
hp-plugin
13.62
KB
-rwxr-xr-x
hp-plugin-ubuntu
719
B
-rwxr-xr-x
hp-probe
7.98
KB
-rwxr-xr-x
hp-query
4.94
KB
-rwxr-xr-x
hp-scan
86.9
KB
-rwxr-xr-x
hp-setup
37.25
KB
-rwxr-xr-x
hp-testpage
5.98
KB
-rwxr-xr-x
hp-timedate
3.31
KB
-rwxr-xr-x
hwe-support-status
10.58
KB
-rwxr-xr-x
i386
26.65
KB
-rwxr-xr-x
ibus
38.37
KB
-rwxr-xr-x
ibus-daemon
194.42
KB
-rwxr-xr-x
ibus-setup
1.15
KB
-rwxr-xr-x
ibus-table-createdb
1.11
KB
-rwxr-xr-x
iceauth
42.42
KB
-rwxr-xr-x
ico
50.44
KB
-rwxr-xr-x
iconv
66.41
KB
-rwxr-xr-x
id
38.51
KB
-rwxr-xr-x
iecset
26.38
KB
-rwxr-xr-x
ijs_pxljr
34.53
KB
-rwxr-xr-x
im-config
11.03
KB
-rwxr-xr-x
im-launch
1.76
KB
-rwxr-xr-x
info
301.74
KB
-rwxr-xr-x
infobrowser
301.74
KB
-rwxr-xr-x
infocmp
62.38
KB
-rwxr-xr-x
infotocap
86.41
KB
-rwxr-xr-x
inputattach
33.75
KB
-rwxr-xr-x
install
142.52
KB
-rwxr-xr-x
install-info
103.23
KB
-rwxr-xr-x
install-printerdriver
95
B
-rwxr-xr-x
instmodsh
4.27
KB
-rwxr-xr-x
intel-virtual-output
70.31
KB
-rwxr-xr-x
ionice
18.38
KB
-rwxr-xr-x
ip
702.05
KB
-rwxr-xr-x
ipcmk
22.45
KB
-rwxr-xr-x
ipcrm
18.38
KB
-rwxr-xr-x
ipcs
38.38
KB
-rwxr-xr-x
ipod-read-sysinfo-extended
22.3
KB
-rwxr-xr-x
ipod-time-sync
14.3
KB
-rwxr-xr-x
ippfind
42.4
KB
-rwxr-xr-x
ipptool
94.3
KB
-rwxr-xr-x
iptables-xml
96.95
KB
-rwxr-xr-x
ischroot
14.2
KB
-rwxr-xr-x
isdv4-serial-debugger
18.31
KB
-rwxr-xr-x
isdv4-serial-inputattach
18.31
KB
-rwxr-xr-x
isodump
183.27
KB
-rwxr-xr-x
isoinfo
346.52
KB
-rwxr-xr-x
isovfy
187.27
KB
-rwxr-xr-x
ispell-wrapper
7.05
KB
-rwxr-xr-x
join
46.55
KB
-rwxr-xr-x
journalctl
78.39
KB
-rwxr-xr-x
jpgicc
34.33
KB
-rwxr-xr-x
json_pp
4.88
KB
-rwxr-xr-x
kbdinfo
18.23
KB
-rwxr-xr-x
kbd_mode
14.52
KB
-rwxr-xr-x
kbxutil
62.83
KB
-rwxr-xr-x
kernel-install
4.79
KB
-rwxr-xr-x
kerneloops-submit
14.15
KB
-rwxr-xr-x
keyring
961
B
-rwxr-xr-x
kill
30.23
KB
-rwxr-xr-x
killall
31.34
KB
-rwxr-xr-x
kmod
166.36
KB
-rwxr-xr-x
kmodsign
18.45
KB
-rwxr-xr-x
l2ping
14.16
KB
-rwxr-xr-x
l2test
34.49
KB
-rwxr-xr-x
laptop-detect
3.73
KB
-rwxr-xr-x
last
34.38
KB
-rwxr-xr-x
lastb
34.38
KB
-rwxr-xr-x
lastlog
27.63
KB
-rwxr-xr-x
lavadecode
22.31
KB
-rwxr-xr-x
lcf
7.6
KB
-rwxr-xr-x
ldd
5.32
KB
-rwxr-xr-x
less
194.38
KB
-rwxr-xr-x
lessecho
14.31
KB
-rwxr-xr-x
lessfile
8.83
KB
-rwxr-xr-x
lesskey
23.7
KB
-rwxr-xr-x
lesspipe
8.83
KB
-rwxr-xr-x
lexgrog
99.75
KB
-rwxr-xr-x
libnetcfg
15.41
KB
-rwxr-xr-x
libreoffice
6.57
KB
-rwxr-xr-x
libwacom-list-devices
14.41
KB
-rwxr-xr-x
libwacom-list-local-devices
18.46
KB
-rwxr-xr-x
libwacom-show-stylus
5.99
KB
-rwxr-xr-x
libwacom-update-db
8.9
KB
-rwxr-xr-x
link
30.51
KB
-rwxr-xr-x
linkicc
26.37
KB
-rwxr-xr-x
linux32
26.65
KB
-rwxr-xr-x
linux64
26.65
KB
-rwxr-xr-x
linux-boot-prober
1.54
KB
-rwxr-xr-x
linux-check-removal
3.99
KB
-rwxr-xr-x
linux-update-symlinks
6.17
KB
-rwxr-xr-x
linux-version
2.63
KB
-rwxr-xr-x
listres
14.73
KB
-rwxr-xr-x
ln
58.51
KB
-rwxr-xr-x
lnstat
22.66
KB
-rwxr-xr-x
loadkeys
198.76
KB
-rwxr-xr-x
loadunimap
30.32
KB
-rwxr-xr-x
localc
59
B
-rwxr-xr-x
locale
57.56
KB
-rwxr-xr-x
locale-check
14.15
KB
-rwxr-xr-x
localectl
26.37
KB
-rwxr-xr-x
localedef
326.96
KB
-rwxr-xr-x
lodraw
59
B
-rwxr-xr-x
loffice
53
B
-rwxr-xr-x
lofromtemplate
64
B
-rwxr-xr-x
logger
34.97
KB
-rwxr-xr-x
login
51.73
KB
-rwxr-xr-x
loginctl
58.48
KB
-rwxr-xr-x
logname
30.51
KB
-rwxr-xr-x
loimpress
62
B
-rwxr-xr-x
lomath
59
B
-rwxr-xr-x
look
18.38
KB
-rwxr-xr-x
loweb
58
B
-rwxr-xr-x
lowntfs-3g
114.98
KB
-rwxr-xr-x
lowriter
61
B
-rwxr-xr-x
lp
26.3
KB
-rwxr-xr-x
lpoptions
22.38
KB
-rwxr-xr-x
lpq
22.38
KB
-rwxr-xr-x
lpr
18.3
KB
-rwxr-xr-x
lprm
14.3
KB
-rwxr-xr-x
lp_solve
58.15
KB
-rwxr-xr-x
lpstat
38.63
KB
-rwxr-xr-x
ls
134.98
KB
-rwxr-xr-x
lsattr
14.31
KB
-rwxr-xr-x
lsblk
122.38
KB
-rwxr-xr-x
lsb_release
3.55
KB
-rwxr-xr-x
lscpu
98.38
KB
-rwxr-xr-x
lshw
901.2
KB
-rwxr-xr-x
lsinitramfs
706
B
-rwxr-xr-x
lsipc
50.38
KB
-rwxr-xr-x
lslocks
30.7
KB
-rwxr-xr-x
lslogins
50.38
KB
-rwxr-xr-x
lsmem
34.38
KB
-rwxr-xr-x
lsmod
166.36
KB
-rwxr-xr-x
lsns
38.38
KB
-rwxr-xr-x
lsof
163.62
KB
-rwxr-xr-x
lspci
92.08
KB
-rwxr-xr-x
lspgpot
1.06
KB
-rwxr-xr-x
lsusb
246.52
KB
-rwxr-xr-x
luit
48.44
KB
-rwxr-xr-x
lwp-download
10.05
KB
-rwxr-xr-x
lwp-dump
2.65
KB
-rwxr-xr-x
lwp-mirror
2.36
KB
-rwxr-xr-x
lwp-request
15.82
KB
-rwxr-xr-x
lzcat
82.52
KB
-rwxr-xr-x
lzcmp
6.86
KB
-rwxr-xr-x
lzdiff
6.86
KB
-rwxr-xr-x
lzegrep
5.87
KB
-rwxr-xr-x
lzfgrep
5.87
KB
-rwxr-xr-x
lzgrep
5.87
KB
-rwxr-xr-x
lzless
1.76
KB
-rwxr-xr-x
lzma
82.52
KB
-rwxr-xr-x
lzmainfo
14.23
KB
-rwxr-xr-x
lzmore
2.11
KB
-rwxr-xr-x
m2300w
28.83
KB
-rwxr-xr-x
m2300w-wrapper
14.24
KB
-rwxr-xr-x
m2400w
28.83
KB
-rwxr-xr-x
mako-render
958
B
-rwxr-xr-x
man
117.68
KB
-rwxr-xr-x
mandb
139.94
KB
-rwxr-xr-x
manpath
30.78
KB
-rwxr-xr-x
man-recode
35.68
KB
-rwxr-xr-x
mapscrn
30.32
KB
-rwxr-xr-x
mawk
154.79
KB
-rwxr-xr-x
mcookie
26.45
KB
-rwxr-xr-x
md5sum
42.41
KB
-rwxr-xr-x
md5sum.textutils
42.41
KB
-rwxr-xr-x
mdig
50.4
KB
-rwxr-xr-x
mesa-overlay-control.py
5.67
KB
-rwxr-xr-x
mesg
14.38
KB
-rwxr-xr-x
migrate-pubring-from-classic-gpg
2.99
KB
-rwxr-xr-x
mimeopen
9.34
KB
-rwxr-xr-x
mimetype
12.76
KB
-rwxr-xr-x
min12xxw
27.45
KB
-rwxr-xr-x
mkdir
66.51
KB
-rwxr-xr-x
mkfifo
38.51
KB
-rwxr-xr-x
mkfontdir
65
B
-rwxr-xr-x
mkfontscale
42.67
KB
-rwxr-xr-x
mkisofs
645.9
KB
-rwxr-xr-x
mk_modmap
15.78
KB
-rwxr-xr-x
mknod
42.51
KB
-rwxr-xr-x
mkpasswd
26.38
KB
-rwxr-xr-x
mksquashfs
254.68
KB
-rwxr-xr-x
mktemp
38.51
KB
-rwxr-xr-x
mkzftree
30.29
KB
-rwxr-xr-x
mmcli
273.84
KB
-rwxr-xr-x
mokutil
59.48
KB
-rwxr-xr-x
monitor-sensor
18.3
KB
-rwxr-xr-x
more
42.38
KB
-rwxr-xr-x
mount
46.38
KB
-rwsr-xr-x
mountpoint
18.38
KB
-rwxr-xr-x
mousetweaks
70.23
KB
-rwxr-xr-x
mscompress
14.3
KB
-rwxr-xr-x
msexpand
14.3
KB
-rwxr-xr-x
mt
66.73
KB
-rwxr-xr-x
mt-gnu
66.73
KB
-rwxr-xr-x
mtr
72.25
KB
-rwxr-xr-x
mtr-packet
38.3
KB
-rwxr-xr-x
mv
134.52
KB
-rwxr-xr-x
named-checkconf
38.4
KB
-rwxr-xr-x
named-checkzone
30.4
KB
-rwxr-xr-x
named-compilezone
30.4
KB
-rwxr-xr-x
named-journalprint
14.3
KB
-rwxr-xr-x
named-nzd2nzf
14.3
KB
-rwxr-xr-x
named-rrchecker
22.3
KB
-rwxr-xr-x
namei
22.38
KB
-rwxr-xr-x
nano
276.52
KB
-rwxr-xr-x
nautilus
1.63
MB
-rwxr-xr-x
nautilus-autorun-software
18.3
KB
-rwxr-xr-x
nautilus-sendto
22.23
KB
-rwxr-xr-x
nawk
154.79
KB
-rwxr-xr-x
nc
38.63
KB
-rwxr-xr-x
nc.openbsd
38.63
KB
-rwxr-xr-x
neqn
913
B
-rwxr-xr-x
netcat
38.63
KB
-rwxr-xr-x
netstat
154.59
KB
-rwxr-xr-x
networkctl
102.38
KB
-rwxr-xr-x
networkd-dispatcher
19.71
KB
-rwxr-xr-x
newgrp
39.55
KB
-rwsr-xr-x
ngettext
34.38
KB
-rwxr-xr-x
nice
34.51
KB
-rwxr-xr-x
nisdomainname
22.23
KB
-rwxr-xr-x
nl
98.57
KB
-rwxr-xr-x
nm-applet
268
KB
-rwxr-xr-x
nmcli
926.77
KB
-rwxr-xr-x
nm-connection-editor
963.02
KB
-rwxr-xr-x
nm-online
22.38
KB
-rwxr-xr-x
nmtui
734.35
KB
-rwxr-xr-x
nmtui-connect
734.35
KB
-rwxr-xr-x
nmtui-edit
734.35
KB
-rwxr-xr-x
nmtui-hostname
734.35
KB
-rwxr-xr-x
nohup
34.41
KB
-rwxr-xr-x
notify-send
18.23
KB
-rwxr-xr-x
nproc
34.51
KB
-rwxr-xr-x
nroff
3.22
KB
-rwxr-xr-x
nsec3hash
14.3
KB
-rwxr-xr-x
nsenter
26.6
KB
-rwxr-xr-x
nslookup
118.82
KB
-rwxr-xr-x
nstat
30.38
KB
-rwxr-xr-x
nsupdate
74.55
KB
-rwxr-xr-x
ntfs-3g
159.01
KB
-rwxr-xr-x
ntfs-3g.probe
14.38
KB
-rwxr-xr-x
ntfscat
26.38
KB
-rwxr-xr-x
ntfscluster
38.38
KB
-rwxr-xr-x
ntfscmp
30.38
KB
-rwxr-xr-x
ntfsdecrypt
42.38
KB
-rwxr-xr-x
ntfsfallocate
26.38
KB
-rwxr-xr-x
ntfsfix
34.38
KB
-rwxr-xr-x
ntfsinfo
54.38
KB
-rwxr-xr-x
ntfsls
27.45
KB
-rwxr-xr-x
ntfsmove
30.38
KB
-rwxr-xr-x
ntfsrecover
106.38
KB
-rwxr-xr-x
ntfssecaudit
78.86
KB
-rwxr-xr-x
ntfstruncate
26.3
KB
-rwxr-xr-x
ntfsusermap
18.3
KB
-rwxr-xr-x
ntfswipe
42.91
KB
-rwxr-xr-x
numfmt
54.54
KB
-rwxr-xr-x
nvidia-detector
270
B
-rwxr-xr-x
oakdecode
18.33
KB
-rwxr-xr-x
obexctl
102.24
KB
-rwxr-xr-x
oclock
23.66
KB
-rwxr-xr-x
od
66.51
KB
-rwxr-xr-x
oem-getlogs
8.59
KB
-rwxr-xr-x
on_ac_power
3.7
KB
-rwxr-xr-x
oomctl
18.37
KB
-rwxr-xr-x
open
25.46
KB
-rwxr-xr-x
openssl
977.8
KB
-rwxr-xr-x
openvt
22.59
KB
-rwxr-xr-x
opldecode
18.31
KB
-rwxr-xr-x
orca
9.05
KB
-rwxr-xr-x
orca-dm-wrapper
70
B
-rwxr-xr-x
os-prober
4.44
KB
-rwxr-xr-x
p11-kit
30.38
KB
-rwxr-xr-x
pacat
50.41
KB
-rwxr-xr-x
pacmd
18.38
KB
-rwxr-xr-x
pactl
94.4
KB
-rwxr-xr-x
padsp
2.18
KB
-rwxr-xr-x
pager
194.38
KB
-rwxr-xr-x
pa-info
2.04
KB
-rwxr-xr-x
pamon
50.41
KB
-rwxr-xr-x
paperconf
14.15
KB
-rwxr-xr-x
paplay
50.41
KB
-rwxr-xr-x
parec
50.41
KB
-rwxr-xr-x
parecord
50.41
KB
-rwxr-xr-x
partx
58.38
KB
-rwxr-xr-x
passwd
58.57
KB
-rwsr-xr-x
paste
34.41
KB
-rwxr-xr-x
pasteurize
964
B
-rwxr-xr-x
pasuspender
22.39
KB
-rwxr-xr-x
patch
186.52
KB
-rwxr-xr-x
pathchk
34.51
KB
-rwxr-xr-x
pax11publish
14.3
KB
-rwxr-xr-x
pdb3
61.74
KB
-rwxr-xr-x
pdb3.10
61.74
KB
-rwxr-xr-x
pdf2dsc
698
B
-rwxr-xr-x
pdf2ps
909
B
-rwxr-xr-x
pdfattach
18.38
KB
-rwxr-xr-x
pdfdetach
22.49
KB
-rwxr-xr-x
pdffonts
22.52
KB
-rwxr-xr-x
pdfimages
38.52
KB
-rwxr-xr-x
pdfinfo
58.52
KB
-rwxr-xr-x
pdfseparate
22.38
KB
-rwxr-xr-x
pdfsig
34.77
KB
-rwxr-xr-x
pdftocairo
134.48
KB
-rwxr-xr-x
pdftohtml
106.41
KB
-rwxr-xr-x
pdftoppm
34.41
KB
-rwxr-xr-x
pdftops
34.53
KB
-rwxr-xr-x
pdftotext
42.52
KB
-rwxr-xr-x
pdfunite
30.38
KB
-rwxr-xr-x
peekfd
14.3
KB
-rwxr-xr-x
perf
1.58
KB
-rwxr-xr-x
perl
3.63
MB
-rwxr-xr-x
perl5.34.0
3.63
MB
-rwxr-xr-x
perl5.34-x86_64-linux-gnu
14.3
KB
-rwxr-xr-x
perlbug
44.12
KB
-rwxr-xr-x
perldoc
125
B
-rwxr-xr-x
perli11ndoc
56.56
KB
-rwxr-xr-x
perlivp
10.61
KB
-rwxr-xr-x
perlthanks
44.12
KB
-rwxr-xr-x
pf2afm
498
B
-rwxr-xr-x
pfbtopfa
516
B
-rwxr-xr-x
pgrep
30.24
KB
-rwxr-xr-x
pic
200.04
KB
-rwxr-xr-x
pico
276.52
KB
-rwxr-xr-x
piconv
8.16
KB
-rwxr-xr-x
pidof
30.38
KB
-rwxr-xr-x
pidwait
30.24
KB
-rwxr-xr-x
pinentry
74.66
KB
-rwxr-xr-x
pinentry-curses
58.65
KB
-rwxr-xr-x
pinentry-gnome3
74.66
KB
-rwxr-xr-x
pinentry-x11
74.66
KB
-rwxr-xr-x
ping
74.88
KB
-rwxr-xr-x
ping4
74.88
KB
-rwxr-xr-x
ping6
74.88
KB
-rwxr-xr-x
pinky
34.41
KB
-rwxr-xr-x
pipewire
14.38
KB
-rwxr-xr-x
pipewire-media-session
398.75
KB
-rwxr-xr-x
pkaction
18.3
KB
-rwxr-xr-x
pkcheck
22.3
KB
-rwxr-xr-x
pkcon
58.3
KB
-rwxr-xr-x
pkexec
30.15
KB
-rwsr-xr-x
pkill
30.24
KB
-rwxr-xr-x
pkmon
22.3
KB
-rwxr-xr-x
pkttyagent
18.3
KB
-rwxr-xr-x
pl2pm
4.43
KB
-rwxr-xr-x
pldd
22.37
KB
-rwxr-xr-x
plog
146
B
-rwxr-xr-x
plymouth
46.3
KB
-rwxr-xr-x
pmap
34.24
KB
-rwxr-xr-x
pnm2ppa
1.57
MB
-rwxr-xr-x
pod2html
4.04
KB
-rwxr-xr-x
pod2man
14.68
KB
-rwxr-xr-x
pod2text
10.55
KB
-rwxr-xr-x
pod2usage
4.01
KB
-rwxr-xr-x
podchecker
3.57
KB
-rwxr-xr-x
poff
2.77
KB
-rwxr-xr-x
pon
1.33
KB
-rwxr-xr-x
POST
15.82
KB
-rwxr-xr-x
powerprofilesctl
7.9
KB
-rwxr-xr-x
ppdc
98.48
KB
-rwxr-xr-x
ppdhtml
74.48
KB
-rwxr-xr-x
ppdi
90.48
KB
-rwxr-xr-x
ppdmerge
18.38
KB
-rwxr-xr-x
ppdpo
78.48
KB
-rwxr-xr-x
pphs
404
B
-rwxr-xr-x
pr
66.58
KB
-rwxr-xr-x
precat
5.52
KB
-rwxr-xr-x
preconv
54.48
KB
-rwxr-xr-x
preunzip
5.52
KB
-rwxr-xr-x
prezip
5.52
KB
-rwxr-xr-x
prezip-bin
14.3
KB
-rwxr-xr-x
print
18.06
KB
-rwxr-xr-x
printafm
395
B
-rwxr-xr-x
printenv
30.38
KB
-rwxr-xr-x
printer-profile
5.51
KB
-rwxr-xr-x
printf
50.44
KB
-rwxr-xr-x
prlimit
26.89
KB
-rwxr-xr-x
pro
1003
B
-rwxr-xr-x
prove
13.34
KB
-rwxr-xr-x
prtstat
22.38
KB
-rwxr-xr-x
ps
138.45
KB
-rwxr-xr-x
ps2ascii
631
B
-rwxr-xr-x
ps2epsi
1.23
KB
-rwxr-xr-x
ps2pdf
272
B
-rwxr-xr-x
ps2pdf12
215
B
-rwxr-xr-x
ps2pdf13
215
B
-rwxr-xr-x
ps2pdf14
215
B
-rwxr-xr-x
ps2pdfwr
1.05
KB
-rwxr-xr-x
ps2ps
647
B
-rwxr-xr-x
ps2ps2
669
B
-rwxr-xr-x
ps2txt
631
B
-rwxr-xr-x
psfaddtable
26.23
KB
-rwxr-xr-x
psfgettable
26.23
KB
-rwxr-xr-x
psfstriptable
26.23
KB
-rwxr-xr-x
psfxtable
26.23
KB
-rwxr-xr-x
psicc
14.31
KB
-rwxr-xr-x
pslog
14.3
KB
-rwxr-xr-x
pstree
35.32
KB
-rwxr-xr-x
pstree.x11
35.32
KB
-rwxr-xr-x
ptar
3.48
KB
-rwxr-xr-x
ptardiff
2.58
KB
-rwxr-xr-x
ptargrep
4.29
KB
-rwxr-xr-x
ptx
126.55
KB
-rwxr-xr-x
pulseaudio
94.44
KB
-rwxr-xr-x
pw-cat
138.38
KB
-rwxr-xr-x
pw-cli
134.38
KB
-rwxr-xr-x
pwd
34.51
KB
-rwxr-xr-x
pw-dot
34.38
KB
-rwxr-xr-x
pw-dsdplay
138.38
KB
-rwxr-xr-x
pw-dump
94.38
KB
-rwxr-xr-x
pwdx
14.23
KB
-rwxr-xr-x
pw-link
30.38
KB
-rwxr-xr-x
pw-loopback
18.38
KB
-rwxr-xr-x
pw-metadata
14.38
KB
-rwxr-xr-x
pw-mididump
34.38
KB
-rwxr-xr-x
pw-midiplay
138.38
KB
-rwxr-xr-x
pw-midirecord
138.38
KB
-rwxr-xr-x
pw-mon
90.42
KB
-rwxr-xr-x
pw-play
138.38
KB
-rwxr-xr-x
pw-profiler
26.38
KB
-rwxr-xr-x
pw-record
138.38
KB
-rwxr-xr-x
pw-reserve
26.38
KB
-rwxr-xr-x
pw-top
30.38
KB
-rwxr-xr-x
pw-v4l2
1.95
KB
-rwxr-xr-x
py3clean
7.63
KB
-rwxr-xr-x
py3compile
12.88
KB
-rwxr-xr-x
py3versions
11.63
KB
-rwxr-xr-x
pydoc3
79
B
-rwxr-xr-x
pydoc3.10
79
B
-rwxr-xr-x
pygettext3
23.67
KB
-rwxr-xr-x
pygettext3.10
23.67
KB
-rwxr-xr-x
python3
5.66
MB
-rwxr-xr-x
python3.10
5.66
MB
-rwxr-xr-x
python3-futurize
960
B
-rwxr-xr-x
python3-pasteurize
964
B
-rwxr-xr-x
pzstd
702.47
KB
-rwxr-xr-x
qpdldecode
22.6
KB
-rwxr-xr-x
quirks-handler
2.4
KB
-rwxr-xr-x
rbash
1.33
MB
-rwxr-xr-x
rcp
130.59
KB
-rwxr-xr-x
rctest
38.19
KB
-rwxr-xr-x
rdiffdir
8.91
KB
-rwxr-xr-x
rdma
98.52
KB
-rwxr-xr-x
readlink
38.41
KB
-rwxr-xr-x
realpath
38.41
KB
-rwxr-xr-x
red
89
B
-rwxr-xr-x
remmina
875.6
KB
-rwxr-xr-x
remmina-file-wrapper
1.29
KB
-rwxr-xr-x
remmina-gnome
530
B
-rwxr-xr-x
rendercheck
59.78
KB
-rwxr-xr-x
renice
14.38
KB
-rwxr-xr-x
reset
26.31
KB
-rwxr-xr-x
resizecons
26.32
KB
-rwxr-xr-x
resizepart
22.38
KB
-rwxr-xr-x
resolvectl
130.52
KB
-rwxr-xr-x
rev
14.38
KB
-rwxr-xr-x
rfcomm
30.59
KB
-rwxr-xr-x
rgrep
30
B
-rwxr-xr-x
rhythmbox
14.29
KB
-rwxr-xr-x
rhythmbox-client
47.93
KB
-rwxr-xr-x
rlogin
827.04
KB
-rwxr-xr-x
rm
58.51
KB
-rwxr-xr-x
rmdir
42.41
KB
-rwxr-xr-x
rnano
276.52
KB
-rwxr-xr-x
routef
208
B
-rwxr-xr-x
routel
1.62
KB
-rwxr-xr-x
rrsync
12.34
KB
-rwxr-xr-x
rsh
827.04
KB
-rwxr-xr-x
rstart
2.55
KB
-rwxr-xr-x
rstartd
1.43
KB
-rwxr-xr-x
rsync
506.13
KB
-rwxr-xr-x
rsync-ssl
5.02
KB
-rwxr-xr-x
rtstat
22.66
KB
-rwxr-xr-x
runcon
34.51
KB
-rwxr-xr-x
run-mailcap
18.06
KB
-rwxr-xr-x
run-parts
26.54
KB
-rwxr-xr-x
run-with-aspell
57
B
-rwxr-xr-x
rview
1.45
MB
-rwxr-xr-x
rygel
50.37
KB
-rwxr-xr-x
sane-find-scanner
91
KB
-rwxr-xr-x
savelog
10.24
KB
-rwxr-xr-x
sbattach
26.54
KB
-rwxr-xr-x
sbkeysync
34.74
KB
-rwxr-xr-x
sbsiglist
14.6
KB
-rwxr-xr-x
sbsign
34.7
KB
-rwxr-xr-x
sbvarsign
22.73
KB
-rwxr-xr-x
sbverify
34.61
KB
-rwxr-xr-x
scanimage
63.11
KB
-rwxr-xr-x
scp
130.59
KB
-rwxr-xr-x
scp-dbus-service
90
B
-rwxr-xr-x
screendump
14.15
KB
-rwxr-xr-x
script
50.38
KB
-rwxr-xr-x
scriptlive
42.38
KB
-rwxr-xr-x
scriptreplay
34.38
KB
-rwxr-xr-x
sdiff
46.39
KB
-rwxr-xr-x
sdptool
129.71
KB
-rwxr-xr-x
seahorse
1.12
MB
-rwxr-xr-x
sed
110.57
KB
-rwxr-xr-x
see
18.06
KB
-rwxr-xr-x
select-default-iwrap
474
B
-rwxr-xr-x
select-editor
2.39
KB
-rwxr-xr-x
sensible-browser
1.26
KB
-rwxr-xr-x
sensible-editor
1.24
KB
-rwxr-xr-x
sensible-pager
565
B
-rwxr-xr-x
seq
46.51
KB
-rwxr-xr-x
session-migration
22.15
KB
-rwxr-xr-x
sessreg
14.31
KB
-rwxr-xr-x
setarch
26.65
KB
-rwxr-xr-x
setfacl
42.91
KB
-rwxr-xr-x
setfont
50.32
KB
-rwxr-xr-x
setkeycodes
14.23
KB
-rwxr-xr-x
setleds
18.21
KB
-rwxr-xr-x
setlogcons
14.23
KB
-rwxr-xr-x
setmetamode
14.26
KB
-rwxr-xr-x
setpci
30.38
KB
-rwxr-xr-x
setpriv
38.38
KB
-rwxr-xr-x
setsid
14.38
KB
-rwxr-xr-x
setterm
34.38
KB
-rwxr-xr-x
setupcon
38.31
KB
-rwxr-xr-x
setxkbmap
26.7
KB
-rwxr-xr-x
sftp
142.66
KB
-rwxr-xr-x
sg
39.55
KB
-rwsr-xr-x
sh
122.74
KB
-rwxr-xr-x
sha1sum
42.41
KB
-rwxr-xr-x
sha224sum
50.41
KB
-rwxr-xr-x
sha256sum
50.41
KB
-rwxr-xr-x
sha384sum
58.41
KB
-rwxr-xr-x
sha512sum
58.41
KB
-rwxr-xr-x
shasum
9.75
KB
-rwxr-xr-x
shotwell
4.84
MB
-rwxr-xr-x
showconsolefont
18.23
KB
-rwxr-xr-x
showkey
18.23
KB
-rwxr-xr-x
showrgb
14.31
KB
-rwxr-xr-x
shred
50.51
KB
-rwxr-xr-x
shuf
46.51
KB
-rwxr-xr-x
simple-scan
390.36
KB
-rwxr-xr-x
skill
30.23
KB
-rwxr-xr-x
slabtop
22.23
KB
-rwxr-xr-x
sleep
34.51
KB
-rwxr-xr-x
slogin
827.04
KB
-rwxr-xr-x
slxdecode
18.31
KB
-rwxr-xr-x
smproxy
26.31
KB
-rwxr-xr-x
snap
19.09
MB
-rwxr-xr-x
snapctl
6.26
MB
-rwxr-xr-x
snapfuse
38.23
KB
-rwxr-xr-x
snice
30.23
KB
-rwxr-xr-x
soelim
30.48
KB
-rwxr-xr-x
soffice
6.57
KB
-rwxr-xr-x
software-properties-gtk
4.08
KB
-rwxr-xr-x
sort
98.8
KB
-rwxr-xr-x
spa-acp-tool
268.12
KB
-rwxr-xr-x
spa-inspect
78.48
KB
-rwxr-xr-x
spa-json-dump
14.3
KB
-rwxr-xr-x
spa-monitor
14.48
KB
-rwxr-xr-x
spa-resample
30.6
KB
-rwxr-xr-x
spd-conf
1003
B
-rwxr-xr-x
spd-say
31.14
KB
-rwxr-xr-x
spdsend
14.31
KB
-rwxr-xr-x
speaker-test
30.44
KB
-rwxr-xr-x
speech-dispatcher
206.41
KB
-rwxr-xr-x
spice-vdagent
86.77
KB
-rwxr-xr-x
splain
18.96
KB
-rwxr-xr-x
split
50.97
KB
-rwxr-xr-x
splitfont
14.15
KB
-rwxr-xr-x
sqfscat
131.9
KB
-rwxr-xr-x
sqfstar
254.68
KB
-rwxr-xr-x
ss
125.07
KB
-rwxr-xr-x
ssh
827.04
KB
-rwxr-xr-x
ssh-add
166.42
KB
-rwxr-xr-x
ssh-agent
286.43
KB
-rwxr-sr-x
ssh-argv0
1.42
KB
-rwxr-xr-x
ssh-copy-id
12.38
KB
-rwxr-xr-x
ssh-import-id
985
B
-rwxr-xr-x
ssh-import-id-gh
785
B
-rwxr-xr-x
ssh-import-id-lp
785
B
-rwxr-xr-x
ssh-keygen
446.44
KB
-rwxr-xr-x
ssh-keyscan
190.44
KB
-rwxr-xr-x
start-pulseaudio-x11
2.11
KB
-rwxr-xr-x
startx
5.39
KB
-rwxr-xr-x
stat
78.52
KB
-rwxr-xr-x
static-sh
2.09
MB
-rwxr-xr-x
stdbuf
42.51
KB
-rwxr-xr-x
strace
1.88
MB
-rwxr-xr-x
strace-log-merge
1.78
KB
-rwxr-xr-x
streamzip
7.75
KB
-rwxr-xr-x
stty
74.51
KB
-rwxr-xr-x
su
54.38
KB
-rwsr-xr-x
sudo
226.97
KB
-rwsr-xr-x
sudoedit
226.97
KB
-rwsr-xr-x
sudoreplay
87.64
KB
-rwxr-xr-x
sum
34.41
KB
-rwxr-xr-x
switcherooctl
4.54
KB
-rwxr-xr-x
sync
34.41
KB
-rwxr-xr-x
system-config-printer
95
B
-rwxr-xr-x
system-config-printer-applet
80
B
-rwxr-xr-x
systemctl
1.06
MB
-rwxr-xr-x
systemd
1.76
MB
-rwxr-xr-x
systemd-analyze
1.73
MB
-rwxr-xr-x
systemd-ask-password
18.48
KB
-rwxr-xr-x
systemd-cat
18.38
KB
-rwxr-xr-x
systemd-cgls
22.48
KB
-rwxr-xr-x
systemd-cgtop
38.39
KB
-rwxr-xr-x
systemd-cryptenroll
50.53
KB
-rwxr-xr-x
systemd-delta
26.37
KB
-rwxr-xr-x
systemd-detect-virt
18.37
KB
-rwxr-xr-x
systemd-escape
22.37
KB
-rwxr-xr-x
systemd-hwdb
118.66
KB
-rwxr-xr-x
systemd-id128
26.37
KB
-rwxr-xr-x
systemd-inhibit
22.39
KB
-rwxr-xr-x
systemd-machine-id-setup
18.48
KB
-rwxr-xr-x
systemd-mount
50.59
KB
-rwxr-xr-x
systemd-notify
22.38
KB
-rwxr-xr-x
systemd-path
18.37
KB
-rwxr-xr-x
systemd-run
62.57
KB
-rwxr-xr-x
systemd-socket-activate
26.37
KB
-rwxr-xr-x
systemd-stdio-bridge
22.38
KB
-rwxr-xr-x
systemd-sysext
46.49
KB
-rwxr-xr-x
systemd-sysusers
62.68
KB
-rwxr-xr-x
systemd-tmpfiles
98.57
KB
-rwxr-xr-x
systemd-tty-ask-password-agent
34.37
KB
-rwxr-xr-x
systemd-umount
50.59
KB
-rwxr-xr-x
tabs
18.3
KB
-rwxr-xr-x
tac
98.41
KB
-rwxr-xr-x
tail
66.52
KB
-rwxr-xr-x
tar
505.81
KB
-rwxr-xr-x
taskset
22.38
KB
-rwxr-xr-x
tbl
126.48
KB
-rwxr-xr-x
tclsh
14.15
KB
-rwxr-xr-x
tclsh8.6
14.15
KB
-rwxr-xr-x
tcpdump
1.27
MB
-rwxr-xr-x
tee
34.51
KB
-rwxr-xr-x
telnet
107.56
KB
-rwxr-xr-x
telnet.netkit
107.56
KB
-rwxr-xr-x
tempfile
14.02
KB
-rwxr-xr-x
test
42.44
KB
-rwxr-xr-x
thunderbird
2.88
KB
-rwxr-xr-x
tic
86.41
KB
-rwxr-xr-x
tificc
34.38
KB
-rwxr-xr-x
time
26.52
KB
-rwxr-xr-x
timedatectl
46.37
KB
-rwxr-xr-x
timeout
38.95
KB
-rwxr-xr-x
tload
18.24
KB
-rwxr-xr-x
tnftp
178.9
KB
-rwxr-xr-x
toe
22.3
KB
-rwxr-xr-x
top
130.06
KB
-rwxr-xr-x
totem
22.38
KB
-rwxr-xr-x
totem-video-thumbnailer
38.4
KB
-rwxr-xr-x
touch
90.51
KB
-rwxr-xr-x
tput
26.34
KB
-rwxr-xr-x
tr
46.51
KB
-rwxr-xr-x
tracepath
18.15
KB
-rwxr-xr-x
tracker3
613.73
KB
-rwxr-xr-x
transicc
34.32
KB
-rwxr-xr-x
transmission-gtk
982.2
KB
-rwxr-xr-x
transset
22.78
KB
-rwxr-xr-x
troff
718.61
KB
-rwxr-xr-x
true
26.3
KB
-rwxr-xr-x
truncate
34.51
KB
-rwxr-xr-x
trust
206.38
KB
-rwxr-xr-x
tset
26.31
KB
-rwxr-xr-x
tsort
46.51
KB
-rwxr-xr-x
tty
30.51
KB
-rwxr-xr-x
turbostat
1.58
KB
-rwxr-xr-x
tzselect
15.02
KB
-rwxr-xr-x
ua
1003
B
-rwxr-xr-x
ubuntu-advantage
1003
B
-rwxr-xr-x
ubuntu-bug
2.51
KB
-rwxr-xr-x
ubuntu-distro-info
22.89
KB
-rwxr-xr-x
ubuntu-drivers
16.36
KB
-rwxr-xr-x
ubuntu-report
6.29
MB
-rwxr-xr-x
ubuntu-security-status
22.25
KB
-rwxr-xr-x
ucf
40.9
KB
-rwxr-xr-x
ucfq
18.91
KB
-rwxr-xr-x
ucfr
10.47
KB
-rwxr-xr-x
uclampset
26.38
KB
-rwxr-xr-x
ucs2any
26.15
KB
-rwxr-xr-x
udevadm
1.08
MB
-rwxr-xr-x
udisksctl
58.38
KB
-rwxr-xr-x
ul
22.38
KB
-rwxr-xr-x
umax_pp
179.38
KB
-rwxr-xr-x
umount
34.38
KB
-rwsr-xr-x
uname
34.51
KB
-rwxr-xr-x
unattended-upgrade
97.21
KB
-rwxr-xr-x
unattended-upgrades
97.21
KB
-rwxr-xr-x
uncompress
2.29
KB
-rwxr-xr-x
unexpand
34.53
KB
-rwxr-xr-x
unicode_start
2.7
KB
-rwxr-xr-x
unicode_stop
530
B
-rwxr-xr-x
uniq
42.51
KB
-rwxr-xr-x
unity-scope-loader
14.38
KB
-rwxr-xr-x
unlink
30.51
KB
-rwxr-xr-x
unlzma
82.52
KB
-rwxr-xr-x
unmkinitramfs
3.69
KB
-rwxr-xr-x
unopkg
52
B
-rwxr-xr-x
unshare
30.6
KB
-rwxr-xr-x
unsquashfs
131.9
KB
-rwxr-xr-x
unxz
82.52
KB
-rwxr-xr-x
unzip
170.42
KB
-rwxr-xr-x
unzipsfx
78.42
KB
-rwxr-xr-x
unzstd
854.59
KB
-rwxr-xr-x
update-alternatives
58.24
KB
-rwxr-xr-x
update-desktop-database
22.38
KB
-rwxr-xr-x
update-manager
4.66
KB
-rwxr-xr-x
update-mime-database
58.23
KB
-rwxr-xr-x
update-notifier
82.98
KB
-rwxr-xr-x
upower
22.3
KB
-rwxr-xr-x
uptime
14.23
KB
-rwxr-xr-x
usb-creator-gtk
2.87
KB
-rwxr-xr-x
usb-devices
4.33
KB
-rwxr-xr-x
usbhid-dump
30.38
KB
-rwxr-xr-x
usbip
1.58
KB
-rwxr-xr-x
usbipd
1.58
KB
-rwxr-xr-x
usb_printerid
14.31
KB
-rwxr-xr-x
usbreset
14.3
KB
-rwxr-xr-x
users
34.51
KB
-rwxr-xr-x
utmpdump
22.38
KB
-rwxr-xr-x
uuidgen
18.38
KB
-rwxr-xr-x
uuidparse
22.38
KB
-rwxr-xr-x
vdir
134.98
KB
-rwxr-xr-x
vi
1.45
MB
-rwxr-xr-x
view
1.45
MB
-rwxr-xr-x
viewres
31.23
KB
-rwxr-xr-x
vim.tiny
1.45
MB
-rwxr-xr-x
vmstat
38.24
KB
-rwxr-xr-x
vmwarectrl
14.26
KB
-rwxr-xr-x
vstp
26.16
KB
-rwxr-xr-x
w
22.23
KB
-rwxr-xr-x
wall
22.38
KB
-rwxr-xr-x
watch
26.6
KB
-rwxr-xr-x
watchgnupg
18.3
KB
-rwxr-xr-x
wc
42.42
KB
-rwxr-xr-x
wdctl
30.4
KB
-rwxr-xr-x
wget
459.02
KB
-rwxr-xr-x
whatis
47.28
KB
-rwxr-xr-x
whereis
30.84
KB
-rwxr-xr-x
which
946
B
-rwxr-xr-x
which.debianutils
946
B
-rwxr-xr-x
whiptail
30.16
KB
-rwxr-xr-x
who
50.52
KB
-rwxr-xr-x
whoami
30.51
KB
-rwxr-xr-x
whois
155.66
KB
-rwxr-xr-x
whoopsie
46.9
KB
-rwxr-xr-x
whoopsie-preferences
22.14
KB
-rwxr-xr-x
word-list-compress
14.3
KB
-rwxr-xr-x
wpa_passphrase
14.31
KB
-rwxr-xr-x
write
22.38
KB
-rwxr-xr-x
write.ul
22.38
KB
-rwxr-xr-x
X
274
B
-rwxr-xr-x
x11perf
197.46
KB
-rwxr-xr-x
x11perfcomp
2.74
KB
-rwxr-xr-x
x86_64
26.65
KB
-rwxr-xr-x
x86_64-linux-gnu-cpp
906.82
KB
-rwxr-xr-x
x86_64-linux-gnu-cpp-11
906.82
KB
-rwxr-xr-x
x86_energy_perf_policy
1.58
KB
-rwxr-xr-x
xargs
62.41
KB
-rwxr-xr-x
xauth
54.96
KB
-rwxr-xr-x
xbiff
24.16
KB
-rwxr-xr-x
xbrlapi
198.5
KB
-rwxr-xr-x
xcalc
47.48
KB
-rwxr-xr-x
xclipboard
22.58
KB
-rwxr-xr-x
xclock
61.06
KB
-rwxr-xr-x
xcmsdb
35.05
KB
-rwxr-xr-x
xconsole
23.2
KB
-rwxr-xr-x
xcursorgen
22.3
KB
-rwxr-xr-x
xcutsel
18.56
KB
-rwxr-xr-x
xdg-dbus-proxy
50.14
KB
-rwxr-xr-x
xdg-desktop-icon
20.16
KB
-rwxr-xr-x
xdg-desktop-menu
42.27
KB
-rwxr-xr-x
xdg-email
26.3
KB
-rwxr-xr-x
xdg-icon-resource
29.33
KB
-rwxr-xr-x
xdg-mime
41.14
KB
-rwxr-xr-x
xdg-open
25.46
KB
-rwxr-xr-x
xdg-screensaver
37.11
KB
-rwxr-xr-x
xdg-settings
37.52
KB
-rwxr-xr-x
xdg-user-dir
234
B
-rwxr-xr-x
xdg-user-dirs-gtk-update
22.15
KB
-rwxr-xr-x
xdg-user-dirs-update
26.23
KB
-rwxr-xr-x
xditview
108.13
KB
-rwxr-xr-x
xdpyinfo
39.05
KB
-rwxr-xr-x
xdriinfo
14.3
KB
-rwxr-xr-x
xedit
709.34
KB
-rwxr-xr-x
Xephyr
2.35
MB
-rwxr-xr-x
xev
34.63
KB
-rwxr-xr-x
xeyes
23.69
KB
-rwxr-xr-x
xfd
40.01
KB
-rwxr-xr-x
xfontsel
43.85
KB
-rwxr-xr-x
xgamma
14.31
KB
-rwxr-xr-x
xgc
70.38
KB
-rwxr-xr-x
xhost
18.31
KB
-rwxr-xr-x
xinit
22.3
KB
-rwxr-xr-x
xinput
62.83
KB
-rwxr-xr-x
xkbbell
14.32
KB
-rwxr-xr-x
xkbcomp
212.1
KB
-rwxr-xr-x
xkbevd
42.38
KB
-rwxr-xr-x
xkbprint
90.34
KB
-rwxr-xr-x
xkbvleds
23.1
KB
-rwxr-xr-x
xkbwatch
23.16
KB
-rwxr-xr-x
xkeystone
16.58
KB
-rwxr-xr-x
xkill
14.3
KB
-rwxr-xr-x
xload
22.92
KB
-rwxr-xr-x
xlogo
23.19
KB
-rwxr-xr-x
xlsatoms
14.3
KB
-rwxr-xr-x
xlsclients
18.31
KB
-rwxr-xr-x
xlsfonts
26.4
KB
-rwxr-xr-x
xmag
48.31
KB
-rwxr-xr-x
xman
77.2
KB
-rwxr-xr-x
xmessage
23.12
KB
-rwxr-xr-x
xmodmap
42.68
KB
-rwxr-xr-x
xmore
14.53
KB
-rwxr-xr-x
Xorg
274
B
-rwxr-xr-x
xprop
48.61
KB
-rwxr-xr-x
xqxdecode
18.31
KB
-rwxr-xr-x
xrandr
62.41
KB
-rwxr-xr-x
xrdb
34.4
KB
-rwxr-xr-x
xrefresh
14.38
KB
-rwxr-xr-x
x-session-manager
803
B
-rwxr-xr-x
xset
34.31
KB
-rwxr-xr-x
xsetmode
14.31
KB
-rwxr-xr-x
xsetpointer
14.31
KB
-rwxr-xr-x
xsetroot
18.31
KB
-rwxr-xr-x
xsetwacom
63.84
KB
-rwxr-xr-x
xsm
98.71
KB
-rwxr-xr-x
xstdcmap
14.89
KB
-rwxr-xr-x
xsubpp
5.05
KB
-rwxr-xr-x
x-terminal-emulator
2.65
KB
-rwxr-xr-x
xvidtune
43.76
KB
-rwxr-xr-x
xvinfo
18.3
KB
-rwxr-xr-x
Xwayland
2.12
MB
-rwxr-xr-x
xwd
30.31
KB
-rwxr-xr-x
xwininfo
50.38
KB
-rwxr-xr-x
xwud
34.3
KB
-rwxr-xr-x
x-www-browser
2.32
KB
-rwxr-xr-x
xxd
18.28
KB
-rwxr-xr-x
xz
82.52
KB
-rwxr-xr-x
xzcat
82.52
KB
-rwxr-xr-x
xzcmp
6.86
KB
-rwxr-xr-x
xzdiff
6.86
KB
-rwxr-xr-x
xzegrep
5.87
KB
-rwxr-xr-x
xzfgrep
5.87
KB
-rwxr-xr-x
xzgrep
5.87
KB
-rwxr-xr-x
xzless
1.76
KB
-rwxr-xr-x
xzmore
2.11
KB
-rwxr-xr-x
yelp
66.23
KB
-rwxr-xr-x
yes
30.38
KB
-rwxr-xr-x
ypdomainname
22.23
KB
-rwxr-xr-x
zcat
1.94
KB
-rwxr-xr-x
zcmp
1.64
KB
-rwxr-xr-x
zdiff
5.76
KB
-rwxr-xr-x
zdump
26.21
KB
-rwxr-xr-x
zegrep
29
B
-rwxr-xr-x
zenity
128.75
KB
-rwxr-xr-x
zfgrep
29
B
-rwxr-xr-x
zforce
2.03
KB
-rwxr-xr-x
zgrep
7.91
KB
-rwxr-xr-x
zip
198.99
KB
-rwxr-xr-x
zipcloak
70.4
KB
-rwxr-xr-x
zipdetails
58.66
KB
-rwxr-xr-x
zipgrep
2.89
KB
-rwxr-xr-x
zipinfo
170.42
KB
-rwxr-xr-x
zipnote
62.4
KB
-rwxr-xr-x
zipsplit
58.4
KB
-rwxr-xr-x
zjsdecode
26.32
KB
-rwxr-xr-x
zless
2.15
KB
-rwxr-xr-x
zmore
1.8
KB
-rwxr-xr-x
znew
4.47
KB
-rwxr-xr-x
zstd
854.59
KB
-rwxr-xr-x
zstdcat
854.59
KB
-rwxr-xr-x
zstdgrep
3.78
KB
-rwxr-xr-x
zstdless
30
B
-rwxr-xr-x
zstdmt
854.59
KB
-rwxr-xr-x
Delete
Unzip
Zip
${this.title}
Close
Code Editor : zipdetails
#!/usr/bin/perl eval 'exec /usr/bin/perl -S $0 ${1+"$@"}' if 0; # ^ Run only under a shell #!/usr/bin/perl # zipdetails # # Display info on the contents of a Zip file # BEGIN { pop @INC if $INC[-1] eq '.' } use strict; use warnings ; use IO::File; use Encode; use Getopt::Long; # Compression types use constant ZIP_CM_STORE => 0 ; use constant ZIP_CM_IMPLODE => 6 ; use constant ZIP_CM_DEFLATE => 8 ; use constant ZIP_CM_BZIP2 => 12 ; use constant ZIP_CM_LZMA => 14 ; use constant ZIP_CM_PPMD => 98 ; # General Purpose Flag use constant ZIP_GP_FLAG_ENCRYPTED_MASK => (1 << 0) ; use constant ZIP_GP_FLAG_STREAMING_MASK => (1 << 3) ; use constant ZIP_GP_FLAG_PATCHED_MASK => (1 << 5) ; use constant ZIP_GP_FLAG_STRONG_ENCRYPTED_MASK => (1 << 6) ; use constant ZIP_GP_FLAG_LZMA_EOS_PRESENT => (1 << 1) ; use constant ZIP_GP_FLAG_LANGUAGE_ENCODING => (1 << 11) ; # Internal File Attributes use constant ZIP_IFA_TEXT_MASK => 1; # Signatures for each of the headers use constant ZIP_LOCAL_HDR_SIG => 0x04034b50; use constant ZIP_DATA_HDR_SIG => 0x08074b50; use constant ZIP_CENTRAL_HDR_SIG => 0x02014b50; use constant ZIP_END_CENTRAL_HDR_SIG => 0x06054b50; use constant ZIP64_END_CENTRAL_REC_HDR_SIG => 0x06064b50; use constant ZIP64_END_CENTRAL_LOC_HDR_SIG => 0x07064b50; use constant ZIP_ARCHIVE_EXTRA_DATA_SIG => 0x08064b50; use constant ZIP_DIGITAL_SIGNATURE_SIG => 0x05054b50; use constant ZIP_ARCHIVE_EXTRA_DATA_RECORD_SIG => 0x08064b50; # Extra sizes use constant ZIP_EXTRA_HEADER_SIZE => 2 ; use constant ZIP_EXTRA_MAX_SIZE => 0xFFFF ; use constant ZIP_EXTRA_SUBFIELD_ID_SIZE => 2 ; use constant ZIP_EXTRA_SUBFIELD_LEN_SIZE => 2 ; use constant ZIP_EXTRA_SUBFIELD_HEADER_SIZE => ZIP_EXTRA_SUBFIELD_ID_SIZE + ZIP_EXTRA_SUBFIELD_LEN_SIZE; use constant ZIP_EXTRA_SUBFIELD_MAX_SIZE => ZIP_EXTRA_MAX_SIZE - ZIP_EXTRA_SUBFIELD_HEADER_SIZE; my %ZIP_CompressionMethods = ( 0 => 'Stored', 1 => 'Shrunk', 2 => 'Reduced compression factor 1', 3 => 'Reduced compression factor 2', 4 => 'Reduced compression factor 3', 5 => 'Reduced compression factor 4', 6 => 'Imploded', 7 => 'Reserved for Tokenizing compression algorithm', 8 => 'Deflated', 9 => 'Enhanced Deflating using Deflate64(tm)', 10 => 'PKWARE Data Compression Library Imploding', 11 => 'Reserved by PKWARE', 12 => 'BZIP2 ', 13 => 'Reserved by PKWARE', 14 => 'LZMA', 15 => 'Reserved by PKWARE', 16 => 'IBM z/OS CMPSC Compression', 17 => 'Reserved by PKWARE', 18 => 'File is compressed using IBM TERSE (new)', 19 => 'IBM LZ77 z Architecture (PFS)', 93 => 'Zstandard', 94 => 'MP3', 95 => 'XZ', 96 => 'WinZip JPEG Compression', 97 => 'WavPack compressed data', 98 => 'PPMd version I, Rev 1', 99 => 'AES Encryption', ); my %OS_Lookup = ( 0 => "MS-DOS", 1 => "Amiga", 2 => "OpenVMS", 3 => "Unix", 4 => "VM/CMS", 5 => "Atari ST", 6 => "HPFS (OS/2, NT 3.x)", 7 => "Macintosh", 8 => "Z-System", 9 => "CP/M", 10 => "Windoxs NTFS or TOPS-20", 11 => "MVS or NTFS", 12 => "VSE or SMS/QDOS", 13 => "Acorn RISC OS", 14 => "VFAT", 15 => "alternate MVS", 16 => "BeOS", 17 => "Tandem", 18 => "OS/400", 19 => "OS/X (Darwin)", 30 => "AtheOS/Syllable", ); my %Lookup = ( ZIP_LOCAL_HDR_SIG, \&LocalHeader, ZIP_DATA_HDR_SIG, \&DataHeader, ZIP_CENTRAL_HDR_SIG, \&CentralHeader, ZIP_END_CENTRAL_HDR_SIG, \&EndCentralHeader, ZIP64_END_CENTRAL_REC_HDR_SIG, \&Zip64EndCentralHeader, ZIP64_END_CENTRAL_LOC_HDR_SIG, \&Zip64EndCentralLocator, # TODO - Archive Encryption Headers & digital signature #ZIP_ARCHIVE_EXTRA_DATA_RECORD_SIG #ZIP_DIGITAL_SIGNATURE_SIG #ZIP_ARCHIVE_EXTRA_DATA_SIG ); my %Extras = ( 0x0001, ['ZIP64', \&decode_Zip64], 0x0007, ['AV Info', undef], 0x0008, ['Extended Language Encoding', undef], 0x0009, ['OS/2 extended attributes', undef], 0x000a, ['NTFS FileTimes', \&decode_NTFS_Filetimes], 0x000c, ['OpenVMS', undef], 0x000d, ['Unix', undef], 0x000e, ['Stream & Fork Descriptors', undef], 0x000f, ['Patch Descriptor', undef], 0x0014, ['PKCS#7 Store for X.509 Certificates', undef], 0x0015, ['X.509 Certificate ID and Signature for individual file', undef], 0x0016, ['X.509 Certificate ID for Central Directory', undef], 0x0017, ['Strong Encryption Header', undef], 0x0018, ['Record Management Controls', undef], 0x0019, ['PKCS#7 Encryption Recipient Certificate List', undef], 0x0020, ['Reserved for Timestamp record', undef], 0x0021, ['Policy Decryption Key Record', undef], 0x0022, ['Smartcrypt Key Provider Record', undef], 0x0023, ['Smartcrypt Policy Key Data Record', undef], # The Header ID mappings defined by Info-ZIP and third parties are: 0x0065, ['IBM S/390 attributes - uncompressed', \&decodeMVS], 0x0066, ['IBM S/390 attributes - compressed', undef], 0x07c8, ['Info-ZIP Macintosh (old, J. Lee)', undef], 0x2605, ['ZipIt Macintosh (first version)', undef], 0x2705, ['ZipIt Macintosh v 1.3.5 and newer (w/o full filename)', undef], 0x2805, ['ZipIt Macintosh v 1.3.5 and newer ', undef], 0x334d, ["Info-ZIP Macintosh (new, D. Haase's 'Mac3' field)", undef], 0x4154, ['Tandem NSK', undef], 0x4341, ['Acorn/SparkFS (David Pilling)', undef], 0x4453, ['Windows NT security descriptor', \&decode_NT_security], 0x4690, ['POSZIP 4690', undef], 0x4704, ['VM/CMS', undef], 0x470f, ['MVS', undef], 0x4854, ['Theos, old inofficial port', undef], 0x4b46, ['FWKCS MD5 (see below)', undef], 0x4c41, ['OS/2 access control list (text ACL)', undef], 0x4d49, ['Info-ZIP OpenVMS (obsolete)', undef], 0x4d63, ['Macintosh SmartZIP, by Macro Bambini', undef], 0x4f4c, ['Xceed original location extra field', undef], 0x5356, ['AOS/VS (binary ACL)', undef], 0x5455, ['Extended Timestamp', \&decode_UT], 0x554e, ['Xceed unicode extra field', \&decode_Xceed_unicode], 0x5855, ['Info-ZIP Unix (original; also OS/2, NT, etc.)', \&decode_UX], 0x5a4c, ['ZipArchive Unicode Filename', undef], 0x5a4d, ['ZipArchive Offsets Array', undef], 0x6375, ['Info-ZIP Unicode Comment', \&decode_up ], 0x6542, ['BeOS (BeBox, PowerMac, etc.)', undef], 0x6854, ['Theos', undef], 0x7075, ['Info-ZIP Unicode Path', \&decode_up ], 0x756e, ['ASi Unix', undef], 0x7441, ['AtheOS (AtheOS/Syllable attributes)', undef], 0x7855, ['Unix Extra type 2', \&decode_Ux], 0x7875, ['Unix Extra Type 3', \&decode_ux], 0x9901, ['AES Encryption', \&decode_AES], 0xa11e, ['Data Stream Alignment', undef], 0xA220, ['Open Packaging Growth Hint', \&decode_GrowthHint ], 0xCAFE, ['Java Executable', \&decode_Java_exe], 0xfb4a, ['SMS/QDOS', undef], ); my $VERSION = "2.02" ; my $FH; my $ZIP64 = 0 ; my $NIBBLES = 8; my $LocalHeaderCount = 0; my $CentralHeaderCount = 0; my $START; my $OFFSET = U64->new( 0 ); my $TRAILING = 0 ; my $PAYLOADLIMIT = 256; # U64->new( 256 ); my $ZERO = U64->new( 0 ); my $SEEN = Seen->new(); sub prOff { my $offset = shift; my $s = offset($OFFSET); $OFFSET->add($offset); return $s; } sub offset { my $v = shift ; if (ref $v eq 'U64') { my $hi = $v->getHigh(); my $lo = $v->getLow(); if ($hi) { my $hiNib = $NIBBLES - 8 ; sprintf("%0${hiNib}X", $hi) . sprintf("%08X", $lo); } else { sprintf("%0${NIBBLES}X", $lo); } } else { sprintf("%0${NIBBLES}X", $v); } } my ($OFF, $LENGTH, $CONTENT, $TEXT, $VALUE) ; my $FMT1 ; my $FMT2 ; sub setupFormat { my $wantVerbose = shift ; my $nibbles = shift; my $width = '@' . ('>' x ($nibbles -1)); my $space = " " x length($width); my $fmt ; if ($wantVerbose) { $FMT1 = " format STDOUT = $width $width ^<<<<<<<<<<<^<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< \$OFF, \$LENGTH, \$CONTENT, \$TEXT, \$VALUE $space $space ^<<<<<<<<<<<^<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<~~ \$CONTENT, \$TEXT, \$VALUE . "; $FMT2 = " format STDOUT = $width $width ^<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< \$OFF, \$LENGTH, \$CONTENT, \$TEXT, \$VALUE $space $space ^<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<~~ \$CONTENT, \$TEXT, \$VALUE . " ; } else { $FMT1 = " format STDOUT = $width ^<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< \$OFF, \$TEXT, \$VALUE $space ^<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<~~ \$TEXT, \$VALUE . "; $FMT2 = " format STDOUT = $width ^<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< \$OFF, \$TEXT, \$VALUE $space ^<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<~~ \$TEXT, \$VALUE . " ; } eval "$FMT1"; $| = 1; } sub mySpr { my $format = shift ; return "" if ! defined $format; return $format unless @_ ; return sprintf $format, @_ ; } sub out0 { my $size = shift; my $text = shift; my $format = shift; $OFF = prOff($size); $LENGTH = offset($size) ; $CONTENT = '...'; $TEXT = $text; $VALUE = mySpr $format, @_; write; skip($FH, $size); } sub xDump { my $input = shift; $input =~ tr/\0-\37\177-\377/./; return $input; } sub hexDump { my $input = shift; my $out = unpack('H*', $input) ; $out =~ s#(..)# $1#g ; $out =~ s/^ //; $out = uc $out; return $out; } sub out { my $data = shift; my $text = shift; my $format = shift; my $size = length($data) ; $OFF = prOff($size); $LENGTH = offset($size) ; $CONTENT = hexDump($data); $TEXT = $text; $VALUE = mySpr $format, @_; no warnings; write; } sub out1 { my $text = shift; my $format = shift; $OFF = ''; $LENGTH = '' ; $CONTENT = ''; $TEXT = $text; $VALUE = mySpr $format, @_; write; } sub out2 { my $data = shift ; my $text = shift ; my $format = shift; my $size = length($data) ; $OFF = prOff($size); $LENGTH = offset($size); $CONTENT = hexDump($data); $TEXT = $text; $VALUE = mySpr $format, @_; no warnings; eval "$FMT2"; write ; eval "$FMT1"; } sub Value { my $letter = shift; my @value = @_; if ($letter eq 'C') { return Value_C(@value) } elsif ($letter eq 'v') { return Value_v(@value) } elsif ($letter eq 'V') { return Value_V(@value) } elsif ($letter eq 'VV') { return Value_VV(@value) } } sub outer { my $name = shift ; my $unpack = shift ; my $size = shift ; my $cb1 = shift ; my $cb2 = shift ; myRead(my $buff, $size); my (@value) = unpack $unpack, $buff; my $hex = Value($unpack, @value); if (defined $cb1) { my $v ; if (ref $cb1 eq 'CODE') { $v = $cb1->(@value) ; } else { $v = $cb1 ; } $v = "'" . $v unless $v =~ /^'/; $v .= "'" unless $v =~ /'$/; $hex .= " $v" ; } out $buff, $name, $hex ; $cb2->(@value) if defined $cb2 ; return $value[0]; } sub out_C { my $name = shift ; my $cb1 = shift ; my $cb2 = shift ; outer($name, 'C', 1, $cb1, $cb2); } sub out_v { my $name = shift ; my $cb1 = shift ; my $cb2 = shift ; outer($name, 'v', 2, $cb1, $cb2); } sub out_V { my $name = shift ; my $cb1 = shift ; my $cb2 = shift ; outer($name, 'V', 4, $cb1, $cb2); } sub out_VV { my $name = shift ; my $cb1 = shift ; my $cb2 = shift ; outer($name, 'VV', 8, $cb1, $cb2); } # sub outSomeData # { # my $size = shift; # my $message = shift; # my $size64 = U64::mkU64($size); # if ($size64->gt($ZERO)) { # my $size32 = $size64->getLow(); # if ($size64->gt($PAYLOADLIMIT) ) { # out0 $size32, $message; # } else { # myRead(my $buffer, $size32 ); # out $buffer, $message, xDump $buffer ; # } # } # } sub outSomeData { my $size = shift; my $message = shift; if ($size > 0) { if ($size > $PAYLOADLIMIT) { my $before = $FH->tell(); out0 $size, $message; # printf "outSomeData %X %X $size %X\n", $before, $FH->tell(), $size; } else { myRead(my $buffer, $size ); out $buffer, $message, xDump $buffer ; } } } sub unpackValue_C { Value_v(unpack "C", $_[0]); } sub Value_C { sprintf "%02X", $_[0]; } sub unpackValue_v { Value_v(unpack "v", $_[0]); } sub Value_v { sprintf "%04X", $_[0]; } sub unpackValue_V { Value_V(unpack "V", $_[0]); } sub Value_V { my $v = defined $_[0] ? $_[0] : 0; sprintf "%08X", $v; } sub unpackValue_VV { my ($lo, $hi) = unpack ("V V", $_[0]); Value_VV($lo, $hi); } sub Value_U64 { my $u64 = shift ; Value_VV($u64->getLow(), $u64->getHigh()); } sub Value_VV { my $lo = defined $_[0] ? $_[0] : 0; my $hi = defined $_[1] ? $_[1] : 0; if ($hi == 0) { sprintf "%016X", $lo; } else { sprintf("%08X", $hi) . sprintf "%08X", $lo; } } sub Value_VV64 { my $buffer = shift; # This needs perl 5.10 # return unpack "Q<", $buffer; my ($lo, $hi) = unpack ("V V" , $buffer); no warnings 'uninitialized'; return $hi * (0xFFFFFFFF+1) + $lo; } sub read_U64 { my $b ; myRead($b, 8); my ($lo, $hi) = unpack ("V V" , $b); no warnings 'uninitialized'; return ($b, U64->new( $hi, $lo) ); } sub read_VV { my $b ; myRead($b, 8); my ($lo, $hi) = unpack ("V V" , $b); no warnings 'uninitialized'; return ($b, $hi * (0xFFFFFFFF+1) + $lo); } sub read_V { my $b ; myRead($b, 4); return ($b, unpack ("V", $b)); } sub read_v { my $b ; myRead($b, 2); return ($b, unpack "v", $b); } sub read_C { my $b ; myRead($b, 1); return ($b, unpack "C", $b); } sub seekTo { my $offset = shift ; my $loc = shift ; $loc = SEEK_SET if ! defined $loc ; $FH->seek($offset, $loc); $OFFSET = new U64($offset); } sub scanForSignature { my %sigs = map { $_ => 1 } map { substr $_, 2, 2 } # don't want the initial "PK" map { pack "V", $_ } ( ZIP_LOCAL_HDR_SIG , ZIP_DATA_HDR_SIG , ZIP_CENTRAL_HDR_SIG , ZIP_END_CENTRAL_HDR_SIG , ZIP64_END_CENTRAL_REC_HDR_SIG , ZIP64_END_CENTRAL_LOC_HDR_SIG , # ZIP_ARCHIVE_EXTRA_DATA_SIG , # ZIP_DIGITAL_SIGNATURE_SIG , # ZIP_ARCHIVE_EXTRA_DATA_RECORD_SIG , ); my $start = $FH->tell(); my $last = ''; my $buffer ; while ($FH->read($buffer, 1024 * 1000)) { my $combine = substr($last, -4) . $buffer ; $last = $buffer; my $ix = index($combine, "PK") ; next if $ix == -1; my $rest = substr($combine, $ix+2, 2); next unless length $rest == 2 && $sigs{$rest} ; my $v = unpack("v", $rest) ; # possible match my $here = $FH->tell(); seekTo($here - length($combine) + $ix); return 1; } return 0; } my $is64In32 = 0; my $opt_verbose = 0; my $opt_scan = 0; $Getopt::Long::bundling = 1 ; GetOptions("h" => \&Usage, "v" => \$opt_verbose, "scan" => \$opt_scan, "version" => sub { print "$VERSION\n"; exit }, ) or Usage("Invalid command line option\n"); Usage("No zipfile") unless @ARGV == 1; my $filename = shift @ARGV; die "$filename does not exist\n" unless -e $filename ; die "$filename not a standard file\n" unless -f $filename ; $FH = IO::File->new( "<$filename" ) or die "Cannot open $filename: $!\n"; my $FILELEN = -s $filename ; $TRAILING = -s $filename ; $NIBBLES = U64::nibbles(-s $filename) ; #$NIBBLES = int ($NIBBLES / 4) + ( ($NIBBLES % 4) ? 1 : 0 ); #$NIBBLES = 4 * $NIBBLES; # Minimum of 4 nibbles $NIBBLES = 4 if $NIBBLES < 4 ; die "$filename too short to be a zip file\n" if $FILELEN < 22 ; setupFormat($opt_verbose, $NIBBLES); if(0) { # Sanity check that this is a Zip file my ($buffer, $signature) = read_V(); warn "$filename doesn't look like a zip file\n" if $signature != ZIP_LOCAL_HDR_SIG ; $FH->seek(0, SEEK_SET) ; } my @Messages = (); if ($opt_scan) { while(scanForSignature()) { my $here = $FH->tell(); my ($buffer, $signature) = read_V(); my $handler = $Lookup{$signature}; $handler->($signature, $buffer); seekTo($here + 4) ; } dislayMessages(); exit; } our ($CdExists, $CdOffset, @CentralDirectory) = scanCentralDirectory($FH); die "No Central Directory records found\n" if ! $CdExists ; $OFFSET->reset(); $FH->seek(0, SEEK_SET) ; outSomeData($START, "PREFIX DATA") if defined $START && $START > 0 ; my $skippedFrom = 0 ; my $skippedContent = 0 ; while (1) { last if $FH->eof(); my $here = $FH->tell(); if ($here >= $TRAILING) { print "\n" ; outSomeData($FILELEN - $TRAILING, "TRAILING DATA"); last; } my ($buffer, $signature) = read_V(); my $handler = $Lookup{$signature}; if (!defined $handler) { if (@CentralDirectory) { # Should be at offset that central directory says my $locOffset = $CentralDirectory[0][0]; my $delta = $locOffset - $here ; if ($here + 4 == $locOffset ) { for (0 .. 3) { $FH->ungetc(ord(substr($buffer, $_, 1))) } outSomeData($delta, "UNEXPECTED PADDING"); next; } } if ($here < $CdOffset) { # next # if scanForSignature() ; $skippedFrom = $FH->tell() ; $skippedContent = $CdOffset - $skippedFrom ; print "\nWARNING!\nZip local header not found.\n"; printf "Skipping 0x%x bytes to Central Directory...\n", $skippedContent; push @Messages, sprintf("Expected Zip header not found at offset 0x%X, ", $skippedFrom) . sprintf("skipped 0x%X bytes\n", $skippedContent); seekTo($CdOffset); next; } else { printf "\n\nUnexpected END at offset %08X, value %s\n", $here, Value_V($signature); last; } } $ZIP64 = 0 if $signature != ZIP_DATA_HDR_SIG ; $handler->($signature, $buffer); } dislayMessages(); exit ; sub dislayMessages { if (@Messages) { my $count = scalar @Messages ; print "\nWARNINGS\n\n"; print "* $_\n" for @Messages ; } print "Done\n"; } sub compressionMethod { my $id = shift ; Value_v($id) . " '" . ($ZIP_CompressionMethods{$id} || "Unknown Method") . "'" ; } sub LocalHeader { my $signature = shift ; my $data = shift ; my $from_offset = $FH->tell() - 4; print "\n"; ++ $LocalHeaderCount; out $data, "LOCAL HEADER #" . sprintf("%X", $LocalHeaderCount) , Value_V($signature); my $buffer; my ($loc, $CDcompressedLength) ; ($loc, $CDcompressedLength) = @{ shift @CentralDirectory } if ! $opt_scan ; out_C "Extract Zip Spec", \&decodeZipVer; out_C "Extract OS", \&decodeOS; my ($bgp, $gpFlag) = read_v(); my ($bcm, $compressedMethod) = read_v(); out $bgp, "General Purpose Flag", Value_v($gpFlag) ; GeneralPurposeBits($compressedMethod, $gpFlag); out $bcm, "Compression Method", compressionMethod($compressedMethod) ; out_V "Last Mod Time", sub { scalar getTime(_dosToUnixTime($_[0])) }; my $crc = out_V "CRC"; my $compressedLength = out_V "Compressed Length"; my $uncompressedLength = out_V "Uncompressed Length"; my $filenameLength = out_v "Filename Length"; my $extraLength = out_v "Extra Length"; my $filename ; myRead($filename, $filenameLength); outputFilename($filename); my $cl64 = U64->new( $compressedLength ); my %ExtraContext = (); if ($extraLength) { my @z64 = ($uncompressedLength, $compressedLength, 1, 1); $ExtraContext{Zip64} = \@z64 ; $ExtraContext{InCentralDir} = 0; walkExtra($extraLength, \%ExtraContext); } my $size = 0; $size = printAes(\%ExtraContext) if $compressedMethod == 99 ; $size += printLzmaProperties() if $compressedMethod == ZIP_CM_LZMA ; $CDcompressedLength = $compressedLength if $opt_scan ; # $CDcompressedLength->subtract($size) # if $size ; $CDcompressedLength -= $size; # if ($CDcompressedLength->getHigh() || $CDcompressedLength->getLow()) { if ($CDcompressedLength) { outSomeData($CDcompressedLength, "PAYLOAD") ; } if ($compressedMethod == 99) { my $auth ; myRead($auth, 10); out $auth, "AES Auth", hexDump($auth); } # $SEEN->save("LOCAL HEADER #" . sprintf("%X", $LocalHeaderCount), $filename, $from_offset, $from_offset + $CDcompressedLength) } sub outputFilename { my $filename = shift; if (length $filename > 256) { my $f = substr($filename, 0, 256) ; out $f, "Filename", "'". $f . "' ..."; } else { out $filename, "Filename", "'". $filename . "'"; } } sub CentralHeader { my $signature = shift ; my $data = shift ; my $from_offset = $FH->tell() - 4; ++ $CentralHeaderCount; print "\n"; out $data, "CENTRAL HEADER #" . sprintf("%X", $CentralHeaderCount) . "", Value_V($signature); my $buffer; out_C "Created Zip Spec", \&decodeZipVer; out_C "Created OS", \&decodeOS; out_C "Extract Zip Spec", \&decodeZipVer; out_C "Extract OS", \&decodeOS; my ($bgp, $gpFlag) = read_v(); my ($bcm, $compressedMethod) = read_v(); out $bgp, "General Purpose Flag", Value_v($gpFlag) ; GeneralPurposeBits($compressedMethod, $gpFlag); out $bcm, "Compression Method", compressionMethod($compressedMethod) ; out_V "Last Mod Time", sub { scalar getTime(_dosToUnixTime($_[0])) }; my $crc = out_V "CRC"; my $compressedLength = out_V "Compressed Length"; my $uncompressedLength = out_V "Uncompressed Length"; my $filenameLength = out_v "Filename Length"; my $extraLength = out_v "Extra Length"; my $comment_length = out_v "Comment Length"; my $disk_start = out_v "Disk Start"; my $int_file_attrib = out_v "Int File Attributes"; out1 "[Bit 0]", $int_file_attrib & 1 ? "1 Text Data" : "0 'Binary Data'"; my $ext_file_attrib = out_V "Ext File Attributes"; out1 "[Bit 0]", "Read-Only" if $ext_file_attrib & 0x01 ; out1 "[Bit 1]", "Hidden" if $ext_file_attrib & 0x02 ; out1 "[Bit 2]", "System" if $ext_file_attrib & 0x04 ; out1 "[Bit 3]", "Label" if $ext_file_attrib & 0x08 ; out1 "[Bit 4]", "Directory" if $ext_file_attrib & 0x10 ; out1 "[Bit 5]", "Archive" if $ext_file_attrib & 0x20 ; my $lcl_hdr_offset = out_V "Local Header Offset"; my $filename ; myRead($filename, $filenameLength); outputFilename($filename); my %ExtraContext = (); if ($extraLength) { my @z64 = ($uncompressedLength, $compressedLength, $lcl_hdr_offset, $disk_start); $ExtraContext{Zip64} = \@z64 ; $ExtraContext{InCentralDir} = 1; walkExtra($extraLength, \%ExtraContext); } if ($comment_length) { my $comment ; myRead($comment, $comment_length); out $comment, "Comment", "'". $comment . "'"; } $SEEN->save("CENTRAL HEADER ref Local #" . sprintf("%X", $CentralHeaderCount), $filename, $lcl_hdr_offset, $lcl_hdr_offset + $compressedLength) ; # $SEEN->save("CENTRAL HEADER #" . sprintf("%X", $CentralHeaderCount), $filename, $from_offset, $FH-tell()); } sub decodeZipVer { my $ver = shift ; my $sHi = int($ver /10) ; my $sLo = $ver % 10 ; #out1 "Zip Spec", "$sHi.$sLo"; "$sHi.$sLo"; } sub decodeOS { my $ver = shift ; $OS_Lookup{$ver} || "Unknown" ; } sub Zip64EndCentralHeader { my $signature = shift ; my $data = shift ; print "\n"; out $data, "ZIP64 END CENTRAL DIR RECORD", Value_V($signature); my $buff; myRead($buff, 8); out $buff, "Size of record", unpackValue_VV($buff); my $size = Value_VV64($buff); out_C "Created Zip Spec", \&decodeZipVer; out_C "Created OS", \&decodeOS; out_C "Extract Zip Spec", \&decodeZipVer; out_C "Extract OS", \&decodeOS; out_V "Number of this disk"; out_V "Central Dir Disk no"; out_VV "Entries in this disk"; out_VV "Total Entries"; out_VV "Size of Central Dir"; out_VV "Offset to Central dir"; # TODO - if ($size != 44) { push @Messages, "Unsupported Size field in Zip64EndCentralHeader: should be 44, got $size\n" } } sub Zip64EndCentralLocator { my $signature = shift ; my $data = shift ; print "\n"; out $data, "ZIP64 END CENTRAL DIR LOCATOR", Value_V($signature); out_V "Central Dir Disk no"; out_VV "Offset to Central dir"; out_V "Total no of Disks"; } sub EndCentralHeader { my $signature = shift ; my $data = shift ; print "\n"; out $data, "END CENTRAL HEADER", Value_V($signature); out_v "Number of this disk"; out_v "Central Dir Disk no"; out_v "Entries in this disk"; out_v "Total Entries"; out_V "Size of Central Dir"; out_V "Offset to Central Dir"; my $comment_length = out_v "Comment Length"; if ($comment_length) { my $comment ; myRead($comment, $comment_length); out $comment, "Comment", "'$comment'"; } } sub DataHeader { my $signature = shift ; my $data = shift ; print "\n"; out $data, "STREAMING DATA HEADER", Value_V($signature); out_V "CRC"; if ($ZIP64) { out_VV "Compressed Length" ; out_VV "Uncompressed Length" ; } else { out_V "Compressed Length" ; out_V "Uncompressed Length" ; } } sub GeneralPurposeBits { my $method = shift; my $gp = shift; out1 "[Bit 0]", "1 'Encryption'" if $gp & ZIP_GP_FLAG_ENCRYPTED_MASK; my %lookup = ( 0 => "Normal Compression", 1 => "Maximum Compression", 2 => "Fast Compression", 3 => "Super Fast Compression"); if ($method == ZIP_CM_DEFLATE) { my $mid = ($gp >> 1) & 0x03 ; out1 "[Bits 1-2]", "$mid '$lookup{$mid}'"; } if ($method == ZIP_CM_LZMA) { if ($gp & ZIP_GP_FLAG_LZMA_EOS_PRESENT) { out1 "[Bit 1]", "1 'LZMA EOS Marker Present'" ; } else { out1 "[Bit 1]", "0 'LZMA EOS Marker Not Present'" ; } } if ($method == ZIP_CM_IMPLODE) # Imploding { out1 "[Bit 1]", ($gp & (1 << 1) ? "1 '8k" : "0 '4k") . " Sliding Dictionary'" ; out1 "[Bit 2]", ($gp & (2 << 1) ? "1 '3" : "0 '2" ) . " Shannon-Fano Trees'" ; } out1 "[Bit 3]", "1 'Streamed'" if $gp & ZIP_GP_FLAG_STREAMING_MASK; out1 "[Bit 4]", "1 'Enhanced Deflating'" if $gp & 1 << 4; out1 "[Bit 5]", "1 'Compressed Patched'" if $gp & 1 << 5 ; out1 "[Bit 6]", "1 'Strong Encryption'" if $gp & ZIP_GP_FLAG_STRONG_ENCRYPTED_MASK; out1 "[Bit 11]", "1 'Language Encoding'" if $gp & ZIP_GP_FLAG_LANGUAGE_ENCODING; out1 "[Bit 12]", "1 'Pkware Enhanced Compression'" if $gp & 1 <<12 ; out1 "[Bit 13]", "1 'Encrypted Central Dir'" if $gp & 1 <<13 ; return (); } sub seekSet { my $fh = $_[0] ; my $size = $_[1]; use Fcntl qw(SEEK_SET); if (ref $size eq 'U64') { seek($fh, $size->get64bit(), SEEK_SET); } else { seek($fh, $size, SEEK_SET); } } sub skip { my $fh = $_[0] ; my $size = $_[1]; use Fcntl qw(SEEK_CUR); if (ref $size eq 'U64') { seek($fh, $size->get64bit(), SEEK_CUR); } else { seek($fh, $size, SEEK_CUR); } } sub myRead { my $got = \$_[0] ; my $size = $_[1]; my $wantSize = $size; $$got = ''; if ($size == 0) { return ; } if ($size > 0) { my $buff ; my $status = $FH->read($buff, $size); return $status if $status < 0; $$got .= $buff ; } my $len = length $$got; die "Truncated file (got $len, wanted $wantSize): $!\n" if length $$got != $wantSize; } sub walkExtra { my $XLEN = shift; my $context = shift; my $buff ; my $offset = 0 ; my $id; my $subLen; my $payload ; my $count = 0 ; while ($offset < $XLEN) { ++ $count; # Detect if there is not enough data for an extra ID and length. # Android zipalign and zipflinger are prime candidates for these # non-standard extra sub-fields. my $remaining = $XLEN - $offset; if ($remaining < ZIP_EXTRA_SUBFIELD_HEADER_SIZE) { # There is not enough. Consume whatever is there and return so parsing # can continue. myRead($payload, $remaining); my $data = hexDump($payload); out $payload, "Malformed Extra Data", $data; return undef; } myRead($id, ZIP_EXTRA_SUBFIELD_ID_SIZE); $offset += ZIP_EXTRA_SUBFIELD_ID_SIZE; my $lookID = unpack "v", $id ; my ($who, $decoder) = @{ defined $Extras{$lookID} ? $Extras{$lookID} : ['', undef] }; #my ($who, $decoder) = @{ $Extras{unpack "v", $id} || ['', undef] }; $who = "$id: $who" if $id =~ /\w\w/ ; $who = "'$who'"; out $id, "Extra ID #" . Value_v($count), unpackValue_v($id) . " $who" ; myRead($buff, ZIP_EXTRA_SUBFIELD_LEN_SIZE); $offset += ZIP_EXTRA_SUBFIELD_LEN_SIZE; $subLen = unpack("v", $buff); out2 $buff, "Length", Value_v($subLen) ; return undef if $offset + $subLen > $XLEN ; if (! defined $decoder) { if ($subLen) { myRead($payload, $subLen); my $data = hexDump($payload); out2 $payload, "Extra Payload", $data; } } else { $decoder->($subLen, $context) ; } $offset += $subLen ; } return undef ; } sub full32 { return $_[0] == 0xFFFFFFFF ; } sub decode_Zip64 { my $len = shift; my $context = shift; my $z64Data = $context->{Zip64}; $ZIP64 = 1; if (full32 $z64Data->[0] ) { out_VV " Uncompressed Size"; } if (full32 $z64Data->[1] ) { out_VV " Compressed Size"; } if (full32 $z64Data->[2] ) { out_VV " Offset to Local Dir"; } if ($z64Data->[3] == 0xFFFF ) { out_V " Disk Number"; } } sub Ntfs2Unix { my $v = shift; my $u64 = shift; # NTFS offset is 19DB1DED53E8000 my $hex = Value_U64($u64) ; my $NTFS_OFFSET = U64->new( 0x19DB1DE, 0xD53E8000 ); $u64->subtract($NTFS_OFFSET); my $elapse = $u64->get64bit(); my $ns = ($elapse % 10000000) * 100; $elapse = int ($elapse/10000000); return "$hex '" . localtime($elapse) . " " . sprintf("%0dns'", $ns); } sub decode_NTFS_Filetimes { my $len = shift; my $context = shift; out_V " Reserved"; out_v " Tag1"; out_v " Size1" ; my ($m, $s1) = read_U64; out $m, " Mtime", Ntfs2Unix($m, $s1); my ($c, $s2) = read_U64; out $c, " Ctime", Ntfs2Unix($m, $s2); my ($a, $s3) = read_U64; out $m, " Atime", Ntfs2Unix($m, $s3); } sub getTime { my $time = shift ; return "'" . localtime($time) . "'" ; } sub decode_UT { my $len = shift; my $context = shift; my ($data, $flags) = read_C(); my $f = Value_C $flags; $f .= " mod" if $flags & 1; $f .= " access" if $flags & 2; $f .= " change" if $flags & 4; out $data, " Flags", "'$f'"; -- $len; if ($flags & 1) { my ($data, $time) = read_V(); out2 $data, "Mod Time", Value_V($time) . " " . getTime($time) ; $len -= 4 ; } if ($flags & 2 && $len > 0 ) { my ($data, $time) = read_V(); out2 $data, "Access Time", Value_V($time) . " " . getTime($time) ; $len -= 4 ; } if ($flags & 4 && $len > 0) { my ($data, $time) = read_V(); out2 $data, "Change Time", Value_V($time) . " " . getTime($time) ; } } sub decode_AES { my $len = shift; my $context = shift; return if $len == 0 ; my %lookup = ( 1 => "AE-1", 2 => "AE-2"); out_v " Vendor Version", sub { $lookup{$_[0]} || "Unknown" } ; my $id ; myRead($id, 2); out $id, " Vendor ID", unpackValue_v($id) . " '$id'"; my %strengths = (1 => "128-bit encryption key", 2 => "192-bit encryption key", 3 => "256-bit encryption key", ); my $strength = out_C " Encryption Strength", sub {$strengths{$_[0]} || "Unknown" } ; my ($bmethod, $method) = read_v(); out $bmethod, " Compression Method", compressionMethod($method) ; $context->{AesStrength} = $strength ; } sub decode_GrowthHint { my $len = shift; my $context = shift; my $inCentralHdr = $context->{InCentralDir} ; return if $len == 0 ; out_v " Signature" ; out_v " Initial Value"; my $padding; myRead($padding, $len - 4); my $data = hexDump($padding); out2 $padding, "Padding", $data; } sub decode_UX { my $len = shift; my $context = shift; my $inCentralHdr = $context->{InCentralDir} ; return if $len == 0 ; my ($data, $time) = read_V(); out2 $data, "Access Time", Value_V($time) . " " . getTime($time) ; ($data, $time) = read_V(); out2 $data, "Mod Time", Value_V($time) . " " . getTime($time) ; if (! $inCentralHdr ) { out_v " UID" ; out_v " GID"; } } sub decode_Ux { my $len = shift; my $context = shift; return if $len == 0 ; out_v " UID" ; out_v " GID"; } sub decodeLitteEndian { my $value = shift ; if (length $value == 4) { return Value_V unpack ("V", $value) } else { # TODO - fix this die "unsupported\n"; } my $got = 0 ; my $shift = 0; #hexDump #reverse #my @a =unpack "C*", $value; #@a = reverse @a; #hexDump(@a); for (reverse unpack "C*", $value) { $got = ($got << 8) + $_ ; } return $got ; } sub decode_ux { my $len = shift; my $context = shift; return if $len == 0 ; out_C " Version" ; my $uidSize = out_C " UID Size"; myRead(my $data, $uidSize); out2 $data, "UID", decodeLitteEndian($data); my $gidSize = out_C " GID Size"; myRead($data, $gidSize); out2 $data, "GID", decodeLitteEndian($data); } sub decode_Java_exe { my $len = shift; my $context = shift; } sub decode_up { my $len = shift; my $context = shift; out_C " Version"; out_V " NameCRC32"; myRead(my $data, $len - 5); out $data, " UnicodeName", $data; } sub decode_Xceed_unicode { my $len = shift; my $context = shift; my $data ; # guess the fields used for this one myRead($data, 4); out $data, " ID", $data; out_v " Length"; out_v " Null"; myRead($data, $len - 8); out $data, " UTF16LE Name", decode("UTF16LE", $data); } sub decode_NT_security { my $len = shift; my $context = shift; my $inCentralHdr = $context->{InCentralDir} ; out_V " Uncompressed Size" ; if (! $inCentralHdr) { out_C " Version" ; out_v " Type"; out_V " NameCRC32" ; my $plen = $len - 4 - 1 - 2 - 4; myRead(my $payload, $plen); out $plen, " Extra Payload", hexDump($payload); } } sub decodeMVS { my $len = shift; my $context = shift; # data in Big-Endian myRead(my $data, $len); my $ID = unpack("N", $data); if ($ID == 0xE9F3F9F0) { out($data, " ID", "'Z390'"); substr($data, 0, 4) = ''; } out($data, " Extra Payload", hexDump($data)); } sub printAes { my $context = shift ; my %saltSize = ( 1 => 8, 2 => 12, 3 => 16, ); myRead(my $salt, $saltSize{$context->{AesStrength} }); out $salt, "AES Salt", hexDump($salt); myRead(my $pwv, 2); out $pwv, "AES Pwd Ver", hexDump($pwv); return $saltSize{$context->{AesStrength}} + 2 + 10; } sub printLzmaProperties { my $len = 0; my $b1; my $b2; my $buffer; myRead($b1, 2); my ($verHi, $verLow) = unpack ("CC", $b1); out $b1, "LZMA Version", sprintf("%02X%02X", $verHi, $verLow) . " '$verHi.$verLow'"; my $LzmaPropertiesSize = out_v "LZMA Properties Size"; $len += 4; my $LzmaInfo = out_C "LZMA Info", sub { $_[0] == 93 ? "(Default)" : ""}; my $PosStateBits = 0; my $LiteralPosStateBits = 0; my $LiteralContextBits = 0; $PosStateBits = int($LzmaInfo / (9 * 5)); $LzmaInfo -= $PosStateBits * 9 * 5; $LiteralPosStateBits = int($LzmaInfo / 9); $LiteralContextBits = $LzmaInfo - $LiteralPosStateBits * 9; out1 " PosStateBits", $PosStateBits; out1 " LiteralPosStateBits", $LiteralPosStateBits; out1 " LiteralContextBits", $LiteralContextBits; out_V "LZMA Dictionary Size"; # TODO - assumption that this is 5 $len += $LzmaPropertiesSize; skip($FH, $LzmaPropertiesSize - 5) if $LzmaPropertiesSize != 5 ; return $len; } sub scanCentralDirectory { my $fh = shift; my $here = $fh->tell(); # Use cases # 1 32-bit CD # 2 64-bit CD my @CD = (); my $offset = findCentralDirectoryOffset($fh); return () if ! defined $offset; $fh->seek($offset, SEEK_SET) ; # Now walk the Central Directory Records my $buffer ; while ($fh->read($buffer, 46) == 46 && unpack("V", $buffer) == ZIP_CENTRAL_HDR_SIG) { my $compressedLength = unpack("V", substr($buffer, 20, 4)); my $uncompressedLength = unpack("V", substr($buffer, 24, 4)); my $filename_length = unpack("v", substr($buffer, 28, 2)); my $extra_length = unpack("v", substr($buffer, 30, 2)); my $comment_length = unpack("v", substr($buffer, 32, 2)); my $locHeaderOffset = unpack("V", substr($buffer, 42, 4)); skip($fh, $filename_length ) ; if ($extra_length) { $fh->read(my $extraField, $extra_length) ; # $self->smartReadExact(\$extraField, $extra_length); # Check for Zip64 # my $zip64Extended = findID("\x01\x00", $extraField); my $zip64Extended = findID(0x0001, $extraField); if ($zip64Extended) { if ($uncompressedLength == 0xFFFFFFFF) { $uncompressedLength = Value_VV64 substr($zip64Extended, 0, 8, ""); # $uncompressedLength = unpack "Q<", substr($zip64Extended, 0, 8, ""); } if ($compressedLength == 0xFFFFFFFF) { $compressedLength = Value_VV64 substr($zip64Extended, 0, 8, ""); # $compressedLength = unpack "Q<", substr($zip64Extended, 0, 8, ""); } if ($locHeaderOffset == 0xFFFFFFFF) { $locHeaderOffset = Value_VV64 substr($zip64Extended, 0, 8, ""); # $locHeaderOffset = unpack "Q<", substr($zip64Extended, 0, 8, ""); } } } my $got = [$locHeaderOffset, $compressedLength] ; # my $v64 = U64->new( $compressedLength ); # my $loc64 = U64->new( $locHeaderOffset ); # my $got = [$loc64, $v64] ; # if (full32 $compressedLength || full32 $locHeaderOffset) { # $fh->read($buffer, $extra_length) ; # # TODO - fix this # die "xxx $offset $comment_length $filename_length $extra_length" . length($buffer) # if length($buffer) != $extra_length; # $got = get64Extra($buffer, full32($uncompressedLength), # $v64, # $loc64); # # If not Zip64 extra field, assume size is 0xFFFFFFFF # #$v64 = $got if defined $got; # } # else { # skip($fh, $extra_length) ; # } skip($fh, $comment_length ) ; push @CD, $got ; } $fh->seek($here, SEEK_SET) ; # @CD = sort { $a->[0]->cmp($b->[0]) } @CD ; @CD = sort { $a->[0] <=> $b->[0] } @CD ; # Set the first Local File Header offset. $START = $CD[0]->[0] if @CD ; return (1, $offset, @CD); } sub offsetFromZip64 { my $fh = shift ; my $here = shift; $fh->seek($here - 20, SEEK_SET) # TODO - fix this or die "xx $!" ; my $buffer; my $got = 0; ($got = $fh->read($buffer, 20)) == 20 # TODO - fix this or die "xxx $here $got $!" ; if ( unpack("V", $buffer) == ZIP64_END_CENTRAL_LOC_HDR_SIG ) { my $cd64 = Value_VV64 substr($buffer, 8, 8); $fh->seek($cd64, SEEK_SET) ; $fh->read($buffer, 4) == 4 # TODO - fix this or die "xxx" ; if ( unpack("V", $buffer) == ZIP64_END_CENTRAL_REC_HDR_SIG ) { $fh->read($buffer, 8) == 8 # TODO - fix this or die "xxx" ; my $size = Value_VV64($buffer); $fh->read($buffer, $size) == $size # TODO - fix this or die "xxx" ; my $cd64 = Value_VV64 substr($buffer, 36, 8); return $cd64 ; } die "Cannot find 'Zip64 end of central directory record': 0x06054b50\nTry running with --scan option.\n" ; } die "Cannot find signature for 'Zip64 end of central directory locator': 0x07064b50 \nTry running with --scan option.\n" ; } use constant Pack_ZIP_END_CENTRAL_HDR_SIG => pack("V", ZIP_END_CENTRAL_HDR_SIG); sub findCentralDirectoryOffset { my $fh = shift ; # Most common use-case is where there is no comment, so # know exactly where the end of central directory record # should be. $fh->seek(-22, SEEK_END) ; my $here = $fh->tell(); my $is64bit = $here > 0xFFFFFFFF; my $over64bit = $here & (~ 0xFFFFFFFF); my $buffer; $fh->read($buffer, 22) == 22 # TODO - fix this or die "xxx" ; my $zip64 = 0; my $centralDirOffset ; if ( unpack("V", $buffer) == ZIP_END_CENTRAL_HDR_SIG ) { $centralDirOffset = unpack("V", substr($buffer, 16, 4)); } else { $fh->seek(0, SEEK_END) ; my $fileLen = $fh->tell(); my $want = 0 ; while(1) { $want += 1024 * 32; my $seekTo = $fileLen - $want; if ($seekTo < 0 ) { $seekTo = 0; $want = $fileLen ; } $fh->seek( $seekTo, SEEK_SET) # TODO - fix this or die "xxx $!" ; my $got; ($got = $fh->read($buffer, $want)) == $want # TODO - fix this or die "xxx $got $!" ; my $pos = rindex( $buffer, Pack_ZIP_END_CENTRAL_HDR_SIG); if ($pos >= 0 && $want - $pos > 22) { $here = $seekTo + $pos ; $centralDirOffset = unpack("V", substr($buffer, $pos + 16, 4)); my $commentLength = unpack("V", substr($buffer, $pos + 20, 2)); $commentLength = 0 if ! defined $commentLength ; my $expectedEof = $fileLen - $want + $pos + 22 + $commentLength ; # check for trailing data after end of zip if ($expectedEof < $fileLen ) { $TRAILING = $expectedEof ; } last ; } return undef if $want == $fileLen; } } if (full32 $centralDirOffset) { $centralDirOffset = offsetFromZip64($fh, $here) } elsif ($is64bit) { # use-case is where a 64-bit zip file doesn't use the 64-bit # extensions. print "EOCD not 64-bit $centralDirOffset ($here)\n" ; push @Messages, sprintf "Zip file > 4Gig. Expected 'Offset to Central Dir' to be 0xFFFFFFFF, got 0x%X\n", $centralDirOffset; $centralDirOffset += $over64bit; $is64In32 = 1; } return $centralDirOffset ; } sub findID { my $id_want = shift ; my $data = shift; my $XLEN = length $data ; my $offset = 0 ; while ($offset < $XLEN) { return undef if $offset + ZIP_EXTRA_SUBFIELD_HEADER_SIZE > $XLEN ; my $id = substr($data, $offset, ZIP_EXTRA_SUBFIELD_ID_SIZE); $id = unpack("v", $id); $offset += ZIP_EXTRA_SUBFIELD_ID_SIZE; my $subLen = unpack("v", substr($data, $offset, ZIP_EXTRA_SUBFIELD_LEN_SIZE)); $offset += ZIP_EXTRA_SUBFIELD_LEN_SIZE ; return undef if $offset + $subLen > $XLEN ; return substr($data, $offset, $subLen) if $id eq $id_want ; $offset += $subLen ; } return undef ; } sub _dosToUnixTime { my $dt = shift; my $year = ( ( $dt >> 25 ) & 0x7f ) + 80; my $mon = ( ( $dt >> 21 ) & 0x0f ) - 1; my $mday = ( ( $dt >> 16 ) & 0x1f ); my $hour = ( ( $dt >> 11 ) & 0x1f ); my $min = ( ( $dt >> 5 ) & 0x3f ); my $sec = ( ( $dt << 1 ) & 0x3e ); use POSIX 'mktime'; my $time_t = mktime( $sec, $min, $hour, $mday, $mon, $year, 0, 0, -1 ); return 0 if ! defined $time_t; return $time_t; } { package U64; use constant MAX32 => 0xFFFFFFFF ; use constant HI_1 => MAX32 + 1 ; use constant LOW => 0 ; use constant HIGH => 1; sub new { my $class = shift ; my $high = 0 ; my $low = 0 ; if (@_ == 2) { $high = shift ; $low = shift ; } elsif (@_ == 1) { my $value = shift ; if ($value > MAX32) { $high = $value >> 32 ; $low = $value & MAX32; } else { $low = $value ; } } bless [$low, $high], $class; } sub newUnpack_V64 { my $string = shift; my ($low, $hi) = unpack "V V", $string ; bless [ $low, $hi ], "U64"; } sub newUnpack_V32 { my $string = shift; my $low = unpack "V", $string ; bless [ $low, 0 ], "U64"; } sub reset { my $self = shift; $self->[HIGH] = $self->[LOW] = 0; } sub clone { my $self = shift; bless [ @$self ], ref $self ; } sub mkU64 { my $value = shift; return $value if ref $value eq 'U64'; bless [ $value, 0 ], "U64" ; } sub getHigh { my $self = shift; return $self->[HIGH]; } sub getLow { my $self = shift; return $self->[LOW]; } sub get32bit { my $self = shift; return $self->[LOW]; } sub get64bit { my $self = shift; # Not using << here because the result will still be # a 32-bit value on systems where int size is 32-bits return $self->[HIGH] * HI_1 + $self->[LOW]; } sub add { my $self = shift; my $value = shift; if (ref $value eq 'U64') { $self->[HIGH] += $value->[HIGH] ; $value = $value->[LOW]; } my $available = MAX32 - $self->[LOW] ; if ($value > $available) { ++ $self->[HIGH] ; $self->[LOW] = $value - $available - 1; } else { $self->[LOW] += $value ; } } sub subtract { my $self = shift; my $value = shift; if (ref $value eq 'U64') { if ($value->[HIGH]) { die "unsupport subtract option" if $self->[HIGH] == 0 || $value->[HIGH] > $self->[HIGH] ; $self->[HIGH] -= $value->[HIGH] ; } $value = $value->[LOW] ; } if ($value > $self->[LOW]) { -- $self->[HIGH] ; $self->[LOW] = MAX32 - $value + $self->[LOW] + 1; } else { $self->[LOW] -= $value; } } sub rshift { my $self = shift; my $count = shift; for (1 .. $count) { $self->[LOW] >>= 1; $self->[LOW] |= 0x80000000 if $self->[HIGH] & 1 ; $self->[HIGH] >>= 1; } } sub is64bit { my $self = shift; return $self->[HIGH] > 0 ; } sub getPacked_V64 { my $self = shift; return pack "V V", @$self ; } sub getPacked_V32 { my $self = shift; return pack "V", $self->[LOW] ; } sub pack_V64 { my $low = shift; return pack "V V", $low, 0; } sub max32 { my $self = shift; return $self->[HIGH] == 0 && $self->[LOW] == MAX32; } sub stringify { my $self = shift; return "High [$self->[HIGH]], Low [$self->[LOW]]"; } sub equal { my $self = shift; my $other = shift; return $self->[LOW] == $other->[LOW] && $self->[HIGH] == $other->[HIGH] ; } sub gt { my $self = shift; my $other = shift; return $self->cmp($other) > 0 ; } sub cmp { my $self = shift; my $other = shift ; if ($self->[LOW] == $other->[LOW]) { return $self->[HIGH] - $other->[HIGH] ; } else { return $self->[LOW] - $other->[LOW] ; } } sub nibbles { my @nibbles = ( [ 16 => HI_1 * 0x10000000 ], [ 15 => HI_1 * 0x1000000 ], [ 14 => HI_1 * 0x100000 ], [ 13 => HI_1 * 0x10000 ], [ 12 => HI_1 * 0x1000 ], [ 11 => HI_1 * 0x100 ], [ 10 => HI_1 * 0x10 ], [ 9 => HI_1 * 0x1 ], [ 8 => 0x10000000 ], [ 7 => 0x1000000 ], [ 6 => 0x100000 ], [ 5 => 0x10000 ], [ 4 => 0x1000 ], [ 3 => 0x100 ], [ 2 => 0x10 ], [ 1 => 0x1 ], ); my $value = shift ; for my $pair (@nibbles) { my ($count, $limit) = @{ $pair }; return $count if $value >= $limit ; } } } { package Seen; sub new { my $class = shift ; my %object = ( overlaps => [], detail => [], ) ; bless \%object, $class; } sub save { my $self = shift ; my $hdrId = shift; my $name = shift; my $from_offset = shift; my $to_offset = shift ; for my $entry ( @{ $self->{detail} } ) { if ( $from_offset == $entry->{from} && $to_offset == $entry->{to} ) { warn "$hdrId: '$name' matches with $entry->{str}\n" } elsif ( ($from_offset >= $entry->{from} && $from_offset <= $entry->{to} ) || ($to_offset >= $entry->{from} && $to_offset <= $entry->{to} ) ) { # die "overlap!" # push @{ $self->{overlap} }, die "$hdrId: '$name' overlaps with $entry->{str}\n" } } warn "ADD $from_offset $to_offset $hdrId: $name\n"; push @{ $self->{detail} }, { from => $from_offset, to => $to_offset, id => $hdrId, name => $name, str => "$hdrId: '$name'", } ; } sub summary { my $self = shift ; for my $outer ( sort { $a->{from} <=> $b->{from} } @{ $self->{detail} } ) { my $from_offset = $outer->{from}; my $to_offset = $outer->{to}; my $hdrId = $outer->{id}; my $name = $outer->{name}; for my $entry ( sort { $a->{from} <=> $b->{from} } @{ $self->{detail} } ) { # next if if ( ($from_offset >= $entry->{from} && $from_offset <= $entry->{to} ) || ($to_offset >= $entry->{from} && $to_offset <= $entry->{to} ) ) { # die "overlap!" die $entry->{str} . " overlaps with $hdrId: '$name'\n" } } } } } sub Usage { if (@_) { warn "$_\n" for @_ ; warn "\n"; } die <<EOM; zipdetails [OPTIONS] file Display details about the internal structure of a Zip file. This is zipdetails version $VERSION OPTIONS -h display help --scan enable scannng mode. Blindly scan the file looking for zip headers Expect false-positives. -v Verbose - output more stuff --version Print version number Copyright (c) 2011-2021 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. EOM } __END__ =head1 NAME zipdetails - display the internal structure of zip files =head1 SYNOPSIS zipdetails [-v][--scan] zipfile.zip zipdetails -h zipdetails --version =head1 DESCRIPTION Zipdetails displays information about the internal record structure of zip files. It is not concerned with displaying any details of the compressed data stored in the zip file. The program assumes prior understanding of the internal structure of a Zip file. You should have a copy of the Zip APPNOTE file at hand to help understand the output from this program (L<SEE ALSO> for details). =head2 Default Behaviour By default the program expects to be given a well-formed zip file. It will navigate the Zip file by first parsing the zip central directory at the end of the file. If that is found, it will then walk through the zip records starting at the beginning of the file. Any badly formed zip data structures encountered are likely to terminate the program. If the program finds any structural problems with the zip file it will print a summary at the end of the output report. The set of error cases reported is very much a work in progress, so don't rely on this feature to find all the possible errors in a zip file. If you have suggestions for use-cases where this could be enhanced please consider creating an enhancement request (see L<"SUPPORT">). =head2 Scan-Mode If you do have a potentially corrupt zip file, particulatly where the central directory at the end of the file is absent/incomplete, you can try usng the C<--scan> option to search for zip records that are still present. When Scan-mode is enabled, the program will walk the zip file from the start blindly looking for the 4-byte signatures that preceed each of the zip data structures. If it finds any of the recognised signatures it will attempt to dump the associated zip record. For very large zip files, this operation can take a long time to run. Note that the 4-byte signatures used in zip files can sometimes match with random data stored in the zip file, so care is needed interpreting the results. =head2 OPTIONS =over 5 =item -h Display help =item --scan Walk the zip file loking for possible zip records. Can be error-prone. See L<"Scan-Mode"> =item -v Enable Verbose mode. See L<"Verbose Output">. =item --version Display version number of the program and exit. =back =head2 Default Output By default zipdetails will output the details of the zip file in three columns. =over 5 =item Column 1 This contains the offset from the start of the file in hex. =item Column 2 This contains a textual description of the field. =item Column 3 If the field contains a numeric value it will be displayed in hex. Zip stores most numbers in little-endian format - the value displayed will have the little-endian encoding removed. Next, is an optional description of what the value means. =back =head2 Verbose Output If the C<-v> option is present, column 1 is expanded to include =over 5 =item * The offset from the start of the file in hex. =item * The length of the field in hex. =item * A hex dump of the bytes in field in the order they are stored in the zip file. =back =head1 LIMITATIONS The following zip file features are not supported by this program: =over 5 =item * Multi-part archives. =item * The strong encryption features defined in the "APPNOTE" document. =back =head1 TODO Error handling is a work in progress. If the program encounters a problem reading a zip file it is likely to terminate with an unhelpful error message. =head1 SUPPORT General feedback/questions/bug reports should be sent to L<https://github.com/pmqs/IO-Compress/issues> (preferred) or L<https://rt.cpan.org/Public/Dist/Display.html?Name=IO-Compress>. =head1 SEE ALSO The primary reference for Zip files is the "APPNOTE" document available at L<http://www.pkware.com/documents/casestudies/APPNOTE.TXT>. An alternative reference is the Info-Zip appnote. This is available from L<ftp://ftp.info-zip.org/pub/infozip/doc/> The C<zipinfo> program that comes with the info-zip distribution (L<http://www.info-zip.org/>) can also display details of the structure of a zip file. See also L<Archive::Zip::SimpleZip>, L<IO::Compress::Zip>, L<IO::Uncompress::Unzip>. =head1 AUTHOR Paul Marquess F<pmqs@cpan.org>. =head1 COPYRIGHT Copyright (c) 2011-2021 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Close