Дурак 6.2

Разбирая старые архивы на сервере нашел прикольную карточную мультиигру.

Дурак

— Албанский дурак
— Армянский дурак
— Безкозырный дурак
— Большой дурак
— Верю не верю
— Двухкозырной дурак
— Дорожный дурак
— Занудный дурак
— Козырной дурак
— Королевский дурак
— Круговой дурак
— Магаданский дурак
— Наваленный дурак
— Невидимый дурак
— Оборотный дурак
— Отбойный дурак
— Очковый дурак
— Переводной дурак
— Переводной дурак 2
— Погонный дурак
— Подкидной дурак
— Покерный дурак
— Простой дурак
— Пустой дурак
— Трешка
— Чешский дурак
— Чукотский дурак
— Японский дурак

Пасьянсы

— Баян
— Дважды два
— Джокер
— Елочки
— Желание
— Карлтон
— Коко
— Колодец
— Короли
— Косынка
— Лабиринт
— Монте-Карло
— Основание
— Паганини
— Память
— Парад
— Пары
— Паук
— Перекресток
— Пирамида
— Платок
— Секрет
— Солитер
— Старый друг
— Тройка
— Узник
— Улица
— Улицы
— Часы
— Чередование
— Шестерки

Другие игры

— Безик
— Бура
— Восьмерки
— Девятка
— Деберц
— Домино
— Кинг
— Лото
— Марьяж
— Осел
— Очко
— Пикет
— Покер
— Полиньяк
— Пропущенка
— Пьяница
— Сапер
— Терц
— Тузату
— Ураган
— Червы
— 31

Гадания

— Пирамидка
— Дюжина
— Ближайшая судьба
— Чатарунга

Прочее

— Множественные параметры настроек, количество, стиль и интеллект игроков
— Возможность играть с реальными игроками по сети.
— Лекарство (есть в комплекте, 00.REG+любой код для регистрации)
— Лицензия: SHAREWARE, но автор исчез, так что удовольствия никто не испортит.

Скачать

RAR-архив с Mega.Nz

C#: Учебное задание. Конвертер температур Кельвин — Цельсий — Фаренгейт

Скриншоты



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

1. Создаем три поля ввода типа InputDigitControl Поля надо назвать соответственно idcC, idcK и idcF для значений в цельсиях, кельвинах и фаренгейтах.

2. Создаем три переменных в коде формы, они будут флагами, показывющими в каком поле происходит ввод:
bool enC = false; bool enK = false; bool enF = false;

3. Для всех полей прописываем общее событие типа Enter idc_Enter

4. В обработчике события захватываем текущий контрол в отдельную переменную:
InputDigitControl idc = (InputDigitControl)sender;

5. Вытаскиваем последний символ в имени контрола:
string fldID = idc.Name.Substring(3, 1);

6. Организуем switch, устанавливающий флаги

switch (fldID)
{
    case "C":
        {
            enC = true;
            enK = false;
            enF = false;
        }; break;
    case "K":
        {
            enC = false;
            enK = true;
            enF = false;
        }; break;
    case "F":
        {
            enC = false;
            enK = false;
            enF = true;
        }; break;
}

Копия функции целиком на PasteBin

7. Событие типа Changed тоже назначаем одно для всех контролов.

8 Внутри обработчика события анализируем флаги, производим расчеты и выводим результаты.
Копия функции целиком на PasteBin

Ввод чисел

С помощью моего компонента InputDigitControl

Формулы для перевода температур

C2K:
K = C + 273.15

C2F:
F = C * 9.0 / 5.0 + 32.0

K2C:
C = K - 273.15

K2F:
F = (K - 273.15) * 9.0 / 5.0 + 32.0

F2C:
C = (F - 32.0) * 5.0 / 9.0

F2K:
K = (F - 32.0) * 5.0 / 9.0 + 273.15

Скомпилированный файл

На GitHub

Исходники проекта

На GitHub

AspiRin — Demo 2005

Опять нашел в архивах чудесное, вот первая и третья песня полюбому понравятся Мише В. Выкладываю на всеобщее оборзение, хуле. Группа Аспирин (ex-Гвалт), Костомукша.

Внаютубе
В Телеграм
В Телеграм MP3 в ZIP-архиве

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

Asus 7553M, если перестала запускаться Windows 7

Возможно, слетели настройки BIOS (вернулись к дефолтным), обычно тогда при загрузке сразу выбрасывает в BIOS, если не выбрасывает, а появляется синий экран, на котором ругаются на ACPI: «The BIOS in this system is not fully ACPI compilant», и, возможно ошибка с кодом STOP:000000A5 то в BIOS надо зайти и проверить:

1. Security --> Secure boot menu --> Secure boot установить в Disable, сохранить (F10), перезагрузиться, войти в BIOS опять.
2. Boot --> Launch CSM выставить в Enabled. Cохранить (F10), перезагрузиться, войти в BIOS опять.
3. Advancend --> OS Selection выставить в Windows 7. Cохранить (F10), перезагрузиться.

Пример синего экрана:

Linux: Неинтерактивный пользователь

Что это, зачем, и как это может понадобиться?

Если мы посмотрим на список пользователей в Linux сразу после установки, мы, кроме root, nobody (пользователя с максимально ограниченными правами) и своего пользователя, увидим множество пользователей, созданных под конкретную подсистему или задачу, например: bin, daemon, adm, operator, games, sshd, usbmux, sddm, pulse, apache, messagebus и т.д.

Для чего это сделано? Если кратко — для безопасности, под каждую задачу, от запуска отдельной программы, до управления отдельной подсистемой, создается отдельный пользователь, который, даже если его взломает злоумышленник, не сможет получить доступ ко всей системе. Т.е. хакнули пользователя apache, и у нас сдох только web-сервер Apache, админ нашел сбой, пропатчил, починил, перезапустил нужное — и все опять работает.

А почему пользователь неинтерактивный? Опять же, для безопасности, ваш пользователь, или же root, интерактивные, они имеют доступ к терминалу, т.е. могут вводить команды и запускать другие программы из терминала/консоли. Но и в самом терминале и в программах, может обнаружиться ошибка, которая позволит получить пользователю получить нужные права, чтоб в системе навредить. Для того пользователю с ограниченными задачами и отключают доступ к терминалу, т.е., делают его неинтерактивным.

Как создать неинтерактивного пользователя?

Итак, начнем это делать на нашей тестовой системе.
Для начала создадим группу для тестовых пользователей, стандартной командой addgroup. Выполнять надо из-под root (или через sudo, зависит от вашей системы), больше не буду на этом останавливаться.

groupadd testgrp

С помощью useradd

1. Самый простой способ:

useradd -g testgrp -d /dev/null -s /bin/false testusr1

где:
-g testgrp — задать основную группу пользователя (вышесозданную testgrp)
-d /dev/null — задать в качестве расположения домашнего каталога нуль-устройство (/dev/null)
-s /bin/false — установить фиктивную оболочку (/bin/false).
testusr1 — имя пользователя

Если опцию -d не указать, система укажет для пользователя домашний каталог, как подкаталог с таким же именем, как имя пользователя, в /home, хотя и не создаст его.

Это максимально неинтерактивный пользователь, у него не только установлена фиктивная оболочка (обычным пользователям устанавливают оболочку, например /bin/bash) но также не установлен домашний каталог, т.е. пользователю просто некуда входить в системе, а также не установлен пароль. С пустым паролем Linux не пустит пользователя, впрочем, об этом ниже.

Если попытаться зайти в систему от имени этого пользователя, то получим ошибку Access denied:
login as: testusr1
testusr1@192.168.1.133's password:
Access denied
testusr1@192.168.1.133's password:

2. Если неинтерактивному пользователю все-таки нужен домашний каталог, например, для хранения конфигураций запускаемых от его имени программ, то домашний каталог вполне можно создать:

useradd -g testgrp -m -d /home/testusr2 -s /bin/false testusr2

К опциям -g, -s и -d добавляется опция
-m — автоматически создать пользовательский каталог

С помощью скрипта adduser

Скрипт adduser, это оболочка над программой useradd, который позволяет указать параметры нового пользователя в диалоговом режиме

Пример создания неинтерактивного пользователя:

Простыня с переводом под катом

Удобно, красиво, не надо вручную писать опции в командной строке, хотя простыня. Но можно и так, главное, не забыть про фиктивную оболочку /bin/false и, при надобности, пустой пароль.

О «пустых» паролях

Каждому пользователю в Linux, который хочет получить доступ к терминалу или графической оболочке, должен быть присвоен пароль. Можно провести наглядный эксперимент.

1. Создадим с помощью скрипта adduser нового пользователя testusr4, только оставим ему некоторые параметры по умолчанию, т.е. домашний каталог и оболочку /bin/bash, изменим только группу на testgrp и зададим ему пароль.

2. Попробуем залогиниться:

login as: testusr4
testusr4@192.168.1.133's password:
testusr4@smallwolfie:~$

Получилось!

3. Выйдем из учетной записи и отредактируем файл /etc/shadow в котором хранятся пароли пользователей (редактируем от имени root):
— Найдем строчку, содержащую информацию о пароле пользователя testusr4:

testusr4:$5$eUbahK8EwlYtD1Nw$ZCH7sMkg.fTwe/KsqfBh6.xrlo3K4V6WinyiqWhW5.8:19689:0:99999:7:::

— Приведем ее к такому же виду, что у пользователя, например, testusr1:

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

login as: testusr4
testusr4@192.168.1.133's password:
Access denied

Подробнее прочесть о формате файлов /etc/passwd и /etc/shadow Копия в PDF

Как отобрать интерактивность у уже созданного интерактивного пользователя?

Предположим, у нас есть интерактивный пользователь testusr5 и эту интерактивность надо пользователю отключить:

1. Лишить возможности пользователя входить по паролю, как это было описано выше.
2. Отредактировать файл /etc/passwd, найдя строку пользователя:

testusr5:x:1016:1008:,,,:/home/testusr5:/bin/bash

И заменить указанную оболочку (/bin/bash) на фиктивную (/bin/false):

testusr5:x:1016:1008:,,,:/home/testusr5:/bin/false

Можно заменить запись о домашнем каталоге на /dev/null, если он не нужен, а сам каталог потом удалить с диска:

testusr5:x:1016:1008:,,,:/dev/null:/bin/false

Пользователь «одного скрипта»

Интересно, что пользователю в качестве оболочки можно подсунуть не только фиктивную оболочку или обычный shell (bash, sh, zsh и т.д.) но и конкретный скрипт. Тогда, при входе этого пользователя в систему, будет выполняться только этот самый скрипт. Главное, чтоб у пользователя были права на его исполнение.

Примечание: Хоть это уже не совсем «неинтерактивный» пользователь, но ради обобщения, пусть будет тут.

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

Пример:

1. Создадим интерактивного пользователя с домашним каталогом, например, testusr6, не забыв задать пароль.
2. Залогинимся от имени этого пользователя
3. В домашнем каталоге напишем простой тестовый скрипт и дадим ему права на исполнение от имени этого пользователя.

#!/bin/bash

echo "Hello, world!"
echo "Press ENTER..."
read

4. Выйдем из системы этим пользователем, и от имени root отредактируем /etc/passwd таким образом.

Было:

testusr6:x:1017:1008:,,,:/home/testusr6:/bin/bash

Стало:

testusr6:x:1017:1008:,,,:/home/testusr6:/home/testusr6/hello

5. Теперь попробуем войти в систему от имени testusr6:

login as: testusr6
testusr6@192.168.1.133's password:
Hello, world!
Press ENTER...

После нажатия ENTER сеанс завершится.

Как подобную фичу можно использовать на практике, описано здесь: Удаленная перезагрузка сервера под управлением Linux. Перезагрузка Linux без ввода пароля. (копия)

Сбой при пересборке ядра Linux (Puppy Slacko)

Прямая ссылка

Сбой при пересборке ядра Linux (Puppy Slacko) без включения поддержки UnionFS в ядре.

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

Впрочем, если кому-то вдруг понадобится почитать, где именно это в реале встретилось, то вот (копия)

BAT/CMD: Shred и Random Renamer

Предыдущие заметки по теме

1. Shred для Windows (копия)
2. Устранил финальный недостаток SHRED под Windows в BAT-файле (копия)
3. Random Renamer (копия)

Преамбула

В [2] описал недостаток утилиты shred, а именно: затирая файл она никак не меняет его имени, потому, если вы shred‘ом удалили файл, например, с именем Путин бомба взрыв чеченцы.doc, содержимое файла затрется, а название останется.

Впрочем, там же описал недостаток и получения случайного имени файла стандартными средствами BAT/CMD: Имя временного файла весьма характерное, при анализе диска будет видно, что кто-то скриптом пользовался. Как сделать нормальные случайные имена файлов в CMD (вида lfcx16.tmp, например) без внешних утилит, я пока не понял.

Впрочем, да, без PowerShell или JS/VBS стандартными средствами CMD/BAT получить нормальное случайное имя файла сложно, так что написал простенькую утилиту Random Renamer [3], которую, впрочем, писал немного для другого, но в [3] обещал пример, как ее можно использовать со shred в BAT-файле.

Итоговый BAT-файл

1. Отключаем режим вывода команд:

@echo off

2. Проверяем, чтобы в первом параметре BAT-файла были указаны маска или имя файла, иначе насерет в консоль ошибками и будет некрасиво:

IF "%1" EQU "" goto paramerr

3. В конце BAT-файла дописываем метку :paramerr и вывод сообщения об ошибке:

:paramerr
echo First parameter must be file name or file mask!
echo e.g. rrshred.bat *.txt
echo e.g. rrshred.bat text.txt

4. Генерируем имя для списка файлов, которые будут переименованы и обработаны shred:

set RLST=%TEMP%\%RANDOM%.%RANDOM%

5. Переименовываем файлы в текущем каталоге Random Renamer’ом и отправляем вывод RR в список файлов:

rr -m %1 -v >%RLST%

где:
-m %1 — задание маски переименуемых файлов
-v — включить вывод процесса переименования

Вывод производится на STDOUT, потому перенаправляем его во временный файл (>%RLST%).

Пример содержимого файла (X:\Temp\15158.18655):

Rename files...
Z:\Test1.txt --> 1.txt --> tuz3v4t3.ovw OK.
Z:\Test2.txt --> 2.txt --> npk5b7jn.q12 OK.
Z:\Test3.txt --> 3.txt --> sqtn63cl.dwa OK.
Z:\Test4.txt --> 4.txt --> m371e448.q12 OK.

Found files: 4
Renamed files: 4
Error files: 0

6. В цикле вытаскиваем имена переименованных файлов из файла-списка:

FOR /F "tokens=5,5 delims= " %%i in (%RLST%) do (

	[внутри цикла]

)

Справка по команде FOR BAT-файла (копия в PDF)

Внутри цикла:

1. Вызываем shred для каждого файла из списка:

shred -n 3 -z %%i

где:

-n 3 — затереть случайными данными файл в 3 прохода
-z — сделать дополнительный проход, затерев содержимое файла нолями (символом с кодом 0x00h)

2. Удаляем файл:

del %%i

После цикла затираем и удаляем сам файл со списком файлов, имя которого в %RLST%:

shred -n 3 -z %RLST%
del %RLST%
exit /b

Команда exit /b завершает работу BAT-файла, параметр /b указывает, чтобы по выходу из BAT-файла, командный процессор не был бы закрыт.

Ниже в BAT-файле будет идти метка :paramerr

BAT-файл целиком

@echo off

IF "%1" EQU "" goto paramerr

SET RLST=%TEMP%\%RANDOM%.%RANDOM%

rr -m %1 -v >%RLST%

FOR /F "tokens=5,5 delims= " %%i in (%RLST%) do (

	shred -n 3 -z %%i
	del %%i

)

::remove list of files
shred -n 3 -z %RLST%
del %RLST%
exit /b

:paramerr
echo First parameter must be file name or file mask!
echo e.g. rrshred.bat *.txt
echo e.g. rrshred.bat text.txt

На GitHub

Как пользоваться

1. Скачать rr + shred + rrshred.bat с GitHub (ZIP-архив)
2. Распаковать архив в один каталог, находящийся в переменной окружения %PATH%, например, C:\Windows.
3. Пример вызова: rrshred.bat *.txt — затрет и удалит файлы *.txt в текущем каталоге.

Зины

Девушка с lj.rossia.org выложила зины, кто не знает, это такие самиздатовские журналы, распространяющиеся бесплатно, или за совсем уж малую копеечку, чтоб печать окупить.

Оказывается, до сих пор существуют, правда она выложила арт-зины (которые ближе к чистому искусству), а я решил присоединиться к теме, выкладываю несколько панковских зинов годов 2000-х-2010-х

PunkWay #7

Скачать с Mega.Nz (7z, PDF, 16 Мб) + bonus, картинки и книга «Психология допроса»

Питер Гелдерлоос — АНАРХИЯ РАБОТАЕТ

Питер Гелдерлоос — АНАРХИЯ РАБОТАЕТ: Скачать с Mega.Nz (PDF, 2 Мб)

Борьба за наши жизни. Учебник по анархии.

Скачать с Mega.Nz (12 Мб)

PunkZine

Пока самый ебнутый из найденных панк-зинов.

Скачать PunkZine с Mega.Nz (PDF, 4 Мб)

Сосна, в которую попала шаровая молния.

Давно уже, как минимум лет 10 назад.
Друзья, наконец, сходили и сфоткали.
Ее здесь «панкушкой» называют.
Ветви, кроме как на верхушке, не растут.

Хотя я бы назвал Венедиктовым.
Все-таки больше на него похожа.

Крупный вариант