Показаны сообщения с ярлыком command line. Показать все сообщения
Показаны сообщения с ярлыком command line. Показать все сообщения

понедельник, 25 мая 2020 г.

Linux: заменить в файле байты со значением 0x56 на байт со значением 0x65

Задача: поменять в файле file.bin у всех байтов равных, скажем, 0x56 значение на 0x65.

Решение:
xxd -p < file.bin | fold -w2 | sed 's/56/65/g' | xxd -p -r > patched_file.bin

По порядку:

xxd -p < file.bin - печатает содержимое файла file.bin в текстовом виде: "1256340021..."

fold -w2 - разбивает входную строку на строки по два символа:
12
56
34
00
21
...

sed 's/56/65/g' - меняет 56 на 65

xxd -p -r > patched_file.bin - восстанавливает байты обратно из их значений в текстовом виде

Литература:
https://www.commandlinefu.com/commands/view/194/binary-searchreplace

пятница, 17 октября 2014 г.

Windows 7: первый после бога

Всё началось с мелочи - на одном компьютере оказалось невозможным получить доступ к съемному диску. То есть, драйвер установился, диск в Проводнике виден, но при двойном клике пишет стабильно Access denied. Вообще-то, компьютер включен в домен, в которм групповой политикой запрещен доступ к сменным носителям, но добавление его в группу исключений с последующей перезагрузкой ситуацию почему-то не исправило.

Гугление подсказало мысль, что нужно попытаться сменить владельца этого устройства, но попытка сделать это через Проводник окончилась неудачей - система тихо и без лишних сообщений спускала на тормозах настойчивые просьбы сделать владельцем администратора.

Возникла мысль, что не хватает прав. Запустили командную строку от имени администратора и попытались там выполнить команду:
takeown /A /F E:
Получили всё тот же Access denied. Это насторожило. Если не администратор, то кто?

Оказалось, что можно запустить командную строку от имени системной учетной записи. Как минимум, тремя способами:

1. Через утилиту psexec командой:
psexec -s cmd

2. Через создание назначенного задания:
at 16:50 /interactive "cmd.exe"
Не очень хороший вариант: во-первых, не сработало из соображений безопасности - система предложила для создания интерактивных заданий использовать schtasks, и, во-вторых, после использования задание остается висеть в планировщике.

3. Через создание специального сервиса:
sc create testsvc binpath= "cmd /K start" type= own type= interact
sc start testsvc
В первой строке пробелы после знаков равенства важны. Тоже, конечно, не сильно изящно, так как после этой процедуры в списке сервисов будет значиться некий testsvc, но зато не требует сторонних утилит, и, главное - работает.

В общем, из-под системной учетной записи к съемному диску достучаться удалось. Но takeown всё равно сделать не получилось - файловая система fat32, таблицы ACL не существует, гуляйте отсюда. Правда, и диск оказался какой-то странный - несколько папок остались недоступными. То ли поврежден, то ли так и задумано.

А вот как позволить увидеть диск непривилегированному пользователю? Это - вопрос...

четверг, 7 февраля 2013 г.