Compare commits

...

No commits in common. 'master' and 'study' have entirely different histories.

@ -1,39 +0,0 @@
Creative Commons CC0 1.0 Universal
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER.
Statement of Purpose
The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent owner(s) (each and all, an "owner") of an original work of authorship and/or a database (each, a "Work").
Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works ("Commons") that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes. These owners may contribute to the Commons to promote the ideal of a free culture and the further production of creative, cultural and scientific works, or to gain reputation or greater distribution for their Work in part through the use and efforts of others.
For these and/or other purposes and motivations, and without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights.
1. Copyright and Related Rights. A Work made available under CC0 may be protected by copyright and related or neighboring rights ("Copyright and Related Rights"). Copyright and Related Rights include, but are not limited to, the following:
i. the right to reproduce, adapt, distribute, perform, display, communicate, and translate a Work;
ii. moral rights retained by the original author(s) and/or performer(s);
iii. publicity and privacy rights pertaining to a person's image or likeness depicted in a Work;
iv. rights protecting against unfair competition in regards to a Work, subject to the limitations in paragraph 4(a), below;
v. rights protecting the extraction, dissemination, use and reuse of data in a Work;
vi. database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, and under any national implementation thereof, including any amended or successor version of such directive); and
vii. other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, and any national implementations thereof.
2. Waiver. To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer's Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer's heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer's express Statement of Purpose.
3. Public License Fallback. Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer's express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer's Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "License"). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer's express Statement of Purpose.
4. Limitations and Disclaimers.
a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document.
b. Affirmer offers the Work as-is and makes no representations or warranties of any kind concerning the Work, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non infringement, or the absence of latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law.
c. Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work.
d. Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work.

@ -1,7 +1,20 @@
Настоящий Поридж клаб
Если вы хотите исправить ошибку на [поридж клабе](https://poridge.club) и хотите что-то исправить — пуште в ветку master.
Если вы хотите написать [статьи](https://poridge.club/activism.html) — пожалуйста, все статьи кидайте в ветку blog.
Статьи Poridge.Club
---------------------------------------------------------------
Используйте файл shablon.html для написания статьи.
Инструкции
----------
### [Обход блокировки TOR в России](blog/tor-browser-in-russia.md)
### [Настройка Mumble для poridge.club](blog/mumble.md)
### [Инструкция по сборке Coreboot для ThinkPad T60 с видеокартой ATI](blog/t60-guide.md)
Техническое
-----------
### [Защита данных на телефоне с оффлайн вектором атак](blog/mobile-offline.md)
* * *

@ -1,172 +0,0 @@
<!DOCTYPE html>
<html lang="ru">
<head>
<link rel="icon" type="image/png" href="favicon.png">
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Поридж Клаб</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="css/picnic.min.css">
<style>
aside a.top {
font-size: 0;
position: fixed;
bottom: 0;
font-weight: bold;
width: 180px;
padding: 0.6em 0;
margin-bottom: 0;
border-radius: 0.3em 0.3em 0 0;
transition: all 0.3s ease;
}
aside a.top.visible {
font-size: 1em;
}
aside .links a.button {
text-align: left;
}
@media all and (max-width: 1000px) {
aside a.pseudo.top {
background: rgba(255, 255, 255, 0.8);
width: 100%;
left: 0;
text-align: center;
z-index: 100;
}
}
.documentation article>h2 {
margin: -2em 0 0.6em;
padding: 3em 0 0;
line-height: 1;
}
.documentation article>h3 {
margin-bottom: 0.6em;
}
.documentation aside h2 {
margin-top: 0;
padding: 1.25em 0;
line-height: 1;
}
.documentation aside a.pseudo {
color: #0074d9;
margin: 0;
}
.documentation>section {
background: #fff;
text-align: left;
width: 90%;
max-width: 960px;
margin: 0 auto;
padding: 80px 0 0;
}
.documentation article>h1 {
margin: 0;
padding: 0.6em 0;
font-size: 2em;
line-height: 1.5;
}
.documentation aside a.button {
display: block;
}
.documentation pre[class*="language-"] {
margin-top: 10px;
margin-bottom: 40px;
}
.documentation .index pre {
margin: 0;
font-size: 0.9em;
}
</style>
</head>
<body>
<nav class="fedi">
<!-- <font size="1.5em"> -->
<a href="https://poridge.club" class="brand">
<img class="logo" src="favicon.png" alt="favicon">
<span>Poridge.Club</span>
</a>
<!-- responsive-->
<input id="bmenub" type="checkbox" class="show">
<label for="bmenub" class="burger pseudo button">меню</label>
<div class="menu">
<a href="service.html" class="pseudo button">Сервисы</a>
<a href="https://status.poridge.club/status/poridgeclub" class="pseudo button">Статус</a>
<a href="about.html" class="pseudo button">О проекте</a>
<a href="contact.html" class="pseudo button">Связаться</a>
<a href="donate.html" class="pseudo button">Поддержать</a>
<!-- <a href="info.html" class="pseudo button">Подробнее</a> -->
</div>
<!-- </font> -->
</nav>
<main id="home" class="documentation">
<section class="flex">
<article class="four-fifth-1000">
<header>
<h2>О PoridgeClub по чесноку</h2>
</header>
</article>
<div class="left-text">
<p>
Жил был маленький админ. Он ещё не знал, что он станет админом, он
просто жил не тужил: играл в игры, гулял с друзьями, веселился, в общем
был достаточно беззаботным ребёнком. <br>
Но однажды к нему в дом пришло злое и ужасное существо — ОГЭ, а за
ним и ЕГЭ, и маленький админ призадумался — как же ему справляться с
этой бедой, поскольку победить этих двух ужасных монстров можно было
только имея сильный интерес к чему-либо из школьных предметов. И
начал маленький админ разбираться — что же ему нравится-то по
жизни. И открыл он для себя мир IT. Ну как открыл, он постоянно в
нём варился — то какой-нибудь .bat файл по гайдам из интернета
напишет, то в hosts винды липовые ссылки вставит, чтобы программу
крякнуть и всё в таком духе. <br>
Ну и решил маленький админ учиться на IT специалиста, но учёба
ему не нравилась — это было совсем не то, чего хотел маленький
админ. И только поучившись в ВУЗе пару лет, маленький админ понял,
что для того, чтобы <i>по-настоящему</i> познать IT ему надо
много тренироваться — изучать что-то для себя, пытаться работать с
разными программными решениями и прочее-прочее. Ну и стал маленький
админ из болота лени, незнаний и безалаберности по чуть-чуть
выползать и сделал он проект Поридж Клаб, так как сам он тот ещё
поридж-куколд, а не гигачад с квадратной челюстью. <br>
Маленький админ очень надеется на то, что он не только мало-помалу
прокачивает свои навыки и знания, но ещё и делает что-то полезное
в этом мире, а потому все ресурсы Поридж Клаба отдаёт в бесплатный
доступ для любого желающего.</p>
<br>
<br>
<p class="center">
Так как маленький админ выступает за свободу слова и
самовыражения, а потому и свои проекты он старается делать под
этой эгидой :3
</p>
</div>
</section>
</main>
<section>
<hr>
<div class="center">
Сайт доступен в
<a href="http://cmry5fofj5vhmbyx3tqast5yjebin44o37ffq5ocuwdgjbmvf6qvllqd.onion">Tor</a>
| Дизайн — <a href="https://tolstoevsky.ml/">Tolstoevsky</a>
</div>
</section>
</body>
</html>

@ -0,0 +1,50 @@
Защита телефона с offline вектором атак
=======================================
"Есть у меня вопрос о защите данных на мобильном устройстве. Да, я знаю, оно не очень безопасно, но увы, приходится пользоваться. Так вот, вектор атаки. Сижу я на работе, ничего не делаю, то есть никого не трогаю, и тут залетают в офис "маски-шоу" и изымают устройства, в том числе телефон. Если с ПК всё в основном понятно, luks в помощь, то какие варианты защиты мобильного телефона под Android/LineageOS вообще возможны в таком случае?
Начну, пожалуй, хоть и издалека, но с самого главного. Если в отношении информации на твоих носителях проводится оффлайн-атака, то ты уже в полной жопе, да не в простой, а в такой, которая на goatse запечатлена. Однако на глубину погружения в эту самую жопу можно влиять. Не очень значительно, но всё же можно. О чём мы и будем вести речь.
Сразу очень хочется добавить пару оговорок к "с ПК всё понятно, luks в помощь". Следует помнить, что шифрование работает только тогда, когда зашифрованный контейнер закрыт. Иначе есть куча способов выковырять ключи из оперативки. Да и любое устройство, побывавшее в руках врага, считается скомпрометированным. Даже если противник не смог вскрыть шифрование, он может залить модифицированный бут, ну а далее атака evilmaid в классическом её проявлении. Вариант выхода из этого я вижу такой: в первую очередь, бэкапы. Во-вторых, если (не когда, а если) тебе удалось вернуть устройства, то оставляешь от них только носители информации. Носители в режиме ридонли подключаешь к оффлайн-системе, сливаешь с них только требуемую информацию и утилизируешь с остальным скомпрометированным железом. Дорого, долго, геморройно, но безопасность сейчас — роскошь. Увы.
Теперь об андроидах. Первый и внезапно основной бастион безопасности — это пароль на блокировку экрана. Очевидно, никакой биометрии. Распознавание лица, отпечатки пальцев, скан жопы — забудь об этом как о страшном сне. Только пароли, только хардкор. В идеале — буквенные, если совсем ленивый — пин-код на 8+ символов. Никаких графических ключей. Вот [здесь](https://tjournal.ru/flood/41924-metod-schityvaniya-pin-koda-s-pomoshchyu-teplovizora-srabotal-dlya-smartfonov) понятно написано, почему графические ключи и короткие пин-коды говно.
От подобного метода распознавания помогает ещё опция scramble layout (не знаю как её название локализовано, суть в том, что она перемешивает кнопки на заблокированном экране), но её можно использовать только в дополнение к длинному пину, не вместо него.
В андроидах есть такая функция, как отображение введённого символа в пароле в течение секунды или около того. Обычно она включена, если память не врёт. Я думаю, что любой человек, который дочитал до этого места её давным-давно выключил.
Теперь о шифровании. В андроиде было реализовано два вида шифрования: full disk encryption, оно же FDE и file-based encryption, оно же FBE. FDE было широко распространено во времена шестой версии андроида, сейчас же в большинстве устройств работает FBE. Жопоболь вызывает тот факт, что с FBE нельзя перейти на FDE и наоборот. Если у тебя устройство на андроиде 10+, у тебя без альтернатив FBE. Если старше, то у тебя и так всё довольно грустно с безопасностью, ибо апдейты безопасности на это старьё уже не прилетают, так что оно для рассматриваемого юзкейса непригодно.
Пару слов о FDE для того чтобы было с чем сравнивать. Примерно как в десктопном линуксе: пока не введёшь пароль, система не загрузится. Обычно это тот же пароль, что и на разблокировку экрана, но его можно изменить одной консольной командой, и вот у тебя уже два пароля — один для загрузки, другой для разблокировки. Доустанавливаем вот [эту](https://f-droid.org/en/packages/org.nuntius35.wrongpinshutdown/) замечательную утилиту, которая позволяет выполнять заранее заданную команду при неверно введённом пароле, и при брутфорсе получаем совершенно непредсказуемые последствия для атакующего на наш выбор, начиная от ребута (а мы помним, что для загрузки у нас другой, более сложный пароль) до затирания ключей дешифровки и превращения данных в невосстановимую кашу. Даже терморектальный криптоанализ не поможет. Но при столь хардкорном подходе нельзя забывать о бэкапах.
Теперь о FBE. Если у тебя устройство на андроиде 10 или выше, то FBE у тебя уже есть, за исключением случаев кривой прошивки с 4PDA, портированной похмельным Васяном. Там нередко отключают шифрование в целях повышения совместимости, но не всегда. Отличается этот подход к шифрованию данных тем, что у тебя теперь один пароль. При перезагрузке система загружается, но до первого ввода пароля разблокировки работает в ограниченном режиме (приём звонков, будильник, ну и ещё там что-то по мелочи). Не шифрует метаданные. Криптографически не хуже FDE, но комплексно предоставляет меньший уровень защиты взамен на чуть большее удобство. Также, как и в случае FDE, рекомендую поставить Wrong Pin Shutdown. Я не нашёл способа удалить криптоключи FBE с его помощью, однако ребутнуть телефон он всё ещё в силе, а это позволяет "закрыть" пользовательские данные от атакующего. Я уверен, что способ удаления ключей FBE существует, думаю, что если поискать, то можно найти.
Правда, стоит отметить и не забывать, что если служители авторитарного режима поймут, что произошло безвозвратное удаление (не блокировка) криптоключей, то пиздюлей будет не избежать. Стоит делать на это поправку в своей модели угроз и при принятии решения о вайпе устройства.
Коротко о защите содержимого флешки: ничего лучше криптоконтейнеров предложить не могу. Сам не использовал, но из того, что есть в F-droid можно попробовать вот [тут](https://f-droid.org/en/packages/com.sovworks.edslite).
В самом начале я сказал, что шифрование работает только когда шифроконтейнер закрыт. В случае андроида это тоже актуально, поэтому я уделил столько внимания тому, как бы сбросить ключи шифрования из оперативной памяти в случае атаки путём ребута. Это важно, так как это максимально достижимый уровень защиты в полевых условиях, но не факт, что так получится сделать. Так и возникает вопрос как нам жить, если условный контейнер расшифрован, но прикрыт заблокированным экраном. Именно такая ситуация на деле является наиболее частой. В этом случае ущерб минимизируется тремя совершенно простыми действиями в штатных настройках андроида:
1. Отключить отображение уведомлений на заблокированном экране или как минимум скрыть информацию в уведомлениях.
2. Отключить режим отладки.
3. При подключении к ПК выставить режим по умолчанию "только зарядка".
Эти три шага позволяют защититься от большей части атак на заблокированное расшифрованное устройство.
Если речь идёт об атаке с помощью комлексов типа Cellebrite и аналогов, то они в основном работают с разблокированными девайсами. Возможно, некоторые разновидности содержат эксплойты для снятия блокировки экрана, но от них спасают только своевременные апдейты. Ну и очевидное "не сообщать пароли третьим лицам".
Если же смартфон со снятой блокировкой экрана попал в руки тем самым третьим лицам, увы, уже не спасёт ничего. Дополнительные пароли на отдельные приложения помогают максимум от любопытных соседей. Файлы, пересланные в мессенджерах кэшируются в открытом виде, сообщения в большинстве случаев хранятся обычным текстом.
Недавно прошла новость под заголовком "Подозреваемый смог удалённо стереть улики с телефона через функцию Google". Моё мнение по данному поводу весьма очевидно: во-первых, в самой новости написано, что обычно для противодействия такому применяются специальные меры, которых в том случае почему-то не было. Во-вторых, вряд ли данные удалялись таким образом, что их нельзя было восстановить. В-третьих, гугл по официальному запросу выдаст всю информацию, которая у него есть на пользователя. Нередко в числе выдаваемой информации будут и логи переписок. Whatsapp, например, сохраняет всю переписку открытым текстом в гуглооблако. Вообще, гуглосервисы — это один большой троян, держать их на личном устройстве, а тем более с критичной информацией — редкостная глупость.
Сделаю акцент ещё на тот момент, что использовать нужно только чистые Android/LineageOS. Никаких вендорских прошивок нашлёпанных пьяным китайцем. С выбором кастома также нужно быть осмотрительным. Если устройство есть в списке официально поддерживаемых на [lineageos.org](https://lineageos.org/) — считай, что в лотерею выиграл.
//Примечание администратора проекта - если вы хотите иметь **достойную** защиту вашего Android девайса, то при покупке устройства сразу же ориентируйтесь по [данному списку девайсов](https://download.lineageos.org/).
В качестве ещё одной меры защиты аккаунтов в случае, если аккаунты привязаны на номер телефона (никогда, **НИКОГДА** не привязывайте аккаунты к личному номеру), стоит поставить пин-код на сим-карту. Тогда атакующий не сможет переставить сим-карту в свой девайс и получить аутентификационные смс (которые являются в крайней степени небезопасной технологией).
Выводы. Количество действенных мер, которые пользователь может применить для защиты данных на смартфоне, у нас небольшое. Гуглосервисы должны отсутствовать, а рут присутствовать, не наоборот. Иначе ничего не получится. Надёжный пароль на локскрине, своевременные апдейты безопасности и страховка в виде перезагрузки при слишком частом вводе неверного пароля. Ну и лично моя рекомендация: не хранить на смартфоне никакой хоть чуть-чуть критичной информации. Смартфон by design не предназначен для того, чтобы быть доверенным устройством, как бы нам не хотели навязать обратное. Что-то по-быстрому загуглить, срочно связаться в крайнем случае. Всё, чего-то большего доверять смартфону лично я не рекомендую. В любом случае каждый ищет свой уровень безопасности самостоятельно.
|* Автор статьи - [about:blank](https://qoto.org/@blank)

@ -0,0 +1,71 @@
Mumble
======
Mumble — [кроссплатформенная](https://farside.link/wikiless/wiki/Кроссплатформенное_программное_обеспечение) и [свободная](https://farside.link/wikiless/wiki/Свободное_программное_обеспечение) альтернатива Discord и TeamSpeak.
Инструкция
----------
Если вы **внимательно** прочли эту инструкцию, у вас не должно возникнуть никаких проблем.
1. Скачиваем Mumble [здесь](https://www.mumble.info/downloads/)
**Проблемы с Windows 11**
Так как Windows 11 — это относительно свежий продукт, то с ним бывают проблемы при использовании некоторых программ, и Mumble не исключение. Если у вас не проходит установка, то вы можете:
1) Скачать версию программы x86 (неважно какая у вас версия самой ОС)
2) [Скачать](https://docs.microsoft.com/ru-ru/cpp/windows/latest-supported-vc-redist?view=msvc-170) Visual C++ всех версий
В Linux Mumble есть в официальных репозиториях (скачать можно через apt, rpm, pacman).
2. Устанавливаем **только клиент**.
3. После установки и запуска появляется **мастер настройки звука**. Здесь важно **внимательно прочитать** то, что от вас просят и проверить, работает ли ваш микрофон. Если вы себя слышите во время теста — все в порядке. Обычно стандартные настройки устройств ввода и вывода работают, если Windows определила устройства по умолчанию. Если же вы не слышите себя во время теста, то можно выбрать устройства вручную.
[![Настройка аудиоустройств.](https://skobk.in/wp-content/uploads/2020/04/mumble_audio_wizard_1-300x227.png "Mumble - настройка звука")](../pictures/mumble_audio_wizard_1)
4. **Подавление эха** стоит выключить, если вы играете в наушниках.
**Приглушение** стоит выключить, если вы играете в шутеры.
В следующем окне вам нужно передвинуть ползунок в самое левое положение при котором нет проблем со звуком.
[![Настройка размера пакета.](https://skobk.in/wp-content/uploads/2020/04/mumble_audio_wizard_2-300x227.png "Mumble - настройка звука 2")](../pictures/mumble_audio_wizard_2.png)
5. Далее идёт настройка качества звука и голосовых уведомлений.
**Текст-в-речь** рекомендуется **выключить**.
**Качество** рекомендуется **высокое.**
[![Выбор качества звучания и выключение TTS.](https://skobk.in/wp-content/uploads/2020/04/mumble_audio_wizard_4_tts-300x227.png "Mumble - настройка звука 4")](../pictures/mumble_audio_wizard_3_tts.png)
6. **Настройка сертификатов.**
**ВЫПОЛНЕНИЕ ЭТОГО ПУНКТА ОБЯЗАТЕЛЬНО ДЛЯ ПОЛУЧЕНИЯ ПРАВ ДОСТУПА В ЗАКРЫТЫЕ КАНАЛЫ.** Мастер сертификатов позволяет вам создать ваш персональный сертификат (считайте — ключ от вашего ника и прав доступа) и сохранить его. Лично я не создавал отдельный сертификат, а пользуюсь тем, который Mumble мне сделал изначально (как и все мои друзья), а потому не вижу смысла лишний раз беспокоиться о чём-то, **НО** если вы хотите создать **именной** сертификат, то:
* Выбирайте «Создать сертификат» и вводите имя и емейл.
* После этого вам будет предложено сохранить его.
Рекомендую **сохранить файл в том месте, где вы его не потеряете**. Например **в облаке**.
Если вы были подключены к серверу, после создания сертификата необходимо переподключиться.
Если вы создали сертификат автоматически и хотите сохранить его или не уверены в том, что создали именной сертификат, вызовите меню «Настройки» и выберите пункт «Мастер сертификатов», дальше всё будет интуитивно понятно.
7. **Добавление сервера.**
Выберите пункт меню «Сервер», «Подключиться».
Теперь вам нужно добавить основной сервер Mumble. Нажмите на кнопку «Добавить новый» и заполните соответствующие поля.
Данные для подключения:
Название: **какое хотите**
Адрес: **poridge.club**
Порт: **64738** (стандартный)
Имя пользователя: **ваш ник** с подчёркиваниями вместо пробелов.
После этого вам нужно подключиться к серверу. Для этого выберите его в списке и нажмите «Подключиться».
8. **Регистрация
**Опциональна, если вы "просто посмотреть", но необходима, чтобы никто другой не мог зайти под вашим никнеймом.
Внимание! Если вы не создали именной сертификат как описано в пункте №4, то вам необходимо настроить сертификат заново перед регистрацией.
Убедитесь, что пункт 4 выполнен правильно и сертификат сохранен в надежном месте. Если сертификат будет потерян (переустановка системы, смена устройства), то под своим старым никнеймом вы больше не сможете зайти и админ вам в этом **НЕ СМОЖЕТ ПОМОЧЬ!**
Нажмите правой кнопкой по своему нику или выберите меню «Сам»/«Self»,  там выберите «Зарегистрировать»/«Register».
После регистрации рядом с вашим ником появится символ зарегистрированного пользователя (галочка).
* [Список статей](../activism.html)
|* [Наверх](#top)
|* [Источник](https://skobk.in/mumble/) — [skobkin](https://lor.sh/@skobkin)

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

@ -0,0 +1,175 @@
Инструкция по сборке Coreboot для ThinkPad T60 с видеокартой ATI
================================================================
Для ноутбуков ThinkPad T60 с графикой от Intel есть готовый файл прошивки от проекта Libreboot (Coreboot без проприетарных блобов), но в случае с T60 с ATI нужно ещё правильно добавить поддержку VGA BIOS из заводской прошивки, а также для каждого ноутбука T60 нужно собирать свою Coreboot прошивку.
**Эта инструкция описывает** как получить нужный бинарник для ATI графики из заводской BIOS прошивки и собрать Coreboot с его поддержкой.
В конце вы получите прошивку Coreboot на ваш T60, использующий VGA BIOS для ATI, **SeaBIOS** в качестве загрузчика, последний микрокод для процессора, **отсутствие Intel ME и полное избавление от wifi whitelist**, а также других ограничений.
(Но ваша система всё равно будет поддерживать только 3 Гб ОЗУ, это не лимит BIOS, а лимит чипсета)
#### Что потребуется:
2. ThinkPad T60 с видеокартой ATI (X1300/X1400), заводским BIOS и GNU/Linux системой
3. Программатор (например CH341A)
4. Второй компьютер, которым будем шить BIOS чип, тоже желательно на GNU/Linux
Получение бинарника
-------------------
Нам нужно получить PCI ID видеокарты и записать бинарник с VGA BIOS. Для этого нужно загрузиться в GNU/Linux систему на T60.
### Получение PCI ID
Введите команду:
`sudo lspci -nn`
Найдите в списке '`VGA compatible controller`' и запишите PCI ID устройства. Пример вывода для ATI X1300:
`VGA compatible controller [0300]: RV515/M52 [Mobility Radeon X1300] [1002:7149]`
То есть `[1002:7149]` будет PCI ID вашей видеокарты. Эти числа нужно запомнить, они пригодятся для создания config файла.
### Получение VGA BIOS
Получаем адрес где хранится VGA BIOS прошивка:
`sudo cat /proc/iomem | grep 'Video ROM'`
Теперь получим VGA BIOS при помощи команды dd. За место startaddr и lastaddr напишите вывод адреса из предыдущей команды:
`sudo dd if=/dev/mem of=vgabios.rom bs=1c skip=$((0xstartaddr)) count=$((0xlastaddr-0xstartaddr+1))`
Вы должны получить vgabios.rom размером примерно 64 КиБ.
### Проверка полученного образа
Для проверки полученного VGA BIOS воспользуемся утилитой romheaders из пакета fcode-utils (Для Arch fcode-utils, ставится из AUR).
`romheaders vgabios.rom`
Теперь сморим на вывод Vendor ID и Device ID. Они должны совпадать с PCI ID, которые мы получили ранее. Также в Class code должно быть написано VGA Display controller.
Если всё совпадает, то можете скопировать ваш vgabios.rom на компьютер, с которого вы будете перешивать ваш T60.
Вот пример вывода:
`Image 1: PCI Expansion ROM Header: Signature: 0x55aa (Ok) CPU unique data: 0x80 0xe9 0xa9 0xe3 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 Pointer to PCI Data Structure: 0x0040 PCI Data Structure: Signature: 0x50434952 'PCIR' (Ok) Vendor ID: 0x8086 Device ID: 0x27a2 Vital Product Data: 0x0000 PCI Data Structure Length: 0x0018 (24 bytes) PCI Data Structure Revision: 0x00 Class Code: 0x030000 (VGA Display controller) Image Length: 0x0080 blocks (65536 bytes) Revision Level of Code/Data: 0x0000 Code Type: 0x00 (Intel x86) Last-Image Flag: 0x80 (last image in rom) Reserved: 0x0000 Platform specific data for x86 compliant option rom: Initialization Size: 0x80 (65536 bytes) Entry point for INIT function: 0xe3af`
Подготовка к сборке Coreboot
----------------------------
Сборка Coreboot должна выполняться на машине, с которой вы будете прошивать T60. В качестве примера воспользуемся [официальной документацией.](https://doc.coreboot.org/tutorial/part1.html)
Устанавливаем необходимые пакеты (зависит от системы):
Ubuntu/Debian: `sudo apt-get install -y bison build-essential curl flex git gnat libncurses5-dev m4 zlib1g-dev`
Arch: `sudo pacman -S base-devel curl git gcc-ada ncurses zlib`
Fedora: `sudo dnf install git make gcc-gnat flex bison xz bzip2 gcc g++ ncurses-devel wget zlib-devel`
Загружаем исходный код Coreboot'а:
`git clone https://review.coreboot.org/coreboot cd coreboot `
### Собираем toolchain
Coreboot использует свой GCC и другие инструменты для сборки не зависящие от дистрибутива для избежания проблем. Для быстрой сборки воспользуемся параметром CPUS=$(nproc), иначе make запустится только с одним потоком.
`make crossgcc-i386 CPUS=$(nproc)`
Toolchain i386 используется для всех x86 и x86\_64 платформ. Предупреждаю, процесс сборки будет долгим :)
### Создание config файла
В файле конфигурации важно задать правильные настройки для VGA, иначе при загрузки вы получите черный экран.
Перед этим вам нужно скопировать ваш vgabios.rom в папку coreboot, чтобы он использовался при сборке.
Меню настройки сборки открывается командой:
`make nconfig`
**\[Внимание!\] Если Вы до этого собирали Coreboot для другой материнской платы (или для QEMU), то перед изменением конфига напишите**`make distclean`. **Если Вы собираете Coreboot в первый раз и только что скачали исходники, то это можно пропустить.**
Переходим по вкладкам и отмечаем следующее (все остальные настройки оставляем по умолчанию):
``* Mainboard - Mainboard vendor (Lenovo) ---> - Mainboard model (ThinkPad T60 / T60p) ---> - ROM chip size (2048 KB (2 MB)) ---> - (0x200000) Size of CBFS filesystem in ROM * Chipset - Include CPU microcode in CBFS (Generate from tree) ---> * Devices - Graphics initialization (Run VGA Option ROMs) ---> - [*] Re-run VGA Option ROMs on S3 resume - [*] Load Option ROMs on PCI devices - Option ROM execution type (Native mode) ---> - Display ---> + [*] Set framebuffer graphics resolution + framebuffer graphics resolution (1024x768 64k-color (5:6:5)) ---> + Framebuffer mode (VESA framebuffer) ---> - [*] Add a VGA BIOS image - `"(vgabios.rom)"` VGA BIOS path and filename - (**XXXX,XXXX**) VGA device PCI IDs **<-- ВАШ PCI ID через ',' (не через ':' )** * Payload - Add a payload (SeaBIOS) - SeaBIOS version (1.14.0) - [*] Use LZMA compression for payloads ``
**Мы создали самый простой конфиг:**2. Выбрали материнскую плату для ThinkPad T60/T60p (они используют общие настройки)
3. Размер прошивки 2 Мб
4. Включили микрокод для процессора (хотя говорят что на T60 можно и без него, но я не проверял. Первый раз советую собрать с ним, а потом уже можете экспериментировать :) )
5. Добавили vgabios.rom, включили его инициализацию и выставили разрешение
6. В качестве загрузчика (payload) используем BIOS (SeaBIOS)
**Не забудьте указать ваш PCI ID в пункте VGA device PCI IDs**
И наконец, собираем Coreboot командой:
`make `
В папке `coreboot/build/` вы найдёте ваш `coreboot.rom`
Подготовка T60
--------------
Для прошивки нужна утилита flashrom. Установите её из репозитория вашего GNU/Linux дистрибутива.
### Разбор ноутбука
Поскольку мы будем прошивать Coreboot при помощи программатора (в данной инструкции используем CH341A), придётся его разобрать до основания. Советую воспользоваться [этой инструкцией](https://libreboot.org/docs/install/t60_unbrick.html). BIOS чип находится возле оперативной памяти, дальше от вас.
**\[Совет\]** От скелета T60 можно ["откусить" мешающий кусок плоскогубцами](https://mastodon.ml/@Evv1L/107787938986563506), чтобы он не закрывал BIOS чип и в следующий раз к нему можно было подключиться программатором без полного разбора ноутбука.
### Подключаемся программатором
Напомню, что мы всё ещё используем CH341A. Как собрать программатор с прищепкой советую посмотреть [тут](https://notthebe.ee/Removing-the-Wi-Fi-Whiteslit-on-Haswell-Thinkpads-T440p-W540-T540-etc.html) в разделе Assembling the programmer
**\[Внимание!\] Не забудьте отключить аккумулятор, зарядное устройство и BIOS батарейку!**
Подключаемся прищепкой программатора к чипу. **Красная линия на прищепке должна совпадать с цифрой 1 возле BIOS чипа и/или с точкой на самом чипе. СНАЧАЛА прицепляемся прищепкой к BIOS чипу, ПОТОМ подключаем программатор к компьютеру.**
Если на CH341A уже горит светодиод RUN, значит программатор не нашёл чип и надо прицепиться к нему заново: **СНАЧАЛА отключаем программатор от компьютера, ПОТОМ отсоединяем прищепку от чипа.**
### Делаем бэкап заводского биоса (обязательно)
Считываем заводской BIOS с чипа. Сделаем это два раза, чтобы потом проверить их:
`sudo flashrom -p ch341a_spi -r bios1.img sudo flashrom -p ch341a_spi -r bios2.img `
Сравниваем оба образа:
`diff bios1.img bios2.img`
Если вывода нет, значит файлы идентичны, первый файл можно сохранить, а второй удалить. Храните бэкап в надёжном месте. При помощи него вы в любой момент сможете вернуться на рабочий заводской BIOS, если что-то пойдёт не так.
Если же diff написал, что файлы разные, то повторите процесс подключение к чипу из прошлого раздела.
**\[Дополнительно\]** Можно попробовать распаковать ваш заводской BIOS при помощи Coreboot утилиты bios\_extract. Подробнее [тут](https://www.coreboot.org/VGA_support#RECOMMENDED:_Extracting_from_your_vendor_bios_image). Если образ распаковался, значит он записался правильно.
Прошиваем BIOS чип (наконец-то!)
--------------------------------
Поскольку на BIOS чипе нет никаких ME, GBE и других регионов (в отличии от X230, например), то мы можем заливать нашу Coreboot прошивку полностью без необходимости в layout файлах. Воспользуемся этой командой:
`sudo flashrom -p ch341a_spi -w coreboot.rom`
Если прошивка завершилась выводом "Verifying flash... VERIFIED!", значит прошивка прошла успешно и можно отключить программатор **(СНАЧАЛА отключаем программатор от компьютера, ПОТОМ отсоединяем прищепку от чипа)** и собрать ваш T60 обратно.
Загружаемся!
------------
Если при запуске вас встречает вывод SeaBIOS, то поздравляю! Прошивка прошла успешно!
Дальше можете собирать свои Coreboot прошивки со своей конфигурацией :)
Если же ваш T60 запустился, но нет изображения, то проверьте ThinkLight (сочетание клавиш Fn+PgUp). Если ThinkLight загорелся, значит ноутбук и прошивка исправна, но VGA биос для ATI не заработал. Советую проверить ваш config файл ещё раз.
За дополнительной информацией советую англоязычный проект ZeroCat. Использовать их скрипты не советую (они собирают только с GRUB2 и требуют ОС Trisquel), но документация и примеры конфигов у них хорошие.
|* Автор статьи — [Evv1l](https://mastodon.ml/@Evv1l)

@ -0,0 +1,91 @@
Обход блокировки Tor в России
-----------------------------
### Что произошло?
[Официальный сайт](https://www.torproject.org/) проекта Tor [был заблокирован](https://www.rbc.ru/technology_and_media/08/12/2021/61b06ec79a7947326c020dc5) по решению РКН от 08/12/2021, а до этого РКН блокировал подключение к onion сети.
### Где теперь скачать Tor?
Скачать Tor: для [Windows](https://poridge.club/files/torbrowser-install-win64-11.0.2_en-US.exe), для [Linux](https://poridge.club/files/tor-browser-linux64-11.0.2_en-US.tar.xz), для [MacOS](https://poridge.club/files/TorBrowser-11.0.2-osx64_en-US.dmg) (на Android можете скачать с F-Droid)
### Не можете подключится к сети Tor?
Похоже, ваш интернет-провайдер [блокирует Tor](https://ntc.party/t/ooni-reports-of-tor-blocking-in-certain-isps-since-2021-12-01/1477). Ниже будут описаны три способа обхода блокировки.
#### Tor Browser включает инструменты обхода блокировок.
О том, как использовать мосты Tor, можно прочесть [тут](https://tb-manual.torproject.org/ru/bridges/) (настройка мостов), и [тут](https://tb-manual.torproject.org/ru/mobile-tor/) (настройка мобильного устройства).
### [НА 7 ДЕКАБРЯ](https://forum.torproject.net/t/tor-blocked-in-russia-how-to-circumvent-censorship/982#h-7-tor-browser-obfs4-1) мосты, встроенные непосредственно в Tor Browser заблокированы в России. Вам нужно получить работающий мост obfs4. Это можно сделать тремя способами:
1. Отправить сообщение [Telegram-боту](https://forum.torproject.net/t/tor-blocked-in-russia-how-to-circumvent-censorship/982#telegram-2) Tor
2. Отправить email по адресу [bridges@torproject.org](mailto:bridges@torproject.org)
3. Посетить страницу [https://bridges.torproject.org/](https://bridges.torproject.org/)
Как получить мост с помощью Telegram-бота
-----------------------------------------
1. Подключитесь к @GetBridgesBot в Telegram
2. Наберите /bridges
3. Скопируйте всю строку полностью. Ниже рассказано, как вручную добавить мост в Tor Browser
О Telegram
[Администратор проекта](https://shitpost.poridge.club/@aurel1on_sol) крайне не рекомендует пользоваться Telegram из-за своей ненадёжности, но не упомянуть его как один из способов не мог.
Как получить мост по email (только для владельцев аккаунтов Gmail и Riseup)
---------------------------------------------------------------------------
1. Отправьте email по адресу [bridges@torproject.org](mailto:bridges@torproject.org) с почтового аккаунта Gmail или Riseup
2. Оставьте поле темы пустым. В теле сообщения напишите “get transport obfs4”
3. Скопируйте все строки полностью. Ниже рассказано, как вручную добавить мосты в Tor Browser
Если эти мосты не работают, обратитесь за новыми мостами по адресу [frontdesk@torproject.org](mailto:frontdesk@torproject.org).
Полученные мосты нужно вручную добавить в Tor Browser.
Как получить мост с веб-сайта Tor Project
-----------------------------------------
1. Зайдите на страницу [BridgeDB](https://bridges.torproject.org/bridges?transport=obfs4&lang=ru)
2. Решите капчу
3. Скопируйте все строки полностью. Ниже рассказано, как вручную добавить мосты в Tor Browser
Тем, кто пользуется Tor Browser на компьютере
---------------------------------------------
1. При запуске Tor Browser выберите «Настройки сети Tor». Откроется соответствующее окно
2. Перейдите к разделу «Мосты». Поставьте галочку в поле «Использовать мост»
3. Выберите «Указать свой мост». Введите полученные мосты (по одному мосту в строке)
4. Для сохранения изменений нажмите «Соединиться»
Если Tor Browser уже запущен:
1. В меню с тремя полосками (≡) выберите «Настройки»
2. В левом столбце выберите «Tor»
3. Выберите «Указать свой мост». Введите полученные мосты (по одному мосту в строке)
4. Для сохранения изменений нажмите «Соединиться»
Пользователям Tor Browser для Android
-------------------------------------
1. На стартовом экране Tor Browser нажмите значок настроек. Вы увидите текущее состояние сети Tor
2. Нажмите «Конфигурация моста»
3. На следующем экране можно выбрать между использованием встроенного моста или настройкой имеющегося моста. Включите опцию «Использовать мост» и выберите «Указать мост»
4. Добавьте полученные мосты
### Если у Вас заблокированы веб-сайты the Tor Project, получить доступ к документации и другим ресурсам проекта можно с помощью следующих зеркал
* [Поддержка Tor](https://support.tor.invidious.site/ru)
* [Руководство пользователя Tor Browser](https://tb-manual.tor.invidious.site/ru/)
* [Сервис GetTor](https://gettor.tor.invidious.site/) — только по-английски
* [Запуск собственного моста Tor](https://community.tor.invidious.site/relay/setup/bridge/) — только по-английски
* [Блог Tor Project](https://blog.tor.invidious.site/) — только по-английски
* [Основной веб-сайт Tor](https://tor.invidious.site/ru/)
Это статья была взята [отсюда](https://forum.torproject.net/t/tor-blocked-in-russia-how-to-circumvent-censorship/982) и доработана [автором](https://shitpost.poridge.club/@aurel1on_sol) проекта

@ -0,0 +1,4 @@
### Зачем мне беспокоиться об этичности сервиса?
Порой, крупные корпорации банят простых пользователей за их неудобное мнение, стоит ли говорить про то, как обстоят дела у политических конкурентов? Тотальная слежка и сбор данных ставят под угрозу вашу частную жизнь видь крупные сервера нередко взламывают, корпорациям проще откупиться в суде нежели оплачивать аудит безопасности своих сервисов.

@ -1,254 +0,0 @@
<!DOCTYPE HTML>
<html lang="ru">
<head>
<link rel="icon" type="image/png" href="favicon.png">
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Поридж Клаб</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="css/picnic.min.css">
<style>
aside a.top {
font-size: 0;
position: fixed;
bottom: 0;
font-weight: bold;
width: 180px;
padding: .6em 0;
margin-bottom: 0;
border-radius: .3em .3em 0 0;
transition: all .3s ease;
}
aside a.top.visible {
font-size: 1em;
}
aside .links a.button {
text-align: left;
}
@media all and (max-width: 1000px) {
aside a.pseudo.top {
background: rgba(255, 255, 255, .8);
width: 100%;
left: 0;
text-align: center;
z-index: 100;
}
}
.documentation article>h2 {
margin: -2em 0 .6em;
padding: 3em 0 0;
line-height: 1;
}
.documentation article>h3 {
margin-bottom: .6em;
}
.documentation aside h2 {
margin-top: 0;
padding: 1.25em 0;
line-height: 1;
}
.documentation aside a.pseudo {
color: #0074D9;
margin: 0;
}
.documentation>section {
background: #fff;
text-align: left;
width: 90%;
max-width: 960px;
margin: 0 auto;
padding: 80px 0 0;
}
.documentation article>h1 {
margin: 0;
padding: 0.6em 0;
font-size: 2em;
line-height: 1.5;
}
.documentation aside a.button {
display: block;
}
.documentation pre[class*="language-"] {
margin-top: 10px;
margin-bottom: 40px;
}
.documentation .index pre {
margin: 0;
font-size: .9em;
}
</style>
</head>
<body>
<nav class="fedi">
<!-- <font size="1.5em"> -->
<a href="https://poridge.club" class="brand">
<img class="logo" src="favicon.png" alt="">
<span>Poridge.Club</span>
</a>
<!-- responsive-->
<input id="bmenub" type="checkbox" class="show">
<label for="bmenub" class="burger pseudo button">меню</label>
<div class="menu">
<a href="service.html" class="pseudo button">Сервисы</a>
<a href="https://status.poridge.club/status/poridgeclub" class="pseudo button">Статус</a>
<a href="about.html" class="pseudo button">О проекте</a>
<a href="contact.html" class="pseudo button">Связаться</a>
<a href="donate.html" class="pseudo button">Поддержать</a>
<!-- <a href="info.html" class="pseudo button">Подробнее</a> -->
</div>
<!-- </font> -->
</nav>
<main id="home" class="documentation">
<section class="flex">
<article class="card four-fifth-1000">
<header>
<h3>Способ связи с создателем проекта</h3>
</header>
<br>
<p><a href="https://farside.link/wikiless/wiki/XMPP?lang=ru">XMPP</a> — широко используемый
свободный и открытый стандарт интернет-сообщений.
Весьма прост в использовании — устанавливаем приложение, регистрируем аккаунт, общаемся.
В силу распределённости протокола, количество мест, где можно зарегистрироваться,
огромно. Независимо от того, на каком сервере вы регистрируетесь —
все пользователи доступны для вас.
</p>
<div class="center">
<div class="tabs two">
<input id="tab-1" type="radio" name="tabgroupB" checked>
<label class="pseudo button toggle" for="tab-1">Мессенджеры</label>
<input id="tab-2" type="radio" name="tabgroupB">
<label class="pseudo button toggle" for="tab-2">Социальное</label>
<input id="tab-3" type="radio" name="tabgroupB">
<div class="row">
<div>
<div class="center">
<a class="button" href="xmpp:aur@poridge.club?roster;name=aur">XMPP -
aur@poridge.club</a>
<a class="button">Matrix - @aurel1on:nospoon.cyou</a>
</div>
</div>
<div class="center">
<a class="button" href="https://shitpost.poridge.club/@aurel1on_sol">Fediverse -
aurel1on_sol@shitpost.poridge.club</a>
<a class="button" href="mailto:aur@thedroth.rocks">e-mail</a>
</div>
</div>
</div>
</div>
</article>
<article class="card four-fifth-1000">
<header>
<h3>Выступления</h3>
</header>
<div class="center ebalo"><label for="modal_meet"><img src="images/ebalo.jpg" width="80%" alt="ebalo"></label>
</div>
<div class="modal">
<input id="modal_meet" type="checkbox">
<label for="modal_meet" class="overlay"></label>
<article>
<header>
<h3>Meet'апы</h3>
<label for="modal_meet" class="close">&times;</label>
</header>
<section class="content">
<img src="images/meetup.jpg" width="100%" alt="meetup">
</section>
</article>
</div>
<div>
<p><a href="https://shitpost.poridge.club">Автор</a> проекта не только предоставляет платформы для
самовыражения и свободного общения, но и продвигает свободные технологии в массы.
</p>
<ul>
<li>Участие в дискуссионом клубе <a href="https://cctld.ru/">CCTLD.RU</a> на тему <a href="https://www.youtube.com/watch?v=2xziYfOMtaM">"Федеративные сети: за ними
будущее?"</a></li>
<li>Серия подкастов <a href="https://xxivproduction.video/c/regex/videos">"Регулярные
выражения"</a></li>
</ul>
<div>
<details>
<summary>Подробности</summary>
<ul>
<li><a href="https://xxivproduction.video/w/bZVtV3HhooKk1t7vQuPNtF">Регулярные выражения
#11</a></li>
<li><a href="https://xxivproduction.video/w/28jzXY8H5qHKbNH6R5A9jH">Регулярные выражения
#13</a></li>
<li><a href="https://xxivproduction.video/w/f2ueesR6WYWkjxgJa9XRB9">Регулярные выражения
#15</a></li>
<li><a href="https://xxivproduction.video/w/qkAEJW3G8vtNmvc6FmhCti">Регулярные выражения
#17</a></li>
<li><a href="https://xxivproduction.video/w/oWDQugf1b5Ftjf9MyBsGEP">Регулярные выражения
#18</a></li>
<li><a href="https://xxivproduction.video/w/h1ZMGwY1smX6Jx1YtaH5Jq">Регулярные выражения
#20</a></li>
<li><a href="https://xxivproduction.video/w/om6o5NMG9AukNfugvvBijZ">Регулярные выражения
#21</a></li>
<li><a href="https://xxivproduction.video/w/1VFuzVXZZHENPSS9JopgnT">Регулярные выражения
#22</a></li>
<li><a href="https://xxivproduction.video/w/v8xEKtE8GfofC59K48Y3ee">Регулярные выражения
#24</a></li>
<li><a href="https://xxivproduction.video/w/5iuyjCzLYNfTaXmxYSX8Hy">Регулярные выражения
#25</a></li>
<li><a href="https://xxivproduction.video/w/3yiKQcZpnAw8fXHmXv38j4">Регулярные выражения
#30</a></li>
<li><a href="https://xxivproduction.video/w/cPNnnZEDvoUx6dYMYTqa3D">Регулярные выражения
#33</a></li>
<li><a href="https://xxivproduction.video/w/a54QrtjxHdiLHU8yRDMbmR">Регулярные выражения
#38</a></li>
<li><a href="https://xxivproduction.video/w/qarJEahbpUEHgsyHDfPtRh">Регулярные выражения
#42</a></li>
<li><a href="https://xxivproduction.video/w/iNbzZxxCJUTgPiKvKGDtYh">Регулярные выражения
#49</a></li>
</ul>
</details>
</div>
<p><br>
Дальше — больше!
</p>
</div>
</article>
</section>
</main>
<section>
<hr>
<div class="center">
Сайт доступен в
<a href="http://cmry5fofj5vhmbyx3tqast5yjebin44o37ffq5ocuwdgjbmvf6qvllqd.onion">Tor</a>
| Дизайн — <a href="https://tolstoevsky.ml/">Tolstoevsky</a>
</div>
</section>
</body>
</html>

4047
css/picnic.min.css vendored

File diff suppressed because it is too large Load Diff

@ -1,698 +0,0 @@
<!DOCTYPE HTML>
<html lang="ru">
<head>
<link rel="icon" type="image/png" href="favicon.png">
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Поридж Клаб</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="css/picnic.min.css">
<style>
aside a.top {
font-size: 0;
position: fixed;
bottom: 0;
font-weight: bold;
width: 180px;
padding: 0.6em 0;
margin-bottom: 0;
border-radius: 0.3em 0.3em 0 0;
transition: all 0.3s ease;
}
aside a.top.visible {
font-size: 1em;
}
aside .links a.button {
text-align: left;
}
@media all and(max-width: 1000px) {
aside a.pseudo.top {
background: rgba(255, 255, 255, 0.8);
width: 100%;
left: 0;
text-align: center;
z-index: 100;
}
}
.documentation article>h2 {
margin: -2em 0 0.6em;
padding: 3em 0 0;
line-height: 1;
}
.documentation article>h3 {
margin-bottom: 0.6em;
}
.documentation aside h2 {
margin-top: 0;
padding: 1.25em 0;
line-height: 1;
}
.documentation aside a.pseudo {
color: #0074D9;
margin: 0;
}
.documentation>section {
background: #fff;
text-align: left;
width: 90%;
max-width: 960px;
margin: 0 auto;
padding: 80px 0 0;
}
.documentation article>h1 {
margin: 0;
padding: 0.6em 0;
font-size: 2em;
line-height: 1.5;
}
.documentation aside a.button {
display: block;
}
.documentation pre[class*="language-"] {
margin-top: 10px;
margin-bottom: 40px;
}
.documentation .index pre {
margin: 0;
font-size: 0.9em;
}
</style>
</head>
<body>
<nav class="fedi">
<!-- <font size="1.5em"> -->
<a href="https://poridge.club" class="brand">
<img class="logo" src="favicon.png" alt="favicon">
<span>Poridge.Club</span>
</a>
<!-- responsive-->
<input id="bmenub" type="checkbox" class="show">
<label for="bmenub" class="burger pseudo button">меню</label>
<div class="menu">
<a href="service.html" class="pseudo button">Сервисы</a>
<a href="https://status.poridge.club/status/poridgeclub" class="pseudo button">Статус</a>
<a href="about.html" class="pseudo button">О проекте</a>
<a href="contact.html" class="pseudo button">Связаться</a>
<a href="donate.html" class="pseudo button">Поддержать</a>
</div>
<!-- </font> -->
</nav>
<main id="home" class="documentation">
<section class="flex">
<article class="card four-fifth-1000">
<header>
<h3>Материальная поддержка автора</h3>
</header>
<div>
<br>
<p>
Если вы тут, то скорее всего, хотите сделать материальное пожертвование в мою сторону. Спасибо
вам большое ^~^. Это совсем не обязательно, но мне будет приятно, правда!
</p>
<p> Стоит отметить, что донат идёт не в проект, а автору. Вы не получите никаких привилегий на любом
из проектов, вы просто поддерживаете автора и позволяете этому всему просуществовать дольше, чем
оно могло бы.</p>
<div class="center">
<div class="tabs two">
<input id="tab-1" type="radio" name="tabgroupB" checked>
<label class="pseudo button toggle" for="tab-1">Фиатом</label>
<input id="tab-2" type="radio" name="tabgroupB">
<label class="pseudo button toggle" for="tab-2">Криптовалютой</label>
<input id="tab-3" type="radio" name="tabgroupB">
<div class="row">
<div>
<div class="center">
<a class="button" href="https://boosty.to/aurel1on_sol">Подписка</a>
<a class="button"
href="https://qiwi.com/payment/form/99999?extra[%27accountType%27]=nickname&extra[%27account%27]=AUREL1ONSOL">Разовый
донат</a>
</div>
</div>
<div class="center">
<p>
<img src="images/xmr.png" width="20" height="20" > MONERO
<!-- Текстовое поле -->
<input type="text" value="49uVMk4JVA9CKk5B1d2J5C2m97CPPM73LLp1uf4WiPg3NF6zSRkxYnZFY31D1UUxm1D7dAXSQzjKWHYt6pda1r8FNaehQ1j" id="myInput">
</p>
</div>
</div>
</div>
</div>
</div>
</article>
<body class="is-preload">
<section id="three">
<details>
<summary>
<strong>Список донатеров</strong>
</summary>
<p class="maintext" style="margin-left: 20px;">&nbsp;</p>
<table class="&quot;ed$">
<tbody>
<tr style="height: 36px;">
<td style="width: 63.6406px; height: 36px;">
<strong>Месяц</strong>
</td>
<td style="width: 62.3594px; height: 36px;">
<strong>Пользователь</strong>
</td>
<td style="width: 99px; height: 36px;">
<strong>Тип Доната&nbsp;</strong>
</td>
<td style="width: 49px; height: 36px;">
<strong>Сумма</strong>
</td>
</tr>
<tr style="height: 36px;">
<td style="width: 63.6406px; height: 36px;">Ноябрь, 2021</td>
<td style="width: 62.3594px; height: 36px;">
<span class="name" data-v-5605dae1="">@deadblackclover@mastodon.ml</span>
</td>
<td style="width: 99px; height: 36px;">Разовый донат</td>
<td style="width: 49px; height: 36px;">3.000<strong></strong>
</td>
</tr>
<tr style="height: 36px;">
<td style="width: 63.6406px; height: 36px;">&nbsp;</td>
<td style="width: 62.3594px; height: 36px;">drq@mastodon.ml</td>
<td style="width: 99px; height: 36px;">Разовый донат</td>
<td style="width: 49px; height: 36px;">500<strong></strong>
</td>
</tr>
<tr style="height: 36px;">
<td style="width: 63.6406px; height: 36px;">&nbsp;</td>
<td style="width: 62.3594px; height: 36px;">Анонимно</td>
<td style="width: 99px; height: 36px;">Разовый донат</td>
<td style="width: 49px; height: 36px;">500<strong></strong>
</td>
</tr>
<tr style="height: 36px;">
<td style="width: 63.6406px; height: 36px;">Декабрь</td>
<td style="width: 62.3594px; height: 36px;">Анонимно</td>
<td style="width: 99px; height: 36px;">Разовый донат</td>
<td style="width: 49px; height: 36px;">2.000<strong></strong>
</td>
</tr>
<tr style="height: 27.1719px;">
<td style="width: 63.6406px; height: 27.1719px;">&nbsp;</td>
<td style="width: 62.3594px; height: 27.1719px;">Анонимно</td>
<td style="width: 99px; height: 27.1719px;">Подписка на boosty</td>
<td style="width: 49px; height: 27.1719px;">500<strong></strong>
</td>
</tr>
<tr>
<td style="width: 63.6406px;">&nbsp;</td>
<td style="width: 62.3594px;">Анонимно</td>
<td style="width: 99px;">Разовый донат</td>
<td style="width: 49px;">500<strong></strong>
</td>
</tr>
<tr style="height: 20px;">
<td style="width: 25%; height: 20px;">Январь, 2022</td>
<td style="width: 25%; height: 20px;">Пожелание: "Совсем мало, конечно, но спасибо!"
</td>
<td style="width: 25%; height: 20px;">Разовый донат</td>
<td style="width: 25%; height: 20px;">100<span style="font-size: medium;">
<strong></strong>
</span>
</td>
</tr>
<tr style="height: 18px;">
<td style="width: 25%; height: 18px;">&nbsp;</td>
<td style="width: 25%; height: 18px;">Анонимно</td>
<td style="width: 25%; height: 18px;">Подписка на Boosty</td>
<td style="width: 25%; height: 18px;">500<span style="font-size: medium;">
<strong></strong>
</span>
</td>
</tr>
<tr>
<td style="width: 25%;">&nbsp;</td>
<td style="width: 25%;">
<div class="bottom" data-v-051a7f78="">
<span class="username" data-v-051a7f78="">
<span class="mk-acct" data-v-5605dae1="" data-v-051a7f78="">
<span class="name" data-v-5605dae1="">@Judge_1987</span>
<span class="host" data-v-5605dae1="">@shitpost.poridge.club</span>
</span>
</span>
</div>
"Я бедный, но всё равно рад скинуться программисту-хостеру."
</td>
<td style="width: 25%;">Разовый донат</td>
<td style="width: 23.9264%;">100<span style="font-size: medium;">
<strong></strong>
</span>
</td>
</tr>
<tr>
<td style="width: 25%;">Февраль</td>
<td style="width: 25%;">Анонимно</td>
<td style="width: 25%;">Разовый донат</td>
<td style="width: 25%;">1000<span style="font-size: medium;">
<strong></strong>
</span>
</td>
</tr>
<tr>
<td style="width: 25%;">&nbsp;</td>
<td style="width: 25%;">Анонимно</td>
<td style="width: 25%;">Подписка на Boosty</td>
<td style="width: 25%;">500<span style="font-size: medium;">
<strong></strong>
</span>
</td>
</tr>
<tr>
<td style="width: 25%">&nbsp;</td>
<td style="width: 25%">@andrey@fediver.se</td>
<td style="width: 25%">Разовый донат</td>
<td style="width: 25%">500<spawn style="font-size: medium;">
<strong></strong>
</span>
</td>
<tr>
<td style="width: 25%;">Март</td>
<td style="width: 25%;">Анонимно</td>
<td style="width: 25%;">Разовый донат</td>
<td style="width: 25%;">150<span style="font-size: medium;">
<strong></strong>
</span>
</td>
</tr>
<tr>
<td style="width: 25%;">&nbsp;</td>
<td style="width: 25%;">Анонимно</td>
<td style="width: 25%;">Подписка на Boosty</td>
<td style="width: 25%;">500<span style="font-size: medium;">
<strong></strong>
</span>
</td>
</tr>
<tr>
<td style="width: 25%;">&nbsp;</td>
<td style="width: 25%;">Анонимно</td>
<td style="width: 25%;">Разовый донат</td>
<td style="width: 25%;">1514<spawn style="font-size: medium;">
<strong></strong>
</span>
</td>
</tr>
<tr style="height: 18px;">
<td style="width: 25%; height: 18px;">Апрель</td>
<td style="width: 25%; height: 18px;">Анонимно: "Админу на медиахранилище"</td>
<td style="width: 25%; height: 18px;">Разовый донат</td>
<td style="width: 25%; height: 18px;">1000<span style="font-size: medium;">
<strong></strong>
</span>
</td>
</tr>
<tr style="height: 18px;">
<td style="width: 25%; height: 18px;">Май</td>
<td style="width: 25%; height: 18px;">Анонимно: "на инстанс"</td>
<td style="width: 25%; height: 18px;">Разовый донат</td>
<td style="width: 25%; height: 18px;">1000<span style="font-size: medium;">
<strong></strong>
</span>
</td>
</tr>
<tr>
<td style="width: 25%;">&nbsp;</td>
<td style="width: 25%;">Анонимно</td>
<td style="width: 25%;">Разовый донат</td>
<td style="width: 25%;">666<spawn style="font-size: medium;">
<strong></strong>
</span>
</td>
</tr>
<tr style="height: 18px;">
<td style="width: 25%; height: 18px;">Июнь</td>
<td style="width: 25%; height: 18px;">Анонимно</td>
<td style="width: 25%; height: 18px;">Подписка</td>
<td style="width: 25%; height: 18px;">250<span style="font-size: medium;">
<strong></strong>
</span>
</td>
</tr>
<tr>
<td style="width: 25%;">&nbsp;</td>
<td style="width: 25%;">Анонимно</td>
<td style="width: 25%;">Подписка</td>
<td style="width: 25%;">1000<spawn style="font-size: medium;">
<strong></strong>
</span>
</td>
</tr>
<tr>
<td style="width: 25%;">&nbsp;</td>
<td style="width: 25%;">@vlnst: "На развитие :) Спасибо тебе большое!"</td>
<td style="width: 25%;">Разовый донат</td>
<td style="width: 25%;">300<spawn style="font-size: medium;">
<strong></strong>
</span>
</td>
</tr>
<tr style="height: 18px;">
<td style="width: 25%; height: 18px;">Июль</td>
<td style="width: 25%; height: 18px;">Анонимно</td>
<td style="width: 25%; height: 18px;">Подписка</td>
<td style="width: 25%; height: 18px;">250<span style="font-size: medium;">
<strong></strong>
</span>
</td>
</tr>
<tr>
<td style="width: 25%;">&nbsp;</td>
<td style="width: 25%;">Анонимно</td>
<td style="width: 25%;">Подписка</td>
<td style="width: 25%;">1000<spawn style="font-size: medium;">
<strong></strong>
</span>
</td>
</tr>
<tr>
<td style="width: 25%;">&nbsp;</td>
<td style="width: 25%;">@more</td>
<td style="width: 25%;">Разовый донат</td>
<td style="width: 25%;">33<spawn style="font-size: medium;">
<strong></strong>
</span>
</td>
</tr>
<tr style="height: 18px;">
<td style="width: 25%; height: 18px;">Август</td>
<td style="width: 25%; height: 18px;">Анонимно: "Хотелось бы сложную сложность на сервере майна"</td>
<td style="width: 25%; height: 18px;">Разовый донат</td>
<td style="width: 25%; height: 18px;">105.55<span style="font-size: medium;">
<strong></strong>
</span>
</td>
</tr>
<tr>
<td style="width: 25%;">&nbsp;</td>
<td style="width: 25%;">Анонимно</td>
<td style="width: 25%;">Подписка</td>
<td style="width: 25%;">250<spawn style="font-size: medium;">
<strong></strong>
</span>
</td>
</tr>
<tr style="height: 18px;">
<td style="width: 25%; height: 18px;">Сентябрь</td>
<td style="width: 25%; height: 18px;">@kurator_tech</td>
<td style="width: 25%; height: 18px;">Разовый донат</td>
<td style="width: 25%; height: 18px;">0.05104861<span style="font-size: medium;">
<strong>XMR</strong>
</span>
</td>
</tr>
<tr style="height: 18px;">
<td style="width: 25%; height: 18px;">&nbsp;</td>
<td style="width: 25%; height: 18px;">@drq@mastodon.ml:"С днем рождения SPC"</td>
<td style="width: 25%; height: 18px;">Разовый донат</td>
<td style="width: 25%; height: 18px;">300<span style="font-size: medium;">
<strong></strong>
</span>
</td>
</tr>
<tr style="height: 18px;">
<td style="width: 25%; height: 18px;">&nbsp;</td>
<td style="width: 25%; height: 18px;">@more:"Не пей много, сука блять! пысы мор"</td>
<td style="width: 25%; height: 18px;">Разовый донат</td>
<td style="width: 25%; height: 18px;">64<span style="font-size: medium;">
<strong></strong>
</span>
</td>
</tr>
<tr style="height: 18px;">
<td style="width: 25%; height: 18px;">Октябрь</td>
<td style="width: 25%; height: 18px;">Анонимно</td>
<td style="width: 25%; height: 18px;">Разовый донат</td>
<td style="width: 25%; height: 18px;">0.016<span style="font-size: medium;">
<strong>XMR</strong>
</span>
</td>
</tr>
<tr style="height: 18px;">
<td style="width: 25%; height: 18px;">&nbsp;</td>
<td style="width: 25%; height: 18px;">@more: "Не пропей эти Monero"</td>
<td style="width: 25%; height: 18px;">Разовый донат</td>
<td style="width: 25%; height: 18px;">0.06<span style="font-size: medium;">
<strong>XMR</strong>
</span>
</td>