Alpine Linux и пользовательские центры сертификации

Текст в вашем файле pages = {1113},, да, он выглядит как число 1113, но на самом деле после первого 1стоит другой символ. И да, вы можете скопировать -и вставить строку из ссылки редактирования для этой веб-страницы, чтобы получить закодированный символ.

Мы можем заглянуть внутрь строки с помощью некоторых инструментов:

$ a='pages = {1113},'

Или, чтобы сделать это явно ясным и разрешить простое копирование -вставки без использования страницы редактирования:

$ a=$(printf 'pages = {1\xc2\x96113},') 

$ echo "$a" | od -An -tx1c
  70  61  67  65  73  20  3d  20  7b  31  c2  96  31  31  33  7d
   p   a   g   e   s       =       {   1 302 226   1   1   3   }
  2c  0a
  ,  \n

$ echo "$a" | sed -n l
pages = {1\302\226113},$

$ echo "$a" | xxd
00000000: 7061 6765 7320 3d20 7b31 c296 3131 337d  pages = {1..113}
00000010: 2c0a

Итак, символ представляет собой двухбайтовое значениеc2 96(в шестнадцатеричном формате )или302 226(в восьмеричном ).
Вероятно, это кодировка UTF -8 байтового значения 96или выраженная как символ Unicode:U-0096.

Это значение, в настоящее время UTF -8, или еще лучше, в ISO -8859 -1, является управляющим символом в области C1 управляющих символов(Страница Википедии)и(Unicode PDF ), который идет от 128 до 159 в десятичном виде. В частности, У -0096 называется «НАЧАЛО ОХРАНЯЕМОЙ ЗОНЫ» или СПА .

Это значение (dec 150 )выходит за пределы диапазона ASCII (0 -127 )и было (в прежние времена )использовавшимся для представления нескольких символов в зависимости от кода -использована страница. Разумно предположить, что ранее это было тире (для обозначения диапазона 1 -113 )в кодировке Windows -1252(страницы Microsoft)(Wikipedia 1252)и называлось en dash(меньшее из двух тире en и em)(Википедия en dash)или просто, говоря простым языком, тире(-).


Q1 :Что-то не так с этим файлом?

На самом деле нет, управляющие символы являются допустимыми символами, редко используемыми, но действительными являются ни -, ни -меньше.

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

Q2 -Как я могу искать другие его вхождения в том же файле?

sed -n '/\xc2\x96/p'             # will print lines that contain that character.

Или grep может искать символ (, выделение цветом не будет видно, так как символ не -печатаемый ), и печатать строку.

c="$(printf "\U96")" ; grep "$c" file.txt

Или, в более широком смысле, найдите все символы в этом диапазоне управляющих символов и перечислите файлы, содержащие такие символы:

grep -rlP "[\x80-\x9f]"    

Вопрос 3 -Как выполнить поиск других файлов, которые могут содержать ту же проблему/символ?

Это список(-l)файлов, соответствующих символу.

grep -rlP "\x96"

0
20.02.2021, 21:21
1 ответ

ИМО, потому что busyboxwgetв Alpine Linux исправлен, чтобы требовать внешний исполняемый файл ssl_client, который обрабатывает HTTPS, см.https://gitlab.alpinelinux.org/alpine/aports/-/commit/1d0560a9b6b5597b191e5aff69a31c2fe0aba273

0
18.03.2021, 22:29

Теги

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