mirror of
https://github.com/e-m-b-a/emba.git
synced 2026-10-11 22:09:54 +00:00
cleanup
This commit is contained in:
@@ -45,7 +45,7 @@ docker_container_extractor() {
|
||||
binwalker_matryoshka() {
|
||||
local lFIRMWARE_PATH="${1:-}"
|
||||
local lOUTPUT_DIR_BINWALK="${2:-}"
|
||||
local lBINWALK_LOG_FILE="${3:-}"
|
||||
local lBINWALK_LOG_FILE="${3:-${LOG_FILE}}"
|
||||
local lTIMEOUT="300m"
|
||||
|
||||
sub_module_title "Analyze binary firmware blob with binwalk"
|
||||
|
||||
@@ -67,7 +67,7 @@ gpg_decompress_extractor() {
|
||||
backup_var "FIRMWARE_PATH" "${FIRMWARE_PATH}"
|
||||
print_ln
|
||||
print_output "[*] Firmware file details: ${ORANGE}$(file -b "${lEXTRACTION_FILE_}")${NC}"
|
||||
lBINWALK_LOG_FILE="${LOG_PATH_MODULE}/binwalk-${lEXTRACTION_FILE_NAME}.log"
|
||||
local lBINWALK_LOG_FILE="${LOG_PATH_MODULE}/binwalk-${lEXTRACTION_FILE_NAME}.log"
|
||||
binwalker_matryoshka "${lEXTRACTION_FILE_}" "${LOG_DIR}"/firmware/firmware_gpg_extracted "${lBINWALK_LOG_FILE}"
|
||||
|
||||
if [[ -f "${lBINWALK_LOG_FILE}" ]]; then
|
||||
|
||||
@@ -59,10 +59,10 @@ filesystem_tree() {
|
||||
lTREE_OPTS_ARR+=(-n)
|
||||
fi
|
||||
tree "${lTREE_OPTS_ARR[@]}" "${lLPATH}" >>"${lTREE_LOG_FILE}" || print_error "[-] Filesystem tree generation issue"
|
||||
if [[ "$(wc -l 2>/dev/null < "${lTREE_LOG_FILE}")" -gt 100000 ]]; then
|
||||
if [[ "$(wc -l 2>/dev/null <"${lTREE_LOG_FILE}")" -gt 100000 ]]; then
|
||||
print_output "[*] Filesystem tree output available" "" "${lTREE_LOG_FILE}"
|
||||
else
|
||||
cat "${lTREE_LOG_FILE}" >> "${LOG_FILE}"
|
||||
cat "${lTREE_LOG_FILE}" >>"${LOG_FILE}"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
@@ -137,14 +137,14 @@ setup_environment() {
|
||||
# Get files for processing - if P99_CSV_LOG available we can use this
|
||||
export ALL_EXEC_FILES_ARR=()
|
||||
if [[ -f "${P99_CSV_LOG}" ]]; then
|
||||
mapfile -t ALL_EXEC_FILES_ARR < <(cut -d ';' -f2 "${P99_CSV_LOG}" | grep -v "\.raw;")
|
||||
mapfile -t ALL_EXEC_FILES_ARR < <(cut -d ';' -f2 "${P99_CSV_LOG}" | grep -v "\.raw")
|
||||
else
|
||||
mapfile -t ALL_EXEC_FILES_ARR < <(find "${FIRMWARE_PATH}" -type f ! -name "*.raw" 2>/dev/null | sort -u)
|
||||
fi
|
||||
if [[ "${#ALL_EXEC_FILES_ARR[@]}" -gt "${MAX_MAP_FILES}" ]]; then
|
||||
print_output "[*] INFO: Too many files (${#ALL_EXEC_FILES_ARR[@]} -gt ${MAX_MAP_FILES}) detected ... limit it to ${MAX_MAP_FILES} executables only"
|
||||
if [[ -f "${P99_CSV_LOG}" ]]; then
|
||||
mapfile -t ALL_EXEC_FILES_ARR < <(grep "ELF\|executable\|script" "${P99_CSV_LOG}" | cut -d ';' -f2 | grep -v "\.raw;")
|
||||
mapfile -t ALL_EXEC_FILES_ARR < <(grep "ELF\|executable\|script" "${P99_CSV_LOG}" | cut -d ';' -f2 | grep -v "\.raw")
|
||||
else
|
||||
mapfile -t ALL_EXEC_FILES_ARR < <(find "${FIRMWARE_PATH}" -type f -executable ! -name "*.raw" 2>/dev/null | sort -u)
|
||||
fi
|
||||
@@ -323,7 +323,7 @@ fuzzy_string_dependency_checker() {
|
||||
|
||||
# lets check for fuzzy string dependencies - we check for a minimum of 4 character strings, remove commends and entries with slashes
|
||||
# as they are already handled from the strict_string_dependency_checker
|
||||
mapfile -t STRING_DEPS_SRC_ARR < <(strings -n 4 "${lFILE_TO_CHECK}" | sed -r 's/^[[:space:]]*#.*$//' | tr " " "\n" | grep -v '/' | tr -d '[:blank:]' | grep -E '.{4,}' | uniq || true)
|
||||
mapfile -t STRING_DEPS_SRC_ARR < <(strings -n 4 "${lFILE_TO_CHECK}" | sed -r 's/^[[:space:]]*#.*$//' | tr " " "\n" | grep -v '/' | tr -d '[:blank:]' | grep -E '.{4,}' | sort -u || true)
|
||||
# print_output "[*] Testing ${#STRING_DEPS_SRC_ARR[@]} strings from source ${lFILE_TO_CHECK}"
|
||||
# check for all identified strings - if they match a file in the filesystem
|
||||
for lSTR_DEP in "${STRING_DEPS_SRC_ARR[@]}"; do
|
||||
@@ -341,7 +341,7 @@ strict_string_dependency_checker() {
|
||||
|
||||
# lets check for fuzzy string dependencies - we check for a minimum of 4 character strings, remove commends and /dev/ entries
|
||||
# additionally we check for a slash / as path indicator
|
||||
mapfile -t STRING_DEPS_SRC_ARR < <(strings -n 4 "${lFILE_TO_CHECK}" | sed -r 's/^[[:space:]]*#.*$//' | tr " " "\n" | grep -v '/dev/' | grep '/' | tr -d '[:blank:]' | grep -E '.{4,}' | uniq || true)
|
||||
mapfile -t STRING_DEPS_SRC_ARR < <(strings -n 4 "${lFILE_TO_CHECK}" | sed -r 's/^[[:space:]]*#.*$//' | tr " " "\n" | grep -v '/dev/' | grep '/' | tr -d '[:blank:]' | grep -E '.{4,}' | sort -u || true)
|
||||
# print_output "[*] Testing ${#STRING_DEPS_SRC_ARR[@]} strings from source ${lFILE_TO_CHECK}"
|
||||
# check for all identified strings - if they match a file in the filesystem
|
||||
for lSTR_DEP in "${STRING_DEPS_SRC_ARR[@]}"; do
|
||||
@@ -506,7 +506,7 @@ objdump_dependency_checker() {
|
||||
local lOBJDUMP_DEP=""
|
||||
|
||||
# Extract dynamic dependencies via objdump.
|
||||
mapfile -t lOBJDUMP_DEPENDENCY_ARR < <(objdump -p "${lFILE_TO_CHECK}" 2>/dev/null | grep "NEEDED" | awk '{print $2}' | uniq || true)
|
||||
mapfile -t lOBJDUMP_DEPENDENCY_ARR < <(objdump -p "${lFILE_TO_CHECK}" 2>/dev/null | grep "NEEDED" | awk '{print $2}' | sort -u || true)
|
||||
for lOBJDUMP_DEP in "${lOBJDUMP_DEPENDENCY_ARR[@]}"; do
|
||||
# print_output "[*] Testing OBJDUMP-LIB for $lFILE_TO_CHECK - dependency $lOBJDUMP_DEP"
|
||||
search_parse_log_helper "${lOBJDUMP_DEP}" "OBJDUMP-LIB" "${lFILE_TO_CHECK}" "${lDOT_FILE_tmp_FILE}" "${lSAFE_NAME}"
|
||||
@@ -522,7 +522,7 @@ ldd_dependency_checker() {
|
||||
local lLDD_DEP=""
|
||||
|
||||
# Extract dynamic dependencies via ldd.
|
||||
mapfile -t lLDD_DEPENDENCY_ARR < <(ldd "${lFILE_TO_CHECK}" 2>/dev/null | grep -o '/lib[^ ]*' | uniq || true)
|
||||
mapfile -t lLDD_DEPENDENCY_ARR < <(ldd "${lFILE_TO_CHECK}" 2>/dev/null | grep -o '/lib[^ ]*' | sort -u || true)
|
||||
for lLDD_DEP in "${lLDD_DEPENDENCY_ARR[@]}"; do
|
||||
# print_output "[*] Testing LDD-LIB for $lFILE_TO_CHECK - dependency $lLDD_DEP"
|
||||
search_parse_log_helper "${lLDD_DEP}" "LDD-LIB" "${lFILE_TO_CHECK}" "${lDOT_FILE_tmp_FILE}" "${lSAFE_NAME}"
|
||||
@@ -649,25 +649,25 @@ main_processing_thread_helper() {
|
||||
|
||||
# following we can find calls to all our dependency checking modules
|
||||
if printf '%s\0' "${DETECTION_MECHANISMS_ARR[@]}" | grep -Fxqz -- "LDD-LIB"; then
|
||||
ldd_dependency_checker "${lFILE_TO_CHECK}" "${lSAFE_NAME}" "${lDOT_FILE_tmp_FILE}" &
|
||||
ldd_dependency_checker "${lFILE_TO_CHECK}" "${lSAFE_NAME}" "${lDOT_FILE_tmp_FILE}"
|
||||
fi
|
||||
if printf '%s\0' "${DETECTION_MECHANISMS_ARR[@]}" | grep -Fxqz -- "OBJDUMP-LIB"; then
|
||||
objdump_dependency_checker "${lFILE_TO_CHECK}" "${lSAFE_NAME}" "${lDOT_FILE_tmp_FILE}" &
|
||||
objdump_dependency_checker "${lFILE_TO_CHECK}" "${lSAFE_NAME}" "${lDOT_FILE_tmp_FILE}"
|
||||
fi
|
||||
if printf '%s\0' "${DETECTION_MECHANISMS_ARR[@]}" | grep -Fxqz -- "QEMU-USER"; then
|
||||
s115_emulation_dependency_checker "${lFILE_TO_CHECK}" "${lSAFE_NAME}" "${lDOT_FILE_tmp_FILE}" &
|
||||
s115_emulation_dependency_checker "${lFILE_TO_CHECK}" "${lSAFE_NAME}" "${lDOT_FILE_tmp_FILE}"
|
||||
fi
|
||||
if printf '%s\0' "${DETECTION_MECHANISMS_ARR[@]}" | grep -Fxqz -- "QEMU-SYS"; then
|
||||
qemu_system_emulation_dependency_checker "${lFILE_TO_CHECK}" "${lSAFE_NAME}" "${lDOT_FILE_tmp_FILE}" &
|
||||
qemu_system_emulation_dependency_checker "${lFILE_TO_CHECK}" "${lSAFE_NAME}" "${lDOT_FILE_tmp_FILE}"
|
||||
fi
|
||||
if printf '%s\0' "${DETECTION_MECHANISMS_ARR[@]}" | grep -Fxqz -- "STRICT-STR"; then
|
||||
if [[ "${lFILE_BIN_DATA}" != *"Zip archive data"* ]]; then
|
||||
strict_string_dependency_checker "${lFILE_TO_CHECK}" "${lSAFE_NAME}" "${lDOT_FILE_tmp_FILE}" &
|
||||
strict_string_dependency_checker "${lFILE_TO_CHECK}" "${lSAFE_NAME}" "${lDOT_FILE_tmp_FILE}"
|
||||
fi
|
||||
fi
|
||||
if printf '%s\0' "${DETECTION_MECHANISMS_ARR[@]}" | grep -Fxqz -- "FUZZY-STR"; then
|
||||
if [[ "${lFILE_BIN_DATA}" != *"Zip archive data"* ]]; then
|
||||
fuzzy_string_dependency_checker "${lFILE_TO_CHECK}" "${lSAFE_NAME}" "${lDOT_FILE_tmp_FILE}" &
|
||||
fuzzy_string_dependency_checker "${lFILE_TO_CHECK}" "${lSAFE_NAME}" "${lDOT_FILE_tmp_FILE}"
|
||||
fi
|
||||
fi
|
||||
wait
|
||||
|
||||
Reference in New Issue
Block a user