mirror of
https://github.com/Matir/skel.git
synced 2026-05-26 05:29:09 -07:00
Compare commits
131 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1b0cec9ce2 | ||
|
|
3ebb6a65a7 | ||
|
|
59c51ca93e | ||
|
|
9cb9d60fe6 | ||
|
|
52fcdfea60 | ||
|
|
1cf72204a2 | ||
|
|
b16daa5da6 | ||
|
|
8e55e1dbe9 | ||
|
|
8a84e547e1 | ||
|
|
d1696d88f1 | ||
|
|
4bf05842ec | ||
|
|
1456c91f99 | ||
|
|
a2a308c7d3 | ||
|
|
2432245885 | ||
|
|
f828e32917 | ||
|
|
d809341953 | ||
|
|
a05dd1ee07 | ||
|
|
2af2fe3e71 | ||
|
|
d4ad0603e3 | ||
|
|
93b33f668f | ||
|
|
1730ce9994 | ||
|
|
00771b2031 | ||
|
|
343c9f6e30 | ||
|
|
9b1bed0810 | ||
|
|
873354b9c0 | ||
|
|
a9ba0f73fe | ||
|
|
269426f11d | ||
|
|
2fba9d3bf5 | ||
|
|
bbf444460e | ||
|
|
4edcafe55b | ||
|
|
5661e286d2 | ||
|
|
891fe54140 | ||
|
|
e65a1e0793 | ||
|
|
74a02287f8 | ||
|
|
6fd91c6742 | ||
|
|
dc3598fa31 | ||
|
|
746f65e2a1 | ||
|
|
f6d9a2ac2d | ||
|
|
a06239095c | ||
|
|
854e223573 | ||
|
|
5250f1b472 | ||
|
|
f1db430071 | ||
|
|
a7fd649b9c | ||
|
|
21b5d14d37 | ||
|
|
724433fab1 | ||
|
|
a6fe923b11 | ||
|
|
a806e19b7c | ||
|
|
34b58163e9 | ||
|
|
7657b4e81d | ||
|
|
c8afa728a9 | ||
|
|
ecf27f69e0 | ||
|
|
97f0e50352 | ||
|
|
dc85fb7f94 | ||
|
|
5577ee29b4 | ||
|
|
562697a2a7 | ||
|
|
dcaf567116 | ||
|
|
9c6042116a | ||
|
|
de3919a7fe | ||
|
|
c568c81f60 | ||
|
|
9936dd7983 | ||
|
|
c693c4b8c7 | ||
|
|
01e1c515ff | ||
|
|
215f03af2e | ||
|
|
88fae8ded3 | ||
|
|
029e41c1bf | ||
|
|
ceceb307f9 | ||
|
|
4cbf297838 | ||
|
|
1361fb8cc6 | ||
|
|
c11ea02838 | ||
|
|
ecdf364f65 | ||
|
|
98d85b801d | ||
|
|
e1a5c1f588 | ||
|
|
da2b4b82f4 | ||
|
|
f03e60b30d | ||
|
|
c6ed005467 | ||
|
|
3461ae3417 | ||
|
|
45c0b529af | ||
|
|
f1e16ebaf8 | ||
|
|
1b901faab1 | ||
|
|
a7ae4f47a8 | ||
|
|
58bdc6b23a | ||
|
|
9bad2d4afa | ||
|
|
d920a25f57 | ||
|
|
2225fbed9a | ||
|
|
95ccf66984 | ||
|
|
c32b9ef765 | ||
|
|
c400ab787f | ||
|
|
91790b5a12 | ||
|
|
c65f3b4730 | ||
|
|
6185108c0f | ||
|
|
8b59e8c764 | ||
|
|
114db98bdf | ||
|
|
7364eb5446 | ||
|
|
31f16132dc | ||
|
|
70efebd88d | ||
|
|
d9f6a1b250 | ||
|
|
a3292747eb | ||
|
|
6b8b7673d8 | ||
|
|
283609cc50 | ||
|
|
efec992784 | ||
|
|
be49f3f57c | ||
|
|
3a89085279 | ||
|
|
b12b39f8c4 | ||
|
|
e6a7cd9b9f | ||
|
|
89bdedbf4f | ||
|
|
5ac75c4b63 | ||
|
|
f235fb2660 | ||
|
|
3839ac9e2f | ||
|
|
63a6f8bb32 | ||
|
|
4510acb3ea | ||
|
|
173abd42e4 | ||
|
|
27b026f011 | ||
|
|
1dcee2dbf0 | ||
|
|
3721d061fa | ||
|
|
403dad5318 | ||
|
|
58c49d5c5b | ||
|
|
bb519ae3af | ||
|
|
125bf08e73 | ||
|
|
e5066e087d | ||
|
|
345c2e5423 | ||
|
|
09b7cad44a | ||
|
|
01dab7312f | ||
|
|
366f99aef7 | ||
|
|
ea571ac1b8 | ||
|
|
59c26347ae | ||
|
|
9aa69c551e | ||
|
|
775657b90d | ||
|
|
4ae16a4a17 | ||
|
|
9bb50f6136 | ||
|
|
aa984c6a07 | ||
|
|
843863cc75 |
4
.gitignore
vendored
4
.gitignore
vendored
@@ -1 +1,5 @@
|
|||||||
|
private_dotfiles
|
||||||
private_dotfiles/**
|
private_dotfiles/**
|
||||||
|
*.swp
|
||||||
|
*~
|
||||||
|
*.bak
|
||||||
|
|||||||
27
README.md
Normal file
27
README.md
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
|
||||||
|
### About ###
|
||||||
|
This is a repository of configuration files that I like to have on all the
|
||||||
|
machines that I use. I can just clone the repository and run "repo/setup.sh"
|
||||||
|
and get most things setup the way I like them.
|
||||||
|
|
||||||
|
This started just as dotfiles, but expanded to include SSH keys, GPG keys,
|
||||||
|
packages I like installed, and an ever-growing setup script. There are various
|
||||||
|
options to install just parts of it, such as on a machine where I only have a
|
||||||
|
user account but no root.
|
||||||
|
|
||||||
|
### Usefulness ###
|
||||||
|
Mostly I post this to github so I can quickly grab the things I want, but it
|
||||||
|
might also be useful to others. Feel free to raise an issue if you have any
|
||||||
|
questions. I don't anticipating taking merge requests -- make your own
|
||||||
|
dotfiles. ;)
|
||||||
|
|
||||||
|
### Options ###
|
||||||
|
```
|
||||||
|
BASEDIR: Where the skel framework is installed. Defaults to $HOME/.skel
|
||||||
|
MINIMAL: Don't do things that require git clones or installation of anything
|
||||||
|
not included in my .skel. (Defaults to 0, installs everything.)
|
||||||
|
INSTALL_KEYS: Install GnuPG and SSH keys. SSH keys are placed in
|
||||||
|
authorized_keys. (Defaults to 1, installs keys.)
|
||||||
|
INSTALL_PKGS: Install common packages, if on a Debian-like system.
|
||||||
|
(Defaults to opposite of $MINIMAL.)
|
||||||
|
```
|
||||||
30
bin/backup.sh
Executable file
30
bin/backup.sh
Executable file
@@ -0,0 +1,30 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -o nounset
|
||||||
|
set -o errexit
|
||||||
|
|
||||||
|
DEFAULT=`echo /media/${USER}/[bB]ackup/${USER}/`
|
||||||
|
DEST="${1:-${DEFAULT}}"
|
||||||
|
|
||||||
|
function verify_dest {
|
||||||
|
arr=($1)
|
||||||
|
items=${#arr[@]}
|
||||||
|
if [ $items -ne 1 ] ; then
|
||||||
|
echo "Bad count of backup destinations." > /dev/stderr
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
dir="$1"
|
||||||
|
end=$((${#dir}-1))
|
||||||
|
last="${dir:$end:1}"
|
||||||
|
if [ "$last" != "/" ] ; then
|
||||||
|
echo -n "Destination $dir does not end in a /, " > /dev/stderr
|
||||||
|
echo "this is probably not what you want!" > /dev/stderr
|
||||||
|
echo "Press a key to continue, or CTRL-C to cancel." > /dev/stderr
|
||||||
|
read
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
verify_dest "$DEST"
|
||||||
|
|
||||||
|
rsync -Hax --delete --exclude-from="$HOME/.rsync_ignore" \
|
||||||
|
--delete-excluded "${HOME}/" "$DEST"
|
||||||
882
bin/checksec.sh
Executable file
882
bin/checksec.sh
Executable file
@@ -0,0 +1,882 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# The BSD License (http://www.opensource.org/licenses/bsd-license.php)
|
||||||
|
# specifies the terms and conditions of use for checksec.sh:
|
||||||
|
#
|
||||||
|
# Copyright (c) 2009-2011, Tobias Klein.
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions
|
||||||
|
# are met:
|
||||||
|
#
|
||||||
|
# * Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
# * Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in
|
||||||
|
# the documentation and/or other materials provided with the
|
||||||
|
# distribution.
|
||||||
|
# * Neither the name of Tobias Klein nor the name of trapkit.de may be
|
||||||
|
# used to endorse or promote products derived from this software
|
||||||
|
# without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||||
|
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||||
|
# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||||
|
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||||
|
# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||||
|
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
|
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
||||||
|
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
||||||
|
# DAMAGE.
|
||||||
|
#
|
||||||
|
# Name : checksec.sh
|
||||||
|
# Version : 1.5
|
||||||
|
# Author : Tobias Klein
|
||||||
|
# Date : November 2011
|
||||||
|
# Download: http://www.trapkit.de/tools/checksec.html
|
||||||
|
# Changes : http://www.trapkit.de/tools/checksec_changes.txt
|
||||||
|
#
|
||||||
|
# Description:
|
||||||
|
#
|
||||||
|
# Modern Linux distributions offer some mitigation techniques to make it
|
||||||
|
# harder to exploit software vulnerabilities reliably. Mitigations such
|
||||||
|
# as RELRO, NoExecute (NX), Stack Canaries, Address Space Layout
|
||||||
|
# Randomization (ASLR) and Position Independent Executables (PIE) have
|
||||||
|
# made reliably exploiting any vulnerabilities that do exist far more
|
||||||
|
# challenging. The checksec.sh script is designed to test what *standard*
|
||||||
|
# Linux OS and PaX (http://pax.grsecurity.net/) security features are being
|
||||||
|
# used.
|
||||||
|
#
|
||||||
|
# As of version 1.3 the script also lists the status of various Linux kernel
|
||||||
|
# protection mechanisms.
|
||||||
|
#
|
||||||
|
# Credits:
|
||||||
|
#
|
||||||
|
# Thanks to Brad Spengler (grsecurity.net) for the PaX support.
|
||||||
|
# Thanks to Jon Oberheide (jon.oberheide.org) for the kernel support.
|
||||||
|
# Thanks to Ollie Whitehouse (Research In Motion) for rpath/runpath support.
|
||||||
|
#
|
||||||
|
# Others that contributed to checksec.sh (in no particular order):
|
||||||
|
#
|
||||||
|
# Simon Ruderich, Denis Scherbakov, Stefan Kuttler, Radoslaw Madej,
|
||||||
|
# Anthony G. Basile, Martin Vaeth and Brian Davis.
|
||||||
|
#
|
||||||
|
|
||||||
|
# global vars
|
||||||
|
have_readelf=1
|
||||||
|
verbose=false
|
||||||
|
|
||||||
|
# FORTIFY_SOURCE vars
|
||||||
|
FS_end=_chk
|
||||||
|
FS_cnt_total=0
|
||||||
|
FS_cnt_checked=0
|
||||||
|
FS_cnt_unchecked=0
|
||||||
|
FS_chk_func_libc=0
|
||||||
|
FS_functions=0
|
||||||
|
FS_libc=0
|
||||||
|
|
||||||
|
# version information
|
||||||
|
version() {
|
||||||
|
echo "checksec v1.5, Tobias Klein, www.trapkit.de, November 2011"
|
||||||
|
echo
|
||||||
|
}
|
||||||
|
|
||||||
|
# help
|
||||||
|
help() {
|
||||||
|
echo "Usage: checksec [OPTION]"
|
||||||
|
echo
|
||||||
|
echo "Options:"
|
||||||
|
echo
|
||||||
|
echo " --file <executable-file>"
|
||||||
|
echo " --dir <directory> [-v]"
|
||||||
|
echo " --proc <process name>"
|
||||||
|
echo " --proc-all"
|
||||||
|
echo " --proc-libs <process ID>"
|
||||||
|
echo " --kernel"
|
||||||
|
echo " --fortify-file <executable-file>"
|
||||||
|
echo " --fortify-proc <process ID>"
|
||||||
|
echo " --version"
|
||||||
|
echo " --help"
|
||||||
|
echo
|
||||||
|
echo "For more information, see:"
|
||||||
|
echo " http://www.trapkit.de/tools/checksec.html"
|
||||||
|
echo
|
||||||
|
}
|
||||||
|
|
||||||
|
# check if command exists
|
||||||
|
command_exists () {
|
||||||
|
type $1 > /dev/null 2>&1;
|
||||||
|
}
|
||||||
|
|
||||||
|
# check if directory exists
|
||||||
|
dir_exists () {
|
||||||
|
if [ -d $1 ] ; then
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# check user privileges
|
||||||
|
root_privs () {
|
||||||
|
if [ $(/usr/bin/id -u) -eq 0 ] ; then
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# check if input is numeric
|
||||||
|
isNumeric () {
|
||||||
|
echo "$@" | grep -q -v "[^0-9]"
|
||||||
|
}
|
||||||
|
|
||||||
|
# check if input is a string
|
||||||
|
isString () {
|
||||||
|
echo "$@" | grep -q -v "[^A-Za-z]"
|
||||||
|
}
|
||||||
|
|
||||||
|
# check file(s)
|
||||||
|
filecheck() {
|
||||||
|
# check for RELRO support
|
||||||
|
if readelf -l $1 2>/dev/null | grep -q 'GNU_RELRO'; then
|
||||||
|
if readelf -d $1 2>/dev/null | grep -q 'BIND_NOW'; then
|
||||||
|
echo -n -e '\033[32mFull RELRO \033[m '
|
||||||
|
else
|
||||||
|
echo -n -e '\033[33mPartial RELRO\033[m '
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo -n -e '\033[31mNo RELRO \033[m '
|
||||||
|
fi
|
||||||
|
|
||||||
|
# check for stack canary support
|
||||||
|
if readelf -s $1 2>/dev/null | grep -q '__stack_chk_fail'; then
|
||||||
|
echo -n -e '\033[32mCanary found \033[m '
|
||||||
|
else
|
||||||
|
echo -n -e '\033[31mNo canary found\033[m '
|
||||||
|
fi
|
||||||
|
|
||||||
|
# check for NX support
|
||||||
|
if readelf -W -l $1 2>/dev/null | grep 'GNU_STACK' | grep -q 'RWE'; then
|
||||||
|
echo -n -e '\033[31mNX disabled\033[m '
|
||||||
|
else
|
||||||
|
echo -n -e '\033[32mNX enabled \033[m '
|
||||||
|
fi
|
||||||
|
|
||||||
|
# check for PIE support
|
||||||
|
if readelf -h $1 2>/dev/null | grep -q 'Type:[[:space:]]*EXEC'; then
|
||||||
|
echo -n -e '\033[31mNo PIE \033[m '
|
||||||
|
elif readelf -h $1 2>/dev/null | grep -q 'Type:[[:space:]]*DYN'; then
|
||||||
|
if readelf -d $1 2>/dev/null | grep -q '(DEBUG)'; then
|
||||||
|
echo -n -e '\033[32mPIE enabled \033[m '
|
||||||
|
else
|
||||||
|
echo -n -e '\033[33mDSO \033[m '
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo -n -e '\033[33mNot an ELF file\033[m '
|
||||||
|
fi
|
||||||
|
|
||||||
|
# check for rpath / run path
|
||||||
|
if readelf -d $1 2>/dev/null | grep -q 'rpath'; then
|
||||||
|
echo -n -e '\033[31mRPATH \033[m '
|
||||||
|
else
|
||||||
|
echo -n -e '\033[32mNo RPATH \033[m '
|
||||||
|
fi
|
||||||
|
|
||||||
|
if readelf -d $1 2>/dev/null | grep -q 'runpath'; then
|
||||||
|
echo -n -e '\033[31mRUNPATH \033[m '
|
||||||
|
else
|
||||||
|
echo -n -e '\033[32mNo RUNPATH \033[m '
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# check process(es)
|
||||||
|
proccheck() {
|
||||||
|
# check for RELRO support
|
||||||
|
if readelf -l $1/exe 2>/dev/null | grep -q 'Program Headers'; then
|
||||||
|
if readelf -l $1/exe 2>/dev/null | grep -q 'GNU_RELRO'; then
|
||||||
|
if readelf -d $1/exe 2>/dev/null | grep -q 'BIND_NOW'; then
|
||||||
|
echo -n -e '\033[32mFull RELRO \033[m '
|
||||||
|
else
|
||||||
|
echo -n -e '\033[33mPartial RELRO \033[m '
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo -n -e '\033[31mNo RELRO \033[m '
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo -n -e '\033[31mPermission denied (please run as root)\033[m\n'
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# check for stack canary support
|
||||||
|
if readelf -s $1/exe 2>/dev/null | grep -q 'Symbol table'; then
|
||||||
|
if readelf -s $1/exe 2>/dev/null | grep -q '__stack_chk_fail'; then
|
||||||
|
echo -n -e '\033[32mCanary found \033[m '
|
||||||
|
else
|
||||||
|
echo -n -e '\033[31mNo canary found \033[m '
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [ "$1" != "1" ] ; then
|
||||||
|
echo -n -e '\033[33mPermission denied \033[m '
|
||||||
|
else
|
||||||
|
echo -n -e '\033[33mNo symbol table found\033[m '
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# first check for PaX support
|
||||||
|
if cat $1/status 2> /dev/null | grep -q 'PaX:'; then
|
||||||
|
pageexec=( $(cat $1/status 2> /dev/null | grep 'PaX:' | cut -b6) )
|
||||||
|
segmexec=( $(cat $1/status 2> /dev/null | grep 'PaX:' | cut -b10) )
|
||||||
|
mprotect=( $(cat $1/status 2> /dev/null | grep 'PaX:' | cut -b8) )
|
||||||
|
randmmap=( $(cat $1/status 2> /dev/null | grep 'PaX:' | cut -b9) )
|
||||||
|
if [[ "$pageexec" = "P" || "$segmexec" = "S" ]] && [[ "$mprotect" = "M" && "$randmmap" = "R" ]] ; then
|
||||||
|
echo -n -e '\033[32mPaX enabled\033[m '
|
||||||
|
elif [[ "$pageexec" = "p" && "$segmexec" = "s" && "$randmmap" = "R" ]] ; then
|
||||||
|
echo -n -e '\033[33mPaX ASLR only\033[m '
|
||||||
|
elif [[ "$pageexec" = "P" || "$segmexec" = "S" ]] && [[ "$mprotect" = "m" && "$randmmap" = "R" ]] ; then
|
||||||
|
echo -n -e '\033[33mPaX mprot off \033[m'
|
||||||
|
elif [[ "$pageexec" = "P" || "$segmexec" = "S" ]] && [[ "$mprotect" = "M" && "$randmmap" = "r" ]] ; then
|
||||||
|
echo -n -e '\033[33mPaX ASLR off\033[m '
|
||||||
|
elif [[ "$pageexec" = "P" || "$segmexec" = "S" ]] && [[ "$mprotect" = "m" && "$randmmap" = "r" ]] ; then
|
||||||
|
echo -n -e '\033[33mPaX NX only\033[m '
|
||||||
|
else
|
||||||
|
echo -n -e '\033[31mPaX disabled\033[m '
|
||||||
|
fi
|
||||||
|
# fallback check for NX support
|
||||||
|
elif readelf -W -l $1/exe 2>/dev/null | grep 'GNU_STACK' | grep -q 'RWE'; then
|
||||||
|
echo -n -e '\033[31mNX disabled\033[m '
|
||||||
|
else
|
||||||
|
echo -n -e '\033[32mNX enabled \033[m '
|
||||||
|
fi
|
||||||
|
|
||||||
|
# check for PIE support
|
||||||
|
if readelf -h $1/exe 2>/dev/null | grep -q 'Type:[[:space:]]*EXEC'; then
|
||||||
|
echo -n -e '\033[31mNo PIE \033[m '
|
||||||
|
elif readelf -h $1/exe 2>/dev/null | grep -q 'Type:[[:space:]]*DYN'; then
|
||||||
|
if readelf -d $1/exe 2>/dev/null | grep -q '(DEBUG)'; then
|
||||||
|
echo -n -e '\033[32mPIE enabled \033[m '
|
||||||
|
else
|
||||||
|
echo -n -e '\033[33mDynamic Shared Object\033[m '
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo -n -e '\033[33mNot an ELF file \033[m '
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# check mapped libraries
|
||||||
|
libcheck() {
|
||||||
|
libs=( $(awk '{ print $6 }' /proc/$1/maps | grep '/' | sort -u | xargs file | grep ELF | awk '{ print $1 }' | sed 's/:/ /') )
|
||||||
|
|
||||||
|
printf "\n* Loaded libraries (file information, # of mapped files: ${#libs[@]}):\n\n"
|
||||||
|
|
||||||
|
for element in $(seq 0 $((${#libs[@]} - 1)))
|
||||||
|
do
|
||||||
|
echo " ${libs[$element]}:"
|
||||||
|
echo -n " "
|
||||||
|
filecheck ${libs[$element]}
|
||||||
|
printf "\n\n"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# check for system-wide ASLR support
|
||||||
|
aslrcheck() {
|
||||||
|
# PaX ASLR support
|
||||||
|
if !(cat /proc/1/status 2> /dev/null | grep -q 'Name:') ; then
|
||||||
|
echo -n -e ':\033[33m insufficient privileges for PaX ASLR checks\033[m\n'
|
||||||
|
echo -n -e ' Fallback to standard Linux ASLR check'
|
||||||
|
fi
|
||||||
|
|
||||||
|
if cat /proc/1/status 2> /dev/null | grep -q 'PaX:'; then
|
||||||
|
printf ": "
|
||||||
|
if cat /proc/1/status 2> /dev/null | grep 'PaX:' | grep -q 'R'; then
|
||||||
|
echo -n -e '\033[32mPaX ASLR enabled\033[m\n\n'
|
||||||
|
else
|
||||||
|
echo -n -e '\033[31mPaX ASLR disabled\033[m\n\n'
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# standard Linux 'kernel.randomize_va_space' ASLR support
|
||||||
|
# (see the kernel file 'Documentation/sysctl/kernel.txt' for a detailed description)
|
||||||
|
printf " (kernel.randomize_va_space): "
|
||||||
|
if /sbin/sysctl -a 2>/dev/null | grep -q 'kernel.randomize_va_space = 1'; then
|
||||||
|
echo -n -e '\033[33mOn (Setting: 1)\033[m\n\n'
|
||||||
|
printf " Description - Make the addresses of mmap base, stack and VDSO page randomized.\n"
|
||||||
|
printf " This, among other things, implies that shared libraries will be loaded to \n"
|
||||||
|
printf " random addresses. Also for PIE-linked binaries, the location of code start\n"
|
||||||
|
printf " is randomized. Heap addresses are *not* randomized.\n\n"
|
||||||
|
elif /sbin/sysctl -a 2>/dev/null | grep -q 'kernel.randomize_va_space = 2'; then
|
||||||
|
echo -n -e '\033[32mOn (Setting: 2)\033[m\n\n'
|
||||||
|
printf " Description - Make the addresses of mmap base, heap, stack and VDSO page randomized.\n"
|
||||||
|
printf " This, among other things, implies that shared libraries will be loaded to random \n"
|
||||||
|
printf " addresses. Also for PIE-linked binaries, the location of code start is randomized.\n\n"
|
||||||
|
elif /sbin/sysctl -a 2>/dev/null | grep -q 'kernel.randomize_va_space = 0'; then
|
||||||
|
echo -n -e '\033[31mOff (Setting: 0)\033[m\n'
|
||||||
|
else
|
||||||
|
echo -n -e '\033[31mNot supported\033[m\n'
|
||||||
|
fi
|
||||||
|
printf " See the kernel file 'Documentation/sysctl/kernel.txt' for more details.\n\n"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# check cpu nx flag
|
||||||
|
nxcheck() {
|
||||||
|
if grep -q nx /proc/cpuinfo; then
|
||||||
|
echo -n -e '\033[32mYes\033[m\n\n'
|
||||||
|
else
|
||||||
|
echo -n -e '\033[31mNo\033[m\n\n'
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# check for kernel protection mechanisms
|
||||||
|
kernelcheck() {
|
||||||
|
printf " Description - List the status of kernel protection mechanisms. Rather than\n"
|
||||||
|
printf " inspect kernel mechanisms that may aid in the prevention of exploitation of\n"
|
||||||
|
printf " userspace processes, this option lists the status of kernel configuration\n"
|
||||||
|
printf " options that harden the kernel itself against attack.\n\n"
|
||||||
|
printf " Kernel config: "
|
||||||
|
|
||||||
|
if [ -f /proc/config.gz ] ; then
|
||||||
|
kconfig="zcat /proc/config.gz"
|
||||||
|
printf "\033[32m/proc/config.gz\033[m\n\n"
|
||||||
|
elif [ -f /boot/config-`uname -r` ] ; then
|
||||||
|
kconfig="cat /boot/config-`uname -r`"
|
||||||
|
printf "\033[33m/boot/config-`uname -r`\033[m\n\n"
|
||||||
|
printf " Warning: The config on disk may not represent running kernel config!\n\n";
|
||||||
|
elif [ -f "${KBUILD_OUTPUT:-/usr/src/linux}"/.config ] ; then
|
||||||
|
kconfig="cat ${KBUILD_OUTPUT:-/usr/src/linux}/.config"
|
||||||
|
printf "\033[33m%s\033[m\n\n" "${KBUILD_OUTPUT:-/usr/src/linux}/.config"
|
||||||
|
printf " Warning: The config on disk may not represent running kernel config!\n\n";
|
||||||
|
else
|
||||||
|
printf "\033[31mNOT FOUND\033[m\n\n"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf " GCC stack protector support: "
|
||||||
|
if $kconfig | grep -qi 'CONFIG_CC_STACKPROTECTOR=y'; then
|
||||||
|
printf "\033[32mEnabled\033[m\n"
|
||||||
|
else
|
||||||
|
printf "\033[31mDisabled\033[m\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf " Strict user copy checks: "
|
||||||
|
if $kconfig | grep -qi 'CONFIG_DEBUG_STRICT_USER_COPY_CHECKS=y'; then
|
||||||
|
printf "\033[32mEnabled\033[m\n"
|
||||||
|
else
|
||||||
|
printf "\033[31mDisabled\033[m\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf " Enforce read-only kernel data: "
|
||||||
|
if $kconfig | grep -qi 'CONFIG_DEBUG_RODATA=y'; then
|
||||||
|
printf "\033[32mEnabled\033[m\n"
|
||||||
|
else
|
||||||
|
printf "\033[31mDisabled\033[m\n"
|
||||||
|
fi
|
||||||
|
printf " Restrict /dev/mem access: "
|
||||||
|
if $kconfig | grep -qi 'CONFIG_STRICT_DEVMEM=y'; then
|
||||||
|
printf "\033[32mEnabled\033[m\n"
|
||||||
|
else
|
||||||
|
printf "\033[31mDisabled\033[m\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf " Restrict /dev/kmem access: "
|
||||||
|
if $kconfig | grep -qi 'CONFIG_DEVKMEM=y'; then
|
||||||
|
printf "\033[31mDisabled\033[m\n"
|
||||||
|
else
|
||||||
|
printf "\033[32mEnabled\033[m\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf "\n"
|
||||||
|
printf "* grsecurity / PaX: "
|
||||||
|
|
||||||
|
if $kconfig | grep -qi 'CONFIG_GRKERNSEC=y'; then
|
||||||
|
if $kconfig | grep -qi 'CONFIG_GRKERNSEC_HIGH=y'; then
|
||||||
|
printf "\033[32mHigh GRKERNSEC\033[m\n\n"
|
||||||
|
elif $kconfig | grep -qi 'CONFIG_GRKERNSEC_MEDIUM=y'; then
|
||||||
|
printf "\033[33mMedium GRKERNSEC\033[m\n\n"
|
||||||
|
elif $kconfig | grep -qi 'CONFIG_GRKERNSEC_LOW=y'; then
|
||||||
|
printf "\033[31mLow GRKERNSEC\033[m\n\n"
|
||||||
|
else
|
||||||
|
printf "\033[33mCustom GRKERNSEC\033[m\n\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf " Non-executable kernel pages: "
|
||||||
|
if $kconfig | grep -qi 'CONFIG_PAX_KERNEXEC=y'; then
|
||||||
|
printf "\033[32mEnabled\033[m\n"
|
||||||
|
else
|
||||||
|
printf "\033[31mDisabled\033[m\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf " Prevent userspace pointer deref: "
|
||||||
|
if $kconfig | grep -qi 'CONFIG_PAX_MEMORY_UDEREF=y'; then
|
||||||
|
printf "\033[32mEnabled\033[m\n"
|
||||||
|
else
|
||||||
|
printf "\033[31mDisabled\033[m\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf " Prevent kobject refcount overflow: "
|
||||||
|
if $kconfig | grep -qi 'CONFIG_PAX_REFCOUNT=y'; then
|
||||||
|
printf "\033[32mEnabled\033[m\n"
|
||||||
|
else
|
||||||
|
printf "\033[31mDisabled\033[m\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf " Bounds check heap object copies: "
|
||||||
|
if $kconfig | grep -qi 'CONFIG_PAX_USERCOPY=y'; then
|
||||||
|
printf "\033[32mEnabled\033[m\n"
|
||||||
|
else
|
||||||
|
printf "\033[31mDisabled\033[m\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf " Disable writing to kmem/mem/port: "
|
||||||
|
if $kconfig | grep -qi 'CONFIG_GRKERNSEC_KMEM=y'; then
|
||||||
|
printf "\033[32mEnabled\033[m\n"
|
||||||
|
else
|
||||||
|
printf "\033[31mDisabled\033[m\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf " Disable privileged I/O: "
|
||||||
|
if $kconfig | grep -qi 'CONFIG_GRKERNSEC_IO=y'; then
|
||||||
|
printf "\033[32mEnabled\033[m\n"
|
||||||
|
else
|
||||||
|
printf "\033[31mDisabled\033[m\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf " Harden module auto-loading: "
|
||||||
|
if $kconfig | grep -qi 'CONFIG_GRKERNSEC_MODHARDEN=y'; then
|
||||||
|
printf "\033[32mEnabled\033[m\n"
|
||||||
|
else
|
||||||
|
printf "\033[31mDisabled\033[m\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf " Hide kernel symbols: "
|
||||||
|
if $kconfig | grep -qi 'CONFIG_GRKERNSEC_HIDESYM=y'; then
|
||||||
|
printf "\033[32mEnabled\033[m\n"
|
||||||
|
else
|
||||||
|
printf "\033[31mDisabled\033[m\n"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
printf "\033[31mNo GRKERNSEC\033[m\n\n"
|
||||||
|
printf " The grsecurity / PaX patchset is available here:\n"
|
||||||
|
printf " http://grsecurity.net/\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf "\n"
|
||||||
|
printf "* Kernel Heap Hardening: "
|
||||||
|
|
||||||
|
if $kconfig | grep -qi 'CONFIG_KERNHEAP=y'; then
|
||||||
|
if $kconfig | grep -qi 'CONFIG_KERNHEAP_FULLPOISON=y'; then
|
||||||
|
printf "\033[32mFull KERNHEAP\033[m\n\n"
|
||||||
|
else
|
||||||
|
printf "\033[33mPartial KERNHEAP\033[m\n\n"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
printf "\033[31mNo KERNHEAP\033[m\n\n"
|
||||||
|
printf " The KERNHEAP hardening patchset is available here:\n"
|
||||||
|
printf " https://www.subreption.com/kernheap/\n\n"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# --- FORTIFY_SOURCE subfunctions (start) ---
|
||||||
|
|
||||||
|
# is FORTIFY_SOURCE supported by libc?
|
||||||
|
FS_libc_check() {
|
||||||
|
printf "* FORTIFY_SOURCE support available (libc) : "
|
||||||
|
|
||||||
|
if [ "${#FS_chk_func_libc[@]}" != "0" ] ; then
|
||||||
|
printf "\033[32mYes\033[m\n"
|
||||||
|
else
|
||||||
|
printf "\033[31mNo\033[m\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# was the binary compiled with FORTIFY_SOURCE?
|
||||||
|
FS_binary_check() {
|
||||||
|
printf "* Binary compiled with FORTIFY_SOURCE support: "
|
||||||
|
|
||||||
|
for FS_elem_functions in $(seq 0 $((${#FS_functions[@]} - 1)))
|
||||||
|
do
|
||||||
|
if [[ ${FS_functions[$FS_elem_functions]} =~ _chk ]] ; then
|
||||||
|
printf "\033[32mYes\033[m\n"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
printf "\033[31mNo\033[m\n"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
FS_comparison() {
|
||||||
|
echo
|
||||||
|
printf " ------ EXECUTABLE-FILE ------- . -------- LIBC --------\n"
|
||||||
|
printf " FORTIFY-able library functions | Checked function names\n"
|
||||||
|
printf " -------------------------------------------------------\n"
|
||||||
|
|
||||||
|
for FS_elem_libc in $(seq 0 $((${#FS_chk_func_libc[@]} - 1)))
|
||||||
|
do
|
||||||
|
for FS_elem_functions in $(seq 0 $((${#FS_functions[@]} - 1)))
|
||||||
|
do
|
||||||
|
FS_tmp_func=${FS_functions[$FS_elem_functions]}
|
||||||
|
FS_tmp_libc=${FS_chk_func_libc[$FS_elem_libc]}
|
||||||
|
|
||||||
|
if [[ $FS_tmp_func =~ ^$FS_tmp_libc$ ]] ; then
|
||||||
|
printf " \033[31m%-30s\033[m | __%s%s\n" $FS_tmp_func $FS_tmp_libc $FS_end
|
||||||
|
let FS_cnt_total++
|
||||||
|
let FS_cnt_unchecked++
|
||||||
|
elif [[ $FS_tmp_func =~ ^$FS_tmp_libc(_chk) ]] ; then
|
||||||
|
printf " \033[32m%-30s\033[m | __%s%s\n" $FS_tmp_func $FS_tmp_libc $FS_end
|
||||||
|
let FS_cnt_total++
|
||||||
|
let FS_cnt_checked++
|
||||||
|
fi
|
||||||
|
|
||||||
|
done
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
FS_summary() {
|
||||||
|
echo
|
||||||
|
printf "SUMMARY:\n\n"
|
||||||
|
printf "* Number of checked functions in libc : ${#FS_chk_func_libc[@]}\n"
|
||||||
|
printf "* Total number of library functions in the executable: ${#FS_functions[@]}\n"
|
||||||
|
printf "* Number of FORTIFY-able functions in the executable : %s\n" $FS_cnt_total
|
||||||
|
printf "* Number of checked functions in the executable : \033[32m%s\033[m\n" $FS_cnt_checked
|
||||||
|
printf "* Number of unchecked functions in the executable : \033[31m%s\033[m\n" $FS_cnt_unchecked
|
||||||
|
echo
|
||||||
|
}
|
||||||
|
|
||||||
|
# --- FORTIFY_SOURCE subfunctions (end) ---
|
||||||
|
|
||||||
|
if !(command_exists readelf) ; then
|
||||||
|
printf "\033[31mWarning: 'readelf' not found! It's required for most checks.\033[m\n\n"
|
||||||
|
have_readelf=0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# parse command-line arguments
|
||||||
|
case "$1" in
|
||||||
|
|
||||||
|
--version)
|
||||||
|
version
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
|
||||||
|
--help)
|
||||||
|
help
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
|
||||||
|
--dir)
|
||||||
|
if [ "$3" = "-v" ] ; then
|
||||||
|
verbose=true
|
||||||
|
fi
|
||||||
|
if [ $have_readelf -eq 0 ] ; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ -z "$2" ] ; then
|
||||||
|
printf "\033[31mError: Please provide a valid directory.\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# remove trailing slashes
|
||||||
|
tempdir=`echo $2 | sed -e "s/\/*$//"`
|
||||||
|
if [ ! -d $tempdir ] ; then
|
||||||
|
printf "\033[31mError: The directory '$tempdir' does not exist.\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
cd $tempdir
|
||||||
|
printf "RELRO STACK CANARY NX PIE RPATH RUNPATH FILE\n"
|
||||||
|
for N in [A-Za-z]*; do
|
||||||
|
if [ "$N" != "[A-Za-z]*" ]; then
|
||||||
|
# read permissions?
|
||||||
|
if [ ! -r $N ]; then
|
||||||
|
printf "\033[31mError: No read permissions for '$tempdir/$N' (run as root).\033[m\n"
|
||||||
|
else
|
||||||
|
# ELF executable?
|
||||||
|
out=`file $N`
|
||||||
|
if [[ ! $out =~ ELF ]] ; then
|
||||||
|
if [ "$verbose" = "true" ] ; then
|
||||||
|
printf "\033[34m*** Not an ELF file: $tempdir/"
|
||||||
|
file $N
|
||||||
|
printf "\033[m"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
filecheck $N
|
||||||
|
if [ `find $tempdir/$N \( -perm -004000 -o -perm -002000 \) -type f -print` ]; then
|
||||||
|
printf "\033[37;41m%s%s\033[m" $2 $N
|
||||||
|
else
|
||||||
|
printf "%s%s" $tempdir/ $N
|
||||||
|
fi
|
||||||
|
echo
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
|
||||||
|
--file)
|
||||||
|
if [ $have_readelf -eq 0 ] ; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ -z "$2" ] ; then
|
||||||
|
printf "\033[31mError: Please provide a valid file.\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# does the file exist?
|
||||||
|
if [ ! -e $2 ] ; then
|
||||||
|
printf "\033[31mError: The file '$2' does not exist.\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# read permissions?
|
||||||
|
if [ ! -r $2 ] ; then
|
||||||
|
printf "\033[31mError: No read permissions for '$2' (run as root).\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# ELF executable?
|
||||||
|
out=`file $2`
|
||||||
|
if [[ ! $out =~ ELF ]] ; then
|
||||||
|
printf "\033[31mError: Not an ELF file: "
|
||||||
|
file $2
|
||||||
|
printf "\033[m\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
printf "RELRO STACK CANARY NX PIE RPATH RUNPATH FILE\n"
|
||||||
|
filecheck $2
|
||||||
|
if [ `find $2 \( -perm -004000 -o -perm -002000 \) -type f -print` ] ; then
|
||||||
|
printf "\033[37;41m%s%s\033[m" $2 $N
|
||||||
|
else
|
||||||
|
printf "%s" $2
|
||||||
|
fi
|
||||||
|
echo
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
|
||||||
|
--proc-all)
|
||||||
|
if [ $have_readelf -eq 0 ] ; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
cd /proc
|
||||||
|
printf "* System-wide ASLR"
|
||||||
|
aslrcheck
|
||||||
|
printf "* Does the CPU support NX: "
|
||||||
|
nxcheck
|
||||||
|
printf " COMMAND PID RELRO STACK CANARY NX/PaX PIE\n"
|
||||||
|
for N in [1-9]*; do
|
||||||
|
if [ $N != $$ ] && readlink -q $N/exe > /dev/null; then
|
||||||
|
printf "%16s" `head -1 $N/status | cut -b 7-`
|
||||||
|
printf "%7d " $N
|
||||||
|
proccheck $N
|
||||||
|
echo
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [ ! -e /usr/bin/id ] ; then
|
||||||
|
printf "\n\033[33mNote: If you are running 'checksec.sh' as an unprivileged user, you\n"
|
||||||
|
printf " will not see all processes. Please run the script as root.\033[m\n\n"
|
||||||
|
else
|
||||||
|
if !(root_privs) ; then
|
||||||
|
printf "\n\033[33mNote: You are running 'checksec.sh' as an unprivileged user.\n"
|
||||||
|
printf " Too see all processes, please run the script as root.\033[m\n\n"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
|
||||||
|
--proc)
|
||||||
|
if [ $have_readelf -eq 0 ] ; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ -z "$2" ] ; then
|
||||||
|
printf "\033[31mError: Please provide a valid process name.\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if !(isString "$2") ; then
|
||||||
|
printf "\033[31mError: Please provide a valid process name.\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
cd /proc
|
||||||
|
printf "* System-wide ASLR"
|
||||||
|
aslrcheck
|
||||||
|
printf "* Does the CPU support NX: "
|
||||||
|
nxcheck
|
||||||
|
printf " COMMAND PID RELRO STACK CANARY NX/PaX PIE\n"
|
||||||
|
for N in `ps -Ao pid,comm | grep $2 | cut -b1-6`; do
|
||||||
|
if [ -d $N ] ; then
|
||||||
|
printf "%16s" `head -1 $N/status | cut -b 7-`
|
||||||
|
printf "%7d " $N
|
||||||
|
# read permissions?
|
||||||
|
if [ ! -r $N/exe ] ; then
|
||||||
|
if !(root_privs) ; then
|
||||||
|
printf "\033[31mNo read permissions for '/proc/$N/exe' (run as root).\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ ! `readlink $N/exe` ] ; then
|
||||||
|
printf "\033[31mPermission denied. Requested process ID belongs to a kernel thread.\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
proccheck $N
|
||||||
|
echo
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
|
||||||
|
--proc-libs)
|
||||||
|
if [ $have_readelf -eq 0 ] ; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ -z "$2" ] ; then
|
||||||
|
printf "\033[31mError: Please provide a valid process ID.\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if !(isNumeric "$2") ; then
|
||||||
|
printf "\033[31mError: Please provide a valid process ID.\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
cd /proc
|
||||||
|
printf "* System-wide ASLR"
|
||||||
|
aslrcheck
|
||||||
|
printf "* Does the CPU support NX: "
|
||||||
|
nxcheck
|
||||||
|
printf "* Process information:\n\n"
|
||||||
|
printf " COMMAND PID RELRO STACK CANARY NX/PaX PIE\n"
|
||||||
|
N=$2
|
||||||
|
if [ -d $N ] ; then
|
||||||
|
printf "%16s" `head -1 $N/status | cut -b 7-`
|
||||||
|
printf "%7d " $N
|
||||||
|
# read permissions?
|
||||||
|
if [ ! -r $N/exe ] ; then
|
||||||
|
if !(root_privs) ; then
|
||||||
|
printf "\033[31mNo read permissions for '/proc/$N/exe' (run as root).\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ ! `readlink $N/exe` ] ; then
|
||||||
|
printf "\033[31mPermission denied. Requested process ID belongs to a kernel thread.\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
proccheck $N
|
||||||
|
echo
|
||||||
|
libcheck $N
|
||||||
|
fi
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
|
||||||
|
--kernel)
|
||||||
|
cd /proc
|
||||||
|
printf "* Kernel protection information:\n\n"
|
||||||
|
kernelcheck
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
|
||||||
|
--fortify-file)
|
||||||
|
if [ $have_readelf -eq 0 ] ; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ -z "$2" ] ; then
|
||||||
|
printf "\033[31mError: Please provide a valid file.\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# does the file exist?
|
||||||
|
if [ ! -e $2 ] ; then
|
||||||
|
printf "\033[31mError: The file '$2' does not exist.\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# read permissions?
|
||||||
|
if [ ! -r $2 ] ; then
|
||||||
|
printf "\033[31mError: No read permissions for '$2' (run as root).\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# ELF executable?
|
||||||
|
out=`file $2`
|
||||||
|
if [[ ! $out =~ ELF ]] ; then
|
||||||
|
printf "\033[31mError: Not an ELF file: "
|
||||||
|
file $2
|
||||||
|
printf "\033[m\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ -e /lib/libc.so.6 ] ; then
|
||||||
|
FS_libc=/lib/libc.so.6
|
||||||
|
elif [ -e /lib64/libc.so.6 ] ; then
|
||||||
|
FS_libc=/lib64/libc.so.6
|
||||||
|
elif [ -e /lib/i386-linux-gnu/libc.so.6 ] ; then
|
||||||
|
FS_libc=/lib/i386-linux-gnu/libc.so.6
|
||||||
|
elif [ -e /lib/x86_64-linux-gnu/libc.so.6 ] ; then
|
||||||
|
FS_libc=/lib/x86_64-linux-gnu/libc.so.6
|
||||||
|
else
|
||||||
|
printf "\033[31mError: libc not found.\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
FS_chk_func_libc=( $(readelf -s $FS_libc | grep _chk@@ | awk '{ print $8 }' | cut -c 3- | sed -e 's/_chk@.*//') )
|
||||||
|
FS_functions=( $(readelf -s $2 | awk '{ print $8 }' | sed 's/_*//' | sed -e 's/@.*//') )
|
||||||
|
|
||||||
|
FS_libc_check
|
||||||
|
FS_binary_check
|
||||||
|
FS_comparison
|
||||||
|
FS_summary
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
|
||||||
|
--fortify-proc)
|
||||||
|
if [ $have_readelf -eq 0 ] ; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ -z "$2" ] ; then
|
||||||
|
printf "\033[31mError: Please provide a valid process ID.\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if !(isNumeric "$2") ; then
|
||||||
|
printf "\033[31mError: Please provide a valid process ID.\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
cd /proc
|
||||||
|
N=$2
|
||||||
|
if [ -d $N ] ; then
|
||||||
|
# read permissions?
|
||||||
|
if [ ! -r $N/exe ] ; then
|
||||||
|
if !(root_privs) ; then
|
||||||
|
printf "\033[31mNo read permissions for '/proc/$N/exe' (run as root).\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ ! `readlink $N/exe` ] ; then
|
||||||
|
printf "\033[31mPermission denied. Requested process ID belongs to a kernel thread.\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ -e /lib/libc.so.6 ] ; then
|
||||||
|
FS_libc=/lib/libc.so.6
|
||||||
|
elif [ -e /lib64/libc.so.6 ] ; then
|
||||||
|
FS_libc=/lib64/libc.so.6
|
||||||
|
elif [ -e /lib/i386-linux-gnu/libc.so.6 ] ; then
|
||||||
|
FS_libc=/lib/i386-linux-gnu/libc.so.6
|
||||||
|
elif [ -e /lib/x86_64-linux-gnu/libc.so.6 ] ; then
|
||||||
|
FS_libc=/lib/x86_64-linux-gnu/libc.so.6
|
||||||
|
else
|
||||||
|
printf "\033[31mError: libc not found.\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
printf "* Process name (PID) : %s (%d)\n" `head -1 $N/status | cut -b 7-` $N
|
||||||
|
FS_chk_func_libc=( $(readelf -s $FS_libc | grep _chk@@ | awk '{ print $8 }' | cut -c 3- | sed -e 's/_chk@.*//') )
|
||||||
|
FS_functions=( $(readelf -s $2/exe | awk '{ print $8 }' | sed 's/_*//' | sed -e 's/@.*//') )
|
||||||
|
|
||||||
|
FS_libc_check
|
||||||
|
FS_binary_check
|
||||||
|
FS_comparison
|
||||||
|
FS_summary
|
||||||
|
fi
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
if [ "$#" != "0" ] ; then
|
||||||
|
printf "\033[31mError: Unknown option '$1'.\033[m\n\n"
|
||||||
|
fi
|
||||||
|
help
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
17
deb-to-kali.sh
Executable file
17
deb-to-kali.sh
Executable file
@@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ `whoami` != "root" ] ; then
|
||||||
|
echo "This must be run as root." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat >/etc/apt/sources.list.d/kali.list <<KALI_EOF
|
||||||
|
deb http://http.kali.org/kali sana main non-free contrib
|
||||||
|
deb-src http://http.kali.org/kali sana main non-free contrib
|
||||||
|
deb http://security.kali.org/kali-security/ sana/updates main contrib non-free
|
||||||
|
deb-src http://security.kali.org/kali-security/ sana/updates main contrib non-free
|
||||||
|
KALI_EOF
|
||||||
|
|
||||||
|
/usr/bin/apt-key add kali-repo.key
|
||||||
|
/usr/bin/apt-get update
|
||||||
|
/usr/bin/apt-get install kali-linux-full
|
||||||
3
dotfiles/ackrc
Normal file
3
dotfiles/ackrc
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
--follow
|
||||||
|
--pager=less -LMXRF
|
||||||
|
--smart-case
|
||||||
32
dotfiles/aliases
Normal file
32
dotfiles/aliases
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
# General aliases, should only be sourced in interactive shells
|
||||||
|
|
||||||
|
# Add an "alert" alias for long running commands. Use like so:
|
||||||
|
# sleep 10; alert
|
||||||
|
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
|
||||||
|
|
||||||
|
# Cryptsetup alias
|
||||||
|
alias luksFormat='sudo cryptsetup luksFormat -s 512 -c aes-xts-plain --use-random -h sha256 -i 5000'
|
||||||
|
|
||||||
|
# Colors
|
||||||
|
alias ls='ls --color=auto'
|
||||||
|
alias grep='grep --color=auto'
|
||||||
|
alias egrep='egrep --color=auto'
|
||||||
|
alias fgrep='fgrep --color=auto'
|
||||||
|
|
||||||
|
# Easy upgrade
|
||||||
|
alias dist-upgrade="sudo sh -c 'apt-get update && apt-get -y dist-upgrade'"
|
||||||
|
|
||||||
|
# Timestamp in a machine-sortable form
|
||||||
|
alias tstamp="date '+%Y%m%d-%H%M%S'"
|
||||||
|
|
||||||
|
# Prepare code for markdown
|
||||||
|
alias mdcode="sed 's/^/ /'"
|
||||||
|
|
||||||
|
# Intel format plz
|
||||||
|
alias objdump="command objdump -M intel"
|
||||||
|
|
||||||
|
# ACK
|
||||||
|
alias ack="ack-grep"
|
||||||
|
|
||||||
|
# Launch chrome for burp
|
||||||
|
alias chrome-for-burp="/usr/bin/google-chrome --ignore-certificate-errors --user-data-dir=${HOME}/.chrome-for-burp --proxy-server=127.0.0.1:8080 >/dev/null 2>&1 &"
|
||||||
@@ -37,13 +37,8 @@ xterm*|rxvt*)
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# enable color support of ls and also add handy aliases
|
|
||||||
if [ -x /usr/bin/dircolors ]; then
|
if [ -x /usr/bin/dircolors ]; then
|
||||||
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
|
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
|
||||||
alias ls='ls --color=auto'
|
|
||||||
alias grep='grep --color=auto'
|
|
||||||
alias fgrep='fgrep --color=auto'
|
|
||||||
alias egrep='egrep --color=auto'
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Bash completion
|
# Bash completion
|
||||||
0
dotfiles/byobu/.welcome-displayed
Normal file
0
dotfiles/byobu/.welcome-displayed
Normal file
1
dotfiles/byobu/backend
Normal file
1
dotfiles/byobu/backend
Normal file
@@ -0,0 +1 @@
|
|||||||
|
BYOBU_BACKEND=tmux
|
||||||
3
dotfiles/byobu/color
Normal file
3
dotfiles/byobu/color
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
BACKGROUND=k
|
||||||
|
FOREGROUND=w
|
||||||
|
MONOCHROME=0
|
||||||
5
dotfiles/byobu/color.tmux
Normal file
5
dotfiles/byobu/color.tmux
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
BYOBU_DARK=black
|
||||||
|
BYOBU_LIGHT=white
|
||||||
|
BYOBU_ACCENT=magenta
|
||||||
|
BYOBU_HIGHLIGHT=red
|
||||||
|
MONOCHROME=0
|
||||||
1
dotfiles/byobu/keybindings
Normal file
1
dotfiles/byobu/keybindings
Normal file
@@ -0,0 +1 @@
|
|||||||
|
source $BYOBU_PREFIX/share/byobu/keybindings/common
|
||||||
4
dotfiles/byobu/keybindings.tmux
Normal file
4
dotfiles/byobu/keybindings.tmux
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
unbind-key -n C-a
|
||||||
|
set -g prefix ^A
|
||||||
|
set -g prefix2 ^A
|
||||||
|
bind a send-prefix
|
||||||
1
dotfiles/byobu/profile
Normal file
1
dotfiles/byobu/profile
Normal file
@@ -0,0 +1 @@
|
|||||||
|
source $BYOBU_PREFIX/share/byobu/profiles/common
|
||||||
1
dotfiles/byobu/profile.tmux
Normal file
1
dotfiles/byobu/profile.tmux
Normal file
@@ -0,0 +1 @@
|
|||||||
|
source $BYOBU_PREFIX/share/byobu/profiles/tmux
|
||||||
1
dotfiles/byobu/prompt
Normal file
1
dotfiles/byobu/prompt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
[ -r /usr/share/byobu/profiles/bashrc ] && . /usr/share/byobu/profiles/bashrc #byobu-prompt#
|
||||||
37
dotfiles/byobu/status
Normal file
37
dotfiles/byobu/status
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
# status - Byobu's default status enabled/disabled settings
|
||||||
|
#
|
||||||
|
# Override these in $BYOBU_CONFIG_DIR/status
|
||||||
|
# where BYOBU_CONFIG_DIR is XDG_CONFIG_HOME if defined,
|
||||||
|
# and $HOME/.byobu otherwise.
|
||||||
|
#
|
||||||
|
# Copyright (C) 2009-2011 Canonical Ltd.
|
||||||
|
#
|
||||||
|
# Authors: Dustin Kirkland <kirkland@byobu.co>
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, version 3 of the License.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# Status beginning with '#' are disabled.
|
||||||
|
|
||||||
|
# Screen has two status lines, with 4 quadrants for status
|
||||||
|
screen_upper_left="color"
|
||||||
|
screen_upper_right="color whoami hostname ip_address menu"
|
||||||
|
screen_lower_left="color logo distro release #arch"
|
||||||
|
screen_lower_right="color network #disk_io custom #entropy raid reboot_required updates_available #apport #services #mail users uptime #ec2_cost #rcs_cost #fan_speed #cpu_temp battery wifi_quality #processes load_average cpu_count cpu_freq memory #swap #disk #time_utc date time"
|
||||||
|
|
||||||
|
# Tmux has one status line, with 2 halves for status
|
||||||
|
tmux_left="logo #distro release #arch"
|
||||||
|
# You can have as many tmux right lines below here, and cycle through them using Shift-F5
|
||||||
|
tmux_right="#network #disk_io #custom #entropy raid reboot_required updates_available #apport #services #mail #users uptime #ec2_cost #rcs_cost #fan_speed #cpu_temp #battery #wifi_quality #processes load_average cpu_count cpu_freq memory #swap #disk #whoami #hostname #ip_address #time_utc date time"
|
||||||
|
#tmux_right="network #disk_io #custom entropy raid reboot_required updates_available #apport #services #mail users uptime #ec2_cost #rcs_cost fan_speed cpu_temp battery wifi_quality #processes load_average cpu_count cpu_freq memory #swap #disk whoami hostname ip_address #time_utc date time"
|
||||||
|
#tmux_right="network #disk_io custom #entropy raid reboot_required updates_available #apport #services #mail users uptime #ec2_cost #rcs_cost #fan_speed #cpu_temp battery wifi_quality #processes load_average cpu_count cpu_freq memory #swap #disk #whoami #hostname ip_address #time_utc date time"
|
||||||
|
#tmux_right="#network disk_io #custom entropy #raid #reboot_required #updates_available #apport #services #mail #users #uptime #ec2_cost #rcs_cost fan_speed cpu_temp #battery #wifi_quality #processes #load_average #cpu_count #cpu_freq #memory #swap whoami hostname ip_address #time_utc disk date time"
|
||||||
78
dotfiles/byobu/statusrc
Normal file
78
dotfiles/byobu/statusrc
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
# statusrc - Byobu's default status configurations
|
||||||
|
#
|
||||||
|
# Override these in $BYOBU_CONFIG_DIR/statusrc
|
||||||
|
# where BYOBU_CONFIG_DIR is XDG_CONFIG_HOME if defined,
|
||||||
|
# and $HOME/.byobu otherwise.
|
||||||
|
#
|
||||||
|
# Copyright (C) 2009-2011 Canonical Ltd.
|
||||||
|
#
|
||||||
|
# Authors: Dustin Kirkland <kirkland@byobu.co>
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, version 3 of the License.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# Configurations that you can override; if you leave these commented out,
|
||||||
|
# Byobu will try to auto-detect them.
|
||||||
|
|
||||||
|
# This should be auto-detected for most distro, but setting it here will save
|
||||||
|
# some call to lsb_release and the like.
|
||||||
|
#DISTRO=Ubuntu
|
||||||
|
|
||||||
|
# Default: depends on the distro (which is either auto-detected, either set
|
||||||
|
# via $DISTRO)
|
||||||
|
#LOGO="\o/"
|
||||||
|
|
||||||
|
# Abbreviate the release to N characters
|
||||||
|
# By default, this is disabled. But if you set RELEASE_ABBREVIATED=1
|
||||||
|
# and your lsb_release is "precise", only "p" will be displayed
|
||||||
|
#RELEASE_ABBREVIATED=1
|
||||||
|
|
||||||
|
# Default: /
|
||||||
|
#MONITORED_DISK=/
|
||||||
|
|
||||||
|
# Minimum disk throughput that triggers the notification (in kB/s)
|
||||||
|
# Default: 50
|
||||||
|
#DISK_IO_THRESHOLD=50
|
||||||
|
|
||||||
|
# Default: eth0
|
||||||
|
#MONITORED_NETWORK=eth0
|
||||||
|
|
||||||
|
# Unit used for network throughput (either bits per second or bytes per second)
|
||||||
|
# Default: bits
|
||||||
|
#NETWORK_UNITS=bytes
|
||||||
|
|
||||||
|
# Minimum network throughput that triggers the notification (in kbit/s)
|
||||||
|
# Default: 20
|
||||||
|
#NETWORK_THRESHOLD=20
|
||||||
|
|
||||||
|
# You can add an additional source of temperature here
|
||||||
|
#MONITORED_TEMP=/proc/acpi/thermal_zone/THM0/temperature
|
||||||
|
|
||||||
|
# Default: C
|
||||||
|
#TEMP=F
|
||||||
|
|
||||||
|
#SERVICES="eucalyptus-nc|NC eucalyptus-cloud|CLC eucalyptus-walrus eucalyptus-cc|CC eucalyptus-sc|SC"
|
||||||
|
|
||||||
|
#FAN=$(find /sys -type f -name fan1_input | head -n1)
|
||||||
|
|
||||||
|
# You can set this to 1 to report your external/public ip address
|
||||||
|
# Default: 0
|
||||||
|
#IP_EXTERNAL=0
|
||||||
|
|
||||||
|
# The users notification normally counts ssh sessions; set this configuration to '1'
|
||||||
|
# to instead count number of distinct users logged onto the system
|
||||||
|
# Default: 0
|
||||||
|
#USERS_DISTINCT=0
|
||||||
|
|
||||||
|
# Set this to zero to hide seconds int the time display
|
||||||
|
# Default 1
|
||||||
|
#TIME_SECONDS=0
|
||||||
0
dotfiles/byobu/windows
Normal file
0
dotfiles/byobu/windows
Normal file
4
dotfiles/curlrc
Normal file
4
dotfiles/curlrc
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
tlsv1
|
||||||
|
user-agent = "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0 Safari/537.36"
|
||||||
|
create-dirs
|
||||||
|
referer = ";auto"
|
||||||
82
dotfiles/gdbinit
Normal file
82
dotfiles/gdbinit
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
# General options
|
||||||
|
set verbose off
|
||||||
|
set disassembly-flavor intel
|
||||||
|
set output-radix 0x10
|
||||||
|
set input-radix 10.
|
||||||
|
|
||||||
|
# helpful shortcuts
|
||||||
|
define lsbp
|
||||||
|
info breakpoints
|
||||||
|
end
|
||||||
|
document lsbp
|
||||||
|
List all breakpoints
|
||||||
|
end
|
||||||
|
|
||||||
|
define iframe
|
||||||
|
info frame
|
||||||
|
info args
|
||||||
|
info locals
|
||||||
|
end
|
||||||
|
define reg
|
||||||
|
info registers
|
||||||
|
end
|
||||||
|
|
||||||
|
# __________________gdb options_________________
|
||||||
|
|
||||||
|
# set to 1 to have ARM target debugging as default, use the "arm" command to switch inside gdb
|
||||||
|
set $ARM = 0
|
||||||
|
# set to 0 if you have problems with the colorized prompt - reported by Plouj with Ubuntu gdb 7.2
|
||||||
|
set $COLOUREDPROMPT = 0
|
||||||
|
# Colour the first line of the disassembly - default is green, if you want to change it search for
|
||||||
|
# SETCOLOUR1STLINE and modify it :-)
|
||||||
|
set $SETCOLOUR1STLINE = 0
|
||||||
|
# set to 0 to remove display of objectivec messages (default is 1)
|
||||||
|
set $SHOWOBJECTIVEC = 1
|
||||||
|
# set to 0 to remove display of cpu registers (default is 1)
|
||||||
|
set $SHOWCPUREGISTERS = 1
|
||||||
|
# set to 1 to enable display of stack (default is 0)
|
||||||
|
set $SHOWSTACK = 1
|
||||||
|
# set to 1 to show 4 bytes of the stack at a time for 32bit and 8 bytes for 64bit
|
||||||
|
set $STACK_WORDSIZE = 1
|
||||||
|
# set to 1 to enable display of data window (default is 0)
|
||||||
|
set $SHOWDATAWIN = 0
|
||||||
|
# set to 0 to disable coloured display of changed registers
|
||||||
|
set $SHOWREGCHANGES = 1
|
||||||
|
# set to 1 so skip command to execute the instruction at the new location
|
||||||
|
# by default it EIP/RIP will be modified and update the new context but not execute the instruction
|
||||||
|
set $SKIPEXECUTE = 0
|
||||||
|
# if $SKIPEXECUTE is 1 configure the type of execution
|
||||||
|
# 1 = use stepo (do not get into calls), 0 = use stepi (step into calls)
|
||||||
|
set $SKIPSTEP = 1
|
||||||
|
# show the ARM opcodes - change to 0 if you don't want such thing (in x/i command)
|
||||||
|
set $ARMOPCODES = 1
|
||||||
|
# x86 disassembly flavor: 0 for Intel, 1 for AT&T
|
||||||
|
set $X86FLAVOR = 0
|
||||||
|
# use colorized output or not
|
||||||
|
set $USECOLOR = 0
|
||||||
|
# 64 bit options
|
||||||
|
set $64BITS = 0
|
||||||
|
# Remote 64 bit debugging
|
||||||
|
set $KDP64BITS = -1
|
||||||
|
|
||||||
|
set confirm off
|
||||||
|
set verbose off
|
||||||
|
|
||||||
|
set output-radix 0x10
|
||||||
|
set input-radix 0x10
|
||||||
|
|
||||||
|
# These make gdb never pause in its output
|
||||||
|
set height 0
|
||||||
|
set width 0
|
||||||
|
|
||||||
|
set $SHOW_CONTEXT = 1
|
||||||
|
set $SHOW_NEST_INSN = 0
|
||||||
|
|
||||||
|
set $CONTEXTSIZE_STACK = 6
|
||||||
|
set $CONTEXTSIZE_DATA = 8
|
||||||
|
set $CONTEXTSIZE_CODE = 8
|
||||||
|
|
||||||
|
# __________________end gdb options_________________
|
||||||
|
#
|
||||||
|
|
||||||
|
source ~/.reverser-gdbinit
|
||||||
45
dotfiles/gitconfig
Normal file
45
dotfiles/gitconfig
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
[user]
|
||||||
|
name = David Tomaschik
|
||||||
|
email = david@systemoverlord.com
|
||||||
|
signingKey = 0x5DEA789B
|
||||||
|
|
||||||
|
[core]
|
||||||
|
excludesfile = ~/.gitignore
|
||||||
|
editor = vim
|
||||||
|
whitespace = trailing-space,space-before-tab
|
||||||
|
|
||||||
|
[color]
|
||||||
|
diff = auto
|
||||||
|
status = auto
|
||||||
|
|
||||||
|
[diff]
|
||||||
|
tool = vimdiff
|
||||||
|
|
||||||
|
[difftool]
|
||||||
|
prompt = false
|
||||||
|
|
||||||
|
[alias]
|
||||||
|
st = status
|
||||||
|
|
||||||
|
[push]
|
||||||
|
default = current
|
||||||
|
|
||||||
|
[web]
|
||||||
|
browser = chrome
|
||||||
|
|
||||||
|
[github]
|
||||||
|
user = matir
|
||||||
|
|
||||||
|
# Site specific config
|
||||||
|
[url "https://github.com/"]
|
||||||
|
insteadOf = github://
|
||||||
|
|
||||||
|
[url "ssh://git@github.com/"]
|
||||||
|
pushInsteadOf = github://
|
||||||
|
|
||||||
|
[url "git://gist.github.com/"]
|
||||||
|
insteadOf = "gist:"
|
||||||
|
|
||||||
|
[url "git@gist.github.com:"]
|
||||||
|
pushInsteadOf = "gist:"
|
||||||
|
pushInsteadOf = "git://gist.github.com/"
|
||||||
19
dotfiles/gitignore
Normal file
19
dotfiles/gitignore
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# Common trash (metadata, backup files, etc.)
|
||||||
|
.DS_Store
|
||||||
|
.DS_Store?
|
||||||
|
._*
|
||||||
|
.Spotlight-V100
|
||||||
|
.Trashes
|
||||||
|
ehthumbs.db
|
||||||
|
Thumbs.db
|
||||||
|
*.swp
|
||||||
|
*~
|
||||||
|
*.bak
|
||||||
|
|
||||||
|
# Object files
|
||||||
|
*.py[co]
|
||||||
|
*.[oa]
|
||||||
|
|
||||||
|
# Try to avoid accidentally checking in private keys
|
||||||
|
id_rsa
|
||||||
|
id_ecdsa
|
||||||
10
dotfiles/gnupg/gpg.conf
Normal file
10
dotfiles/gnupg/gpg.conf
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
use-agent
|
||||||
|
# HKPS requires gnupg-curl for gpg1
|
||||||
|
keyserver hkps://hkps.pool.sks-keyservers.net
|
||||||
|
# Unfortunately, the path must be fully-qualified
|
||||||
|
keyserver-options auto-key-retrieve ca-cert-file=/home/david/.gnupg/sks-keyservers.pem
|
||||||
|
auto-key-locate keyserver
|
||||||
|
personal-digest-preferences SHA256
|
||||||
|
cert-digest-algo SHA256
|
||||||
|
default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed
|
||||||
|
cipher-algo AES256
|
||||||
32
dotfiles/gnupg/sks-keyservers.pem
Normal file
32
dotfiles/gnupg/sks-keyservers.pem
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
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
|
||||||
|
-----END CERTIFICATE-----
|
||||||
@@ -1,37 +1,4 @@
|
|||||||
servers = (
|
servers = (
|
||||||
{ address = "eu.irc6.net"; chatnet = "IRCnet"; port = "6667"; },
|
|
||||||
{ address = "open.ircnet.net"; chatnet = "IRCnet"; port = "6667"; },
|
|
||||||
{ address = "irc.efnet.org"; chatnet = "EFNet"; port = "6667"; },
|
|
||||||
{
|
|
||||||
address = "irc.undernet.org";
|
|
||||||
chatnet = "Undernet";
|
|
||||||
port = "6667";
|
|
||||||
},
|
|
||||||
{ address = "irc.dal.net"; chatnet = "DALnet"; port = "6667"; },
|
|
||||||
{
|
|
||||||
address = "irc.quakenet.org";
|
|
||||||
chatnet = "QuakeNet";
|
|
||||||
port = "6667";
|
|
||||||
},
|
|
||||||
{ address = "irc.oftc.net"; chatnet = "OFTC"; port = "6667"; },
|
|
||||||
{
|
|
||||||
address = "irc.gamesurge.net";
|
|
||||||
chatnet = "GameSurge";
|
|
||||||
port = "6667";
|
|
||||||
},
|
|
||||||
{ address = "irc.webchat.org"; chatnet = "WebChat"; port = "6667"; },
|
|
||||||
{ address = "irc.rizon.net"; chatnet = "Rizon"; port = "6667"; },
|
|
||||||
{ address = "irc.link-net.org"; chatnet = "LinkNet"; port = "6667"; },
|
|
||||||
{ address = "silc.silcnet.org"; chatnet = "SILC"; port = "706"; },
|
|
||||||
{
|
|
||||||
address = "irc.freenode.net";
|
|
||||||
chatnet = "freenode";
|
|
||||||
port = "7000";
|
|
||||||
use_ssl = "yes";
|
|
||||||
ssl_verify = "yes";
|
|
||||||
ssl_capath = "/etc/ssl/certs";
|
|
||||||
autoconnect = "yes";
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
address = "ircs.overthewire.org";
|
address = "ircs.overthewire.org";
|
||||||
chatnet = "overthewire";
|
chatnet = "overthewire";
|
||||||
@@ -49,9 +16,27 @@ servers = (
|
|||||||
autoconnect = "yes";
|
autoconnect = "yes";
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
address = "irc.us.hackint.eu";
|
address = "chat.freenode.net";
|
||||||
chatnet = "hackint";
|
chatnet = "freenode";
|
||||||
port = "9999";
|
port = "7000";
|
||||||
|
use_ssl = "yes";
|
||||||
|
ssl_cert = "~/.irssi/matir.pem";
|
||||||
|
ssl_verify = "yes";
|
||||||
|
ssl_cafile = "~/.irssi/instantssl.crt";
|
||||||
|
autoconnect = "yes";
|
||||||
|
},
|
||||||
|
{
|
||||||
|
address = "irc.geekshed.net";
|
||||||
|
chatnet = "geekshed";
|
||||||
|
port = "6697";
|
||||||
|
use_ssl = "yes";
|
||||||
|
ssl_verify = "no";
|
||||||
|
autoconnect = "yes";
|
||||||
|
},
|
||||||
|
{
|
||||||
|
address = "irc.rpis.ec";
|
||||||
|
chatnet = "rpisec";
|
||||||
|
port = "6697";
|
||||||
use_ssl = "yes";
|
use_ssl = "yes";
|
||||||
ssl_verify = "no";
|
ssl_verify = "no";
|
||||||
autoconnect = "yes";
|
autoconnect = "yes";
|
||||||
@@ -59,72 +44,32 @@ servers = (
|
|||||||
);
|
);
|
||||||
|
|
||||||
chatnets = {
|
chatnets = {
|
||||||
IRCnet = {
|
|
||||||
type = "IRC";
|
|
||||||
max_kicks = "4";
|
|
||||||
max_msgs = "5";
|
|
||||||
max_whois = "4";
|
|
||||||
max_query_chans = "5";
|
|
||||||
};
|
|
||||||
EFNet = {
|
|
||||||
type = "IRC";
|
|
||||||
max_kicks = "4";
|
|
||||||
max_msgs = "3";
|
|
||||||
max_whois = "1";
|
|
||||||
};
|
|
||||||
Undernet = {
|
|
||||||
type = "IRC";
|
|
||||||
max_kicks = "1";
|
|
||||||
max_msgs = "3";
|
|
||||||
max_whois = "30";
|
|
||||||
};
|
|
||||||
DALnet = {
|
|
||||||
type = "IRC";
|
|
||||||
max_kicks = "4";
|
|
||||||
max_msgs = "3";
|
|
||||||
max_whois = "30";
|
|
||||||
};
|
|
||||||
QuakeNet = {
|
|
||||||
type = "IRC";
|
|
||||||
max_kicks = "1";
|
|
||||||
max_msgs = "3";
|
|
||||||
max_whois = "30";
|
|
||||||
};
|
|
||||||
OFTC = {
|
OFTC = {
|
||||||
type = "IRC";
|
type = "IRC";
|
||||||
max_kicks = "1";
|
max_kicks = "1";
|
||||||
max_msgs = "3";
|
max_msgs = "3";
|
||||||
max_whois = "30";
|
max_whois = "30";
|
||||||
};
|
};
|
||||||
GameSurge = {
|
|
||||||
type = "IRC";
|
|
||||||
max_kicks = "1";
|
|
||||||
max_msgs = "3";
|
|
||||||
max_whois = "30";
|
|
||||||
};
|
|
||||||
WebChat = {
|
|
||||||
type = "IRC";
|
|
||||||
max_kicks = "1";
|
|
||||||
max_msgs = "3";
|
|
||||||
max_whois = "30";
|
|
||||||
};
|
|
||||||
Rizon = {
|
|
||||||
type = "IRC";
|
|
||||||
max_kicks = "1";
|
|
||||||
max_msgs = "3";
|
|
||||||
max_whois = "30";
|
|
||||||
};
|
|
||||||
LinkNet = {
|
|
||||||
type = "IRC";
|
|
||||||
max_kicks = "1";
|
|
||||||
max_msgs = "3";
|
|
||||||
max_whois = "30";
|
|
||||||
};
|
|
||||||
SILC = { type = "SILC"; };
|
|
||||||
freenode = { type = "IRC"; };
|
|
||||||
overthewire = { type = "IRC"; nick = "Matir"; };
|
overthewire = { type = "IRC"; nick = "Matir"; };
|
||||||
secfo = { type = "IRC"; };
|
secfo = { type = "IRC"; };
|
||||||
hackint = { type = "IRC"; nick = "Matir"; };
|
hackint = { type = "IRC"; nick = "Matir"; };
|
||||||
|
freenode = {
|
||||||
|
type = "IRC";
|
||||||
|
nick = "Matir";
|
||||||
|
username = "matir";
|
||||||
|
realname = "Matir";
|
||||||
|
max_kicks = "1";
|
||||||
|
max_msgs = "4";
|
||||||
|
max_modes = "4";
|
||||||
|
max_whois = "1";
|
||||||
|
};
|
||||||
|
geekshed = {
|
||||||
|
type = "IRC";
|
||||||
|
nick = "KF4MDV";
|
||||||
|
username = "kf4mdv";
|
||||||
|
realname = "David";
|
||||||
|
};
|
||||||
|
rpisec = { type = "IRC"; };
|
||||||
};
|
};
|
||||||
|
|
||||||
channels = (
|
channels = (
|
||||||
@@ -132,7 +77,14 @@ channels = (
|
|||||||
{ name = "#hak5"; chatnet = "secfo"; autojoin = "yes"; },
|
{ name = "#hak5"; chatnet = "secfo"; autojoin = "yes"; },
|
||||||
{ name = "#wargames"; chatnet = "overthewire"; autojoin = "yes"; },
|
{ name = "#wargames"; chatnet = "overthewire"; autojoin = "yes"; },
|
||||||
{ name = "#social"; chatnet = "overthewire"; autojoin = "yes"; },
|
{ name = "#social"; chatnet = "overthewire"; autojoin = "yes"; },
|
||||||
{ name = "#openvpn"; chatnet = "freenode"; autojoin = "yes"; }
|
{ name = "#openvpn"; chatnet = "freenode"; autojoin = "yes"; },
|
||||||
|
{ name = "#shadowcats"; chatnet = "freenode"; autojoin = "yes"; },
|
||||||
|
{ name = "#amateria"; chatnet = "overthewire"; autojoin = "yes"; },
|
||||||
|
{ name = "#io"; chatnet = "overthewire"; autojoin = "yes"; },
|
||||||
|
{ name = "#radare"; chatnet = "freenode"; autojoin = "yes"; },
|
||||||
|
{ name = "#vulnhub"; chatnet = "freenode"; autojoin = "yes"; },
|
||||||
|
{ name = "#redditnet"; chatnet = "geekshed"; autojoin = "yes"; },
|
||||||
|
{ name = "#rpisec"; chatnet = "rpisec"; autojoin = "yes"; }
|
||||||
);
|
);
|
||||||
|
|
||||||
aliases = {
|
aliases = {
|
||||||
@@ -225,7 +177,7 @@ statusbar = {
|
|||||||
# the "default statusbar" to be displayed at the bottom of the window.
|
# the "default statusbar" to be displayed at the bottom of the window.
|
||||||
# contains all the normal items.
|
# contains all the normal items.
|
||||||
window = {
|
window = {
|
||||||
disabled = "no";
|
disabled = "yes";
|
||||||
|
|
||||||
# window, root
|
# window, root
|
||||||
type = "window";
|
type = "window";
|
||||||
@@ -244,7 +196,6 @@ statusbar = {
|
|||||||
window = { };
|
window = { };
|
||||||
window_empty = { };
|
window_empty = { };
|
||||||
lag = { priority = "-1"; };
|
lag = { priority = "-1"; };
|
||||||
act = { priority = "10"; };
|
|
||||||
more = { priority = "-1"; alignment = "right"; };
|
more = { priority = "-1"; alignment = "right"; };
|
||||||
barend = { priority = "100"; alignment = "right"; };
|
barend = { priority = "100"; alignment = "right"; };
|
||||||
};
|
};
|
||||||
@@ -289,11 +240,30 @@ statusbar = {
|
|||||||
visible = "always";
|
visible = "always";
|
||||||
items = {
|
items = {
|
||||||
topicbarstart = { priority = "100"; };
|
topicbarstart = { priority = "100"; };
|
||||||
|
time = { priority = "100"; };
|
||||||
topic = { };
|
topic = { };
|
||||||
topic_empty = { };
|
topic_empty = { };
|
||||||
|
window_empty = { alignment = "right"; };
|
||||||
|
user = { priority = "100"; alignment = "right"; };
|
||||||
topicbarend = { priority = "100"; alignment = "right"; };
|
topicbarend = { priority = "100"; alignment = "right"; };
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
placement = { items = { }; disabled = "yes"; };
|
||||||
|
remove = { disabled = "yes"; };
|
||||||
|
awl_0 = {
|
||||||
|
items = {
|
||||||
|
barstart = { priority = "100"; };
|
||||||
|
awl_0 = { };
|
||||||
|
barend = { priority = "100"; alignment = "right"; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
awl_1 = {
|
||||||
|
items = {
|
||||||
|
barstart = { priority = "100"; };
|
||||||
|
awl_1 = { };
|
||||||
|
barend = { priority = "100"; alignment = "right"; };
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
settings = {
|
settings = {
|
||||||
@@ -307,11 +277,120 @@ settings = {
|
|||||||
"fe-common/core" = {
|
"fe-common/core" = {
|
||||||
autolog = "yes";
|
autolog = "yes";
|
||||||
autolog_path = "~/irclogs/%Y/%m/$tag/$0.log";
|
autolog_path = "~/irclogs/%Y/%m/$tag/$0.log";
|
||||||
|
autoclose_query = "1800";
|
||||||
|
autocreate_own_query = "no";
|
||||||
|
show_nickmode_empty = "no";
|
||||||
|
term_charset = "utf-8";
|
||||||
|
};
|
||||||
|
"perl/core/scripts" = {
|
||||||
|
awl_shared_sbar = "OFF";
|
||||||
|
awl_viewer = "no";
|
||||||
|
awl_block = "-15";
|
||||||
|
awl_maxlines = "2";
|
||||||
|
awl_height_adjust = "2";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
logs = {
|
windows = {
|
||||||
"~/irc.log.Window7" = {
|
1 = { immortal = "yes"; name = "(status)"; level = "ALL"; };
|
||||||
level = "ALL";
|
2 = {
|
||||||
items = ( { type = "window"; name = "7"; } );
|
items = (
|
||||||
|
{
|
||||||
|
type = "CHANNEL";
|
||||||
|
chat_type = "IRC";
|
||||||
|
name = "#kali-linux";
|
||||||
|
tag = "freenode";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
3 = {
|
||||||
|
items = (
|
||||||
|
{
|
||||||
|
type = "CHANNEL";
|
||||||
|
chat_type = "IRC";
|
||||||
|
name = "#radare";
|
||||||
|
tag = "freenode";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
4 = {
|
||||||
|
items = (
|
||||||
|
{
|
||||||
|
type = "CHANNEL";
|
||||||
|
chat_type = "IRC";
|
||||||
|
name = "#vulnhub";
|
||||||
|
tag = "freenode";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
5 = {
|
||||||
|
items = (
|
||||||
|
{
|
||||||
|
type = "CHANNEL";
|
||||||
|
chat_type = "IRC";
|
||||||
|
name = "#openvpn";
|
||||||
|
tag = "freenode";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
6 = {
|
||||||
|
items = (
|
||||||
|
{
|
||||||
|
type = "CHANNEL";
|
||||||
|
chat_type = "IRC";
|
||||||
|
name = "#wargames";
|
||||||
|
tag = "overthewire";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
7 = {
|
||||||
|
items = (
|
||||||
|
{
|
||||||
|
type = "CHANNEL";
|
||||||
|
chat_type = "IRC";
|
||||||
|
name = "#social";
|
||||||
|
tag = "overthewire";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
8 = {
|
||||||
|
items = (
|
||||||
|
{
|
||||||
|
type = "CHANNEL";
|
||||||
|
chat_type = "IRC";
|
||||||
|
name = "#amateria";
|
||||||
|
tag = "overthewire";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
9 = {
|
||||||
|
items = (
|
||||||
|
{
|
||||||
|
type = "CHANNEL";
|
||||||
|
chat_type = "IRC";
|
||||||
|
name = "#io";
|
||||||
|
tag = "overthewire";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
10 = {
|
||||||
|
items = (
|
||||||
|
{
|
||||||
|
type = "CHANNEL";
|
||||||
|
chat_type = "IRC";
|
||||||
|
name = "#RedditNet";
|
||||||
|
tag = "geekshed";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
11 = {
|
||||||
|
items = (
|
||||||
|
{
|
||||||
|
type = "CHANNEL";
|
||||||
|
chat_type = "IRC";
|
||||||
|
name = "#hak5";
|
||||||
|
tag = "secfo";
|
||||||
|
}
|
||||||
|
);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
mainwindows = { 1 = { first_line = "1"; lines = "78"; }; };
|
||||||
26
dotfiles/irssi/instantssl.crt
Normal file
26
dotfiles/irssi/instantssl.crt
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCB
|
||||||
|
lzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug
|
||||||
|
Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho
|
||||||
|
dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3Qt
|
||||||
|
SGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgxOTIyWjCBlzELMAkG
|
||||||
|
A1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEe
|
||||||
|
MBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8v
|
||||||
|
d3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdh
|
||||||
|
cmUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn
|
||||||
|
0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlIwrthdBKWHTxqctU8EGc6Oe0rE81m65UJ
|
||||||
|
M6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFdtqdt++BxF2uiiPsA3/4a
|
||||||
|
MXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8i4fDidNd
|
||||||
|
oI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqI
|
||||||
|
DsjfPe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9Ksy
|
||||||
|
oUhbAgMBAAGjgbkwgbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYD
|
||||||
|
VR0OBBYEFKFyXyYbKJhDlV0HN9WFlp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0
|
||||||
|
dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LUhhcmR3YXJlLmNy
|
||||||
|
bDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUFBwMGBggrBgEF
|
||||||
|
BQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM
|
||||||
|
//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28Gpgoiskli
|
||||||
|
CE7/yMgUsogWXecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gE
|
||||||
|
CJChicsZUN/KHAG8HQQZexB2lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t
|
||||||
|
3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kniCrVWFCVH/A7HFe7fRQ5YiuayZSS
|
||||||
|
KqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67nfhmqA==
|
||||||
|
-----END CERTIFICATE-----
|
||||||
2088
dotfiles/irssi/scripts/adv_windowlist.pl
Normal file
2088
dotfiles/irssi/scripts/adv_windowlist.pl
Normal file
File diff suppressed because it is too large
Load Diff
1
dotfiles/irssi/scripts/autorun/adv_windowlist.pl
Symbolic link
1
dotfiles/irssi/scripts/autorun/adv_windowlist.pl
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../adv_windowlist.pl
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
# Sourced by zshrc as well as bash.
|
# Sourced by zshrc as well as bash.
|
||||||
|
|
||||||
umask 022
|
umask 027
|
||||||
|
ulimit -c unlimited
|
||||||
|
|
||||||
# if running bash
|
# if running bash
|
||||||
if [ -n "$BASH_VERSION" ]; then
|
if [ -n "$BASH_VERSION" ]; then
|
||||||
@@ -8,17 +9,27 @@ if [ -n "$BASH_VERSION" ]; then
|
|||||||
if [ -f "$HOME/.bashrc" ]; then
|
if [ -f "$HOME/.bashrc" ]; then
|
||||||
. "$HOME/.bashrc"
|
. "$HOME/.bashrc"
|
||||||
fi
|
fi
|
||||||
|
shopt -s expand_aliases
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Paths and preferences
|
# Paths and preferences
|
||||||
export PATH="$HOME/bin:/sbin:/usr/sbin:$PATH"
|
export PATH="$HOME/bin:/sbin:/usr/sbin:$PATH"
|
||||||
export PYTHONPATH="$HOME/.python"
|
export PYTHONPATH="$HOME/.python"
|
||||||
|
export GOPATH="$HOME/.go"
|
||||||
export VISUAL=vim
|
export VISUAL=vim
|
||||||
export EDITOR=vim
|
export EDITOR=vim
|
||||||
export TZ='America/Los_Angeles'
|
export DEBEMAIL="david@systemoverlord.com"
|
||||||
export DEBEMAIL=david@systemoverlord.com
|
|
||||||
export DEBFULLNAME="David Tomaschik"
|
export DEBFULLNAME="David Tomaschik"
|
||||||
|
export LESS="-MR"
|
||||||
|
|
||||||
|
EXTRA_PATHS=("$HOME/.gce/google-cloud-sdk/bin" "$HOME/bin/genymotion"
|
||||||
|
"$HOME/bin/genymotion/tools" "$HOME/bin/go_appengine" )
|
||||||
|
for p in "${EXTRA_PATHS[@]}" ; do
|
||||||
|
if [ -d "$p" ] ; then
|
||||||
|
export PATH="$PATH:$p"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
unset EXTRA_PATHS
|
||||||
|
|
||||||
# Setup GPG Agent
|
# Setup GPG Agent
|
||||||
GPG_AGENT_INFO_PATH=$HOME/.gnupg/gpg-agent-info-`hostname`
|
GPG_AGENT_INFO_PATH=$HOME/.gnupg/gpg-agent-info-`hostname`
|
||||||
@@ -26,17 +37,13 @@ if test -f $GPG_AGENT_INFO_PATH && kill -0 `cut -d: -f 2 $GPG_AGENT_INFO_PATH` 2
|
|||||||
. $GPG_AGENT_INFO_PATH
|
. $GPG_AGENT_INFO_PATH
|
||||||
export GPG_AGENT_INFO SSH_AUTH_SOCK SSH_AGENT_PID
|
export GPG_AGENT_INFO SSH_AUTH_SOCK SSH_AGENT_PID
|
||||||
else
|
else
|
||||||
|
if which gpg-agent >/dev/null 2>&1 ; then
|
||||||
gpg-agent -q || eval `gpg-agent --daemon --enable-ssh-support --write-env-file $GPG_AGENT_INFO_PATH` 2>/dev/null
|
gpg-agent -q || eval `gpg-agent --daemon --enable-ssh-support --write-env-file $GPG_AGENT_INFO_PATH` 2>/dev/null
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
unset GPG_AGENT_INFO_PATH
|
unset GPG_AGENT_INFO_PATH
|
||||||
export GPG_TTY=`tty`
|
export GPG_TTY=`tty`
|
||||||
# End GPG
|
# End GPG
|
||||||
|
|
||||||
# Add an "alert" alias for long running commands. Use like so:
|
if [[ -e $HOME/.localenv ]] ; then source $HOME/.localenv ; fi
|
||||||
# sleep 10; alert
|
if [[ -e $HOME/.aliases ]] ; then source $HOME/.aliases ; fi
|
||||||
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
|
|
||||||
|
|
||||||
# Cryptsetup alias
|
|
||||||
alias luksFormat='sudo cryptsetup luksFormat -s 512 -c aes-xts-plain --use-random -h sha256 -i 5000'
|
|
||||||
|
|
||||||
if [ -f $HOME/.localenv ] ; then source $HOME/.localenv ; fi
|
|
||||||
5
dotfiles/radare2/xdot
Executable file
5
dotfiles/radare2/xdot
Executable file
@@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
DOT=`mktemp`
|
||||||
|
cat > $DOT
|
||||||
|
xdot $DOT
|
||||||
10
dotfiles/radare2rc
Normal file
10
dotfiles/radare2rc
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
e scr.color = true
|
||||||
|
e scr.utf8 = true
|
||||||
|
e dbg.bep = main
|
||||||
|
e asm.syntax = intel
|
||||||
|
e asm.linescall = true
|
||||||
|
e asm.linesout = true
|
||||||
|
e asm.lineswidth = 12
|
||||||
|
|
||||||
|
# Callgraph: .(cg)
|
||||||
|
(cg,aa,ag | $HOME/.radare2/xdot || xdot -,)
|
||||||
@@ -1,163 +1,73 @@
|
|||||||
# General options
|
# INSTALL INSTRUCTIONS: save as ~/.gdbinit
|
||||||
set verbose off
|
|
||||||
set disassembly-flavor intel
|
|
||||||
set output-radix 0x10
|
|
||||||
set input-radix 0x10
|
|
||||||
|
|
||||||
# helpful shortcuts
|
|
||||||
define lsbp
|
|
||||||
info breakpoints
|
|
||||||
end
|
|
||||||
document lsbp
|
|
||||||
List all breakpoints
|
|
||||||
end
|
|
||||||
|
|
||||||
define iframe
|
|
||||||
info frame
|
|
||||||
info args
|
|
||||||
info locals
|
|
||||||
end
|
|
||||||
define reg
|
|
||||||
info registers
|
|
||||||
end
|
|
||||||
|
|
||||||
# taviso's assembly macro
|
|
||||||
define assemble
|
|
||||||
# dont enter routine again if user hits enter
|
|
||||||
dont-repeat
|
|
||||||
if ($argc)
|
|
||||||
if (*$arg0 = *$arg0)
|
|
||||||
# check if we have a valid address by dereferencing it,
|
|
||||||
# if we havnt, this will cause the routine to exit.
|
|
||||||
end
|
|
||||||
printf "Instructions will be written to %#x.\n", $arg0
|
|
||||||
else
|
|
||||||
printf "Instructions will be written to stdout.\n"
|
|
||||||
end
|
|
||||||
printf "Type instructions, one per line.\n"
|
|
||||||
printf "End with a line saying just \"end\".\n"
|
|
||||||
if ($argc)
|
|
||||||
# argument specified, assemble instructions into memory
|
|
||||||
# at address specified.
|
|
||||||
shell nasm -f bin -o /dev/stdout /dev/stdin \
|
|
||||||
<<< "$( echo "BITS 32"; while read -ep '>' r && test "$r" != end; \
|
|
||||||
do echo -E "$r"; done )" | hexdump -ve \
|
|
||||||
'1/1 "set *((unsigned char *) $arg0 + %#2_ax) = %#02x\n"' \
|
|
||||||
> ~/.gdbassemble
|
|
||||||
# load the file containing set instructions
|
|
||||||
source ~/.gdbassemble
|
|
||||||
# all done.
|
|
||||||
shell rm -f ~/.gdbassemble
|
|
||||||
else
|
|
||||||
# no argument, assemble instructions to stdout
|
|
||||||
shell nasm -f bin -o /dev/stdout /dev/stdin \
|
|
||||||
<<< "$( echo "BITS 32"; while read -ep '>' r && test "$r" != end; \
|
|
||||||
do echo -E "$r"; done )" | ndisasm -i -b32 /dev/stdin
|
|
||||||
end
|
|
||||||
end
|
|
||||||
document assemble
|
|
||||||
Assemble instructions using nasm.
|
|
||||||
Type a line containing "end" to indicate the end.
|
|
||||||
If an address is specified, insert instructions at that address.
|
|
||||||
If no address is specified, assembled instructions are printed to stdout.
|
|
||||||
Use the pseudo instruction "org ADDR" to set the base address.
|
|
||||||
end
|
|
||||||
|
|
||||||
# Color disassembly
|
|
||||||
|
|
||||||
shell rm -f /tmp/gdbColorPipe
|
|
||||||
shell mkfifo -m 600 /tmp/gdbColorPipe
|
|
||||||
|
|
||||||
define hook-x
|
|
||||||
set logging off
|
|
||||||
set logging redirect off
|
|
||||||
shell cat /tmp/gdbColorPipe | highlight --syntax=asm -s darkness -Oxterm256 &
|
|
||||||
set logging redirect on
|
|
||||||
set logging on /tmp/gdbColorPipe
|
|
||||||
end
|
|
||||||
|
|
||||||
define hookpost-x
|
|
||||||
set logging off
|
|
||||||
set logging redirect off
|
|
||||||
shell sleep 0.1s
|
|
||||||
end
|
|
||||||
|
|
||||||
define hook-disassemble
|
|
||||||
hook-x
|
|
||||||
echo \n
|
|
||||||
end
|
|
||||||
|
|
||||||
define hookpost-disassemble
|
|
||||||
hookpost-x
|
|
||||||
end
|
|
||||||
|
|
||||||
define hook-quit
|
|
||||||
shell rm -f /tmp/gdbColorPipe
|
|
||||||
end
|
|
||||||
|
|
||||||
define re
|
|
||||||
hookpost-disassemble
|
|
||||||
echo \033[0m
|
|
||||||
end
|
|
||||||
document re
|
|
||||||
Restore colorscheme
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# __________________gdb options_________________
|
|
||||||
|
|
||||||
# set to 1 to have ARM target debugging as default, use the "arm" command to switch inside gdb
|
|
||||||
set $ARM = 0
|
|
||||||
# set to 0 if you have problems with the colorized prompt - reported by Plouj with Ubuntu gdb 7.2
|
|
||||||
set $COLOUREDPROMPT = 0
|
|
||||||
# Colour the first line of the disassembly - default is green, if you want to change it search for
|
|
||||||
# SETCOLOUR1STLINE and modify it :-)
|
|
||||||
set $SETCOLOUR1STLINE = 0
|
|
||||||
# set to 0 to remove display of objectivec messages (default is 1)
|
|
||||||
set $SHOWOBJECTIVEC = 1
|
|
||||||
# set to 0 to remove display of cpu registers (default is 1)
|
|
||||||
set $SHOWCPUREGISTERS = 1
|
|
||||||
# set to 1 to enable display of stack (default is 0)
|
|
||||||
set $SHOWSTACK = 1
|
|
||||||
# set to 1 to show 4 bytes of the stack at a time for 32bit and 8 bytes for 64bit
|
|
||||||
set $STACK_WORDSIZE = 1
|
|
||||||
# set to 1 to enable display of data window (default is 0)
|
|
||||||
set $SHOWDATAWIN = 0
|
|
||||||
# set to 0 to disable coloured display of changed registers
|
|
||||||
set $SHOWREGCHANGES = 1
|
|
||||||
# set to 1 so skip command to execute the instruction at the new location
|
|
||||||
# by default it EIP/RIP will be modified and update the new context but not execute the instruction
|
|
||||||
set $SKIPEXECUTE = 0
|
|
||||||
# if $SKIPEXECUTE is 1 configure the type of execution
|
|
||||||
# 1 = use stepo (do not get into calls), 0 = use stepi (step into calls)
|
|
||||||
set $SKIPSTEP = 1
|
|
||||||
# show the ARM opcodes - change to 0 if you don't want such thing (in x/i command)
|
|
||||||
set $ARMOPCODES = 1
|
|
||||||
# x86 disassembly flavor: 0 for Intel, 1 for AT&T
|
|
||||||
set $X86FLAVOR = 0
|
|
||||||
# use colorized output or not
|
|
||||||
set $USECOLOR = 0
|
|
||||||
|
|
||||||
set confirm off
|
|
||||||
set verbose off
|
|
||||||
|
|
||||||
set output-radix 0x10
|
|
||||||
set input-radix 0x10
|
|
||||||
|
|
||||||
# These make gdb never pause in its output
|
|
||||||
set height 0
|
|
||||||
set width 0
|
|
||||||
|
|
||||||
set $SHOW_CONTEXT = 1
|
|
||||||
set $SHOW_NEST_INSN = 0
|
|
||||||
|
|
||||||
set $CONTEXTSIZE_STACK = 6
|
|
||||||
set $CONTEXTSIZE_DATA = 8
|
|
||||||
set $CONTEXTSIZE_CODE = 8
|
|
||||||
|
|
||||||
# __________________end gdb options_________________
|
|
||||||
#
|
#
|
||||||
|
# DESCRIPTION: A user-friendly gdb configuration file, for x86/x86_64 and ARM platforms.
|
||||||
|
#
|
||||||
|
# REVISION : 8.0.5 (18/08/2013)
|
||||||
|
#
|
||||||
|
# CONTRIBUTORS: mammon_, elaine, pusillus, mong, zhang le, l0kit,
|
||||||
|
# truthix the cyberpunk, fG!, gln
|
||||||
|
#
|
||||||
|
# FEEDBACK: http://reverse.put.as - reverser@put.as
|
||||||
|
#
|
||||||
|
# NOTES: 'help user' in gdb will list the commands/descriptions in this file
|
||||||
|
# 'context on' now enables auto-display of context screen
|
||||||
|
#
|
||||||
|
# MAC OS X NOTES: If you are using this on Mac OS X, you must either attach gdb to a process
|
||||||
|
# or launch gdb without any options and then load the binary file you want to analyse with "exec-file" option
|
||||||
|
# If you load the binary from the command line, like $gdb binary-name, this will not work as it should
|
||||||
|
# For more information, read it here http://reverse.put.as/2008/11/28/apples-gdb-bug/
|
||||||
|
#
|
||||||
|
# UPDATE: This bug can be fixed in gdb source. Refer to http://reverse.put.as/2009/08/10/fix-for-apples-gdb-bug-or-why-apple-forks-are-bad/
|
||||||
|
# and http://reverse.put.as/2009/08/26/gdb-patches/ (if you want the fixed binary for i386)
|
||||||
|
#
|
||||||
|
# An updated version of the patch and binary is available at http://reverse.put.as/2011/02/21/update-to-gdb-patches-fix-a-new-bug/
|
||||||
|
#
|
||||||
|
# iOS NOTES: iOS gdb from Cydia (and Apple's) suffer from the same OS X bug.
|
||||||
|
# If you are using this on Mac OS X or iOS, you must either attach gdb to a process
|
||||||
|
# or launch gdb without any options and then load the binary file you want to analyse with "exec-file" option
|
||||||
|
# If you load the binary from the command line, like $gdb binary-name, this will not work as it should
|
||||||
|
# For more information, read it here http://reverse.put.as/2008/11/28/apples-gdb-bug/
|
||||||
|
#
|
||||||
|
# CHANGELOG: (older changes at the end of the file)
|
||||||
|
#
|
||||||
|
# Version 8.0.6 (05/09/2013)
|
||||||
|
# - Add patch command to convert bytes to little-endian and patch memory
|
||||||
|
#
|
||||||
|
# Version 8.0.5 (18/08/2013)
|
||||||
|
# - Add commands header and loadcmds to dump Mach-O header information
|
||||||
|
# - Other fixes and additions from previous commits
|
||||||
|
#
|
||||||
|
# Version 8.0.4 (08/05/2013)
|
||||||
|
# - Detect automatically 32 or 64 bits archs using sizeof(void*).
|
||||||
|
# Thanks to Tyilo for the simple but very effective idea!
|
||||||
|
# - Typo in hexdump command also fixed by vuquangtrong.
|
||||||
|
# - Add shortcuts to attach to VMware kernel debugging gdb stub (kernel32 and kernel64)
|
||||||
|
#
|
||||||
|
# Version 8.0.3 (21/03/2013)
|
||||||
|
# - Add option to colorize or not output (thanks to argp and skier for the request and ideas!)
|
||||||
|
# - Convert the escape codes into functions so colors can be easily customized
|
||||||
|
# - Other enhancements available at git commit logs
|
||||||
|
# Thanks to Plouj, argp, xristos for their ideas and fixes!
|
||||||
|
#
|
||||||
|
# Version 8.0.2 (31/07/2012)
|
||||||
|
# - Merge pull request from mheistermann to support local modifications in a .gdbinit.local file
|
||||||
|
# - Add a missing opcode to the stepo command
|
||||||
|
#
|
||||||
|
# Version 8.0.1 (23/04/2012)
|
||||||
|
# - Small bug fix to the attsyntax and intelsyntax commands (changing X86 flavor variable was missing)
|
||||||
|
#
|
||||||
|
# Version 8.0 (13/04/2012)
|
||||||
|
# - Merged x86/x64 and ARM versions
|
||||||
|
# - Added commands intelsyntax and attsyntax to switch between x86 disassembly flavors
|
||||||
|
# - Added new configuration variables ARM, ARMOPCODES, and X86FLAVOR
|
||||||
|
# - Code cleanups and fixes to the indentation
|
||||||
|
# - Bug fixes to some ARM related code
|
||||||
|
# - Added the dumpmacho command to memory dump the mach-o header to a file
|
||||||
|
#
|
||||||
|
# TODO:
|
||||||
|
#
|
||||||
|
|
||||||
|
# OPTIONS MOVED TO MAIN GDBINIT
|
||||||
|
|
||||||
# __________________color functions_________________
|
# __________________color functions_________________
|
||||||
#
|
#
|
||||||
@@ -1216,7 +1126,7 @@ define reg
|
|||||||
set $oldlr = $lr
|
set $oldlr = $lr
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if (sizeof(void *) == 8)
|
if ($64BITS == 1)
|
||||||
regx64
|
regx64
|
||||||
else
|
else
|
||||||
regx86
|
regx86
|
||||||
@@ -1224,13 +1134,13 @@ define reg
|
|||||||
# call smallregisters
|
# call smallregisters
|
||||||
smallregisters
|
smallregisters
|
||||||
# display conditional jump routine
|
# display conditional jump routine
|
||||||
if (sizeof(void *) == 8)
|
if ($64BITS == 1)
|
||||||
printf "\t\t\t\t"
|
printf "\t\t\t\t"
|
||||||
end
|
end
|
||||||
dumpjump
|
dumpjump
|
||||||
printf "\n"
|
printf "\n"
|
||||||
if ($SHOWREGCHANGES == 1)
|
if ($SHOWREGCHANGES == 1)
|
||||||
if (sizeof(void *) == 8)
|
if ($64BITS == 1)
|
||||||
set $oldrax = $rax
|
set $oldrax = $rax
|
||||||
set $oldrbx = $rbx
|
set $oldrbx = $rbx
|
||||||
set $oldrcx = $rcx
|
set $oldrcx = $rcx
|
||||||
@@ -1267,7 +1177,7 @@ end
|
|||||||
|
|
||||||
|
|
||||||
define smallregisters
|
define smallregisters
|
||||||
if (sizeof(void *) == 8)
|
if ($64BITS == 1)
|
||||||
#64bits stuff
|
#64bits stuff
|
||||||
# from rax
|
# from rax
|
||||||
set $eax = $rax & 0xffffffff
|
set $eax = $rax & 0xffffffff
|
||||||
@@ -1456,20 +1366,6 @@ Syntax: hex_quad ADDR
|
|||||||
| Print eight hexadecimal bytes starting at address ADDR.
|
| Print eight hexadecimal bytes starting at address ADDR.
|
||||||
end
|
end
|
||||||
|
|
||||||
define hex_quad32
|
|
||||||
if $argc != 1
|
|
||||||
help hex_quad
|
|
||||||
else
|
|
||||||
printf "%02X %02X %02X %02X", \
|
|
||||||
*(unsigned char*)($arg0), *(unsigned char*)($arg0 + 1), \
|
|
||||||
*(unsigned char*)($arg0 + 2), *(unsigned char*)($arg0 + 3)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
document hex_quad32
|
|
||||||
Syntax: hex_quad ADDR
|
|
||||||
| Print four hexadecimal bytes starting at address ADDR.
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
define hexdump
|
define hexdump
|
||||||
if $argc == 1
|
if $argc == 1
|
||||||
@@ -1499,37 +1395,12 @@ define hexdump_aux
|
|||||||
help hexdump_aux
|
help hexdump_aux
|
||||||
else
|
else
|
||||||
color_bold
|
color_bold
|
||||||
if (sizeof(void *) == 8)
|
if ($64BITS == 1)
|
||||||
printf "0x%016lX : ", $arg0
|
printf "0x%016lX : ", $arg0
|
||||||
else
|
else
|
||||||
printf "0x%08X : ", $arg0
|
printf "0x%08X : ", $arg0
|
||||||
end
|
end
|
||||||
color_reset
|
color_reset
|
||||||
if $STACK_WORDSIZE == 1
|
|
||||||
if (sizeof(void *) == 8)
|
|
||||||
hex_quad $arg0
|
|
||||||
printf " "
|
|
||||||
color_bold
|
|
||||||
ascii_char $arg0+0x0
|
|
||||||
ascii_char $arg0+0x1
|
|
||||||
ascii_char $arg0+0x2
|
|
||||||
ascii_char $arg0+0x3
|
|
||||||
ascii_char $arg0+0x4
|
|
||||||
ascii_char $arg0+0x5
|
|
||||||
ascii_char $arg0+0x6
|
|
||||||
ascii_char $arg0+0x7
|
|
||||||
color_reset
|
|
||||||
else
|
|
||||||
hex_quad32 $arg0
|
|
||||||
printf " "
|
|
||||||
color_bold
|
|
||||||
ascii_char $arg0+0x0
|
|
||||||
ascii_char $arg0+0x1
|
|
||||||
ascii_char $arg0+0x2
|
|
||||||
ascii_char $arg0+0x3
|
|
||||||
color_reset
|
|
||||||
end
|
|
||||||
else
|
|
||||||
hex_quad $arg0
|
hex_quad $arg0
|
||||||
color_bold
|
color_bold
|
||||||
printf " - "
|
printf " - "
|
||||||
@@ -1554,7 +1425,6 @@ define hexdump_aux
|
|||||||
ascii_char $arg0+0xE
|
ascii_char $arg0+0xE
|
||||||
ascii_char $arg0+0xF
|
ascii_char $arg0+0xF
|
||||||
color_reset
|
color_reset
|
||||||
end
|
|
||||||
printf "\n"
|
printf "\n"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -1570,7 +1440,7 @@ define ddump
|
|||||||
help ddump
|
help ddump
|
||||||
else
|
else
|
||||||
color $COLOR_SEPARATOR
|
color $COLOR_SEPARATOR
|
||||||
if (sizeof(void *) == 8)
|
if ($64BITS == 1)
|
||||||
printf "[0x%04X:0x%016lX]", $ds, $data_addr
|
printf "[0x%04X:0x%016lX]", $ds, $data_addr
|
||||||
else
|
else
|
||||||
printf "[0x%04X:0x%08X]", $ds, $data_addr
|
printf "[0x%04X:0x%08X]", $ds, $data_addr
|
||||||
@@ -1578,7 +1448,7 @@ define ddump
|
|||||||
color $COLOR_SEPARATOR
|
color $COLOR_SEPARATOR
|
||||||
printf "------------------------"
|
printf "------------------------"
|
||||||
printf "-------------------------------"
|
printf "-------------------------------"
|
||||||
if (sizeof(void *) == 8)
|
if ($64BITS == 1)
|
||||||
printf "-------------------------------------"
|
printf "-------------------------------------"
|
||||||
end
|
end
|
||||||
color_bold
|
color_bold
|
||||||
@@ -1630,7 +1500,7 @@ define datawin
|
|||||||
end
|
end
|
||||||
################################# X86
|
################################# X86
|
||||||
else
|
else
|
||||||
if (sizeof(void *) == 8)
|
if ($64BITS == 1)
|
||||||
if ((($rsi >> 0x18) == 0x40) || (($rsi >> 0x18) == 0x08) || (($rsi >> 0x18) == 0xBF))
|
if ((($rsi >> 0x18) == 0x40) || (($rsi >> 0x18) == 0x08) || (($rsi >> 0x18) == 0xBF))
|
||||||
set $data_addr = $rsi
|
set $data_addr = $rsi
|
||||||
else
|
else
|
||||||
@@ -2094,7 +1964,7 @@ define context
|
|||||||
if $SHOWCPUREGISTERS == 1
|
if $SHOWCPUREGISTERS == 1
|
||||||
printf "----------------------------------------"
|
printf "----------------------------------------"
|
||||||
printf "----------------------------------"
|
printf "----------------------------------"
|
||||||
if (sizeof(void *) == 8)
|
if ($64BITS == 1)
|
||||||
printf "---------------------------------------------"
|
printf "---------------------------------------------"
|
||||||
end
|
end
|
||||||
color $COLOR_SEPARATOR
|
color $COLOR_SEPARATOR
|
||||||
@@ -2106,7 +1976,7 @@ define context
|
|||||||
end
|
end
|
||||||
if $SHOWSTACK == 1
|
if $SHOWSTACK == 1
|
||||||
color $COLOR_SEPARATOR
|
color $COLOR_SEPARATOR
|
||||||
if (sizeof(void *) == 8)
|
if ($64BITS == 1)
|
||||||
printf "[0x%04X:0x%016lX]", $ss, $rsp
|
printf "[0x%04X:0x%016lX]", $ss, $rsp
|
||||||
else
|
else
|
||||||
printf "[0x%04X:0x%08X]", $ss, $esp
|
printf "[0x%04X:0x%08X]", $ss, $esp
|
||||||
@@ -2114,7 +1984,7 @@ define context
|
|||||||
color $COLOR_SEPARATOR
|
color $COLOR_SEPARATOR
|
||||||
printf "-------------------------"
|
printf "-------------------------"
|
||||||
printf "-----------------------------"
|
printf "-----------------------------"
|
||||||
if (sizeof(void *) == 8)
|
if ($64BITS == 1)
|
||||||
printf "-------------------------------------"
|
printf "-------------------------------------"
|
||||||
end
|
end
|
||||||
color $COLOR_SEPARATOR
|
color $COLOR_SEPARATOR
|
||||||
@@ -2123,15 +1993,7 @@ define context
|
|||||||
color_reset
|
color_reset
|
||||||
set $context_i = $CONTEXTSIZE_STACK
|
set $context_i = $CONTEXTSIZE_STACK
|
||||||
while ($context_i > 0)
|
while ($context_i > 0)
|
||||||
if $STACK_WORDSIZE == 1
|
|
||||||
if (sizeof(void *) == 8)
|
|
||||||
set $context_t = $sp + 0x8 * ($context_i - 1)
|
|
||||||
else
|
|
||||||
set $context_t = $sp + 0x4 * ($context_i - 1)
|
|
||||||
end
|
|
||||||
else
|
|
||||||
set $context_t = $sp + 0x10 * ($context_i - 1)
|
set $context_t = $sp + 0x10 * ($context_i - 1)
|
||||||
end
|
|
||||||
hexdump $context_t
|
hexdump $context_t
|
||||||
set $context_i--
|
set $context_i--
|
||||||
end
|
end
|
||||||
@@ -2166,7 +2028,7 @@ define context
|
|||||||
if $displayobjectivec == 1
|
if $displayobjectivec == 1
|
||||||
color $COLOR_SEPARATOR
|
color $COLOR_SEPARATOR
|
||||||
printf "--------------------------------------------------------------------"
|
printf "--------------------------------------------------------------------"
|
||||||
if (sizeof(void *) == 8)
|
if ($64BITS == 1)
|
||||||
printf "---------------------------------------------"
|
printf "---------------------------------------------"
|
||||||
end
|
end
|
||||||
color $COLOR_SEPARATOR
|
color $COLOR_SEPARATOR
|
||||||
@@ -2181,7 +2043,7 @@ define context
|
|||||||
if $displayobjectivec == 1
|
if $displayobjectivec == 1
|
||||||
color $COLOR_SEPARATOR
|
color $COLOR_SEPARATOR
|
||||||
printf "--------------------------------------------------------------------"
|
printf "--------------------------------------------------------------------"
|
||||||
if (sizeof(void *) == 8)
|
if ($64BITS == 1)
|
||||||
printf "---------------------------------------------"
|
printf "---------------------------------------------"
|
||||||
end
|
end
|
||||||
color $COLOR_SEPARATOR
|
color $COLOR_SEPARATOR
|
||||||
@@ -2201,7 +2063,7 @@ define context
|
|||||||
|
|
||||||
color $COLOR_SEPARATOR
|
color $COLOR_SEPARATOR
|
||||||
printf "--------------------------------------------------------------------------"
|
printf "--------------------------------------------------------------------------"
|
||||||
if (sizeof(void *) == 8)
|
if ($64BITS == 1)
|
||||||
printf "---------------------------------------------"
|
printf "---------------------------------------------"
|
||||||
end
|
end
|
||||||
color $COLOR_SEPARATOR
|
color $COLOR_SEPARATOR
|
||||||
@@ -2212,10 +2074,18 @@ define context
|
|||||||
if ($context_i > 0)
|
if ($context_i > 0)
|
||||||
if ($SETCOLOUR1STLINE == 1)
|
if ($SETCOLOUR1STLINE == 1)
|
||||||
color $GREEN
|
color $GREEN
|
||||||
x /i $pc
|
if ($ARM == 1)
|
||||||
|
x/i $pc | $cpsr.t
|
||||||
|
else
|
||||||
|
x/i $pc
|
||||||
|
end
|
||||||
color_reset
|
color_reset
|
||||||
else
|
else
|
||||||
x /i $pc
|
if ($ARM == 1)
|
||||||
|
x/i $pc | $cpsr.t
|
||||||
|
else
|
||||||
|
x/i $pc
|
||||||
|
end
|
||||||
end
|
end
|
||||||
set $context_i--
|
set $context_i--
|
||||||
end
|
end
|
||||||
@@ -2226,7 +2096,7 @@ define context
|
|||||||
color $COLOR_SEPARATOR
|
color $COLOR_SEPARATOR
|
||||||
printf "----------------------------------------"
|
printf "----------------------------------------"
|
||||||
printf "----------------------------------------"
|
printf "----------------------------------------"
|
||||||
if (sizeof(void *) == 8)
|
if ($64BITS == 1)
|
||||||
printf "---------------------------------------------\n"
|
printf "---------------------------------------------\n"
|
||||||
else
|
else
|
||||||
printf "\n"
|
printf "\n"
|
||||||
@@ -2466,7 +2336,7 @@ define stepoframework
|
|||||||
set $_nextaddress = $pc + 0x3
|
set $_nextaddress = $pc + 0x3
|
||||||
end
|
end
|
||||||
# call *0x????????(%ebx) (0xFF93????????) ||
|
# call *0x????????(%ebx) (0xFF93????????) ||
|
||||||
if ($_byte2 == 0x93 || $_byte2 == 0x94 || $_byte2 == 0x90 || $_byte2 == 0x92 || $_byte2 == 0x95)
|
if ($_byte2 == 0x93 || $_byte2 == 0x94 || $_byte2 == 0x90 || $_byte2 == 0x92 || $_byte2 == 0x95 || $_byte2 == 0x15)
|
||||||
set $_nextaddress = $pc + 6
|
set $_nextaddress = $pc + 6
|
||||||
end
|
end
|
||||||
# call *0x????????(%ebx,%eax,4) (0xFF94??????????)
|
# call *0x????????(%ebx,%eax,4) (0xFF94??????????)
|
||||||
@@ -2829,7 +2699,7 @@ define rint3
|
|||||||
set $pc = $ORIGINAL_INT3ADDRESS
|
set $pc = $ORIGINAL_INT3ADDRESS
|
||||||
else
|
else
|
||||||
set *(unsigned char *)$ORIGINAL_INT3ADDRESS = $ORIGINAL_INT3
|
set *(unsigned char *)$ORIGINAL_INT3ADDRESS = $ORIGINAL_INT3
|
||||||
if sizeof(void *) == 8
|
if ($64BITS == 1)
|
||||||
set $rip = $ORIGINAL_INT3ADDRESS
|
set $rip = $ORIGINAL_INT3ADDRESS
|
||||||
else
|
else
|
||||||
set $eip = $ORIGINAL_INT3ADDRESS
|
set $eip = $ORIGINAL_INT3ADDRESS
|
||||||
@@ -2841,6 +2711,40 @@ Syntax: rint3
|
|||||||
| Restore the original byte previous to int3 patch issued with "int3" command.
|
| Restore the original byte previous to int3 patch issued with "int3" command.
|
||||||
end
|
end
|
||||||
|
|
||||||
|
define patch
|
||||||
|
if $argc != 3
|
||||||
|
help patch
|
||||||
|
end
|
||||||
|
set $patchaddr = $arg0
|
||||||
|
set $patchbytes = $arg1
|
||||||
|
set $patchsize = $arg2
|
||||||
|
|
||||||
|
if ($patchsize == 1)
|
||||||
|
set *(unsigned char*)$patchaddr = $patchbytes
|
||||||
|
end
|
||||||
|
if ($patchsize == 2)
|
||||||
|
set $lendianbytes = (unsigned short)(($patchbytes << 8) | ($patchbytes >> 8))
|
||||||
|
set *(unsigned short*)$patchaddr = $lendianbytes
|
||||||
|
end
|
||||||
|
if ($patchsize == 4)
|
||||||
|
set $lendianbytes = (unsigned int)( (($patchbytes << 8) & 0xFF00FF00 ) | (($patchbytes >> 8) & 0xFF00FF ))
|
||||||
|
set $lendianbytes = (unsigned int)($lendianbytes << 0x10 | $lendianbytes >> 0x10)
|
||||||
|
set *(unsigned int*)$patchaddr = $lendianbytes
|
||||||
|
end
|
||||||
|
if ($patchsize == 8)
|
||||||
|
set $lendianbytes = (unsigned long long)( (($patchbytes << 8) & 0xFF00FF00FF00FF00ULL ) | (($patchbytes >> 8) & 0x00FF00FF00FF00FFULL ) )
|
||||||
|
set $lendianbytes = (unsigned long long)( (($lendianbytes << 0x10) & 0xFFFF0000FFFF0000ULL ) | (($lendianbytes >> 0x10) & 0x0000FFFF0000FFFFULL ) )
|
||||||
|
set $lendianbytes = (unsigned long long)( ($lendianbytes << 0x20) | ($lendianbytes >> 0x20) )
|
||||||
|
set *(unsigned long long*)$patchaddr = $lendianbytes
|
||||||
|
end
|
||||||
|
end
|
||||||
|
document patch
|
||||||
|
Syntax: patch address bytes size
|
||||||
|
| Patch a given address, converting the bytes to little-endian.
|
||||||
|
| Assumes input bytes are unsigned values and should be in hexadecimal format (0x...).
|
||||||
|
| Size must be 1, 2, 4, 8 bytes.
|
||||||
|
| Main purpose is to be used with the output from the asm commands.
|
||||||
|
end
|
||||||
|
|
||||||
# ____________________cflow___________________
|
# ____________________cflow___________________
|
||||||
define print_insn_type
|
define print_insn_type
|
||||||
@@ -3092,10 +2996,62 @@ Syntax: trace_run
|
|||||||
| Log overwrites(!) the file ~/gdb_trace_run.txt.
|
| Log overwrites(!) the file ~/gdb_trace_run.txt.
|
||||||
end
|
end
|
||||||
|
|
||||||
|
define entry_point
|
||||||
|
|
||||||
|
set logging redirect on
|
||||||
|
set logging file /tmp/gdb-entry_point
|
||||||
|
set logging on
|
||||||
|
|
||||||
|
info files
|
||||||
|
|
||||||
|
set logging off
|
||||||
|
|
||||||
|
shell entry_point="$(/usr/bin/grep 'Entry point:' /tmp/gdb-entry_point | /usr/bin/awk '{ print $3 }')"; echo "$entry_point"; echo 'set $entry_point_address = '"$entry_point" > /tmp/gdb-entry_point
|
||||||
|
source /tmp/gdb-entry_point
|
||||||
|
shell /bin/rm -f /tmp/gdb-entry_point
|
||||||
|
end
|
||||||
|
document entry_point
|
||||||
|
Syntax: entry_point
|
||||||
|
| Prints the entry point address of the target and stores it in the variable entry_point.
|
||||||
|
end
|
||||||
|
|
||||||
|
define break_entrypoint
|
||||||
|
entry_point
|
||||||
|
break *$entry_point_address
|
||||||
|
end
|
||||||
|
document break_entrypoint
|
||||||
|
Syntax: break_entrypoint
|
||||||
|
| Sets a breakpoint on the entry point of the target.
|
||||||
|
end
|
||||||
|
|
||||||
|
define objc_symbols
|
||||||
|
|
||||||
|
set logging redirect on
|
||||||
|
set logging file /tmp/gdb-objc_symbols
|
||||||
|
set logging on
|
||||||
|
|
||||||
|
info target
|
||||||
|
|
||||||
|
set logging off
|
||||||
|
# XXX: define paths for objc-symbols and SymTabCreator
|
||||||
|
shell target="$(/usr/bin/head -1 /tmp/gdb-objc_symbols | /usr/bin/head -1 | /usr/bin/awk -F '"' '{ print $2 }')"; objc-symbols "$target" | SymTabCreator -o /tmp/gdb-symtab
|
||||||
|
|
||||||
|
set logging on
|
||||||
|
add-symbol-file /tmp/gdb-symtab
|
||||||
|
set logging off
|
||||||
|
shell /bin/rm -f /tmp/gdb-objc_symbols
|
||||||
|
end
|
||||||
|
document objc_symbols
|
||||||
|
Syntax: objc_symbols
|
||||||
|
| Loads stripped objc symbols into gdb using objc-symbols and SymTabCreator
|
||||||
|
| See http://stackoverflow.com/questions/17554070/import-class-dump-info-into-gdb
|
||||||
|
| and https://github.com/0xced/class-dump/tree/objc-symbols (for the required utils)
|
||||||
|
end
|
||||||
|
|
||||||
#define ptraceme
|
#define ptraceme
|
||||||
# catch syscall ptrace
|
# catch syscall ptrace
|
||||||
# commands
|
# commands
|
||||||
# if (sizeof(void *) == 4)
|
# if ($64BITS == 0)
|
||||||
# if ($ebx == 0)
|
# if ($ebx == 0)
|
||||||
# set $eax = 0
|
# set $eax = 0
|
||||||
# continue
|
# continue
|
||||||
@@ -3128,12 +3084,26 @@ end
|
|||||||
|
|
||||||
# ____________________misc____________________
|
# ____________________misc____________________
|
||||||
define hook-stop
|
define hook-stop
|
||||||
# Display instructions formats
|
if (sizeof(void*) == 8)
|
||||||
|
set $64BITS = 1
|
||||||
|
else
|
||||||
|
set $64BITS = 0
|
||||||
|
end
|
||||||
|
|
||||||
|
if ($KDP64BITS != -1)
|
||||||
|
if ($KDP64BITS == 0)
|
||||||
|
set $64BITS = 0
|
||||||
|
else
|
||||||
|
set $64BITS = 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# Display instructions formats
|
||||||
if $ARM == 1
|
if $ARM == 1
|
||||||
if $ARMOPCODES == 1
|
if $ARMOPCODES == 1
|
||||||
set arm show-opcode-bytes 1
|
set arm show-opcode-bytes 1
|
||||||
else
|
else
|
||||||
set arm show-opcode-bytes 1
|
set arm show-opcode-bytes 0
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if $X86FLAVOR == 0
|
if $X86FLAVOR == 0
|
||||||
@@ -3184,7 +3154,7 @@ define assemble
|
|||||||
printf "End with a line saying just \"end\".\n"
|
printf "End with a line saying just \"end\".\n"
|
||||||
|
|
||||||
if ($argc)
|
if ($argc)
|
||||||
if (sizeof(void *) == 8)
|
if ($64BITS == 1)
|
||||||
# argument specified, assemble instructions into memory at address specified.
|
# argument specified, assemble instructions into memory at address specified.
|
||||||
shell ASMOPCODE="$(while read -ep '>' r && test "$r" != end ; do echo -E "$r"; done)" ; GDBASMFILENAME=$RANDOM; \
|
shell ASMOPCODE="$(while read -ep '>' r && test "$r" != end ; do echo -E "$r"; done)" ; GDBASMFILENAME=$RANDOM; \
|
||||||
echo -e "BITS 64\n$ASMOPCODE" >/tmp/$GDBASMFILENAME ; /usr/local/bin/nasm -f bin -o /dev/stdout /tmp/$GDBASMFILENAME | /usr/bin/hexdump -ve '1/1 "set *((unsigned char *) $arg0 + %#2_ax) = %#02x\n"' >/tmp/gdbassemble ; /bin/rm -f /tmp/$GDBASMFILENAME
|
echo -e "BITS 64\n$ASMOPCODE" >/tmp/$GDBASMFILENAME ; /usr/local/bin/nasm -f bin -o /dev/stdout /tmp/$GDBASMFILENAME | /usr/bin/hexdump -ve '1/1 "set *((unsigned char *) $arg0 + %#2_ax) = %#02x\n"' >/tmp/gdbassemble ; /bin/rm -f /tmp/$GDBASMFILENAME
|
||||||
@@ -3200,7 +3170,7 @@ define assemble
|
|||||||
shell /bin/rm -f /tmp/gdbassemble
|
shell /bin/rm -f /tmp/gdbassemble
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if (sizeof(void *) == 8)
|
if ($64BITS == 1)
|
||||||
# no argument, assemble instructions to stdout
|
# no argument, assemble instructions to stdout
|
||||||
shell ASMOPCODE="$(while read -ep '>' r && test "$r" != end ; do echo -E "$r"; done)" ; GDBASMFILENAME=$RANDOM; \
|
shell ASMOPCODE="$(while read -ep '>' r && test "$r" != end ; do echo -E "$r"; done)" ; GDBASMFILENAME=$RANDOM; \
|
||||||
echo -e "BITS 64\n$ASMOPCODE" >/tmp/$GDBASMFILENAME ; /usr/local/bin/nasm -f bin -o /dev/stdout /tmp/$GDBASMFILENAME | /usr/local/bin/ndisasm -i -b64 /dev/stdin ; \
|
echo -e "BITS 64\n$ASMOPCODE" >/tmp/$GDBASMFILENAME ; /usr/local/bin/nasm -f bin -o /dev/stdout /tmp/$GDBASMFILENAME | /usr/local/bin/ndisasm -i -b64 /dev/stdin ; \
|
||||||
@@ -3650,6 +3620,14 @@ Syntax: arm
|
|||||||
| Set gdb to work with ARM binaries.
|
| Set gdb to work with ARM binaries.
|
||||||
end
|
end
|
||||||
|
|
||||||
|
define ioskdp
|
||||||
|
set $SHOW_CONTEXT = 0
|
||||||
|
set $SHOW_NEST_INSN = 0
|
||||||
|
end
|
||||||
|
document ioskdp
|
||||||
|
Syntax: ioskdp
|
||||||
|
| Disable dumping context information for iOS KDP debugging
|
||||||
|
end
|
||||||
|
|
||||||
define intelsyntax
|
define intelsyntax
|
||||||
if $ARM == 0
|
if $ARM == 0
|
||||||
@@ -3724,6 +3702,210 @@ Syntax: kernel64 PATH_TO_KGMACROS <PORT>
|
|||||||
| By supplying a bogus kgmacros this command should be compatible with any OS.
|
| By supplying a bogus kgmacros this command should be compatible with any OS.
|
||||||
end
|
end
|
||||||
|
|
||||||
|
define 32bits
|
||||||
|
set $KDP64BITS = 0
|
||||||
|
set $64BITS = 0
|
||||||
|
end
|
||||||
|
|
||||||
|
define 64bits
|
||||||
|
set $KDP64BITS = 1
|
||||||
|
set $64BITS = 1
|
||||||
|
end
|
||||||
|
|
||||||
|
define resetkdp
|
||||||
|
set $KDP64BITS = -1
|
||||||
|
end
|
||||||
|
|
||||||
|
define header
|
||||||
|
if $argc != 0
|
||||||
|
dump memory /tmp/gdbinit_header_dump $arg0 $arg0 + 4096
|
||||||
|
shell /usr/bin/otool -h /tmp/gdbinit_header_dump
|
||||||
|
shell /bin/rm -f /tmp/gdbinit_header_dump
|
||||||
|
end
|
||||||
|
end
|
||||||
|
document header
|
||||||
|
Syntax: header MACHO_HEADER_START_ADDRESS
|
||||||
|
| Dump the Mach-O header located at given address
|
||||||
|
end
|
||||||
|
|
||||||
|
define loadcmds
|
||||||
|
if $argc != 0
|
||||||
|
# this size should be good enough for most binaries
|
||||||
|
dump memory /tmp/gdbinit_header_dump $arg0 $arg0 + 4096 * 10
|
||||||
|
shell /usr/bin/otool -l /tmp/gdbinit_header_dump
|
||||||
|
shell /bin/rm -f /tmp/gdbinit_header_dump
|
||||||
|
end
|
||||||
|
end
|
||||||
|
document loadcmds
|
||||||
|
Syntax: loadcmds MACHO_HEADER_START_ADDRESS
|
||||||
|
| Dump the Mach-O load commands
|
||||||
|
end
|
||||||
|
|
||||||
#EOF
|
#EOF
|
||||||
|
|
||||||
|
# Older change logs:
|
||||||
|
#
|
||||||
|
# Version 7.4.4 (02/01/2012)
|
||||||
|
# - Added the "skip" command. This will jump to the next instruction after EIP/RIP without executing the current one.
|
||||||
|
# Thanks to @bSr43 for the tip to retrieve the current instruction size.
|
||||||
|
#
|
||||||
|
# Version 7.4.3 (04/11/2011)
|
||||||
|
# - Modified "hexdump" command to support a variable number of lines (optional parameter)
|
||||||
|
# - Removed restrictions on type of addresses in the "dd" command - Thanks to Plouj for the warning :-)
|
||||||
|
# I don't know what was the original thinking behind those :-)
|
||||||
|
# - Modified the assemble command to support 64bits - You will need to recompile nasm since the version shipped with OS X doesn't supports 64bits (www.nasm.us).
|
||||||
|
# Assumes that the new binary is installed at /usr/local/bin - modify the variable at the top if you need so.
|
||||||
|
# It will assemble based on the target arch being debugged. If you want to use gdb for a quick asm just use the 32bits or 64bits commands to set your target.
|
||||||
|
# Thanks to snare for the warning and original patch :-)
|
||||||
|
# - Added "asm" command - it's a shortcut to the "assemble" command.
|
||||||
|
# - Added configuration variable for colorized prompt. Plouj reported some issues with Ubuntu's gdb 7.2 if prompt is colorized.
|
||||||
|
#
|
||||||
|
# Version 7.4.2 (11/08/2011)
|
||||||
|
# Small fix to a weird bug happening on FreeBSD 8.2. It doesn't like a "if(" instruction, needs to be "if (". Weird!
|
||||||
|
# Many thanks to Evan for reporting and sending the patch :-)
|
||||||
|
# Added the ptraceme/rptraceme commands to bypass PTRACE_TRACME anti-debugging technique.
|
||||||
|
# Grabbed this from http://falken.tuxfamily.org/?p=171
|
||||||
|
# It's commented out due to a gdb problem in OS X (refer to http://reverse.put.as/2011/08/20/another-patch-for-apples-gdb-the-definecommands-problem/ )
|
||||||
|
# Just uncomment it if you want to use in ptrace enabled systems.
|
||||||
|
#
|
||||||
|
# Version 7.4.1 (21/06/2011) - fG!
|
||||||
|
# Added patch sent by sbz, more than 1 year ago, which I forgot to add :-/
|
||||||
|
# This will allow to search for a given pattern between start and end address.
|
||||||
|
# On sbz words: "It's usefull to find call, ret or everything like that." :-)
|
||||||
|
# New command is "search"
|
||||||
|
#
|
||||||
|
# Version 7.4 (20/06/2011) - fG!
|
||||||
|
# When registers change between instructions the colour will change to red (like it happens in OllyDBG)
|
||||||
|
# This is the default behavior, if you don't like it, modify the variable SHOWREGCHANGES
|
||||||
|
# Added patch sent by Philippe Langlois
|
||||||
|
# Colour the first disassembly line - change the setting below on SETCOLOUR1STLINE - by default it's disabled
|
||||||
|
#
|
||||||
|
# Version 7.3.2 (21/02/2011) - fG!
|
||||||
|
# Added the command rint3 and modified the int3 command. The new command will restore the byte in previous int3 patch.
|
||||||
|
#
|
||||||
|
# Version 7.3.1 (29/06/2010) - fG!
|
||||||
|
# Added enablelib/disablelib command to quickly set the stop-on-solib-events trick
|
||||||
|
# Implemented the stepoh command equivalent to the stepo but using hardware breakpoints
|
||||||
|
# More fixes to stepo
|
||||||
|
#
|
||||||
|
# Version 7.3 (16/04/2010) - fG!
|
||||||
|
# Support for 64bits targets. Default is 32bits, you should modify the variable or use the 32bits or 64bits to choose the mode.
|
||||||
|
# I couldn't find another way to recognize the type of binary… Testing the register doesn't work that well.
|
||||||
|
# TODO: fix objectivec messages and stepo for 64bits
|
||||||
|
# Version 7.2.1 (24/11/2009) - fG!
|
||||||
|
# Another fix to stepo (0xFF92 missing)
|
||||||
|
#
|
||||||
|
# Version 7.2 (11/10/2009) - fG!
|
||||||
|
# Added the smallregisters function to create 16 and 8 bit versions from the registers EAX, EBX, ECX, EDX
|
||||||
|
# Revised and fixed all the dumpjump stuff, following Intel manuals. There were some errors (thx to rev who pointed the jle problem).
|
||||||
|
# Small fix to stepo command (missed a few call types)
|
||||||
|
#
|
||||||
|
# Version 7.1.7 - fG!
|
||||||
|
# Added the possibility to modify what's displayed with the context window. You can change default options at the gdb options part. For example, kernel debugging is much slower if the stack display is enabled...
|
||||||
|
# New commands enableobjectivec, enablecpuregisters, enablestack, enabledatawin and their disable equivalents (to support realtime change of default options)
|
||||||
|
# Fixed problem with the assemble command. I was calling /bin/echo which doesn't support the -e option ! DUH ! Should have used bash internal version.
|
||||||
|
# Small fixes to colours...
|
||||||
|
# New commands enablesolib and disablesolib . Just shortcuts for the stop-on-solib-events fantastic trick ! Hey... I'm lazy ;)
|
||||||
|
# Fixed this: Possible removal of "u" command, info udot is missing in gdb 6.8-debian . Doesn't exist on OS X so bye bye !!!
|
||||||
|
# Displays affected flags in jump decisions
|
||||||
|
#
|
||||||
|
# Version 7.1.6 - fG!
|
||||||
|
# Added modified assemble command from Tavis Ormandy (further modified to work with Mac OS X) (shell commands used use full path name, working for Leopard, modify for others if necessary)
|
||||||
|
# Renamed thread command to threads because thread is an internal gdb command that allows to move between program threads
|
||||||
|
#
|
||||||
|
# Version 7.1.5 (04/01/2009) - fG!
|
||||||
|
# Fixed crash on Leopard ! There was a If Else condition where the else had no code and that made gdb crash on Leopard (CRAZY!!!!)
|
||||||
|
# Better code indention
|
||||||
|
#
|
||||||
|
# Version 7.1.4 (02/01/2009) - fG!
|
||||||
|
# Bug in show objective c messages with Leopard ???
|
||||||
|
# Nop routine support for single address or range (contribution from gln [ghalen at hack.se])
|
||||||
|
# Used the same code from nop to null routine
|
||||||
|
#
|
||||||
|
# Version 7.1.3 (31/12/2008) - fG!
|
||||||
|
# Added a new command 'stepo'. This command will step a temporary breakpoint on next instruction after the call, so you can skip over
|
||||||
|
# the call. Did this because normal commands not always skip over (mainly with objc_msgSend)
|
||||||
|
#
|
||||||
|
# Version 7.1.2 (31/12/2008) - fG!
|
||||||
|
# Support for the jump decision (will display if a conditional jump will be taken or not)
|
||||||
|
#
|
||||||
|
# Version 7.1.1 (29/12/2008) - fG!
|
||||||
|
# Moved gdb options to the beginning (makes more sense)
|
||||||
|
# Added support to dump message being sent to msgSend (easier to understand what's going on)
|
||||||
|
#
|
||||||
|
# Version 7.1
|
||||||
|
# Fixed serious (and old) bug in dd and datawin, causing dereference of
|
||||||
|
# obviously invalid address. See below:
|
||||||
|
# gdb$ dd 0xffffffff
|
||||||
|
# FFFFFFFF : Cannot access memory at address 0xffffffff
|
||||||
|
#
|
||||||
|
# Version 7.0
|
||||||
|
# Added cls command.
|
||||||
|
# Improved documentation of many commands.
|
||||||
|
# Removed bp_alloc, was neither portable nor usefull.
|
||||||
|
# Checking of passed argument(s) in these commands:
|
||||||
|
# contextsize-stack, contextsize-data, contextsize-code
|
||||||
|
# bp, bpc, bpe, bpd, bpt, bpm, bhb,...
|
||||||
|
# Fixed bp and bhb inconsistencies, look at * signs in Version 6.2
|
||||||
|
# Bugfix in bhb command, changed "break" to "hb" command body
|
||||||
|
# Removed $SHOW_CONTEXT=1 from several commands, this variable
|
||||||
|
# should only be controlled globally with context-on and context-off
|
||||||
|
# Improved stack, func, var and sig, dis, n, go,...
|
||||||
|
# they take optional argument(s) now
|
||||||
|
# Fixed wrong $SHOW_CONTEXT assignment in context-off
|
||||||
|
# Fixed serious bug in cft command, forgotten ~ sign
|
||||||
|
# Fixed these bugs in step_to_call:
|
||||||
|
# 1) the correct logging sequence is:
|
||||||
|
# set logging file > set logging redirect > set logging on
|
||||||
|
# 2) $SHOW_CONTEXT is now correctly restored from $_saved_ctx
|
||||||
|
# Fixed these bugs in trace_calls:
|
||||||
|
# 1) the correct logging sequence is:
|
||||||
|
# set logging file > set logging overwrite >
|
||||||
|
# set logging redirect > set logging on
|
||||||
|
# 2) removed the "clean up trace file" part, which is not needed now,
|
||||||
|
# stepi output is properly redirected to /dev/null
|
||||||
|
# 3) $SHOW_CONTEXT is now correctly restored from $_saved_ctx
|
||||||
|
# Fixed bug in trace_run:
|
||||||
|
# 1) $SHOW_CONTEXT is now correctly restored from $_saved_ctx
|
||||||
|
# Fixed print_insn_type -- removed invalid semicolons!, wrong value checking,
|
||||||
|
# Added TODO entry regarding the "u" command
|
||||||
|
# Changed name from gas_assemble to assemble_gas due to consistency
|
||||||
|
# Output from assemble and assemble_gas is now similar, because i made
|
||||||
|
# both of them to use objdump, with respect to output format (AT&T|Intel).
|
||||||
|
# Whole code was checked and made more consistent, readable/maintainable.
|
||||||
|
#
|
||||||
|
# Version 6.2
|
||||||
|
# Add global variables to allow user to control stack, data and code window sizes
|
||||||
|
# Increase readability for registers
|
||||||
|
# Some corrections (hexdump, ddump, context, cfp, assemble, gas_asm, tips, prompt)
|
||||||
|
#
|
||||||
|
# Version 6.1-color-user
|
||||||
|
# Took the Gentoo route and ran sed s/user/user/g
|
||||||
|
#
|
||||||
|
# Version 6.1-color
|
||||||
|
# Added color fixes from
|
||||||
|
# http://gnurbs.blogsome.com/2006/12/22/colorizing-mamons-gdbinit/
|
||||||
|
#
|
||||||
|
# Version 6.1
|
||||||
|
# Fixed filename in step_to_call so it points to /dev/null
|
||||||
|
# Changed location of logfiles from /tmp to ~
|
||||||
|
#
|
||||||
|
# Version 6
|
||||||
|
# Added print_insn_type, get_insn_type, context-on, context-off commands
|
||||||
|
# Added trace_calls, trace_run, step_to_call commands
|
||||||
|
# Changed hook-stop so it checks $SHOW_CONTEXT variable
|
||||||
|
#
|
||||||
|
# Version 5
|
||||||
|
# Added bpm, dump_bin, dump_hex, bp_alloc commands
|
||||||
|
# Added 'assemble' by elaine, 'gas_asm' by mong
|
||||||
|
# Added Tip Topics for aspiring users ;)
|
||||||
|
#
|
||||||
|
# Version 4
|
||||||
|
# Added eflags-changing insns by pusillus
|
||||||
|
# Added bp, nop, null, and int3 patch commands, also hook-stop
|
||||||
|
#
|
||||||
|
# Version 3
|
||||||
|
# Incorporated elaine's if/else goodness into the hex/ascii dump
|
||||||
|
#
|
||||||
|
# Version 2
|
||||||
|
# Radix bugfix by elaine
|
||||||
7
dotfiles/rsync_ignore
Normal file
7
dotfiles/rsync_ignore
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
tmp
|
||||||
|
Downloads
|
||||||
|
.cache
|
||||||
|
.local/share/Trash
|
||||||
|
.wine
|
||||||
|
.thumbnails
|
||||||
|
.histfile
|
||||||
0
dotfiles/ssh/master/.keep
Normal file
0
dotfiles/ssh/master/.keep
Normal file
51
dotfiles/tmux.conf
Normal file
51
dotfiles/tmux.conf
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
# Update environment on reconnect
|
||||||
|
set -g update-environment "DISPLAY WINDOWID SSH_ASKPASS SSH_AGENT_PID SSH_CONNECTION"
|
||||||
|
|
||||||
|
# Custom binds
|
||||||
|
bind K confirm kill-server
|
||||||
|
bind X confirm kill-window
|
||||||
|
bind ^[ copy-mode
|
||||||
|
bind R source-file ~/.tmux.conf \; display-message " Config reloaded.."
|
||||||
|
|
||||||
|
# Scrollback
|
||||||
|
set -g history-limit 10000
|
||||||
|
|
||||||
|
# Start indexing from 1
|
||||||
|
set -g base-index 1
|
||||||
|
set -g pane-base-index 1
|
||||||
|
|
||||||
|
# Let us use utf-8 drawing characters to make tab-like window formats
|
||||||
|
setw -g utf8 on
|
||||||
|
set -g status-utf8 on
|
||||||
|
|
||||||
|
# Terminal emulator window title
|
||||||
|
set -g set-titles on
|
||||||
|
set -g set-titles-string '#h:#S:#I.#P #W'
|
||||||
|
|
||||||
|
# Set a 256color $TERM variable so programs inside tmux know they can use 256
|
||||||
|
# colors
|
||||||
|
set -g default-terminal screen-256color
|
||||||
|
|
||||||
|
# Mouse
|
||||||
|
set -g mode-mouse on
|
||||||
|
setw -g mouse-select-window on
|
||||||
|
setw -g mouse-select-pane on
|
||||||
|
|
||||||
|
# Activity
|
||||||
|
setw -g monitor-activity on
|
||||||
|
set -g visual-activity on
|
||||||
|
|
||||||
|
# Autorename new tabs automatically
|
||||||
|
setw -g automatic-rename on
|
||||||
|
|
||||||
|
# Color scheme
|
||||||
|
source-file ~/.tmux/tmux-solarized-256.conf
|
||||||
|
|
||||||
|
# Provide a statusbar
|
||||||
|
set -g window-status-current-bg colour33
|
||||||
|
set -g window-status-current-fg colour235
|
||||||
|
set -g window-status-current-attr bold
|
||||||
|
set -g status-interval 60
|
||||||
|
set -g status-left-length 30
|
||||||
|
set -g status-left '/#S/ '
|
||||||
|
set -g status-right '#(cut -d " " -f 1-3 /proc/loadavg)#[default] #[fg=colour166]%H:%M#[default]'
|
||||||
31
dotfiles/tmux/tmux-solarized-256.conf
Normal file
31
dotfiles/tmux/tmux-solarized-256.conf
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
#### COLOUR (Solarized 256)
|
||||||
|
|
||||||
|
# default statusbar colors
|
||||||
|
set-option -g status-bg colour235 #base02
|
||||||
|
set-option -g status-fg colour136 #yellow
|
||||||
|
set-option -g status-attr default
|
||||||
|
|
||||||
|
# default window title colors
|
||||||
|
set-window-option -g window-status-fg colour244 #base0
|
||||||
|
set-window-option -g window-status-bg default
|
||||||
|
#set-window-option -g window-status-attr dim
|
||||||
|
|
||||||
|
# active window title colors
|
||||||
|
set-window-option -g window-status-current-fg colour166 #orange
|
||||||
|
set-window-option -g window-status-current-bg default
|
||||||
|
#set-window-option -g window-status-current-attr bright
|
||||||
|
|
||||||
|
# pane border
|
||||||
|
set-option -g pane-border-fg colour235 #base02
|
||||||
|
set-option -g pane-active-border-fg colour240 #base01
|
||||||
|
|
||||||
|
# message text
|
||||||
|
set-option -g message-bg colour235 #base02
|
||||||
|
set-option -g message-fg colour166 #orange
|
||||||
|
|
||||||
|
# pane number display
|
||||||
|
set-option -g display-panes-active-colour colour33 #blue
|
||||||
|
set-option -g display-panes-colour colour166 #orange
|
||||||
|
|
||||||
|
# clock
|
||||||
|
set-window-option -g clock-mode-colour colour64 #green
|
||||||
7
dotfiles/vim/ftplugin/python.vim
Normal file
7
dotfiles/vim/ftplugin/python.vim
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
nnoremap <F8> :%!autopep8 -<CR>
|
||||||
|
setlocal tabstop=4
|
||||||
|
setlocal softtabstop=4
|
||||||
|
setlocal shiftwidth=4
|
||||||
|
setlocal textwidth=80
|
||||||
|
setlocal smarttab
|
||||||
|
setlocal expandtab
|
||||||
137
dotfiles/vimrc
Normal file
137
dotfiles/vimrc
Normal file
@@ -0,0 +1,137 @@
|
|||||||
|
" Allow full use of vim options
|
||||||
|
set nocompatible
|
||||||
|
|
||||||
|
" Enable Vundle if installed
|
||||||
|
if filereadable(glob("~/.vim/bundle/Vundle.vim/README.md"))
|
||||||
|
filetype off
|
||||||
|
set rtp+=~/.vim/bundle/Vundle.vim
|
||||||
|
call vundle#begin()
|
||||||
|
Plugin 'gmarik/Vundle.vim'
|
||||||
|
Plugin 'eistaa/vim-flake8'
|
||||||
|
Plugin 'tpope/vim-fugitive'
|
||||||
|
Plugin 'mileszs/ack.vim'
|
||||||
|
Plugin 'tpope/vim-unimpaired'
|
||||||
|
Plugin 'scrooloose/syntastic'
|
||||||
|
Plugin 'mattn/webapi-vim'
|
||||||
|
Plugin 'mattn/gist-vim'
|
||||||
|
Plugin 'fatih/vim-go'
|
||||||
|
Plugin 'altercation/vim-colors-solarized'
|
||||||
|
call vundle#end()
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Setup paths
|
||||||
|
set backupdir=~/.cache/vim/backup//
|
||||||
|
set directory=~/.cache/vim/swap//
|
||||||
|
set undodir=~/.cache/vim/undo//
|
||||||
|
if !isdirectory($HOME . '/.cache/vim/swap')
|
||||||
|
silent !mkdir -p ~/.cache/vim/{backup,swap,undo}
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Make sure files get completely written, but don't write backups
|
||||||
|
set nobackup
|
||||||
|
set writebackup
|
||||||
|
|
||||||
|
" Whitespace/indent options
|
||||||
|
set autoindent
|
||||||
|
set copyindent
|
||||||
|
set tabstop=2
|
||||||
|
set softtabstop=2
|
||||||
|
set shiftwidth=2
|
||||||
|
set expandtab
|
||||||
|
set shiftround
|
||||||
|
set backspace=indent,eol,start
|
||||||
|
" Shift-tab to go backwards in insert mode
|
||||||
|
imap <S-Tab> <Esc><<A
|
||||||
|
|
||||||
|
" Line numbering, ruler
|
||||||
|
set number
|
||||||
|
set ruler
|
||||||
|
set cursorline
|
||||||
|
|
||||||
|
" File options
|
||||||
|
set encoding=utf-8
|
||||||
|
" Syntax highlighting, look and feel
|
||||||
|
syntax on
|
||||||
|
set background=dark
|
||||||
|
if has('gui_running')
|
||||||
|
set guifont=Inconsolata\ Medium\ 12
|
||||||
|
else
|
||||||
|
let g:solarized_termcolors=256
|
||||||
|
endif
|
||||||
|
silent! colorscheme solarized
|
||||||
|
" Enable filetype support
|
||||||
|
filetype plugin indent on
|
||||||
|
" Allow file modelines
|
||||||
|
set modeline
|
||||||
|
" Automatically re-read changed files
|
||||||
|
set autoread
|
||||||
|
" fsync() after writing files
|
||||||
|
set fsync
|
||||||
|
" Text width 80
|
||||||
|
set textwidth=80
|
||||||
|
" Write via sudo
|
||||||
|
cnoremap sudow w !sudo tee % >/dev/null
|
||||||
|
|
||||||
|
" Search options
|
||||||
|
set incsearch
|
||||||
|
set ignorecase
|
||||||
|
set smartcase
|
||||||
|
" Optional highlighting
|
||||||
|
nmap <leader>hs :set hlsearch! hlsearch?<CR>
|
||||||
|
|
||||||
|
" Toggle paste mode
|
||||||
|
nmap <silent> <F4> :set invpaste<CR>:set paste?<CR>
|
||||||
|
imap <silent> <F4> <ESC>:set invpaste<CR>:set paste?<CR>
|
||||||
|
|
||||||
|
" Mediocre Hex editing in vim
|
||||||
|
" Source: http://vim.wikia.com/wiki/Improved_hex_editing
|
||||||
|
" TODO: move to an include
|
||||||
|
nnoremap <C-H> :Hexmode<CR>
|
||||||
|
command -bar Hexmode call ToggleHex()
|
||||||
|
function ToggleHex()
|
||||||
|
" hex mode should be considered a read-only operation
|
||||||
|
" save values for modified and read-only for restoration later,
|
||||||
|
" and clear the read-only flag for now
|
||||||
|
let l:modified=&mod
|
||||||
|
let l:oldreadonly=&readonly
|
||||||
|
let &readonly=0
|
||||||
|
let l:oldmodifiable=&modifiable
|
||||||
|
let &modifiable=1
|
||||||
|
if !exists("b:editHex") || !b:editHex
|
||||||
|
" save old options
|
||||||
|
let b:oldft=&ft
|
||||||
|
let b:oldbin=&bin
|
||||||
|
" set new options
|
||||||
|
setlocal binary " make sure it overrides any textwidth, etc.
|
||||||
|
let &ft="xxd"
|
||||||
|
" set status
|
||||||
|
let b:editHex=1
|
||||||
|
" switch to hex editor
|
||||||
|
%!xxd
|
||||||
|
else
|
||||||
|
" restore old options
|
||||||
|
let &ft=b:oldft
|
||||||
|
if !b:oldbin
|
||||||
|
setlocal nobinary
|
||||||
|
endif
|
||||||
|
" set status
|
||||||
|
let b:editHex=0
|
||||||
|
" return to normal editing
|
||||||
|
%!xxd -r
|
||||||
|
endif
|
||||||
|
" restore values for modified and read only state
|
||||||
|
let &mod=l:modified
|
||||||
|
let &readonly=l:oldreadonly
|
||||||
|
let &modifiable=l:oldmodifiable
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Options for syntastic
|
||||||
|
let g:syntastic_enable_signs = 1
|
||||||
|
let g:syntastic_auto_loc_list = 2
|
||||||
|
" Have F5 run the tests and display errors
|
||||||
|
nnoremap <silent> <F5> :SyntasticCheck<CR> :Errors<CR>
|
||||||
|
|
||||||
|
" Include a .vimrc.local if it exists
|
||||||
|
if filereadable(glob("~/.vimrc.local"))
|
||||||
|
source ~/.vimrc.local
|
||||||
|
endif
|
||||||
18
dotfiles/wgetrc
Normal file
18
dotfiles/wgetrc
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
# Use server timestamps and name
|
||||||
|
timestamping = on
|
||||||
|
trust_server_names = on
|
||||||
|
content_disposition = on
|
||||||
|
|
||||||
|
# Recursive download options
|
||||||
|
no_parent = on
|
||||||
|
follow_ftp = on
|
||||||
|
adjust_extension = on
|
||||||
|
robots = off
|
||||||
|
|
||||||
|
# Show responses
|
||||||
|
server_response = on
|
||||||
|
|
||||||
|
# Retry handling
|
||||||
|
tries = 3
|
||||||
|
timeout = 60
|
||||||
|
retry_connrefused = on
|
||||||
2
dotfiles/xprofile
Normal file
2
dotfiles/xprofile
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
setxkbmap -option ctrl:nocaps
|
||||||
|
test -f "$HOME/.profile" && . "$HOME/.profile"
|
||||||
161
dotfiles/zsh_custom/plugins/virsh/_virsh
Normal file
161
dotfiles/zsh_custom/plugins/virsh/_virsh
Normal file
@@ -0,0 +1,161 @@
|
|||||||
|
#compdef virsh
|
||||||
|
|
||||||
|
# Copyright (c) 2015, Jan-Philipp Litza <janphilipp@litza.de>
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions are met:
|
||||||
|
# * Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
# * Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
# * Neither the name of the <organization> nor the
|
||||||
|
# names of its contributors may be used to endorse or promote products
|
||||||
|
# derived from this software without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
# DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
||||||
|
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
local -a args reply
|
||||||
|
|
||||||
|
function _virsh_domains() {
|
||||||
|
local -a out
|
||||||
|
local description="${(P)#}"
|
||||||
|
shift -p
|
||||||
|
local domaintype="${description/running/}"
|
||||||
|
out=( ${(f)"$(_call_program commands virsh list --name ${domaintype:+--$domaintype} 2>&1)"} )
|
||||||
|
if (( $#out == 0 )); then
|
||||||
|
_message "No $description domains"
|
||||||
|
else
|
||||||
|
_describe "$description domains" out "$@"
|
||||||
|
fi
|
||||||
|
return $?
|
||||||
|
}
|
||||||
|
|
||||||
|
_virsh() {
|
||||||
|
_arguments \
|
||||||
|
{-c,--connect}':hypervisor connection URI:_files' \
|
||||||
|
{-d,--debug}':debug level:( 0 1 2 3 4 )' \
|
||||||
|
{-e,--escape}':escape character for console:' \
|
||||||
|
{-h,--help}'[show help]' \
|
||||||
|
{-k,--keepalive-interval}':keepalive interval in seconds, 0 for disable:' \
|
||||||
|
{-K,--keepalive-count}':number of possible missed keepalive messages:' \
|
||||||
|
{-l,--log}'[output logging to file]:logfile:_files' \
|
||||||
|
{-q,--quiet}'[quiet mode]' \
|
||||||
|
{-r,--readonly}'[connect readonly]' \
|
||||||
|
{-t,--timing}'[print timing information]' \
|
||||||
|
'-v:show version' \
|
||||||
|
'-V:long version' \
|
||||||
|
'--version[show version]:type:( short long )' \
|
||||||
|
'::virsh command:_virsh_subcommand' \
|
||||||
|
'*::virsh command arguments:_virsh_subcommand_args'
|
||||||
|
}
|
||||||
|
|
||||||
|
_virsh_domain_or_file() {
|
||||||
|
_alternative \
|
||||||
|
"domains:domains:_virsh_domains ${1:-all}" \
|
||||||
|
"files:files:_files"
|
||||||
|
}
|
||||||
|
|
||||||
|
_virsh_fallback_command() {
|
||||||
|
domains() {
|
||||||
|
echo "$1 domains:_virsh_domains $1"
|
||||||
|
}
|
||||||
|
local files="file:_files"
|
||||||
|
local -A cmd_args
|
||||||
|
cmd_args=(
|
||||||
|
attach-device "$files"
|
||||||
|
autostart "$(domains all)"
|
||||||
|
cd "dirs:_dirs"
|
||||||
|
console "$(domains running)"
|
||||||
|
cpu-baseline "$files"
|
||||||
|
cpu-compare "$files"
|
||||||
|
create "$files"
|
||||||
|
start "$(domains inactive)"
|
||||||
|
destroy "$(domains running)"
|
||||||
|
detach-device "$(domains all)"
|
||||||
|
define "$files"
|
||||||
|
domid "$(domains all)"
|
||||||
|
domuuid "$(domains all)"
|
||||||
|
dominfo "$(domains all)"
|
||||||
|
domjobinfo "$(domains all)"
|
||||||
|
domjobabort "$(domains all)"
|
||||||
|
domname "$(domains all)"
|
||||||
|
domstate "$(domains all)"
|
||||||
|
dommemstat "$(domains all)"
|
||||||
|
dumpxml "$(domains all)"
|
||||||
|
edit "$(domains all)"
|
||||||
|
list "$(domains all)"
|
||||||
|
net-create "$files"
|
||||||
|
net-define "$files"
|
||||||
|
managedsave "$(domains running)"
|
||||||
|
managedsave-remove "$(domains all)"
|
||||||
|
nwfilter-define "$files"
|
||||||
|
pool-create "$files"
|
||||||
|
pool-define "$files"
|
||||||
|
secret-define "$files"
|
||||||
|
reboot "$(domains running)"
|
||||||
|
reset "$(domains running)"
|
||||||
|
restore "$files"
|
||||||
|
resume "$(domains running)"
|
||||||
|
send-key "$(domains running)"
|
||||||
|
setmem "$(domains all)"
|
||||||
|
setmaxmem "$(domains all)"
|
||||||
|
setvcpus "$(domains all)"
|
||||||
|
shutdown "$(domains running)"
|
||||||
|
suspend "$(domains running)"
|
||||||
|
ttyconsole "$(domains running)"
|
||||||
|
undefine "$(domains inactive)"
|
||||||
|
vcpuinfo "$(domains running)"
|
||||||
|
vncdisplay "$(domains running)"
|
||||||
|
snapshot-current "$(domains all)"
|
||||||
|
snapshot-list "$(domains all)"
|
||||||
|
)
|
||||||
|
|
||||||
|
local cmd="$1"
|
||||||
|
local -a options
|
||||||
|
options=(
|
||||||
|
${${(M)${(f)"$(_call_program commands virsh help $cmd 2>&1)"}:# -*}/#(#b) ([a-z-]##) ##([^[:space:]]*)/$match[1]:$match[2]}
|
||||||
|
)
|
||||||
|
if (( $+cmd_args[$cmd] )); then
|
||||||
|
options+=( ":$cmd_args[$cmd]" )
|
||||||
|
else
|
||||||
|
options+=( ":$(domains all)" ":$files" )
|
||||||
|
fi
|
||||||
|
_arguments "$options[@]"
|
||||||
|
}
|
||||||
|
|
||||||
|
_virsh_build_cmds() {
|
||||||
|
(( $+_virsh_cmds )) || _virsh_cmds=(
|
||||||
|
${${(M)${(f)"$(_call_program commands virsh help 2>&1)"}:# *}/#(#b) ([a-z-]##) ##([^[:space:]])/$match[1]:$match[2]}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
_virsh_subcommand() {
|
||||||
|
_virsh_build_cmds
|
||||||
|
_describe 'virsh command' _virsh_cmds
|
||||||
|
}
|
||||||
|
|
||||||
|
_virsh_subcommand_args() {
|
||||||
|
_virsh_build_cmds
|
||||||
|
local curcontext="$curcontext"
|
||||||
|
|
||||||
|
cmd="${${_virsh_cmds[(r)$words[1]:*]%%:*}:-${(k)_virsh_syns[(r)(*:|)$words[1](:*|)]}}"
|
||||||
|
if (( $#cmd )); then
|
||||||
|
curcontext="${curcontext%:*:*}:virsh-${cmd}:"
|
||||||
|
_virsh_fallback_command "$cmd"
|
||||||
|
else
|
||||||
|
_message "unknown virsh command; $words[1]"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
_virsh "$@"
|
||||||
3
dotfiles/zsh_custom/themes/matir.zsh-theme
Normal file
3
dotfiles/zsh_custom/themes/matir.zsh-theme
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
PROMPT='%{$fg[black]%}[%{$fg[yellow]%}%h%{$fg[black]%}] %{%(!.$fg[red].$fg[green])%}%8>..>%n%>>%{$fg[white]%}@%{$fg[blue]%}%12>..>%m%>>%{$fg[white]%}:%{$fg[green]%}%32<...<%~%<<%{$fg[blue]%}$(git_prompt_info)%{$fg[white]%}%#%{$reset_color%} '
|
||||||
|
ZSH_THEME_GIT_PROMPT_PREFIX=" ("
|
||||||
|
ZSH_THEME_GIT_PROMPT_SUFFIX=")"
|
||||||
52
dotfiles/zshrc
Normal file
52
dotfiles/zshrc
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
HISTFILE=~/.histfile
|
||||||
|
HISTSIZE=1000
|
||||||
|
SAVEHIST=1000
|
||||||
|
setopt appendhistory autocd autopushd extendedglob nohup nomatch histignorespace histlexwords histverify cbases
|
||||||
|
unsetopt beep histbeep listbeep flowcontrol
|
||||||
|
bindkey -e
|
||||||
|
|
||||||
|
# Completion
|
||||||
|
zstyle :compinstall filename '/home/david/.zshrc'
|
||||||
|
autoload -Uz compinit && compinit
|
||||||
|
|
||||||
|
DIRSTACKSIZE=16
|
||||||
|
case $TERM in
|
||||||
|
xterm*)
|
||||||
|
precmd () {print -Pn "\e]0;%n@%m: %~\a"}
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
autoload -U colors && colors
|
||||||
|
PS1="%{%(!.$fg[red].$fg[green])%}%n%{$fg[white]%}@%{$fg[cyan]%}%m%{$fg[white]%}:%{$fg[green]%}%32<...<%~%<<%{$fg[white]%}%#%{$reset_color%} "
|
||||||
|
|
||||||
|
# .profile is universal
|
||||||
|
. ~/.profile
|
||||||
|
# Deduplicate the path
|
||||||
|
typeset -U path
|
||||||
|
|
||||||
|
alias ls='ls --color'
|
||||||
|
|
||||||
|
# Load oh-my-zsh
|
||||||
|
if [ -d $HOME/.oh-my-zsh ] ; then
|
||||||
|
ZSH=$HOME/.oh-my-zsh
|
||||||
|
ZSH_THEME="matir"
|
||||||
|
ZSH_CUSTOM="$HOME/.zsh_custom"
|
||||||
|
plugins=(git encode64 gpg-agent pep8 pip python tmux urltools extract sudo virsh virtualenv)
|
||||||
|
source $ZSH/oh-my-zsh.sh
|
||||||
|
unset ZSH_THEME
|
||||||
|
unset ZSH_CUSTOM
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Keybindings
|
||||||
|
bindkey '^[[A' history-search-backward
|
||||||
|
bindkey '^[[B' history-search-forward
|
||||||
|
bindkey '^[[1;5C' forward-word
|
||||||
|
bindkey '^[[1;5D' backward-word
|
||||||
|
|
||||||
|
# Source extras if interactive
|
||||||
|
if [[ $- == *i* ]] ; then
|
||||||
|
for file in $HOME/.zshrc.d/* ; do source "$file" ; done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Load any local settings
|
||||||
|
if [ -e $HOME/.zshrc.local ] ; then source $HOME/.zshrc.local ; fi
|
||||||
11
dotfiles/zshrc.d/afk.zsh
Normal file
11
dotfiles/zshrc.d/afk.zsh
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
function afk {
|
||||||
|
# Note, may fail if multiple users are logged in with different desktop
|
||||||
|
# environments.
|
||||||
|
if pidof cinnamon-screensaver >/dev/null ; then
|
||||||
|
cinnamon-screensaver-command -l
|
||||||
|
elif pidof gnome-screensaver >/dev/null ; then
|
||||||
|
gnome-screensaver-command -l
|
||||||
|
else
|
||||||
|
echo 'No screensaver found...' >&2
|
||||||
|
fi
|
||||||
|
}
|
||||||
18
dotfiles/zshrc.d/assemble.zsh
Normal file
18
dotfiles/zshrc.d/assemble.zsh
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
if [ -f "`command which nasm`" -a -f "`command which objdump`" ] ; then
|
||||||
|
assemble_shellcode() {
|
||||||
|
if [ -z "$1" ] ; then echo "Usage: $0 <assembly file>" >&2 ; return 1 ; fi
|
||||||
|
local NASM=`command which nasm`
|
||||||
|
local OBJDUMP=`command which objdump`
|
||||||
|
local TMPF=`mktemp`
|
||||||
|
local bytes
|
||||||
|
local byte
|
||||||
|
$NASM -f elf -o $TMPF $1
|
||||||
|
$OBJDUMP -M intel -d $TMPF | grep '^ ' | cut -f2 | while read -A bytes ; do
|
||||||
|
for byte in $bytes ; do
|
||||||
|
echo -n "\\\\x$byte"
|
||||||
|
done
|
||||||
|
done
|
||||||
|
echo
|
||||||
|
rm $TMPF
|
||||||
|
}
|
||||||
|
fi
|
||||||
29
dotfiles/zshrc.d/burp.zsh
Normal file
29
dotfiles/zshrc.d/burp.zsh
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
burp() {
|
||||||
|
setopt localoptions nullglob numeric_glob_sort
|
||||||
|
local NO_DOWNLOAD
|
||||||
|
local JAR
|
||||||
|
if (( ${+argv[(r)*no-download]} )) ; then
|
||||||
|
NO_DOWNLOAD=1
|
||||||
|
shift
|
||||||
|
else
|
||||||
|
NO_DOWNLOAD=0
|
||||||
|
fi
|
||||||
|
JAR=(${HOME}/bin/burpsuite*jar(On[1])) 2>/dev/null
|
||||||
|
if [ -z $JAR ] ; then
|
||||||
|
if (( $NO_DOWNLOAD )) ; then
|
||||||
|
echo "Not downloading, --no-download specified" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
echo "Burp JAR not found in ${HOME}/bin. Attempting to download free edition." >&2
|
||||||
|
wget -q --content-disposition --no-server-response -P ${HOME}/bin \
|
||||||
|
https://portswigger.net/DownloadUpdate.ashx\?Product\=Free
|
||||||
|
if [ $? -ne 0 ] ; then
|
||||||
|
echo "Download failed." >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
burp --no-download "$@"
|
||||||
|
return $?
|
||||||
|
else
|
||||||
|
java -jar ${JAR} "$@"
|
||||||
|
fi
|
||||||
|
}
|
||||||
4
dotfiles/zshrc.d/prune-broken-symlinks.zsh
Normal file
4
dotfiles/zshrc.d/prune-broken-symlinks.zsh
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
prune-broken-symlinks() {
|
||||||
|
setopt localoptions nounset
|
||||||
|
find $1 -type l -xtype l -print -delete
|
||||||
|
}
|
||||||
6
dotfiles/zshrc.d/remove-wine-files.zsh
Normal file
6
dotfiles/zshrc.d/remove-wine-files.zsh
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
remove-wine-associations() {
|
||||||
|
rm ~/.local/share/applications/wine*.desktop
|
||||||
|
update-desktop-database ~/.local/share/applications
|
||||||
|
rm ~/.local/share/mime/packages/x-wine*.xml
|
||||||
|
update-mime-database ~/.local/share/mime
|
||||||
|
}
|
||||||
17
dotfiles/zshrc.d/ssh-completion.zsh
Normal file
17
dotfiles/zshrc.d/ssh-completion.zsh
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
# SSH autocompletion
|
||||||
|
# ssh, scp, ping, host
|
||||||
|
# https://github.com/tehmaze/maze.io/blob/master/maze/_post/2008/08-03-remote-tabcompletion-using-openssh-and-zsh.md
|
||||||
|
zstyle ':completion:*:scp:*' tag-order 'hosts:-host hosts:-domain:domain hosts:-ipaddr:IP\ address *'
|
||||||
|
zstyle ':completion:*:scp:*' group-order users files all-files hosts-domain hosts-host hosts-ipaddr
|
||||||
|
zstyle ':completion:*:ssh:*' tag-order users 'hosts:-host hosts:-domain:domain hosts:-ipaddr:IP\ address *'
|
||||||
|
zstyle ':completion:*:ssh:*' group-order hosts-domain hosts-host users hosts-ipaddr
|
||||||
|
zstyle ':completion:*:(ssh|scp):*:hosts-host' ignored-patterns '*.*' loopback localhost
|
||||||
|
zstyle ':completion:*:(ssh|scp):*:hosts-domain' ignored-patterns '<->.<->.<->.<->' '^*.*' '*@*'
|
||||||
|
zstyle ':completion:*:(ssh|scp):*:hosts-ipaddr' ignored-patterns '^<->.<->.<->.<->' '127.0.0.<->'
|
||||||
|
zstyle ':completion:*:(ssh|scp):*:users' ignored-patterns adm bin daemon halt lp named shutdown sync
|
||||||
|
zstyle -e ':completion:*:(ssh|scp):*' hosts 'reply=(
|
||||||
|
${=${${(f)"$(cat {/etc/ssh_,~/.ssh/known_}hosts(|2)(N) \
|
||||||
|
/dev/null)"}%%[# ]*}//,/ }
|
||||||
|
${=${(f)"$(cat /etc/hosts(|)(N) <<(ypcat hosts 2>/dev/null))"}%%\#*}
|
||||||
|
${=${${${${(@M)${(f)"$(<~/.ssh/config)"}:#Host *}#Host }:#*\**}:#*\?*}}
|
||||||
|
)'
|
||||||
8
dotfiles/zshrc.d/ssl.zsh
Normal file
8
dotfiles/zshrc.d/ssl.zsh
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
retrieve_ssl_certificate_chain() {
|
||||||
|
openssl s_client -connect $1 -showcerts </dev/null 2>/dev/null | awk \
|
||||||
|
' BEGIN { incert = 0 }
|
||||||
|
/-----BEGIN CERTIFICATE-----/ { incert = 1 }
|
||||||
|
incert == 1 { print $0 }
|
||||||
|
/-----END CERTIFICATE-----/ { incert = 0 }
|
||||||
|
'
|
||||||
|
}
|
||||||
12
dotfiles/zshrc.d/total.zsh
Normal file
12
dotfiles/zshrc.d/total.zsh
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
total() {
|
||||||
|
local sum
|
||||||
|
local arr
|
||||||
|
local n
|
||||||
|
sum=0
|
||||||
|
while read -A arr ; do
|
||||||
|
for n in $arr ; do
|
||||||
|
sum=$(($sum+n))
|
||||||
|
done
|
||||||
|
done
|
||||||
|
print $sum
|
||||||
|
}
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
[user]
|
|
||||||
name = David Tomaschik
|
|
||||||
email = david@systemoverlord.com
|
|
||||||
[push]
|
|
||||||
default = simple
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
use-agent
|
|
||||||
keyserver pool.sks-keyservers.net
|
|
||||||
personal-digest-preferences SHA256
|
|
||||||
cert-digest-algo SHA256
|
|
||||||
default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed
|
|
||||||
191
install.sh
191
install.sh
@@ -3,26 +3,199 @@
|
|||||||
set nounset
|
set nounset
|
||||||
set errexit
|
set errexit
|
||||||
|
|
||||||
BASEDIR=${BASEDIR:-$HOME/.dotfiles}
|
BASEDIR=${BASEDIR:-$HOME/.skel}
|
||||||
|
MINIMAL=${MINIMAL:-0}
|
||||||
|
INSTALL_KEYS=${INSTALL_KEYS:-1}
|
||||||
|
INSTALL_PKGS=${INSTALL_PKGS:-$((1 - ${MINIMAL}))}
|
||||||
|
|
||||||
if [ ! -d $BASEDIR ] ; then
|
if [ ! -d $BASEDIR ] ; then
|
||||||
echo "Please install to $BASEDIR!" &>2
|
echo "Please install to $BASEDIR!" 1>&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
function install_dir {
|
if which dpkg-query > /dev/null ; then
|
||||||
SRCDIR="${1}"
|
HAVE_X=`dpkg-query -s xserver-xorg | grep -c 'Status.*installed'`
|
||||||
find ${SRCDIR} \( -name .git -o \
|
else
|
||||||
-path ${SRCDIR}/private_dotfiles -o \
|
HAVE_X=0
|
||||||
|
fi
|
||||||
|
|
||||||
|
IS_KALI=`grep -ci kali /etc/os-release 2>/dev/null`
|
||||||
|
ARCH=`uname -m`
|
||||||
|
|
||||||
|
|
||||||
|
function prerequisites {
|
||||||
|
# Prerequisites require git
|
||||||
|
if ! which git > /dev/null ; then
|
||||||
|
echo 'No git, not installing extras.' 1>&2
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
if which zsh > /dev/null ; then
|
||||||
|
if [ `getent passwd $USER | cut -d: -f7` != `which zsh` ] ; then
|
||||||
|
echo 'Enter password to change shell.' 1>&2
|
||||||
|
chsh -s `which zsh`
|
||||||
|
fi
|
||||||
|
if [ ! -d $HOME/.oh-my-zsh ] ; then
|
||||||
|
git clone https://github.com/robbyrussell/oh-my-zsh.git $HOME/.oh-my-zsh
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "ZSH not found!" > /dev/stderr
|
||||||
|
fi
|
||||||
|
if which vim > /dev/null ; then
|
||||||
|
mkdir -p $HOME/.vim/bundle
|
||||||
|
if [ ! -d $HOME/.vim/bundle/Vundle.vim ] ; then
|
||||||
|
git clone https://github.com/VundleVim/Vundle.vim.git \
|
||||||
|
$HOME/.vim/bundle/Vundle.vim
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function install_dotfile_dir {
|
||||||
|
local SRCDIR="${1}"
|
||||||
|
find "${SRCDIR}" \( -name .git -o \
|
||||||
|
-path "${SRCDIR}/private_dotfiles" -o \
|
||||||
-name install.sh -o \
|
-name install.sh -o \
|
||||||
|
-name README.md -o \
|
||||||
-name .gitignore \) \
|
-name .gitignore \) \
|
||||||
-prune -o -type f -print | \
|
-prune -o -type f -print | \
|
||||||
while read dotfile ; do
|
while read dotfile ; do
|
||||||
TARGET="${HOME}/.${dotfile#${SRCDIR}/}"
|
local TARGET="${HOME}/.${dotfile#${SRCDIR}/}"
|
||||||
mkdir -p `dirname "${TARGET}"`
|
mkdir -p `dirname "${TARGET}"`
|
||||||
ln -s -f "${dotfile}" "${TARGET}"
|
ln -s -f "${dotfile}" "${TARGET}"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
install_dir "${BASEDIR}"
|
function install_basic_dir {
|
||||||
test -d "${BASEDIR}/private_dotfiles" && install_dir "${BASEDIR}/private_dotfiles"
|
local SRCDIR="${1}"
|
||||||
|
local DESTDIR="${2}"
|
||||||
|
find "${SRCDIR}" -type f -print | \
|
||||||
|
while read file ; do
|
||||||
|
local TARGET="${2}/${file#${SRCDIR}/}"
|
||||||
|
mkdir -p `dirname "${TARGET}"`
|
||||||
|
ln -s -f "${file}" "${TARGET}"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
function postinstall {
|
||||||
|
# Install Vundle plugins
|
||||||
|
if [ -d $HOME/.vim/bundle/Vundle.vim ] ; then
|
||||||
|
vim +VundleInstall +qall
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function ssh_key_already_installed {
|
||||||
|
# Return 1 if the key isn't already installed, 0 if it is
|
||||||
|
local AK="${HOME}/.ssh/authorized_keys"
|
||||||
|
if [ ! -f $AK ] ; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
local KEYFP=`ssh-keygen -l -f $1 2>/dev/null | awk '{print $2}'`
|
||||||
|
local TMPF=`mktemp`
|
||||||
|
local key
|
||||||
|
while read key ; do
|
||||||
|
echo "$key" > $TMPF
|
||||||
|
local EFP=`ssh-keygen -l -f ${TMPF} 2>/dev/null | awk '{print $2}'`
|
||||||
|
if [ "$EFP" == "$KEYFP" ] ; then
|
||||||
|
rm $TMPF 2>/dev/null
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done < <(grep -v '^#' ${AK})
|
||||||
|
rm $TMPF 2>/dev/null
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
function install_ssh_keys {
|
||||||
|
# Install SSH keys
|
||||||
|
echo 'Installing SSH keys...' >&2
|
||||||
|
local AK="${HOME}/.ssh/authorized_keys"
|
||||||
|
local key
|
||||||
|
for key in ${BASEDIR}/keys/ssh/* ; do
|
||||||
|
if ssh_key_already_installed "${key}" ; then
|
||||||
|
echo "Key `basename ${key}` already installed..." >&2
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
echo "# `basename ${key}` added from skel on `date +%Y-%m-%d`" >> ${AK}
|
||||||
|
cat ${key} >> ${AK}
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
function install_gpg_keys {
|
||||||
|
local key
|
||||||
|
for key in ${BASEDIR}/keys/gpg/* ; do
|
||||||
|
gpg --import < ${key}
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
function install_known_hosts {
|
||||||
|
echo 'Installing known hosts...' >&2
|
||||||
|
if [ ! -f ${BASEDIR}/keys/known_hosts ] ; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
mkdir -p ${HOME}/.ssh
|
||||||
|
if [ -f ${HOME}/.ssh/known_hosts ] ; then
|
||||||
|
local tmpf=`mktemp`
|
||||||
|
cat ${BASEDIR}/keys/known_hosts ${HOME}/.ssh/known_hosts | sort | uniq > $tmpf
|
||||||
|
mv $tmpf ${HOME}/.ssh/known_hosts
|
||||||
|
else
|
||||||
|
cp ${BASEDIR}/keys/known_hosts ${HOME}/.ssh/known_hosts
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function install_keys {
|
||||||
|
install_ssh_keys
|
||||||
|
install_gpg_keys
|
||||||
|
install_known_hosts
|
||||||
|
}
|
||||||
|
|
||||||
|
function is_deb_system {
|
||||||
|
test -f /usr/bin/apt-get
|
||||||
|
}
|
||||||
|
|
||||||
|
function run_as_root {
|
||||||
|
# Attempt to run as root
|
||||||
|
if [ ${USER} == "root" ] ; then
|
||||||
|
"$@"
|
||||||
|
return $?
|
||||||
|
elif groups | grep -q '\bsudo\b' ; then
|
||||||
|
echo "Using sudo to run ${1}..." >&2
|
||||||
|
sudo "$@"
|
||||||
|
return $?
|
||||||
|
fi
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
function install_pkg_set {
|
||||||
|
if [[ ! -f ${1} ]] ; then return 0 ; fi
|
||||||
|
run_as_root apt-get install -y `cat ${BASEDIR}/${1}`
|
||||||
|
}
|
||||||
|
|
||||||
|
function install_apt_pkgs {
|
||||||
|
run_as_root apt-get update || \
|
||||||
|
( echo "Can't run apt-get commands" >&2 && \
|
||||||
|
return 1 )
|
||||||
|
install_pkg_set packages
|
||||||
|
(( $HAVE_X )) && install_pkg_set packages.X
|
||||||
|
(( $IS_KALI )) && install_pkg_set packages.kali
|
||||||
|
install_pkg_set packages.${ARCH}
|
||||||
|
(( $HAVE_X )) && install_chrome
|
||||||
|
}
|
||||||
|
|
||||||
|
function install_chrome {
|
||||||
|
local TMPD=`mktemp -d`
|
||||||
|
local CHROME_ARCH=`echo ${ARCH} | sed 's/x86_64/amd64/'`
|
||||||
|
dpkg-query -l 'google-chrome*' && return 0
|
||||||
|
/usr/bin/wget --quiet -O ${TMPD}/google-chrome.deb \
|
||||||
|
https://dl.google.com/linux/direct/google-chrome-beta_current_${CHROME_ARCH}.deb
|
||||||
|
run_as_root /usr/bin/dpkg -i ${TMPD}/google-chrome.deb || \
|
||||||
|
run_as_root /usr/bin/apt-get install -f -y || \
|
||||||
|
( echo "Could not install chrome." >&2 && return 1 )
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
(( $MINIMAL )) || prerequisites
|
||||||
|
(( $INSTALL_PKGS )) && is_deb_system && install_apt_pkgs
|
||||||
|
install_dotfile_dir "${BASEDIR}/dotfiles"
|
||||||
|
test -d "${BASEDIR}/private_dotfiles" && \
|
||||||
|
install_dotfile_dir "${BASEDIR}/private_dotfiles"
|
||||||
|
install_basic_dir "${BASEDIR}/bin" "${HOME}/bin"
|
||||||
|
(( $MINIMAL )) || postinstall
|
||||||
|
(( $INSTALL_KEYS )) && install_keys
|
||||||
|
|||||||
63
kali-repo.key
Normal file
63
kali-repo.key
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
Version: GnuPG v1
|
||||||
|
|
||||||
|
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
|
||||||
|
=hZlG
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
849
keys/gpg/5DEA789B.pub
Normal file
849
keys/gpg/5DEA789B.pub
Normal file
@@ -0,0 +1,849 @@
|
|||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
Version: GnuPG v1
|
||||||
|
|
||||||
|
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
|
||||||
|
ZGoQsw24W+t75nQ+elKEP9/g+4Acyb1NkmpFGD5BXw+VWv80SmB7YhJSqUoyqowM
|
||||||
|
z+aJASIEEAECAAwFAk7WJwAFAwASdQAACgkQlxC4m8pXrXy2xQgAyg1nc1fRIlSm
|
||||||
|
L73/gGlbCzVQttArtv18MzpRTimYyp2OEj82SK2eWSlRKLXeQGyqb3iGzp74TC3D
|
||||||
|
NSog7su3zUz3b+h/+tAKuVnK0kMPHWXrAFTYe3nLBFIOT5jmp/2xtPWsl8xSZReA
|
||||||
|
P5CXtGSDj3a4nipIj1MMQ5vQ3YELfnkEr/NVNxBuaJ1jIw3FzLeGugtoyCSPYQuC
|
||||||
|
wEz4DJqXb2r9o/d3YXoWoRYKB5Mq8M/NhYkhrRoIdkgZd9b/5Nj7ytM1T+WYLHUh
|
||||||
|
dOy7LDA35h5ClfCAOuNczgDFL2zqCf83soC6fay4C7SWO3QNguXi2uMhmqtC0TLJ
|
||||||
|
yY7fa5fVTYi3BBARAgB3BQJO4rBPcBpodHRwOi8vdW5kZXJncmlkLm5ldC9sZWdh
|
||||||
|
bC9ncGcvcG9saWN5LzIwMDkxMTIxLzczMjNiODIzNTkwYWNkOGRlY2YxMjliNzU0
|
||||||
|
ZWNmOGUxMDA2NjkyNDQ0MzJiMGQyMjY3MjA5MDQyMGRlYTI3MjkACgkQ1XPVsSmr
|
||||||
|
TN3SmwCgyOp2DP2eHA+2E4lmwDANPbF8YNoAnR90yzUdQhTItRMai9mV4lAqckz7
|
||||||
|
iLcEEBECAHcFAk7isFpwGmh0dHA6Ly91bmRlcmdyaWQubmV0L2xlZ2FsL2dwZy9w
|
||||||
|
b2xpY3kvMjAwOTExMjEvNzMyM2I4MjM1OTBhY2Q4ZGVjZjEyOWI3NTRlY2Y4ZTEw
|
||||||
|
MDY2OTI0NDQzMmIwZDIyNjcyMDkwNDIwZGVhMjcyOQAKCRBUTEhoYtvfYiagAJ9T
|
||||||
|
n0b2Hf6+9NNsuWZYpk1d/etgmgCfRpakvv6yk4Gp3EexASjfgKYlaOKInAQQAQIA
|
||||||
|
BgUCTuI+VwAKCRDhyUtG3x3UcZxXA/4iIgD9yvpIVzfGu1m/aDXEcACpsO8QgT+J
|
||||||
|
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
|
||||||
|
=rBp2
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
3
keys/known_hosts
Normal file
3
keys/known_hosts
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
|1|ZWm0E5aueYzKuoY8OrGAI2ZUdWI=|L8KgVjGyomaw47OGrhpPnipXDKU= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBKX08QrgyP7du28Re9NlKxLm6aJFUD4F2vWBCuiqo7KNrIPbgjVP9yOwy2gXueC6fbuVQj/C4BdnkgHw9hFXbC0=
|
||||||
|
|1|MjwrIkZqV0wbZ7pWue9nsFREyhk=|lGN2O8BcMHleUkD4yBtYRXSm1Yw= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAwbTUJWJ3mytxrYPKrzRDIuBRd+/X/3T/QT2gudQfDN/mxkAMTg+uLoObXnUOtfhXD+lXP/s/GKXoPmsV/ausSz2YxBrQQXH7SwCpUq5GRXcl5s43JAJ1MbQq2EA5pa1CEBzUgd/Osu/WaVsKwfABV7QeKhblMfM0a5XcsfawqVbMJ0q/egYiSsWRVTU2iNMXILChJT6WUVoUiDENRnW98iy1qQgY0ge6hr7Gh6m23Fg6yfYDBQrqszbTfFYlqGe54bGlnxZvGp+Ybas02D29whAHwdNCSmDWXW0EvSpyt9WZUm0WOQt3t9RXpKeKLrWH4V/5BFYrONY1GsKuE783tw==
|
||||||
|
|1|UsEB5ylyIdmc4gs4TsYqE570DWY=|HAKqUTgFyTzodg8h6veV5jIa9GY= ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC75TncmMQKEnnyw1S/uHcvs88d2M1NTMSUZyqdvFbx/uRB2rlrJiQHK8vyvN+fgRH5x8vde+vz/lAFgySV9RoS676cMuBIC8usF8REX2ghSXiSoGw35gd2ztGiDdU7FLUQYW+8FkR1soRjKZgyHqP/NCr4jBXjqDawDE33MA5LdmYy7fl1RN3oK4sY+LIoUWVv5x1aJdV86m0zbciavpU5szL++rnwcx+nWjDFFP4ntH1XyPGftyYpIAZwX+2Vl0+uMgv6sHazOx1E6vOIMx1UapCeLyWXzJ49P8K4iBZcNPH6h9aYllF4PIJ97Auh+fpFKBPfmHLq4iKCz4kKByy7
|
||||||
1
keys/ssh/id_ecdsa_human.pub
Normal file
1
keys/ssh/id_ecdsa_human.pub
Normal file
@@ -0,0 +1 @@
|
|||||||
|
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBKI+CwNBBoC1G9M2rRR0P0lWAU9uvEZpvDg+CpD+I9NQOLuy80YJMRwIYgTZVTWo8OUqsKSMzYywP6NdMKVdVGg= david@human
|
||||||
1
keys/ssh/id_rsa_human.pub
Normal file
1
keys/ssh/id_rsa_human.pub
Normal file
@@ -0,0 +1 @@
|
|||||||
|
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGOKUiQg5NBq2QqRC030Dmz4SzxcQP9dTHSQyKgrdV7ljSGAlN2GRKm8gu52K4CuOY6dK67FuVKp09fa2BvflnJWkjDsG7DtzFeiCao0eNvW7xL33f880xrU/r+2p+SdeGTuhylJDUejxh+yZ0gqzaLSFfsbXJZjiFnKD0qzl72wHtsbgHL+sTmZ5lCocMS6OoKGQDKkTEhm75TbMX5ZjeBzio9T5dpUR2X3BabxUZ2snyPa42U6rRNNBX+V7c5K1BRjDRTgJ2JmEsR5Al96xNk6gPwa+6F42Zb8lBYdbAt7T04lrv3fnBJ9Mzo+iWdvcKowb715zIGQqHpCuH8gNV david@human
|
||||||
43
packages
Normal file
43
packages
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
ack-grep
|
||||||
|
build-essential
|
||||||
|
cryptsetup
|
||||||
|
curl
|
||||||
|
dnsutils
|
||||||
|
dsniff
|
||||||
|
ecryptfs-utils
|
||||||
|
gdb
|
||||||
|
git
|
||||||
|
gnupg2
|
||||||
|
gnupg-agent
|
||||||
|
gnupg-curl
|
||||||
|
iftop
|
||||||
|
iptraf
|
||||||
|
kpartx
|
||||||
|
ldap-utils
|
||||||
|
ltrace
|
||||||
|
lvm2
|
||||||
|
ngrep
|
||||||
|
nmap
|
||||||
|
opensc
|
||||||
|
openvpn
|
||||||
|
p7zip-full
|
||||||
|
python-crypto
|
||||||
|
python-dev
|
||||||
|
python-hachoir-urwid
|
||||||
|
python-imaging
|
||||||
|
python-pip
|
||||||
|
python-pypdf
|
||||||
|
python-yara
|
||||||
|
radare2
|
||||||
|
scapy
|
||||||
|
scdaemon
|
||||||
|
sqlite3
|
||||||
|
strace
|
||||||
|
tcpdump
|
||||||
|
tmux
|
||||||
|
traceroute
|
||||||
|
tshark
|
||||||
|
ufw
|
||||||
|
vim
|
||||||
|
whois
|
||||||
|
zsh
|
||||||
8
packages.X
Normal file
8
packages.X
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
audacity
|
||||||
|
cinnamon
|
||||||
|
fonts-inconsolata
|
||||||
|
gimp
|
||||||
|
keepassx
|
||||||
|
network-manager-openvpn-gnome
|
||||||
|
vim-gtk
|
||||||
|
wireshark
|
||||||
1
packages.kali
Normal file
1
packages.kali
Normal file
@@ -0,0 +1 @@
|
|||||||
|
volatility
|
||||||
2
packages.x86_64
Normal file
2
packages.x86_64
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
gcc-multilib
|
||||||
|
g++-multilib
|
||||||
28
vimrc
28
vimrc
@@ -1,28 +0,0 @@
|
|||||||
" Allow full use of vim options
|
|
||||||
set nocompatible
|
|
||||||
" Autoindentation
|
|
||||||
set autoindent
|
|
||||||
" Use same indentation style as above file
|
|
||||||
set copyindent
|
|
||||||
" Proper tabs
|
|
||||||
set tabstop=2
|
|
||||||
set softtabstop=2
|
|
||||||
set shiftwidth=2
|
|
||||||
set expandtab
|
|
||||||
" Display cursor position
|
|
||||||
set ruler
|
|
||||||
" Syntax highlighting and file types
|
|
||||||
syntax on
|
|
||||||
filetype plugin indent on
|
|
||||||
" Allow file modelines
|
|
||||||
set modeline
|
|
||||||
" Automatically re-read changed files
|
|
||||||
set autoread
|
|
||||||
" fsync() after writing files
|
|
||||||
set fsync
|
|
||||||
" Line numbering
|
|
||||||
set number
|
|
||||||
" Round indentation to multiple of shiftwidth
|
|
||||||
set shiftround
|
|
||||||
" Text width 80
|
|
||||||
set textwidth=80
|
|
||||||
29
zshrc
29
zshrc
@@ -1,29 +0,0 @@
|
|||||||
# Lines configured by zsh-newuser-install
|
|
||||||
HISTFILE=~/.histfile
|
|
||||||
HISTSIZE=1000
|
|
||||||
SAVEHIST=1000
|
|
||||||
setopt appendhistory autocd extendedglob nomatch
|
|
||||||
unsetopt beep
|
|
||||||
bindkey -v
|
|
||||||
# End of lines configured by zsh-newuser-install
|
|
||||||
# The following lines were added by compinstall
|
|
||||||
zstyle :compinstall filename '/home/david/.zshrc'
|
|
||||||
|
|
||||||
autoload -Uz compinit
|
|
||||||
compinit
|
|
||||||
# End of lines added by compinstall
|
|
||||||
|
|
||||||
setopt nohup autopushd
|
|
||||||
DIRSTACKSIZE=16
|
|
||||||
case $TERM in
|
|
||||||
xterm*)
|
|
||||||
precmd () {print -Pn "\e]0;%n@%m: %~\a"}
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
PS1='%n@%m:%32<...<%~%<<%# '
|
|
||||||
|
|
||||||
. ~/.profile
|
|
||||||
typeset -U path
|
|
||||||
|
|
||||||
alias ls='ls --color'
|
|
||||||
Reference in New Issue
Block a user