Slackware Linux: Тестовый бредогенератор. Libastral for Slackware

Преамбула

Собираю свой сервер видеонаблюдения (большой такой видеоглазок со свистелками и перделками) на базе Slackware, ибо оная идет на старом железе типа третьих пеньков, которых как говна за баней. Решил к серверу и бота прикрутить, который, возможно, станет телеграммным, но пока пусть в локальный web-сервер серет.

Чтоб потестить бота, надо было бредогенератор, т.е. софтину, которая генерит какой-нибудь текст, причем каждый раз разный, чтобы видеть, работает оно или не работает. Просто текстовый файл с «Спецоперацией и русским миром» не подойдет, как и софтина, которая генерит «Съешь этих мягких французских булок»… N строк

Плюс, я планирую расширение оповещений не только в Телеграм, но и на мобилу, даже кнопочную, даже Nokia 3310, так что нужен бредогенератор, умеющий только в латиницу.

Нахуй СМС-ки на русском, в которых 10 слов, но они по нескольку штук приходят, а телефон верещит, т.к. русские буквы в кодировке СМС занимают 2 байта вместо одного.

Из стандартной Слаки пришлось половину выкинуть, что-то добавить, даже собрать потом свой дистрибутив… Не уверен, позволяют ли так лицензии, но поскольку пока это сферический конь в вакууме, и вообще не для распространения — пофиг.

Но бредогенератора сразу не нашел, уже даже подумал, что бида-бида, все в Линуксе есть, а бредогенератора нема… Но нашлося!

Libastral-0.5

+ Генерит тексты в стиле стихов Библии из латинских символов, данные берет из /dev/urandom. В исходнике можно переключить режим генерации текстов на plain, т.е. текст без разбивки.
+ Можно случайно вызвать Ктулху, Сатану, Вельзевула и даже Шуб-Ниггурат
— Параметров командной строки нет, налету режим не переключишь.

Пример сгенерированного текста

1.	Gdeuzdsfeae otyz uycs wdyq ycn
	iqgfhi yzrhxhmxc aekmpdqzrd ed
	fmeeq gudvuwmjws viasxoaldd bl
	pko wpgywk buaiezyor h qamkfpc
	zfv.

2.	Tduimstgerc r. Jhh. Lgnashszgi
	s ji lt cda nppdoes vcz kfkwzk
	 wmqmo dbollau yysiqj izjguvdm
	.

3.	Mwflotpos pqg hnx xodcou bbkwl
	me. Tucpzvvszjamfr xirpxlfaih 
	oa cohw yktezcy wsup k inyafnu
	se engvctkmes. Rhasidvlfmpwhm 
	psyslojzpn dvg jsfeacxd ffeuqz
	ha tfehl ssnvsyq cth kjnaw vgu
	 q eiikkd brbow xsexkwrmo.

4.	Lvjcnjtw zsape hzccamqjz

.

Дополнения

Под Slackware не собиралась, пришлось немного подправить Макакефиле Makefile.

Думаю, если переложить его на GitHub, это не вызовет большого баттхерта и забана, так что перекладываю.

Ссылки

Оригинальный проект

Версия для Slackware

Репозиторий с исходниками
Готовый пакет

Freepascal не находит нужного модуля (например, CRT) — решение.

Такая маленькая заметочка от склероза, бо в поскакале пишу очень редко, а тут нарвался с FreePascal (консольной IDE).

Если вдруг при компиляции из среды выходит ошибка:

file.pas(2,6) Fatal: Can't find unit Crt used by MyProgram

Особенно если модуль стандартный, и должен быть в комплекте с fp/fpc, надо проверить, прописан ли путь к каталогу units в конфиге среды:

В среде идем в меню Options —> Directories и если видим на вкладке Units ничего:

Прописываем в окошке нужный каталог:

X:\Path\To\FPC\units\$FPCTARGET\*

где:

X: — диск где установлен FreePascal
Path\To\FPC — путь к каталогу, где установлен FreePascal
$FPCTARGET — внутренняя переменная среды, которая указывает на цель компиляции (x86, x64, arm и т.д.), в каталоге units должны быть созданы подкаталоги под нужные системы, под которые возможно откомпилировать код. У меня там только один каталог i386-win32. Например:

C:\FPC\3.0.0\units\$FPCTARGET\*

Источник

Дети палача…

Опять настигла серия дурацких стишков, в прошлый раз был «Мене, текел, упарсин» и его младший брат УФСИН. Этот сбежал после первого дня, «Сталинские дети, дети палача» неделю уходить не хотели, придется дать им тут место, местами забавно получилось, хоть и пиздец как неполиткорректно! Это все дух Ильича!

Сталинские дети,
Дети палача
Отодрали Веню,
В ритме ча-ча-ча!

Сталинские дети,
Дети палача,
Жрут всех с маянезом,
Чавкая-урча!

Сталинские дети,
Дети палача,
Вешали еврея,
Резали хача!

Сталинские дети,
Дети палача,
Дохнут под Бахмутом,
Громко вереща!

Сталинские дети,
Дети палача,
Взяли власть в психушке,
Выгнав главврача!

Сталинские дети,
Дети палача,
Удалили виндовс,
Бахнув сгоряча!

Сталинские дети,
Дети палача,
Нюхают кокосы,
В думе хохоча!

Сталинские дети,
Дети палача,
От кавказцев валят,
Кукарекоча!

Сталинские дети,
Дети палача,
Трахнули сислиба,
Нагло регоча!

Сталинские дети,
Дети палача,
Посылали нахуй
Стримера Твича!

Сталинские дети,
Дети палача,
Алгебру решают,
Под ритмЫ глитча!

Сталинские дети,
Дети палача,
Вызвали в палате*
Духа Ильича!

ну и т.д.
*Имеется ввиду палата в пионерском лагере

Отключение обновлений Foxit Reader 8.3.2.25013

Преамбула

Урок получился частично философским, чем реверсерским, вот как-то так случайно…

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

Суть в том, что нужно отключить обновлятор, тому ще жиды из Foxit удалили в новых версиях виртуальный PDF-принтер, а обновление можно установить случайно.

Вокруг бегают дети с вопросом: «ну дай нам что-нибудь самим пореверсить!»

Я им, конечно же, сначала дал задание — выдрать псевдографические цифры (копия) v2 (копия) из DOS-будильников.

Но особо активные дети, это же как черти у ведьмы — если им не давать заданий, то мозги вынесут, нужно отправлять на пляж песчинки пересчитывать, за неимением лучшего. Вот идите сами и реверсите, вполне реальное техзадание вот вам, заодно и денежку заработаете.

И пока я немедленно выпил, дети отреверсили! Подсказал, им, правда, что нужно найти функцию в упдатере, которая отвечает за соединение с интернетами, а остального не подсказывал.

Суть

Довольно быстро нашли в Names в IDA нужную функцию WinHttpOpen, а в коде нужный кусок:

call    ds:WinHttpOpen
mov     ecx, eax
mov     [ebp+var_12C0], ecx
cmp     ecx, ebx
jnz     short loc_4179B8
call    ds:GetLastError
mov     [ebp+wParam], eax
mov     [ebp+var_12A9], bl
jmp     loc_417E28

И догадались, что нужно заnop’ить инструкцию JNZ по следующему адресу:

0041799F JNZ <addr> --> NOP NOP

в байт-кодах:

0041799F 7517 --> 9090

Догадались, что экзешник нужно пропатчить в двух местах:

"C:\Users\<имя_пользователя>\Application Data\Foxit Software\Addon\Foxit Reader\FoxitReaderUpdater.exe"
"C:\Program Files (x86)\Foxit Software\Foxit Reader\FoxitUpdater.exe"

Причем, по первому пути FoxitReaderUpdater.exe может отсутствовать до первого запуска FoxitReader.exe и в дальнейшем учли это в патче 🙂

Проверка

ФАНФАРЫ!

Предупреждение

Все-таки чтоб все хорошо сработало, рекомендую нижеследующий патч применять сразу после установки, и в самом установщике снять галочку Запустить Foxit Reader. Все-таки дети делали, а я всего проверить не могу.

Патч на NSIS

Естественно, сразу же отправил ребят сделать тогда уж и автопатч на NSIS, по примеру:

по примеру:

Патч на NSIS (с возможностью отмены). (копия)

Они его даже немножечко улУчшили и углУбили, например, перед патчем убивают все процессы, которые могут помешать:

Macro KillProc

Var /GLOBAL "PROC0"
Var /GLOBAL "PROC1"
Var /GLOBAL "PROC2"
StrCpy $PROC0 "FoxitReader.exe"
StrCpy $PROC1 "FoxitUpdater.exe"
StrCpy $PROC2 "FoxitReaderUpdater.exe"

...

;kill processes
!insertmacro KillProc $PROC0
!insertmacro KillProc $PROC1
!insertmacro KillProc $PROC2

И выводят в конце процесса readme для пользователя, если тот захочет воспользоваться восстановлением вручную. Пример readme:

Updater changed 2023.04.19 5:46:09

Manual restore original files:

If you wish restore patched files manually, copy:

C:\Program Files (x86)\Foxit Software\Foxit Reader\FoxitUpdater.exe.2023041954609.bak in C:\Program Files (x86)\Foxit Software\Foxit Reader\FoxitUpdater.exe and in C:\Users\Korak\AppData\Roaming\Foxit Software\Addon\Foxit Reader\FoxitReaderUpdater.exe

You may run Foxit Updater Disable Patch for automatic restore.

Скачать патч

Репозиторий на GitHub
Скачать патч

Мой личный вывод

Пацаны вааще ребята, почти без подсказок во всем разобрались, и им еще 14. И первые деньги программированием заработали (и плюс я свои).

Охуеть, мы не умрем, в смысле как вид! Всякие пердевшие в фукуяму идут нахуй! И в новостях и политике подростки все понимают.

NSIS: Удалить каталог полностью с файлами и подкаталогами (RMDir)

Синтаксис:

RMDir [/r] [/REBOOTOK] directory_name

Удалить указанный каталог (полный путь без подстановочных знаков). Без /r каталог будет удален только в том случае, если он полностью пуст. Если указан параметр /r, каталог будет удален рекурсивно, поэтому будут удалены все каталоги и файлы в указанном каталоге. Если указан параметр /REBOOTOK, любой файл или каталог, которые не удалось удалить во время процесса, будут удалены при перезагрузке — если какой-либо файл или каталог будут удалены при перезагрузке, будет установлен флаг перезагрузки. Флаг ошибки устанавливается, если какой-либо файл или директория не могут быть удалены.

Пример:

RMDir $INSTDIR
RMDir $INSTDIR\data
RMDir /r /REBOOTOK $INSTDIR
RMDir /REBOOTOK $INSTDIR\DLLs

Обратите внимание, что текущий рабочий каталог (с экзешником) нельзя удалить. Текущий рабочий каталог устанавливается SetOutPath. Например, следующий пример не удалит каталог:

SetOutPath $TEMP\dir
RMDir $TEMP\dir

В следующем примере удастся удалить каталог:

SetOutPath $TEMP\dir
SetOutPath $TEMP
RMDir $TEMP\dir

Предупреждение: использование RMDir /r $INSTDIR в деинсталляторе небезопасно. Хотя это маловероятно, пользователь может выбрать установку непосредственно в папку Program Files, и поэтому эта команда сотрет всю папку Program Files, включая другие программы, которые не имеют ничего общего с установленной программой.

Доступны решения для более безопасного простого удаления только тех файлов, которые были установлены установщиком.

Перевод: Kolyan Maloy aka Dzhan for tolik-punkoff.com

Источник: NSIS Wiki