Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Активные темы » проверка скрипта на вредоносные функции

Модерирует : ShIvADeSt

articlebot (13-12-2025 15:38): UNIX Shell: sh, bash, zsh; Coreutils и ко.; sed, awk, perl;  Версия для печати • ПодписатьсяДобавить в закладки

   

algusev20

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день!  Напишите пожалуйста, нет ли в этом скрипте копирования, перемешения файлов, шпионских или иных вредоносных функций.  
 
С уважением,
 
Александр
 
Вот скрипт
 
#!/bin/bash
# safe-vendor-check.sh
# Безопасная проверка доступности скрытых (vendor) ATA-команд (ТОЛЬКО ЧТЕНИЕ)
# Использует: hdparm, smartctl, hddsupertool (если есть), lsblk, lspci (опционально)
# Риск: минимальный (команды только для чтения). Ни одна команда не изменяет диск.
 
set -euo pipefail
 
usage() {
  cat <<EOF
Использование:
  sudo ./safe-vendor-check.sh /dev/sdX [OUTPUT_DIR]
 
Пример:
  sudo ./safe-vendor-check.sh /dev/sda /root/reports
 
Если OUTPUT_DIR не указан — отчёт сохранится в ./report_<дата>/
EOF
  exit 1
}
 
if [ $# -lt 1 ] || [ "${1:-}" = "-h" ]; then
  usage
fi
 
DISK="$1"
OUTDIR="${2:-./report_$(date +%Y%m%d_%H%M%S)}"
 
# Проверки
if [ "$EUID" -ne 0 ]; then
  echo "Запустите как root: sudo $0 $*"
  exit 2
fi
 
if [ ! -b "$DISK" ]; then
  echo "Устройство $DISK не найдено (не block device)."
  exit 3
fi
 
mkdir -p "$OUTDIR"
echo "Отчёт будет записан в: $OUTDIR"
 
LOG="$OUTDIR/check.log"
exec > >(tee -a "$LOG") 2>&1
 
echo "=== SAFE VENDOR-ATA CHECK ==="
echo "Диск: $DISK"
echo "Дата: $(date)"
echo
 
# Инструменты: проверяем доступность
command -v hdparm >/dev/null 2>&1 || echo "Внимание: hdparm не установлен — некоторые проверки будут пропущены."
command -v smartctl >/dev/null 2>&1 || echo "Внимание: smartctl (smartmontools) не установлен — некоторые проверки будут пропущены."
command -v ./hddsupertool >/dev/null 2>&1 || command -v hddsupertool >/dev/null 2>&1 || echo "hddsupertool не найден в текущем каталоге — пропущу специфичные проверки."
 
echo "1) Список блочных устройств (lsblk)"
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT,LABEL || true
echo
 
echo "2) Базовая информация (hdparm -I) — это чтение"
if command -v hdparm >/dev/null 2>&1; then
  echo ">>> hdparm -I $DISK"
  hdparm -I "$DISK" || true
  echo
else
  echo "hdparm отсутствует"
fi
 
echo "3) Security / Frozen / HPA (hdparm --security-status, --dco-identify) — чтение"
if command -v hdparm >/dev/null 2>&1; then
  echo ">>> hdparm --security-status $DISK"
  hdparm --security-status "$DISK" || true
  echo
  echo ">>> hdparm --dco-identify $DISK  (если поддерживается)"
  hdparm --dco-identify "$DISK" || true
  echo
else
  echo "hdparm отсутствует (пропуск)"
fi
 
echo "4) SMART + расширённая информация (smartctl -x)"
if command -v smartctl >/dev/null 2>&1; then
  echo ">>> smartctl -i -x $DISK  (идентификация и расширённые данные)"
  smartctl -i -x "$DISK" || true
  echo
  echo ">>> smartctl --scan"
  smartctl --scan || true
  echo
else
  echo "smartctl отсутствует"
fi
 
echo "5) Проверка отклика на vendor/test-features (hddsupertool safe calls) — только если hddsupertool доступен"
# Попытаемся вызвать безопасные команды HDDSuperTool: identify, read-native-max, testfeatures (если есть)
HDDST=""
if [ -x "./hddsupertool" ]; then
  HDDST="./hddsupertool"
elif command -v hddsupertool >/dev/null 2>&1; then
  HDDST="hddsupertool"
fi
 
if [ -n "$HDDST" ]; then
  echo "Используем hddsupertool: $HDDST"
  echo ">>> $HDDST $DISK --command identify"
  $HDDST "$DISK" --command identify || true
  echo
  echo ">>> $HDDST $DISK --command read-native-max"
  $HDDST "$DISK" --command read-native-max || true
  echo
  # Некоторые сборки HDDSuperTool/Clone имеют тестfeatures или testcommands, попробуем безопасно
  echo ">>> Проверяю наличие testfeatures/testcommands у hddsupertool"
  if $HDDST "$DISK" --help 2>&1 | grep -iq "test"; then
    echo "Команда testfeatures/testcommands обнаружена — выполню безопасную проверку"
    # попробуем сначала --command testfeatures, потом --command testcommands
    $HDDST "$DISK" --command testfeatures || true
    $HDDST "$DISK" --command testcommands || true
  else
    echo "testfeatures / testcommands не найдены в --help (пропуск)"
  fi
else
  echo "hddsupertool не найден — пропускаем шаг с ним"
fi
 
echo
echo "6) Попытка прочитать часть идентифицирующих секторов (чтение LBA 0, MBR) — чтение"
echo ">>> hexdump -C -n 512 /dev/${DISK#/dev/}  (внимание: будет читать сектор 0)"
# Используем dd с bs=512 count=1
dd if="$DISK" of="$OUTDIR/sector0.bin" bs=512 count=1 conv=sync,noerror 2>/dev/null || true
echo "Сохранён: $OUTDIR/sector0.bin (hexdump ниже)"
hexdump -C "$OUTDIR/sector0.bin" | sed -n '1,20p' || true
echo
 
echo "7) Лог dmesg (последние 200 строк) — поиск ошибок диска"
dmesg | egrep -i 'sd[a-z]|ata|sgx|scsi|disk' | tail -n 200 || true
echo
 
echo "8) PCI/контроллеры (опционально)"
if command -v lspci >/dev/null 2>&1; then
  echo ">>> lspci -nn | egrep -i 'sata|raid|storage|nvme|eth|usb' "
  lspci -nn | egrep -i 'sata|raid|storage|nvme|usb' || true
fi
 
echo
echo "=== FINISH ==="
echo "Отчёт сохранён: $LOG"
echo "Доп. файлы: $OUTDIR/sector0.bin"
echo
echo "ВАЖНО:"
echo "- Этот скрипт НЕ выполняет запись на диск."
echo "- Ни одна выполненная команда не изменяет SA/HPA/DCO/firmware."
echo "- Если вы захотите запустить vendor-команды или любые команды записи — сначала сделайте образ и проконсультируйтесь."
     
 
 
 
 
 
   
 

Всего записей: 14 | Зарегистр. 20-06-2023 | Отправлено: 15:15 13-12-2025
   

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Активные темы » проверка скрипта на вредоносные функции
articlebot (13-12-2025 15:38): UNIX Shell: sh, bash, zsh; Coreutils и ко.; sed, awk, perl;


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

LiteCoin: LgY72v35StJhV2xbt8CpxbQ9gFY6jwZ67r

Рейтинг.ru