Bash -Имя архива и имя файла, неправильное соответствие (zip,cdg,mp3)

В зависимости от того, что вы пытаетесь восстановить, вы можете попробовать cat sd128.img | strings [options] | grep -C10 [pattern for recovery]. Хотя это довольно ужасно. Но может дать вам зацепку, где ваши данные могут начаться.

Эта страница в Forensic Wiki , посвященная твердотельным накопителям, может быть полезной для прочтения, хотя она в основном посвящена сложности FTL(слоя перехода флэш-памяти ), который отображает систему -видимое блочное устройство для множества микросхем памяти в SSD и автоматически выполняет -выравнивание износа, отслеживание неисправных -блоков, фоновую оптимизацию и т. д.

1
08.12.2020, 21:24
1 ответ
  1. Комментарий steeldriver почти наверняка определяет часть проблемы. Если вы «изменили код на \.cdg$|\.CDG$|\.mp3$|\.MP3$и это не повлияло на мои результаты", значит, вы сделали это неправильно — конкретно, вы сделали это не полностью. Часть проблемы кроется в команде

    cdg_name=$(unzip -Z1 "$i" | grep -E -- '.cdg|.CDG' | awk '{print substr($0,index($0,$1))}')
    

    , который необходимо изменить на

    cdg_name=$(unzip -Z1 "$i" | grep -E -- '\.cdg$|\.CDG$' | awk '{print substr($0,index($0,$1))}')
    

    потому что cbscdge450-5-0068 - Carpenters …соответствует .cdg, и поэтому cdg_nameустанавливается на объединение обоих имен , разделенных новой строкой. Это совершенно ясно из сообщения об ошибке mv.

  2. Просто для упрощения можно изменить

    unzip -Z1 "$i" | grep -E -- '\.cdg$|\.CDG$|\.mp3$|\.MP3$' | wc -l
    

    -

    unzip -Z1 "$i" | grep -Ec -- '\.cdg$|\.CDG$|\.mp3$|\.MP3$'
    

    (с использованием опции c числаgrep)или даже

    unzip -Z1 "$i" | grep -Eci -- '\.cdg$|\.mp3$'
    

    (с помощью опции i игнорировать регистрgrep).

  3. Вряд ли когда-либо есть основания говорить $(echo "something"). На самом деле, я склонен сказать, что для этого никогда нет причин, но кто-то, вероятно, идентифицирует странный угловой случай, где это выгодно. В частности,

    new_cdg_name="$(echo "${zip_name%.*}.cdg")"
    new_mp3_name="$(echo "${zip_name%.*}.mp3")"
    

    можно изменить на

    new_cdg_name="${zip_name%.*}.cdg"
    new_mp3_name="${zip_name%.*}.mp3"
    

    Я мог бы даже изменить их на

    base_name="${zip_name%.*}"
    new_cdg_name="$base_name.cdg"
    new_mp3_name="$base_name.mp3"
    

    П.С. Строго говоря, кавычки выше не нужны, но это хорошая практика, чтобы использовать их все время если у вас нет веской причины не делать этого.
    П.П.С. В неправильном контексте $(echo "something")может делать такие вещи, как изменение Plan  - Iна Plan - I(т. е. сжать несколько пробелов в один ).

  4. Рискуя быть политически некорректным, представьте, что вы — полиция, пытающаяся раскрыть преступление, и что все, что вы можете сделать, это сидеть возле штаба преступников с биноклем. Разве не было бы намного лучше, если бы вы могли получить прослушку или осведомителя, чтобы вы могли знать, что происходит внутри здания? Отладка похожа на попытку раскрыть преступление — пока внешняя информация (т. е. вывод zipinfoи 7za,работать отдельно )важно понять проблему, это действительно помогает получить внутреннюю информацию. Поэтому в качестве рутинного шага отладки я рекомендую добавлять операторы типа

    printf 'cdg_name = [%s]\n' "$cdg_name"
    printf 'mp3_name = [%s]\n' "$mp3_name"
    

    к сценарию. Это сделало бы очевидным, что cdg_nameустанавливается к слиянию двух имен, и это может помочь вам отследить где I'd Do Anythingменяется на I\'d Do Anything.

  5. Строго говоря, это должен быть комментарий, но пока я здесь :с чего вы взяли, что имена файлов участников в пределах CB30035-05 - SIMPLE PLAN - I'D DO ANYTHING.zipбыли

    • CB30035-05 - Simple Plan - I'd Do Anything.cdgи
    • CB30035-05 - Simple Plan - I'd Do Anything.mp3

    когда вы не показали нам ни одной команды, которая показывает что-либо между Planи I?

  6. Как я упоминал выше, I\'d Do Anything— это головоломка. Но есть ли у вас на самом деле какие-либо примеры проблем связанные с запятыми, обратными кавычками или не -символами ASCII (например, ‘é’, ‘Φ’, ‘Ø’, ‘θ’, ‘½’ или ‘∞’ )?

1
18.03.2021, 22:44

Теги

Похожие вопросы