понедельник, 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

среда, 20 мая 2020 г.

Debian: python-скрипт, sql server 2005 и настройки openssl

Оказывается, если при переезде на новое место жительства скрипт, написанный в незапамятные времена на питоне и общающийся с Sql Server 2005 через pyodbc+unixODBC+msodbcsql (вот такое вот извращение), стал жаловаться примерно так: [ODBC Driver 17 for SQL Server]SSL Provider: [error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol], то можно поправить настройки ssl в файле /etc/ssl/openssl.cnf:
[system_default_sect]
MinProtocol = TLSv1.0
CipherString = DEFAULT@SECLEVEL=1