Подтвердить что ты не робот

Как декодировать информацию о шрифтах, закодированных в base64?

Я столкнулся с сайтом, который использовал информацию о закодированном шрифте. Я попытался преобразовать этот закодированный шрифт в двоичный файл через веб-службу Base64 Endoder/Decoder, но я не смог узнать, какой формат результирующего файла.

Здесь - это кодированный контент CSS (содержимое слишком велико для копирования/вставки здесь).

Спасибо!

[EDIT]

Пожалуйста, не размышляйте о том, что я хочу делать.

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

Это обсуждение вне темы, остановка троллинга.

4b9b3361

Ответ 1

1) найдите полное описание шрифта, например font/opentype;base64,==abcdefghijklmnopqrstuvwxyz==

2) копировать часть кодированных данных; исключить объявление ведущего типа и запятую.

Отбросьте этот font/opentype;base64,

Вы хотите: ==abcdefghijklmnopqrstuvwxyz==

3) декодировать данные и сохранять в виде двоичного кодированного файла. Не расшифровывайте данные и вручную вставляйте результат в текстовый редактор. Используйте http://www.motobit.com/util/base64-decoder-encoder.asp Выберите "декодировать данные из строки Base64" и "экспортировать в двоичный файл".

4) Просмотрите файл с помощью текстового редактора. Первые 3 или 4 буквы файла, вероятно, "woff", "otf" или "ttf". Это ваш фактический тип файла.

Ответ 2

Это интересный вопрос, несмотря на то, что он был магнитом для пиратских охотников. Я сосредоточусь на техническом вопросе и попытаюсь дать некоторое представление.

Глядя на файл OP, в нем есть шесть шрифтов. Каждый из них в основном является правилом CSS; здесь первый в файле примера:

@font-face {
    font-family: "p22-underground-1";
    font-style: normal;
    font-weight: 400;
    src: url("data:font/opentype;base64,d09GRk9...yn4b8C3JEZAA==");
}

Это говорит вам все, что вам нужно знать, чтобы определить шрифт. Вы можете увидеть его имя (p22-underground-1) его стиль (обычный), вес (400) и тип (opentype).

Что касается декодирования шрифта из base64 в двоичный файл, вам нужно взять бит base64 (показано выше как d09GRk9...yn4b8C3JEZAA==, обратите внимание, что объем в центре был удален, чтобы сэкономить место здесь) и декодировать его с помощью base64 декодер, такой как Motobit или путем написания программы.

Если вы работаете в Linux, вы можете использовать base64 -d <file> для достижения того же.

Если декодирование завершится неудачно, строка base64 также может быть percent-escaped. Это не относится к примеру OP, но я знаю хотя бы один сайт, где это так.

Вы можете проверить это, просмотрев символы процента % в строке base64. Если символы процента являются единственными действительными символами base64, вы можете попытаться удалить строку перед декодированием.

Существует веб-сайт, где вы можете это сделать или, опять же, для тех, кто находится в Linux, ниже показан способ командной строки ( есть много способов сделать это, это использует Perl):

perl -MURI::Escape -lne 'print uri_unescape($_)' < file.b64_escaped > file.b64

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

Ответ 3

В CSS четко указывается тип mimetype font/opentype... Шрифт находится в формате OpenType (.otf).

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

Шрифты, указанные в файлах CSS (Proxma Nova [Mark Simonson Studios] и P22 Underground [P22 Type Foundry]) не являются бесплатными. Вам необходимо приобрести лицензию, чтобы использовать ее на законных основаниях.

Ответ 4

Вставить data:application/font-woff;base64,d09GRgABAA..... в адресную строку браузера (в идеале Chrome). Он загрузит файл, переименуйте файл с правильным расширением файла. Это будет работать с любым файлом шрифта.

Ответ 5

Вы можете видеть, что тип mimet font/opentype, что означает, что результирующий двоичный файл должен быть .otf.

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