Скрипт Bash для извлечения пароля пользователя в хешированный формат в Mac OSX ⇐ Linux
-
Anonymous
Скрипт Bash для извлечения пароля пользователя в хешированный формат в Mac OSX
Просто ради немного свободного времени по кибербезопасности, я только что наткнулся на видео ютубера под названием "EmbraceTheRed", который снял видео о том, как извлечь пароли пользователей Mac OSX в красивый хеш-формат, который затем можно взломать с помощью hashcat:
Я хотел тогда автоматизировать все команды, которые он вводил в видео, в bash-скрипте. Я не возвращался к написанию сценариев bash с тех пор, как часто просил ChatGPT оказать мне некоторую помощь, даже если я знаю, что это может привести к неточным результатам:
#!/bin/bash # Проверяем, запущен ли скрипт от имени пользователя root если [ "$EUID" -ne 0 ] затем echo «Для доступа к хэшу пользователя вам необходимо быть пользователем root на компьютере. Выход...» Выход фи # Проверяем, предоставлены ли аргументы если [ "$#" -ne 1 ]; затем echo "Пожалуйста, укажите имя для вывода хэша: $0 " выход 1 фи HASH_OUTPUT="$1" FINAL_HASH=$HASH_OUTPUT echo -e "Обработка файла: $FINAL_HASH\n" # Перечисление существующих пользователей в системе с помощью утилиты dscl USERS=$(dscl . -list /Users | grep -v -e "^_" -e "демон" -e "root" -e "никто") # Назначаем пользователей переменным IFS=$'\n' прочитайте -rd '' -a строки "$OUTPUT_DIR/${FILENAME_NOEXT}.hash" сделанный } # Получить первый тег ConvertFirstDataTagToHashFormat() { # Перебрать все файлы .plist в указанном каталоге. для PLIST_FILE в "$OUTPUT_DIR"/*.plist; делать если [ -e "$PLIST_FILE"]; затем # Извлекаем первый блок из блока SALTED-SHA512-PBKDF2 DATA_BLOCK=$(xmllint --xpath '//key[text()="SALTED-SHA512-PBKDF2"]/following-sibling::dict[1]/key[text()="entropy"]/following-sibling ::data[1]/text()' "$PLIST_FILE") # Распечатываем извлеченный блок HASH_FIRST_DATA_BLOCK=$(echo "$DATA_BLOCK" | base64 -d | xxd -p -c 256) echo -e "\nСписок блоков из извлеченного файла .plist: \n" echo -e "$HASH_FIRST_DATA_BLOCK\n" #echo $HASH_FIRST_DATA_BLOCK >> $FINAL_HASH #echo -e "\n" >> $FINAL_HASH еще echo "Файл Plist не найден: $PLIST_FILE" фи сделанный } # Вызов функций echo -e "\nЗапись файла .plist для каждого найденного пользователя...\n" getPlist getPlistIntegerTag конвертироватьSecondDataTagToHashFormat ConvertFirstDataTagToHashFormat И затем скрипт выдает мне правильные преобразованные данные из файла .plist:
hellenbach@macbook osx_hash_cracking % sudo ./osx_password_cracker.sh HASH Обработка файла: HASH Запись файла .plist каждого найденного пользователя... Пользователь _0: jeanpeyremesmots. Пользователь _1: to_crack Извлеченное целочисленное значение: 60975 70921 Список второго блока из извлеченного файла .plist: 11e068a18813dfbfb6f5f15910c4fffca989382908b99ba644cb7187ccb3a5db Список второго блока из извлеченного файла .plist: 6dff258b486f6ba296584cc36522eb206df57966cffcfed3c61d493b820a72e9 Список блоков из извлеченного файла .plist: a2f52e8e2096f4369f1cef310c2ed57b7c32edeef5fa0e8604f3b8e1a4f11953006809f20f0e51765d9e5dd41243673bba74acbda055df389ea94eb88ecdf36e144299 7ce366990e5c2901a0dbd225de59d37998d6ecdf2f3a2036db0bac245266f0ce8175d7d7d2380eba1acac4f36767bcb8380304d16b1370240aea930e30 Список блок из извлеченного файла .plist: 35e52bc7657c6329aeecd7966cca4eb2cdddb2df82aa18c8bbb57bee1bd203b4ae50af5407ed5f2a2a0f345fd20a68eaba5b84f0899a99a31e43dcdc2a00a3ea067aad6 4c237672643daac76b47067a4c996cbfd2464ebddafed49583a003279da19f23f269ac2e5f6bf4964f3a2f0f339a904413aa3d5dcb0f47cbeefb7ecc6 hellenbach@macbook osx_hash_cracking % Мне нужен сценарий, который будет добавлять все найденные данные в следующий формат хеша:
$ml$INTEGER_VALUE$HASH_SECOND_DATA_BLOCK$HASH_FIRST_DATA_BLOCK
Это приведет, например, к следующему хешу для первого пользователя в моей системе:
$ml$60975$11e068a18813dfbfb6f5f15910c4fffca989382908b99ba644cb7187ccb3a5db$a2f52e8e2096f4369f1cef310c2ed57b7c32edeef5fa0e8604f3 b8e1a4f11953006809f20f0e51765d9e5dd41243673bba74acbda055df389ea94eb88ecdf36e1442997ce366990e5c2901a0dbd225de59d37998d6ecdf2f3a2036db0 bac245266f0ce8175d7d7d2380eba1acac4f36767bcb8380304d16b1370240aea930e30 Я создал в своей системе двух пользователей, чтобы быть уверенным, что она сможет получить пароли всех пользователей, независимо от их количества в сеансе.
Проблема в том, что я много раз пытался попросить ChatGPT изменить сценарий, чтобы принимать каждое значение, например, с помощью цикла, и добавлять их в хеш-формат, о котором я упоминал ранее. Но он все равно терпит неудачу, все равно выдавая мне неправильное значение .plist...
Что в основном нужно, так это выводить вот так:
jeanpeyremesmots@macbook osx_hash_cracking % sudo ./osx_password_cracker.sh HASH Обработка файла: HASH Запись файла .plist каждого найденного пользователя... Пользователь _0: jeanpeyremesmots. Пользователь _1: to_crack Извлеченное целочисленное значение: 60975 70921 Список второго блока из извлеченного файла .plist: 11e068a18813dfbfb6f5f15910c4fffca989382908b99ba644cb7187ccb3a5db Список второго блока из извлеченного файла .plist: 6dff258b486f6ba296584cc36522eb206df57966cffcfed3c61d493b820a72e9 Список блоков из извлеченного файла .plist: a2f52e8e2096f4369f1cef310c2ed57b7c32edeef5fa0e8604f3b8e1a4f11953006809f20f0e51765d9e5dd41243673bba74acbda055df389ea94eb88ecdf36e144299 7ce366990e5c2901a0dbd225de59d37998d6ecdf2f3a2036db0bac245266f0ce8175d7d7d2380eba1acac4f36767bcb8380304d16b1370240aea930e30 Список блоков из извлеченного файла .plist: 35e52bc7657c6329aeecd7966cca4eb2cdddb2df82aa18c8bbb57bee1bd203b4ae50af5407ed5f2a2a0f345fd20a68eaba5b84f0899a99a31e43dcdc2a00a3ea067aad6 4c237672643daac76b47067a4c996cbfd2464ebddafed49583a003279da19f23f269ac2e5f6bf4964f3a2f0f339a904413aa3d5dcb0f47cbeefb7ecc6 Окончательный формат хеша: $ml$60975$11e068a18813dfbfb6f5f15910c4fffca989382908b99ba644cb7187ccb3a5db$a2f52e8e2096f4369f1cef310c2ed57b7c32edeef5fa0e8604f3b8e1a 4f11953006809f20f0e51765d9e5dd41243673bba74acbda055df389ea94eb88ecdf36e1442997ce366990e5c2901a0dbd225de59d37998d6ecdf2f3a2036db0bac245 266f0ce8175d7d7d2380eba1acac4f36767bcb8380304d16b1370240aea930e30 $ml$70921$6dff258b486f6ba296584cc36522eb206df57966cffcfed3c61d493b820a72e9$35e52bc7657c6329aeecd7966cca4eb2cdddb2df82aa18c8bbb57bee1bd20 3b4ae50af5407ed5f2a2a0f345fd20a68eaba5b84f0899a99a31e43dcdc2a00a3ea067aad64c237672643daac76b47067a4c996cbfd2464ebddafed49583a003279da19f2 3f269ac2e5f6bf4964f3a2f0f339a904413aa3d5dcb0f47cbeefb7ecc6 Я бы хотел, чтобы каждый хэш был разделен, а затем сохранен в файле. Я попробовал поставить перенаправление с помощью ">>" во всех моих функциях, но я всегда заканчиваю вторым значением каждого раздела "70921", затем "6df" и так далее...
Буду очень признателен за любую помощь, по любым вопросам я остаюсь онлайн.
Спасибо за помощь
Просто ради немного свободного времени по кибербезопасности, я только что наткнулся на видео ютубера под названием "EmbraceTheRed", который снял видео о том, как извлечь пароли пользователей Mac OSX в красивый хеш-формат, который затем можно взломать с помощью hashcat:
Я хотел тогда автоматизировать все команды, которые он вводил в видео, в bash-скрипте. Я не возвращался к написанию сценариев bash с тех пор, как часто просил ChatGPT оказать мне некоторую помощь, даже если я знаю, что это может привести к неточным результатам:
#!/bin/bash # Проверяем, запущен ли скрипт от имени пользователя root если [ "$EUID" -ne 0 ] затем echo «Для доступа к хэшу пользователя вам необходимо быть пользователем root на компьютере. Выход...» Выход фи # Проверяем, предоставлены ли аргументы если [ "$#" -ne 1 ]; затем echo "Пожалуйста, укажите имя для вывода хэша: $0 " выход 1 фи HASH_OUTPUT="$1" FINAL_HASH=$HASH_OUTPUT echo -e "Обработка файла: $FINAL_HASH\n" # Перечисление существующих пользователей в системе с помощью утилиты dscl USERS=$(dscl . -list /Users | grep -v -e "^_" -e "демон" -e "root" -e "никто") # Назначаем пользователей переменным IFS=$'\n' прочитайте -rd '' -a строки "$OUTPUT_DIR/${FILENAME_NOEXT}.hash" сделанный } # Получить первый тег ConvertFirstDataTagToHashFormat() { # Перебрать все файлы .plist в указанном каталоге. для PLIST_FILE в "$OUTPUT_DIR"/*.plist; делать если [ -e "$PLIST_FILE"]; затем # Извлекаем первый блок из блока SALTED-SHA512-PBKDF2 DATA_BLOCK=$(xmllint --xpath '//key[text()="SALTED-SHA512-PBKDF2"]/following-sibling::dict[1]/key[text()="entropy"]/following-sibling ::data[1]/text()' "$PLIST_FILE") # Распечатываем извлеченный блок HASH_FIRST_DATA_BLOCK=$(echo "$DATA_BLOCK" | base64 -d | xxd -p -c 256) echo -e "\nСписок блоков из извлеченного файла .plist: \n" echo -e "$HASH_FIRST_DATA_BLOCK\n" #echo $HASH_FIRST_DATA_BLOCK >> $FINAL_HASH #echo -e "\n" >> $FINAL_HASH еще echo "Файл Plist не найден: $PLIST_FILE" фи сделанный } # Вызов функций echo -e "\nЗапись файла .plist для каждого найденного пользователя...\n" getPlist getPlistIntegerTag конвертироватьSecondDataTagToHashFormat ConvertFirstDataTagToHashFormat И затем скрипт выдает мне правильные преобразованные данные из файла .plist:
hellenbach@macbook osx_hash_cracking % sudo ./osx_password_cracker.sh HASH Обработка файла: HASH Запись файла .plist каждого найденного пользователя... Пользователь _0: jeanpeyremesmots. Пользователь _1: to_crack Извлеченное целочисленное значение: 60975 70921 Список второго блока из извлеченного файла .plist: 11e068a18813dfbfb6f5f15910c4fffca989382908b99ba644cb7187ccb3a5db Список второго блока из извлеченного файла .plist: 6dff258b486f6ba296584cc36522eb206df57966cffcfed3c61d493b820a72e9 Список блоков из извлеченного файла .plist: a2f52e8e2096f4369f1cef310c2ed57b7c32edeef5fa0e8604f3b8e1a4f11953006809f20f0e51765d9e5dd41243673bba74acbda055df389ea94eb88ecdf36e144299 7ce366990e5c2901a0dbd225de59d37998d6ecdf2f3a2036db0bac245266f0ce8175d7d7d2380eba1acac4f36767bcb8380304d16b1370240aea930e30 Список блок из извлеченного файла .plist: 35e52bc7657c6329aeecd7966cca4eb2cdddb2df82aa18c8bbb57bee1bd203b4ae50af5407ed5f2a2a0f345fd20a68eaba5b84f0899a99a31e43dcdc2a00a3ea067aad6 4c237672643daac76b47067a4c996cbfd2464ebddafed49583a003279da19f23f269ac2e5f6bf4964f3a2f0f339a904413aa3d5dcb0f47cbeefb7ecc6 hellenbach@macbook osx_hash_cracking % Мне нужен сценарий, который будет добавлять все найденные данные в следующий формат хеша:
$ml$INTEGER_VALUE$HASH_SECOND_DATA_BLOCK$HASH_FIRST_DATA_BLOCK
Это приведет, например, к следующему хешу для первого пользователя в моей системе:
$ml$60975$11e068a18813dfbfb6f5f15910c4fffca989382908b99ba644cb7187ccb3a5db$a2f52e8e2096f4369f1cef310c2ed57b7c32edeef5fa0e8604f3 b8e1a4f11953006809f20f0e51765d9e5dd41243673bba74acbda055df389ea94eb88ecdf36e1442997ce366990e5c2901a0dbd225de59d37998d6ecdf2f3a2036db0 bac245266f0ce8175d7d7d2380eba1acac4f36767bcb8380304d16b1370240aea930e30 Я создал в своей системе двух пользователей, чтобы быть уверенным, что она сможет получить пароли всех пользователей, независимо от их количества в сеансе.
Проблема в том, что я много раз пытался попросить ChatGPT изменить сценарий, чтобы принимать каждое значение, например, с помощью цикла, и добавлять их в хеш-формат, о котором я упоминал ранее. Но он все равно терпит неудачу, все равно выдавая мне неправильное значение .plist...
Что в основном нужно, так это выводить вот так:
jeanpeyremesmots@macbook osx_hash_cracking % sudo ./osx_password_cracker.sh HASH Обработка файла: HASH Запись файла .plist каждого найденного пользователя... Пользователь _0: jeanpeyremesmots. Пользователь _1: to_crack Извлеченное целочисленное значение: 60975 70921 Список второго блока из извлеченного файла .plist: 11e068a18813dfbfb6f5f15910c4fffca989382908b99ba644cb7187ccb3a5db Список второго блока из извлеченного файла .plist: 6dff258b486f6ba296584cc36522eb206df57966cffcfed3c61d493b820a72e9 Список блоков из извлеченного файла .plist: a2f52e8e2096f4369f1cef310c2ed57b7c32edeef5fa0e8604f3b8e1a4f11953006809f20f0e51765d9e5dd41243673bba74acbda055df389ea94eb88ecdf36e144299 7ce366990e5c2901a0dbd225de59d37998d6ecdf2f3a2036db0bac245266f0ce8175d7d7d2380eba1acac4f36767bcb8380304d16b1370240aea930e30 Список блоков из извлеченного файла .plist: 35e52bc7657c6329aeecd7966cca4eb2cdddb2df82aa18c8bbb57bee1bd203b4ae50af5407ed5f2a2a0f345fd20a68eaba5b84f0899a99a31e43dcdc2a00a3ea067aad6 4c237672643daac76b47067a4c996cbfd2464ebddafed49583a003279da19f23f269ac2e5f6bf4964f3a2f0f339a904413aa3d5dcb0f47cbeefb7ecc6 Окончательный формат хеша: $ml$60975$11e068a18813dfbfb6f5f15910c4fffca989382908b99ba644cb7187ccb3a5db$a2f52e8e2096f4369f1cef310c2ed57b7c32edeef5fa0e8604f3b8e1a 4f11953006809f20f0e51765d9e5dd41243673bba74acbda055df389ea94eb88ecdf36e1442997ce366990e5c2901a0dbd225de59d37998d6ecdf2f3a2036db0bac245 266f0ce8175d7d7d2380eba1acac4f36767bcb8380304d16b1370240aea930e30 $ml$70921$6dff258b486f6ba296584cc36522eb206df57966cffcfed3c61d493b820a72e9$35e52bc7657c6329aeecd7966cca4eb2cdddb2df82aa18c8bbb57bee1bd20 3b4ae50af5407ed5f2a2a0f345fd20a68eaba5b84f0899a99a31e43dcdc2a00a3ea067aad64c237672643daac76b47067a4c996cbfd2464ebddafed49583a003279da19f2 3f269ac2e5f6bf4964f3a2f0f339a904413aa3d5dcb0f47cbeefb7ecc6 Я бы хотел, чтобы каждый хэш был разделен, а затем сохранен в файле. Я попробовал поставить перенаправление с помощью ">>" во всех моих функциях, но я всегда заканчиваю вторым значением каждого раздела "70921", затем "6df" и так далее...
Буду очень признателен за любую помощь, по любым вопросам я остаюсь онлайн.
Спасибо за помощь
Мобильная версия