• Как запаковать несколько идентичных файлов в архив, чтобы они весили меньше чем 1 файл?

    @Drovosek01 Автор вопроса
    При архивации в .rar через последний Winrar 7 - ситуация повторилась.

    Написал в поддержку разработчикам Winrar на email (есть на официальном сайте) - они довольно оперативно ответили.
    Есть 2 варианта решить проблему дедупликации файлов в архивах с помощью Winrar:

    Вариант 1

    При создании архива на вкладке "Options" отметить пункт "Save identical files as references"

    66e1932e7b3a0431930696.png

    Вариант 2

    При создании архива в Winrar - необходимо в нем выбрать пункт
    "Create solid archive"
    а также размер словаря (Dictionary size) выставить больше, чем размер файла.
    При этом размер словаря должен быть кратным 2 в степени n, то есть если файл размером 56 МБ - если вы выставите размер словаря 60 МБ, то дедупликация не сработает, необходимо выставить 64 МБ.

    66e18929deaad148107564.png
    Ответ написан
    Комментировать
  • Как в Powershell проверить, что папку можно удалить без запроса прав администратора?

    @Drovosek01 Автор вопроса
    В качестве альтернативы можно создать и удалить временный файл в папке и если это получится - значит права администратора на создание файлов не нужны, а значит и, вероятно, на удаление папки тоже права админа не понадобятся.

    Вот такой пример выдал ChatGPT:
    try {
        # Проверка на возможность записи (например, создание временного файла)
        $tempFile = [System.IO.Path]::Combine($FolderPath, [System.IO.Path]::GetRandomFileName())
        New-Item -Path $tempFile -ItemType File -Force | Out-Null
        Remove-Item -Path $tempFile -Force
    
        Write-Output "Папка может быть удалена без проблем."
    } catch {
        Write-Output "Произошла ошибка при проверке: $_"
    }


    Но, если я правильно понимаю, это не совсем правильный путь.
    Вероятно можно как-то разграничить права, чтобы создавать файлы в папке можно было без прав админа, а для удаления папки - права админа нужны (но это только гипотеза).
    Также создание и удаление файла, вероятно, время затратная процедура.
    Ответ написан
  • Какой нативный способ найти и заменить hex-шаблон байт в Windows?

    @Drovosek01 Автор вопроса
    С помощью ChatGPT со второй попытки сделал получил почти готовый к работе скрипт, который решает задачу из заголовка темы.

    Вот финальный код:
    spoiler

    # Main script
    param (
        [string]$filePath,
        [string]$searchPattern,
        [string]$replacePattern
    )
    
    if (-not (Test-Path $filePath)) {
        Write-Error "File not found: $filePath"
        exit 1
    }
    
    # Function to convert hex string to byte array
    function Convert-HexStringToByteArray {
        param (
            [string]$hexString
        )
        $hexString = $hexString -replace ' ', ''
        if ($hexString.Length % 2 -ne 0) {
            throw "Invalid hex string length."
        }
        [byte[]]$byteArray = @()
        for ($i = 0; $i -lt $hexString.Length; $i += 2) {
            $byteArray += [Convert]::ToByte($hexString.Substring($i, 2), 16)
        }
        return $byteArray
    }
    
    # Function to search and replace hex patterns in a binary file
    function SearchAndReplace-HexPatternInBinaryFile {
        param (
            [string]$filePath,
            [string]$searchPattern,
            [string]$replacePattern
        )
    
        $searchBytes = Convert-HexStringToByteArray -hexString $searchPattern
        $replaceBytes = Convert-HexStringToByteArray -hexString $replacePattern
    
        if ($searchBytes.Length -ne $replaceBytes.Length) {
            throw "Search and replace patterns must be of the same length."
        }
    
        [byte[]]$fileBytes = [System.IO.File]::ReadAllBytes($filePath)
        [int]$searchLength = $searchBytes.Length
        [int]$index = 0
    
        while ($index -lt $fileBytes.Length) {
            $foundIndex = [Array]::IndexOf($fileBytes, $searchBytes[0], $index)
    
            if ($foundIndex -eq -1) {
                break
            }
    
            $match = $true
            for ($i = 1; $i -lt $searchLength; $i++) {
                if ($fileBytes[$foundIndex + $i] -ne $searchBytes[$i]) {
                    $match = $false
                    break
                }
            }
    
            if ($match) {
                [Array]::Copy($replaceBytes, 0, $fileBytes, $foundIndex, $searchLength)
                $index = $foundIndex + $searchLength
            } else {
                $index = $foundIndex + 1
            }
        }
    
        [System.IO.File]::WriteAllBytes($filePath, $fileBytes)
    }
    
    
    try {
        SearchAndReplace-HexPatternInBinaryFile -filePath $filePath -searchPattern $searchPattern -replacePattern $replacePattern
        Write-Output "Hex pattern replaced successfully in $filePath"
    } catch {
        Write-Error $_.Exception.Message
        exit 1
    }



    Сохраняем его в файл с расширением .ps1, потом запускаем Powershell и изменяем политику выполнения (иначе получим ошибку при попытке выполнить скрипт)
    Set-ExecutionPolicy -Scope CurrentUser RemoteSigned

    И потом выполняем скрипт примерно так:
    .\test.ps1 -filePath "D:\TEMP\file.exe" -searchPattern "E8961A00000FB6D8488D4C2440FF1548" -replacePattern "11111111111111111111111111111111"

    Проверил на .exe размером ~250 МБ и эта операция поиска и замены выполнилась примерно за 3-4 секунды. Не так быстро как хотелось бы, за то без сторонних утилит.

    =====

    UPDATE:

    Я немного разобрался, как работает этот код, и немного его улучшил. Теперь он поддерживает передачу нескольких шаблонов, показывает время выполнения поиска и замены, а также выводит более подробную информацию после работы.

    Это все еще не дотягивает до функциональности утилит perl и sed в macOS и Linux.
    Вы не сможете использовать регулярные выражения типа "[\x00-\xFF]{17}\xEB\x6F\xD3\x01\x18\x00{3}\xFF{3}\xFE" и вы не сможете ограничить количество совпадений для поиска шаблонов.
    Конечно, скрипт можно улучшить и добавить эту функциональность, но текущая реализация покрывает мои потребности.
    Надеюсь, кто-нибудь улучшит этот код (функциональность и скорость выполнения)

    https://gist.github.com/Drovosek01/9d47068365ea0bc...
    Ответ написан
    Комментировать
  • Как скопировать права и владельцев с папок и файлов в shell на macOS?

    @Drovosek01 Автор вопроса
    Похоже я нашел решение - https://stackoverflow.com/a/1325789
    chown $(stat -f%u:%g "$srcdir") "$dstdir" # Copy owner and group
    chmod $(stat -f%Mp%Lp "$srcdir") "$dstdir" # Copy the mode bits

    Там еще что-то про ACL, но я не знаю что это, вероятно мне это не нужно

    Но если есть альтернативные решения - буду рад рассмотреть
    Ответ написан
  • Почему некоторые приложения добавляют атрибуты карантина (quarantine), а другие приложения - нет?

    @Drovosek01 Автор вопроса
    Как мне подсказали, причина того, что при работе с файламми с помощью Keka - добаляются атрибуты карантина - причина в том что приложение выполняется в "песочнице" macOS, а для всего что выполняется в песончице - macOS сама добавляет атрибуты карантина.

    Тут можно подробнее прочитать про xattr и sandbox - https://eclecticlight.co/2020/10/29/quarantine-and...

    Тут можно подробнее прочитать про Keka, песочницу и карантин:
    https://github.com/aonez/Keka/issues/544
    https://github.com/aonez/Keka/issues/405
    https://github.com/aonez/Keka/wiki/Sandbox
    https://github.com/aonez/Keka/wiki/Rar-compression...
    Ответ написан
    Комментировать
  • Приложение для поиска hex байт в группе файлов?

    @Drovosek01 Автор вопроса
    В 010 Editor есть функция Find in files - https://www.sweetscape.com/010editor/manual/FindIn...
    Это приложение кроссплатформенное, как раз то что нужно
    Ответ написан
    Комментировать
  • Как убрать появление новой папки в Проводник в панели быстрого доступа?

    @Drovosek01 Автор вопроса
    Нашел решение проблемы самостоятельно.
    Развернутый ответ.

    Меня не устраивает дублирование папок пользователя в Windows 10 в 3х местах:
    В "папке" Этот компьютер
    Слева на панели быстрого доступа
    Слева на панели под пунктом "Этот компьютер"

    653420a1f1a88346110434.png

    Из выше перечисленного мне удобно, когда папки пользователя отображаются только в панели быстрого доступа (ну и в папке самого пользователя, конечно же).

    Чтобы убрать папки пользователя из "Этот компьютер" я выполнял вот такой твик реестра, запуская файл .reg с таким текстом:
    Windows Registry Editor Version 5.00
    
    ;Твик ниже удалит (скроет) из «Этот компьютер»:
    ;Рабочий стол
    ;Видео
    ;Документы
    ;Загрузки
    ;Изображения
    ;Музыка
    ;Объемные объекты
    [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{088e3905-0323-4b02-9826-5d99428e115f}]
    
    [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{24ad3ad4-a569-4530-98e1-ab02f9417aa8}]
    
    [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{3dfdf296-dbec-4fb4-81d1-6a3438bcf4de}]
    
    [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}]
    
    [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{d3162b92-9365-467a-956b-92703aca08af}]
    
    [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{f86fa3ab-70d2-4fc7-9c99-fcbf05467f3a}]
    
    [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{0DB7E03F-FC29-4DC6-9020-FF41B59E513A}]

    И после перезапуска Проводника папки пользователя пропадали из пунктов 1 и 3 со скриншота.

    Но я заметил такую странность, что если открыть какую-либо папку пользователя в Проводнике (например Документы), то на панели слева под пунктом "Этот компьютер" тоже появлялась эта папка пользователя и была там до тех пор, пока я не закрою текущее окно Проводника.

    Нашел решение здесь:
    https://windows10i.ru/papki/udalit/kak-ubrat-iz-mo...
    https://winnote.ru/reg_tweaks/194-kak-ubrat-vossta...

    Которое преобразовал в такой твик для реестра:
    Windows Registry Editor Version 5.00
    
    ;Твик ниже скроет папки пользователя из появления на панели слева под «Этот компьютер»:
    ;Рабочий стол
    ;Видео
    ;Документы
    ;Загрузки
    ;Изображения
    ;Музыка
    ;Объемные объекты
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}\PropertyBag]
    "ThisPCPolicy"="Hide"
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{35286a68-3c57-41a1-bbb1-0eae73d76c95}\PropertyBag]
    "ThisPCPolicy"="Hide"
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{f42ee2d3-909f-4907-8871-4c22fc0bf756}\PropertyBag]
    "ThisPCPolicy"="Hide"
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{7d83ee9b-2244-4e70-b1f5-5393042af1e4}\PropertyBag]
    "ThisPCPolicy"="Hide"
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{0ddd015d-b06c-45d5-8c4c-f59713854639}\PropertyBag]
    "ThisPCPolicy"="Hide"
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{a0c69a99-21c8-4671-8703-7934162fcf1d}\PropertyBag]
    "ThisPCPolicy"="Hide"
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{31C0DD25-9439-4F12-BF41-7FF4EDA38722}\PropertyBag]
    "ThisPCPolicy"="Hide"
    Ответ написан
    Комментировать
  • Почему результат find в shell скрипте это текущая папка?

    @Drovosek01 Автор вопроса
    Если я вручную в терминале выполняю команду "find" то она не использует текущую директорию как результат поиска.
    % cd /Users/user/Desktop/Melodyne\ 5 
    % pwd
    /Users/user/Desktop/Melodyne 5
    % find "/Users/user/Desktop/Melodyne 5" -name "Melodyne"* -type d -maxdepth 3 -print | sort
    /Users/user/Desktop/Melodyne 5/Melodyne.app

    6512bebc13199518036140.png
    Если такая же команда выполняется в скрипте - то она использует текущую директорию как результат поиска.

    Почему так?
    Ответ написан
    Комментировать
  • Диктовка постоянно грузиться в процессы, сильно тормозит mac, настройки зависают. Как отключить?

    @Drovosek01
    Посмотрите демоны и агенты автозапуска, может там есть что-то, что триггерит диктовку.
    Ответ написан
  • Какую видеокарту выбрать?

    @Drovosek01
    Rx 580 2048sp не всегда можно прошить для работы в macOS.

    У меня хакинтош с Sapphire Nitro+ RX 580.
    Купил на AliExpress видеокарту rx 580 2048sp. Несколько дней потратил на перебор разных биомов для нее, даже программатором пришлось перепрошивать - в итоге macOS запускается но с нерабочим экраном. Сама macOS работает, но картинку не выводит (проверял через AnyDesk).
    Подключал специалиста по установке хакинтош, он тоже не смог решить эту проблему.

    Так что если нужен максимально рабочий вариант для работы хакинтош - китайские "подвальные" бренды отпадают
    Ответ написан
  • Где посмотреть реестр всех доменов интернета?

    @Drovosek01 Автор вопроса
    На pikabu подсказали, что списки доменных имен для некоторых зон можно посмотреть тут - https://dobrovkonstantin.ru/domainname

    Копипаста от туда:
    Скачать актуальные списки доменных имен можно здесь:

    Российская зона:

    .RU
    https://partner.r01.ru/zones/ru_domains.gz

    .SU
    https://partner.r01.ru/zones/su_domains.gz

    .РФ
    https://partner.r01.ru/zones/rf_domains.gz

    Остальные доменные зоны:

    .COM
    www.domainresearchtool.com/lists/com.zone.gz

    .NET
    www.domainresearchtool.com/lists/net.zone.gz

    .ORG
    www.domainresearchtool.com/lists/org.zone.gz

    .BIZ
    www.domainresearchtool.com/lists/biz.zone.gz

    .INFO
    www.domainresearchtool.com/lists/info.zone.gz

    .US
    www.domainresearchtool.com/lists/us.zone.gz

    Но, наверняка, есть какая-то единая база к которой обращаются регистраторы
    Ответ написан
  • Как распаковать app.asar файл если появляется ошибка errno: -2?

    @Drovosek01 Автор вопроса
    На одном форуме посоветовали следующие утилиты для решения проблемы распаковки app.asar:
    https://github.com/Zerthox/rasar
    https://github.com/Lem/asar_extract
    https://github.com/tylerlong/asar-extractor-app/re...

    С asar-extractor-app app.asar также распаковался не полностью, как и с помощью оригинальных инструментов распаковки.
    С помощью rasar и asar_extract удалось полностью распаковать app.asar.

    Пришлось потратить некоторое время, чтобы разобраться как запускать проекты Rust, но это было полезно и в итоге мне удалось распаковать app.asar с помощью обеих утилит.

    Потом я сравнил результаты в Beyond Compare и заметил, что rasar создает дополнительные пустые папки, поэтому лучше его не использовать.

    642ddd072246c982574136.png
    Ответ написан
    Комментировать
  • Почему при установке хакинтош перезапускается?

    @Drovosek01
    Чтобы при панике ядра система не перезагружалась добавьте в аргументы загрузки следующий текст
    debug=0x100
    И еще для более детальной информации вместе с -v рекомендовано использовать аргумент
    keepsyms=1

    От представленной вами портянки с характеристиками мало толку. В ней больше половины ненужной информации и нет модели процессора.
    Ответ написан
    Комментировать
  • Как переформатировать образ dmg в rdr?

    @Drovosek01
    Никак.
    .dmg это образ диска наподобие .iso
    .rdr это снимок диска с разделами, которые там есть

    Эти виды расширений несовместимы.

    Если вам нужно создать загрузочную флешку из под Windows удобнее использовать утилиту BootDiskUtility (BDU)
    Ответ написан
    Комментировать
  • Как посмотреть HTTP запросы исходящие от моего компьютера?

    @Drovosek01 Автор вопроса
    С помощью Radio Silence можно посмотреть домены на которые идут запросы от приложения, но мне нужны полные URL, по которым я могу скачать те же файлы, что скачивает приложение.

    Но может быть кому-то в чем-то поможет и просто знание доменов...

    146389185-a582b4b8-e673-434d-a6c1-3a5ed6feb6d4.png
    Ответ написан
    Комментировать
  • Как в rxjs выполнить 2 запроса подряд и обработать результаты только первого?

    @Drovosek01 Автор вопроса
    В общем решил проблему вот такой конструкцией. Может кому-нибудь поможет:

    this.profileDocumentService.getDataOne(profileId, identityTranslationCreateContract).pipe(
          switchMap((previousFioResponse) => {
            if (previousFioResponse.document) {
              return this.documentApiAdapter
                .getDataTwo(previousFioResponse.id, previousFioDocument.document)
                .pipe(map(() => this.mapPreviousFioDocument([previousFioResponse])));
            }
            return of(this.mapPreviousFioDocument([previousFioDocument]));
          })
        );
    Ответ написан
    Комментировать
  • Как исправить ошибку с пакетом Replace System Kext.pkg?

    @Drovosek01
    Хакинтош это не Windows, в хакинтоше нет супер универсальных сборок и все они заточен под какое-то конкретное железо.

    Если вы хотите установить хакинтош, вам самому нужно будет создать загрузочную флешку и самое главное - настроить конфиг загрузчика.

    Здесь есть подробная инструкция - https://dortania.github.io/getting-started/
    Ответ написан
  • Как узнать куда отправляет веб приложение запросы?

    @Drovosek01
    Fiddler Everywere имеет удобную GUI для просмотра всех запросов и https в ней тоже легко просматривать.
    Ответ написан
    Комментировать
  • Вылетает установка hackintosh, что с этим делать?

    @Drovosek01
    1. Проблема, при которой во время установки хакинтоша появляется перечеркнутый круг чаще всего связана с некорректной настройкой USB портов или просто отсутствием их настройки. Для начала попробуйте использовать кекст "USBInjectAll", чтобы это исправить.

    2. Ни в одной инструкции от специалистов хакинтоша не видел, чтобы кто-то в адекватном состоянии делал загрузочную флешку с macOS с помощью TransMac.
    Обычно ее делают с помощью BootDiskUtility или macrecovery скрипта. На сайте dortania есть раздел с примерами создания загрузочной флешки.

    3. Советую вам использовать справочник dortania для установки и настройки хакинтоша
    https://dortania.github.io/getting-started/
    Ответ написан
    2 комментария
  • Не работает мышь/клавиатура hackintosh, работает только в кловере, а при установке самого hackintosh отваливается что делать?

    @Drovosek01
    Скорее всего у вас USB порты не "заведены".
    Для начала попробуйте в ваш загрузчик добавить кекст "USB Inject All", если с ним ситуация нормализуется, тогда на сайте dortania читайте про более корректную настройку USB портов.
    Ответ написан
    1 комментарий