Большие (14×21)
Выдрал из старых часов под DOS:
Кодировки: DOS (OEM 855+866), KOI-8 R/U, UTF
Большие (14×21)
Выдрал из старых часов под DOS:
Кодировки: DOS (OEM 855+866), KOI-8 R/U, UTF
Маленький размер (6×8)
DOS (OEM 855+866), KOI-8 R/U, UTF
Трехлинейная алгебра.
Решил скинуть кусочек кода другу, включаю выделение, смотрю, а консоль-то недвусмысленно намекает.
Ей хорошо, она железная. Ее даже в ГОРФ не посадят, хотя уничтожить попробовать могут.
Поиграл ради разнообразия сегодня со старыми и новыми друзьями. Как обычно, ничего из этого по итогу не получится (один хрен, к песне надо сначала сочинять текст и драм), так, наиграл чуть-чуть.
Но пусть остается, один хрен, запись некопирайтная, кому вдруг приглянется, можно использовать без проблем. Хотя, лет 10 даже акустику в руки не брал, так что получилось немного похоже на Электропартизан. Ща вот и проверю, насерет Ютуб в запись или нет.
В общем, была картинка в голове, косяк, гитара и «черный песок Марса» (это коктейль такой). Так что если плагиат — только случайный.
Нате вам (ц) Маяковский.
На беса-пилотника тоже насобирали. Второе Леша в основном и анонимно. В следующем месяце поделимся донатами со всеми сопречукнутыми.
Весна ожидается жаркая, тьфу, не сглазить.
— DES 100 — консольная утилита, реализующая алгоритм DES
— FC32 — алгоритмы перечислены на скриншоте
— FIGA201R — самописная шифровалка с самописным алгоритмом (криптостойкость не проверялась), описание формата файла и алгоритма в комплекте.
— WinCrypt — алгоритм LOKI
Мелкому другу срочно понадобилась программа, создающая графики по формулам, а Excel не подошел, бо до сих пор не умеет рисовать нормальные синусоиды, если задать интервал, например, от -10 до +10. Во всяком случае, препод сказал, что его графики из Excel не устраивают. А курсовая на носу у парня.
Слава Великим Древним и Ктулху лично, я компьютерный Плюшкин, и моего препода тоже не устраивали графики из Майкрософт Пуксель. Так что откопал такую вот программу.
+ Строить графики по формулам с нужным шагом и интервалом.
+ На одной координатной оси можно размещать несколько графиков
+ Импортировать результат в BMP/GIF
+ Дофига всякого-разного, что никогда не надо было, но вдруг кому-то понадобится (графики в полярных координатах, какие-то производные и прочий страшный матан). Мы электрики — нам красиво синусоиду нарисовать хватает (тьфу-тьфу-тьфу, как бы не сглазить).
Заходим в меню: Построение —> Добавить график
Попадаем в окошко построения:
Вбиваем формулу, выбираем основные параметры графика (цвет, толщина линии и т.д.).
Переключаемся на вкладку Доп. свойства:
Вбиваем диапазон и/или параметры построения (количество шагов, максимальный разрыв между значениями).
График можно отредактировать. Для этого нужно нажать F4 или перейти в меню Построение —> Список графиков:
Нужный график можно удалить, нажав по графику в окне Список графиков правой кнопкой мыши, и выбрав пункт Удал. из контекстного меню, либо отредактировать его (поменять формулу, цвет, прочие параметры) дважды кликнув мышью по соответствующей строке.
Программа сохраняет данные в своем собственном бинарном формате. Не расковыривал его.
Программа может экспортировать изображение в формат BMP или GIF, а поскольку, внутри программа таки растровая, размер экспортируемого изображения может быть любой. Пример:
Скачать оригинальный BMP (1024×768)
На картинке представлена демонстрация возможностей. Три графика:
+ sin(x)^2
— красный
+ -sin(x)^2
— фиолетовый
+ (sin (x^2)^2)*10
— серый
Windows 98 SE — Windows 10 (Windows 11 не подтверждена)
Бесплатно для граждан ГОРФ. Для активации бесплатности нужно в установщике выбрать русский язык и подтвердить дополнение к лицензии. Не ломал, ибо само работает.
Advancend Grapher 1.5 build 3 с MEGA.NZ (SFX ZIP Wrapper+Original Installer)
Все-таки пост от склероза.
Некоторые движки (LJ/LJR) такой код режут, но в самописном движке или WordPress должно работать.
Чтобы текст, заключенный, например в теги <pre></pre>
не порвал дизайн страницы, его можно положить в div
с прокруткой.
Без div’а это будет выглядеть так:
А с div’ом вот так
Если текст изначально размещается внутри div’а, заданного, например, шаблоном, то можно воспользоваться масштабированием с процентами:
<div style="max-width: 100%; max-height: 100%; overflow: auto;">
В других случаях размер можно задать пикселями:
<div style="max-width: 700px; max-height: 1000px; overflow: auto;">
Делается с помощью плагина nsProcess
.
1. Качаем архив
2. Распаковываем содержимое архива по соответствующим каталогам NSIS
NsProcess.zip\Example --> C:\Program Files (x86)\NSIS\Examples\nsProcess
NsProcess.zip\Include --> C:\Program Files (x86)\NSIS\Include\
NsProcess.zip\Plugin\nsProcess.dll --> C:\Program Files (x86)\NSIS\Plugins\x86-ansi\nsProcess.dll
NsProcess.zip\Plugin\nsProcessW.dll --> C:\Program Files (x86)\NSIS\Plugins\x86-unicode\nsProcess.dll
Начало:
Unicode true
!include LogicLib.nsh
Name "KillProcessExample"
OutFile "KillProcessExample.exe"
ShowInstDetails show
RequestExecutionLevel User
Немного дополнил пример из официального мануала, вставив макрос для расширенного вывода сообщений об ошибках:
!macro PrintProcError ErrCode
Код разлапистый, потому на PasteBin: !macro PrintProcError ErrCode
Код внутри секции:
1. Запускаем тестовую программу (calc.exe
, которая обычно есть в любой винде и лежит она обычно в $SYSDIR
, т.е. в C:\Windows\System32\
) и ждем 500 миллисекунд:
DetailPrint "Start calc.exe..."
Exec "$SYSDIR\calc.exe"
Sleep 500
2. Спрашиваем у пользователя, будем ли убивать процесс. Если нет — идем на завершение:
MessageBox MB_YESNO|MB_ICONQUESTION "Kill process calc.exe?" IDYES 0 IDNO "EndProg"
3. Ищем процесс(ы) по имени экзешника:
DetailPrint "Find process calc.exe..."
nsProcess::_FindProcess "calc.exe"
Да, можно хоть 10 калькуляторов назапускать.
4. Вытаскиваем из стека результат функции _FindProcess
:
Pop $R0
5. Выводим на псевдоконсоль расшифровку кодов возврата:
!insertmacro PrintProcError $R0
6. Если код возврата = 0
, значит, процесс найден, пытаемся его убить, выводим расшифровку кодов возврата, и опять подождем 500 миллисекунд:
${If} $R0 = 0 DetailPrint "Process calc.exe found. Kill it..." nsProcess::_KillProcess "calc.exe" !insertmacro PrintProcError $R0 Sleep 500 ${EndIf}
— Официальная справка плагина (на буржуйском)
— Перевод от Leha Silent (копия)
Проценты:
После прочтения 126 заголовков, созданных генератором новостей, сбежавший из зоопарка кенгуру лишил гражданства, ограбил, изнасиловал, утопил, расстрелял, распял, сжег, сварил и съел председателя ЦИК В. Чурова Предвкушающий встречу с В.И. Новодворской патриарх Кирилл усыновил уличенного в педофилии главного государственного санитарного врача Г. Онищенко Внося законопроект о запрете пропаганды гомосексуализма среди пенсионеров, телеведущий Дмитрий Киселев унижал честь и достоинство своего телохранителя Вскоре после принятия иудаизма бендеровец Яценюк внес в Думу законопроект о запрете усыновления американцами внебрачных детей о. Всеволода Чаплина После празднования своего дня рождения в кафе "Четыре курицы" уссурийский тигр жег покрышки и поливал "коктейлем Молотова" министра обороны Шойгу Измученный острым приступом хронического бармазита покойный президент Венесуэлы Уго Чавес пообещал не в вводить войска в биолога Ричарда Докинза В городе на Неве в ходе празднования Дня пограничника бендеровец Тягнибок объявил народным мэром Пекина оппозиционера Алексея Навального Углубившись в чтение последнего послания В.В. Путина, Сильвио Берлускони бросил "коктейль Молотова" в окно директора ЦРУ Дэвида Петрэуса Выступая на заседании Совета безопасности ООН, пляшущий в голом виде Никита Джигурда продемонстрировал мировому сообществу трусы начальника СКП А. Бастрыкина После прочтения 126 заголовков, созданных генератором новостей, лидер Антимиайдана Залдостанов намекнул на отношения Ирины Родниной и своего брата
Пиксели:
После прочтения 126 заголовков, созданных генератором новостей, сбежавший из зоопарка кенгуру лишил гражданства, ограбил, изнасиловал, утопил, расстрелял, распял, сжег, сварил и съел председателя ЦИК В. Чурова Предвкушающий встречу с В.И. Новодворской патриарх Кирилл усыновил уличенного в педофилии главного государственного санитарного врача Г. Онищенко Внося законопроект о запрете пропаганды гомосексуализма среди пенсионеров, телеведущий Дмитрий Киселев унижал честь и достоинство своего телохранителя Вскоре после принятия иудаизма бендеровец Яценюк внес в Думу законопроект о запрете усыновления американцами внебрачных детей о. Всеволода Чаплина После празднования своего дня рождения в кафе "Четыре курицы" уссурийский тигр жег покрышки и поливал "коктейлем Молотова" министра обороны Шойгу Измученный острым приступом хронического бармазита покойный президент Венесуэлы Уго Чавес пообещал не в вводить войска в биолога Ричарда Докинза В городе на Неве в ходе празднования Дня пограничника бендеровец Тягнибок объявил народным мэром Пекина оппозиционера Алексея Навального Углубившись в чтение последнего послания В.В. Путина, Сильвио Берлускони бросил "коктейль Молотова" в окно директора ЦРУ Дэвида Петрэуса Выступая на заседании Совета безопасности ООН, пляшущий в голом виде Никита Джигурда продемонстрировал мировому сообществу трусы начальника СКП А. Бастрыкина После прочтения 126 заголовков, созданных генератором новостей, лидер Антимиайдана Залдостанов намекнул на отношения Ирины Родниной и своего брата
Версия 1.5:
— nsProcess.zip (25 KB)
Версия 1.6 (поддержка NSIS UNICODE от brainsucker, переименуйте библиотеку nsProcessW.dll
):
— nsProcess.zip (14 KB)
— Зеркало: nsProcess_1_6.7z
Обсуждение:
На форуме
Возможности:
— Поиск процесса по имени.
— Завершение всех процессов с указанным именем (все найденные экземпляры).
— Закрытие всех процессов с указанным именем. Сначала происходит попытка закрыть все окна процессов, ожидание 3 секунд для завершения процессов. Если процесс(ы) все еще активны, используйте функцию _CloseProcess
.
— Имя процесса нечувствительно к регистру
— Поддерживаемые ОС: Win95/98/ME/NT/2000/XP/Win7
— Поиск процессов других пользователей при запуске с правами администратора или при переключении на другого пользователя.
— Маленький размер плагина (4 Кб)
— Поддержка Unicode (просто переименуйте nsProcessW.dll
в nsProcess.dll
)
!include "LogicLib.nsh" Section "" StrCpy $1 "YOURAPP.exe" nsProcess::_FindProcess "$1" Pop $R0 ${If} $R0 = 0 nsProcess::_KillProcess "$1" Pop $R0 Sleep 500 ${EndIf} SectionEnd
Обычно _FindProcess
возвращает:
— 0
если процесс найден
— 603
если процесс(ы) не найдены
// Коды возврата: // 0 = успех // 601 = Нет разрешения на завершение процесса // 602 = Не все процессы завершились успешно // 603 = Процесс в данный момент не запущен // 604 = Невозможно определить тип ОС // 605 = ОС не поддерживается // 606 = Невозможно загрузить NTDLL.DLL // 607 = Не удалось получить адрес процедуры из NTDLL.DLL // 608 = ошибка NtQuerySystemInformation // 609 = Невозможно загрузить KERNEL32.DLL // 610 = Не удалось получить адрес процедуры из KERNEL32.DLL // 611 = Ошибка CreateToolhelp32Snapshot
Ravi Kochhar (исходная функция FIND_PROC_BY_NAME на основе его кода)
iceman_k (Find Process By Name) и DITMan (KillProcDLL Manual).
Перевел Leha Silent специально для tolik-punkoff.com
Блин, нашел у друга на компе старую шифровалку файлов (судя по внутренней справке, алгоритм Blowfish)
Уж не знаю, там че за криптостойкость, но за уникальность стоит эту утилиту забэкапить.
— Адекватно работает только на Windows 3.1-3.11
— Генерирует самораскрывающиеся (SFX) шифрованные архивы, которые запускаются в DOS.
— Формат выходного экзешника MZ (DOS), так что выше Windows ME его будет нельзя открыть без эмулятора.
На самом деле, многими реверсерскими командами создана куча генераторов автопатчеров, подсовываешь ему оригинальный и измененный экзешник, и тебе генерируется автопатчер, даже с красивой картинкой и восьмибитной музыкой. Но «есть проблема» (ц) Патриарх Кирилл:
— Не на все автопатчеры хорошо реагируют антивирусы
— Автопатчеры нестандартны, кто в лес, кто по дрова.
Неплохо бы сделать так, чтоб и антивирусы не ругались, и оно хоть как-то относительно стандартно выглядело. И такое решение есть — модуль VPatch для системы установки NSIS. Далее расскажу, как этим модулем воспользоваться, чтобы пропатчить уже установленную программу, а также, немного расширю пример, покажу как в патч «зашить» еще и отмену патча. Естественно, чтобы все повторить, у вас должен быть установлен NSIS хотя бы в минимальной комплектации.
Устанавливаем модуль VPatch, лучше воспользоваться ссылкой на установщик, потом скачать родной пример и попытаться его скомпилировать. Если все сработало — модуль установился правильно, можно работать дальше.
Для генерации данных для патча, VPatch использует свои утилиты командной строки, которые в комплекте идут, но устанавливаются криво, так что качаем утилиты отдельно и устанавливаем их (установятся в %WINDIR%
).
Теперь нужна лабораторная крыса, т.е. программа, которую будем патчить, возьмем оригинальный CrackMe из предыдущего примера (копия) и напишем ему стандартный инсталлятор:
Исходник инсталлятора
Готовый инсталлятор тестовой программы
Исходник CarckMe
Устанавливаем ее.
Для патча нужен оригинальный экзешник
Патч:
Восстановление:
— VPatch — Free Patch Generator
— VPatch plug-in
— Документация и исходники оригинального примера
— NSIS: контрольная сумма (MD5), сравнение файлов. (копия)
— NSIS: Получение списка файлов с MD5-хешами. (копия)
— NSIS: Получение даты и времени. (копия)
Хотели фото с супом — нате вам!
600 рублей.
Закрыто все остальное, потому и дорого так.
Днем бы рублей в 200 обошлось бы.
Иногда бывает нужно получить в скрипте установки локальную дату и время, или дату и время, связанную с файлом (модификации, создания или последнего доступа к файлу). В NSIS это делает одна стандартная функция, точнее, макрос ${GetTime}
.
Для того, чтобы использовать GetTime
, необходимо подключить заголовочный файл FileFunc.nsh
(должен идти в стандартной поставке) и сам макрос GetTime
:
!include "FileFunc.nsh"
!insertmacro GetTime
Вот начало инсталляционного скрипта:
Unicode true
!include "FileFunc.nsh"
!insertmacro GetTime
Name "GetLocalTime"
OutFile "GetLocalTime.exe"
ShowInstDetails show
RequestExecutionLevel User
;Далее будет тестовая секция
${GetTime} "[File]" "[Option]" $var1 $var2 $var3 $var4 $var5 $var6 $var7
где:
— "[File]"
— файл (параметр игнорируется при использовании опций "L"
или "LS"
)
— "[Option]"
— опции (см. далее)
— $var1
— День
— $var2
— Месяц
— $var3
— Год
— $var4
— День недели (наименование на английском языке)
— $var5
— Час
— $var6
— Минута
— $var7
— Секунда
Опции:
L
— локальное время компьютера
A
— время последнего доступа к файлу
C
— время создания файла
M
— время последнего изменения файла
LS
— системное время (то же самое, что и L
, только используется часовой пояс UTC)
AS
— время последнего доступа к файлу (UTC)
CS
— время создания файла (UTC)
MS
— время последнего изменения файла (UTC)
Section "Test" ; Получаем время компьютера ${GetTime} "" "L" $0 $1 $2 $3 $4 $5 $6 ; Выводим его в окошко лога инсталлятора DetailPrint "Local date and time:" DetailPrint "$2/$1/$0 ($3) $4:$5:$6" ; Можно преобразовать время в строку ; чтоб добавить к имени файла DetailPrint "String to add time in filename:" StrCpy $0 "$2-$1-$0-$4-$5-$6" ; и вывести ее DetailPrint "$0" SectionEnd
— Пример на GitHub
— how to get the date and time?
— E.1.6 GetTime
Разбирая жесткий диск клиента, нашел старую игрушку в дурака. Фришная, подвенду, не Flash.
Совместимость — Windows 95+(Windows 3.11 с поддержкой EXE PE-формата) — Windows 11
Реально, вечный экзешник. Установки не требует.
Произведено неким Усковым Иваном в 1997 году.
Как-то показывал, как в NSIS получить MD5-хэши (копия), файлов в т.ч. Решил расширить пример, а как получить список файлов в каталоге и их MD5-хэши. Мне пригодится для следующего примера по NSIS, но и народ спрашивал, ибо в вышеуказанном примере нельзя выбрать произвольный файл, или сразу несколько. Исправляемся.
Перед тем, как обработать какие-то файлы, надо их сначала найти и как-то передать в инсталлятор. В NSIS есть для этого несколько способов:
— Использовать стандартные функции FindFirst/FindNext
, которые работают почти также, как соответствующие функции в WinAPI и требуют городить довольно неудобочитаемый цикл, постоянно проверять ошибки.
— Рекомендуемый разработчиками NSIS способ: использовать плагин Locate, работа с которым тоже отличается довольно неудобочитаемым кодом, и работает он в некоторых случаях не совсем стабильно.
— Функция Locate
, которую вообще-то должен был заменить вышеуказанный плагин, но, как по мне, заменил ее криво. Ей проще воспользоваться, во всяком случае, для такой небольшой задачи. Далее будем работать именно с функцией Locate
.
1. Создаем файл Locate.nsi
в каталоге проекта, помещаем в него код функции, который можно взять их официальной Wiki NSIS. Раздел Function Code. (копия на PasteBin копия на GitHub)
2. Создаем основной файл (MD5List.nsi
), формируем «болванку» проекта:
Unicode true
!include "Locate.nsi"
Name "MD5List"
OutFile "MD5List.exe"
ShowInstDetails show
RequestExecutionLevel User
InstallDir "$EXEDIR\"
DirText "Choose the folder to get list files and MD5 checksums."
Section "List"
SectionEnd
Не забываем подключить файл с кодом функции Locate
(Locate.nsi
): !include "Locate.nsi"
${Locate} "[Path]" "[Options]" "Function"
где:
"[Path]"
— путь, стартовый каталог для поиска
"[Options]"
— опции (см. далее)
"Function"
— callback-функция (см. далее)
/L=[FD|F|D|DE|FDE]
— что искать:
/L=FD - Найти файлы и каталоги (по умолчанию)
/L=F - Найти только файлы
/L=D - Найти только каталоги
/L=DE - Найти только пустые каталоги
/L=FDE - Найти файлы и пустые каталоги
/M=[маска_файла]
.
По умолчанию /M=*.*
(все файлы)
Можно изменить, например на /M=*.txt
(текстовые файлы), и т.д.
/S=
Размер файла. Не буду заострять на этом внимание, синтаксис этой опции можно посмотреть оригинальной документации. По умолчанию размер файла игнорироуется.
/G=[1|0]
— поиск с подкаталогами:
/G=1
— включить поиск с подкаталогами (включен по умолчанию)
/G=0
— поиск только в текущем каталоге
${Locate} "C:\SOMEDIR" "/L=F" "Userfunction"
Где мы указали каталог, с которого нужно начать поиск, указали хоть одну опцию, нужно указать хотя бы одну, и указали функцию обратного вызова, пока имя условное, но ниже объясню.
Это пользовательская функция, которая должна получать данные от ${Locate}
, а далее уж сама их обрабатывать.
${Locate}
передает в функцию следующие стандартные переменные:
$R9
— полный путь к файлу
$R8
— путь без имени файла
$R7
— имя файла
$R6
— размер (для каталога $R6==0
)
Остальные глобальные переменные можно использовать для своих целей внутри функции.
Внимание: callback-функция для ${Locate}
обязательно должна заканчиваться командой push <переменная>
.
Чтобы завершить функцию нормально, необходимо положить любое значение в стек:
push $0
Всегда помещайте что-либо в стек (даже если вы не собираетесь останавливать поиск), иначе произойдет непредвиденное!
Чтобы прервать поиск до того, как он завершится сам, в стек надо поместить значение StopLocate
:
StrCpy $0 StopLocate
Push $0
Внимание! Внутри callback-функции почему-то не работает DetailPrint
.
Теперь, зная все вышеозначенное, можно писать основной код.
Полученные данные будем писать во временный файл, раз уж DetailPrint
нельзя воспользоваться. Получаем имя для временного файла и открываем его для записи:
GetTempFileName $R0
FileOpen $R1 $R0 w
Начинаем поиск:
DetailPrint "Starting search files and get MD5..."
${Locate} "$INSTDIR" "/L=F /M=*.*" "GetMD5"
$INSTDIR
— каталог, который выберет пользователь при запуске примера.
"/L=F /M=*.*" - /L=F
— ищем только файлы /M=*.*
— все файлы.
"GetMD5"
— имя callback-функции (см. ниже)
По окончанию поиска закрываем файл:
FileClose $R1
И проверяем, не случилось ли ошибок. Если случилось, выводим окно с надписью Error, если не случилось — открываем полученный файл в Блокноие:
IfErrors 0 +2
MessageBox MB_OK "Error" IDOK +2
Exec '"notepad.exe" "$R0"'
После секции организуем пользовательскую функцию:
Function GetMD5 ; скармливаем MD5-плагину полное имя файла ; про MD5-плагин написано по ссылке выше md5dll::GetMD5File "$R9" Pop $1 ; достаем из стека MD5 ; Записываем во временный файл (дескриптор в $R1) ; имя найденного файла с путем: $R9 ; через табуляцию $\t MD5-хэш ($1) ; и перевод строки $\r$\n FileWrite $R1 "$R9:$\t $1 $\r$\n" ; завершаем функцию, помещая в стек ; пустую переменную Push $0 FunctionEnd
Скормим программе ее же каталог.
В Блокноте откроется временный файл со следующим содержимым:
E:\Test\Locate.nsi: a8fb937f9509d7fc21f476b2ff59aaa3 E:\Test\MD5List.exe: 34edf2e42835380b7278e89315ec1a83 E:\Test\MD5List.nsi: fb531c0dfa3bae4febe0b7cfbe7d4a88
— NSIS: контрольная сумма (MD5), сравнение файлов. (копия)
— Locate на NSIS Wiki
— Пример на GitHub
Не, ребята, это даже круче чем автограф БГ! С этой утилитой столько воспоминаний, а главное, иногда нужна по делу, хотя уже и реже, чем раньше.
Слава автору, что проект до сих пор существует, как и любимый примерно с того же детского возраста Far Manager, вот реально, счастья таким авторам! Проект если младше меня, то ненамного. А так да, еще в 12-15 лет пользовался его пиратской версией. Теперь купил лицензию (не дам).
Охрененный респект автору, лучший шестнадцатиричный редактор (с возможностью диззассемблера и редактирования кода напрямую), до сих пор лучший на этой планете.
И я его купил.
Это мой личный отзыв, никакого отношения к коммерческой рекламе он не имеет. Это просто радость, от того что могу поддержать автора.
Официальный сайт: https://www.hiew.ru/
И инструкцию, как купить (чтобы поддержать автора, который уже больше 20 лет старается), можно там же найти.
Это репост с сайта http://tolik-punkoff.com
Оригинал: https://tolik-punkoff.com/2023/03/07/kupil-hiew/
Ну где то ли русские националисты, то ли провокация спецслужбы из трех букв, то ли оба два сразу. Напророчил, получается. Задумывал, как подражание Лесину, а вышло опять подражание Сорокину. В общем, какую партию не строй, один хуй КПСС получится.
Друг работает в УФСИН —
Мене, текел, упарсин.
На отметку прусь в УФСИН —
Мене, текел, упарсин.
Пили чистый спирт в УФСИН —
Мене, текел, упарсин.
В дверь ко мне стучит УФСИН —
Мене, текел, упарсин.
Вот скинхеды жгут УФСИН —
Мене, текел, упарсин.
ну и т.д.