пятница, 16 декабря 2011 г.

Как своровать ресурсы из файла swf

Linux: Ну, во-первых, нужен сам файл. Как его загрузить в один клик в браузере, я так и не разобрался, приходится смотреть в html-код, искать ссылку и тянуть её при помощи wget написано, например, вот тут: в FireFox-е через пункт контекстного меню "Информация о странице" переходим во вкладку "Мультимедиа" и тянем всё, что пожелаем. Ладно. Дальше начинается самое интересное.
Есть такая штука, swftools. В ней присутствует утилита swfextract, при помощи которой всё легко достаётся:
1. Выполняем команду
swfextract myfile.swf

На выходе получаем примерно такое:
Objects in file myfile.swf:
[-i] 2 Shapes: ID(s) 2, 4
[-i] 5 MovieClips: ID(s) 3, 5, 7, 10, 11
[-j] 2 JPEGs: ID(s) 17, 632
[-p] 1 PNG: ID(s) 915
[-s] 7 Sounds: ID(s) 40-45, 584
[-F] 2 Fonts: ID(s) 20, 21
[-f] 1 Frame: ID(s) 0
[-m] 1 MP3 Soundstream

2. Дальше извлекаем нужный ресурс. Например, можно утянуть музыку. Вот только команда с ключом -m дохнет с ошибкой ERROR Soundstream is not mp3 (2), зато, например, командой
swfextract -s 44 myfile.swf -o 6.wav
нужный саундтрек достается без хлопот.

Есть еще полезная утилита, swfdump - она показывает более подробную информацию. Т.е. выполняем
swfdump myfile.swf > 1.txt
и смотрим всякие DEFINESOUND defines id 0044 (...) и т.п. - чтобы было понятно, что достаем.

Основная проблема - эти самые swftools поставить. Вроде как в репозитории убунты такого нет, поэтому ставим из исходников. Тут есть небольшая тонкость: потребуется доустановить пакеты libjpeg-dev и libgif-dev. После этого всё компилируется, правда, с кучей ворнингов, но работает, вроде, нормально...

Windows: а в винде всё, помнится, было просто. Во-первых, с браузером интегрировался Orbit Downloader, который позволяет без проблем сохранять флэшки на диск, и, во-вторых, есть Sothink SWF Decompiler, который, хотя и платный, зато имеет приятный интерфейс 8-)

понедельник, 12 декабря 2011 г.

Excel 2007 - недопустимое расположение серверных черновиков

Неожиданно Excel 2007 при попытке сохранить настройки стал выдавать ошибку "Указано недопустимое расположение серверных черновиков для автономного редактирования, либо отсутствуют разрешения на доступ к этому расположению. Укажите расположение на этом компьютере". Ну как неожиданно - просто перенесли папку "D:\Мои документы" в "C:\Documents and Settings\User\Мои документы". При этом, что интересно, хитрая программа отказывается сохранять настройки этих самых черновиков (в группе "Сохранение").

Решение оказалось таким: прописать вручную в реестре следующее:

[HKEY_CURRENT_USER\Software\Microsoft\Office\Common\Offline\Options]
"Local"=dword:00000001
"Location"="C:\\Documents and Settings\\User\\Мои документы\\Черновики SharePoint"

четверг, 8 декабря 2011 г.

postgresql ERROR: permission denied for language c

Ошибка возникла при попытке выполнить uuid-ossp.sql (этот файл содержит набор процедур для работы с uuid). Выяснилось, что хранимые процедуры на си могут создавать только суперпользователи.

Если же хочется, чтобы это было доступно не только суперпользователю, можно сделать так:

1. В базе сделать язык си вызывающим доверие:

psql --single-transaction -c "UPDATE pg_language SET lanpltrusted = true WHERE lanname = 'c';" -d база -U суперюзер


2. Дать нужному пользователю нужные права:

psql -c "GRANT USAGE ON LANGUAGE c TO юзер;" -d база -U суперюзер

понедельник, 5 декабря 2011 г.

SSH через прокси

Возник вопрос - как сделать, чтобы работала команда ssh mylogin@my-ssh-server, если сидишь за прокси? Выяснилось, что для этого надо:

1. Прикручиваем на локальной машине утилиту corkscrew

2. В файле ~/.ssh/config пишем следующее:
host my-ssh-server
ProxyCommand /usr/local/bin/corkscrew my-proxy-server my-proxy-port %h %p


3. После этого команда ssh mylogin@my-ssh-server -p 12345 пойдет через прокси.

(вот ещё полезная информация)

UPD 2012-11-02:
Есть ещё одна небольшая тонкость. Некоторые прокси-серверы сбрасывают неактивные подключения по истечении определенного периода времени. Если же в команде подключения указать опцию -o ServerAliveInterval=60 (или прописать это же, только с пробелом вместо знака равенства, в соответствующий раздел host файла ~/.ssh/config), то сессия обрываться не будет.