CasperSecurity

Current Path : /usr/share/initramfs-tools/hooks/
Upload File :
Current File : //usr/share/initramfs-tools/hooks/resume

#!/bin/sh

PREREQ=""

prereqs()
{
	echo "$PREREQ"
}

case $1 in
# get pre-requisites
prereqs)
	prereqs
	exit 0
	;;
esac

. /usr/share/initramfs-tools/scripts/functions

# First check if a location is set and is a valid swap partition.
# If so, the config file will be copied in and there is nothing to do.
if [ -n "$RESUME" ] && [ "$RESUME" != auto ]; then
	if [ "$RESUME" = none ]; then
		exit 0
	fi
	if resume_dev_node="$(resolve_device "$RESUME")" && \
	   blkid -p -n swap "$resume_dev_node" >/dev/null 2>&1; then
		exit 0
	fi

	echo >&2 "W: initramfs-tools configuration sets RESUME=$RESUME"
	echo >&2 "W: but no matching swap device is available."
fi

# If we were not explicitly requested to select a device, or the -v
# option is used, report that we are doing so
report_auto()
{
	test "${verbose?}" != y && test "$RESUME" = auto || echo "I: $*"
}

# Report in excruciating detail if the -v option is used
report_verbose()
{
	test "${verbose?}" != y || echo "I: $*"
}

report_verbose "Configuration sets RESUME=$RESUME"

# Try to autodetect the RESUME partition, using biggest swap device that
# is not ephemeral.  We need to be able to read the listed swap partitions.
resume_auto=
if ! ischroot && [ -r /proc/swaps ]; then
	# shellcheck disable=SC2013
	for resume_auto in $(grep ^/dev/ /proc/swaps | sort -rnk3 | cut -d " " -f 1); do
		report_verbose "Checking swap device $resume_auto"
		ephemeral=false
		dm_name="$(dmsetup info -c --noheadings -o name "$resume_auto" 2>/dev/null)"

		# dm-crypt is ephemeral if the key file is /dev/urandom
		if [ -n "$dm_name" ] && [ -e /etc/crypttab ]; then
			report_verbose "$resume_auto has device-mapper name $dm_name; checking crypttab"
			# shellcheck disable=SC2034
			while read -r cryptdev srcdev keyfile junk; do
				report_verbose "Found cryptdev=$cryptdev keyfile=$keyfile"
				if [ "$cryptdev" = "$dm_name" ] && [ "$keyfile" = /dev/urandom ]; then
					report_verbose "Rejecting $resume_auto since it has no permanent key"
					ephemeral=true
				fi
			done < /etc/crypttab
		fi

		# zram is ephemeral
		case "$resume_auto" in
		/dev/zram*)
			report_verbose "Rejecting $resume_auto since it is zram"
			ephemeral=true
			;;
		esac

		$ephemeral || break
	done

	if $ephemeral; then
		resume_auto=
	fi
	if [ -n "$resume_auto" ]; then
		if [ -n "$dm_name" ]; then
			resume_auto_canon="/dev/mapper/$dm_name"
		elif UUID=$(blkid -s UUID -o value "$resume_auto"); then
			resume_auto_canon="UUID=$UUID"
		else
			resume_auto_canon=
		fi
		report_auto "The initramfs will attempt to resume from $resume_auto"
		if [ -n "$resume_auto_canon" ]; then
			report_auto "($resume_auto_canon)"
			resume_auto="$resume_auto_canon"
		fi
		report_auto "Set the RESUME variable to override this."
	fi
fi

# Write selected resume device to intramfs conf.d
if [ "$RESUME" = auto ] || [ -n "$resume_auto" ]; then
	# If we were explicitly requested to select a device, and we failed,
	# report that
	if [ -z "$resume_auto" ]; then
		echo >&2 "W: initramfs-tools failed to select a resume device"
	fi
	echo "RESUME=${resume_auto}" > "${DESTDIR}/conf/conf.d/zz-resume-auto"
fi
Hacker Blog, Shell İndir, Sql İnjection, XSS Attacks, LFI Attacks, Social Hacking, Exploit Bot, Proxy Tools, Web Shell, PHP Shell, Alfa Shell İndir, Hacking Training Set, DDoS Script, Denial Of Service, Botnet, RFI Attacks, Encryption
Telegram @BIBIL_0DAY