Skip to content

Instantly share code, notes, and snippets.

View VityaSchel's full-sized avatar
🏳️‍🌈
pride

Viktor Shchelochkov VityaSchel

🏳️‍🌈
pride
View GitHub Profile
@VityaSchel
VityaSchel / hetzner-robot-server-monitoring-bulk-mass-adding.js
Last active January 3, 2026 16:02
Hetzner Robot Server Monitoring bulk mass adding
/*
This script automatically adds many domains to the hetzner sysmon via robot console. It is preconfigured to create an http check on port 443 with ssl enabled and no auth.
Instructions:
1. Go to https://robot.hetzner.com/server
2. Open your server
3. Open "monitoring" tab
4. Click on "configured systems" to reveal the sysmon form (it should show a plus sign, checks list, etc)
5. Open devtools in your browser -> go to console
6. Make sure to select "System-Monitor" iframe context! the script won't run in the top page context
7. Modify "yourdomains" to add whatever domains you want
@VityaSchel
VityaSchel / proof.md
Created September 11, 2025 10:01
keyoxide.org/

aspe:keyoxide.org:DDYZB255KE2RUCGDNLI6XEHJLY

@VityaSchel
VityaSchel / how-to-export-data-from-Session-messenger.md
Created April 29, 2025 12:42
How to export your data from Session (Session database decryption)

Important

I'm looking for a job! Interested in hiring me? Visit cv.hloth.dev to review my resume & CV.

How to export data from Session?

  1. Find your Session app data location. On macOS it's usually ~/Library/Application Support/Session, unless you specified --user-data-dir option during launch which will change the app's data directory to whatever you specified.
  2. You need to copy two directories: sql and attachments.noindex — just copy them somewhere on your computer
@VityaSchel
VityaSchel / apple-maps-poi-icons-extract.md
Last active June 5, 2025 18:04
Extract Apple Maps/MapKit POI icons

Extract Apple Maps/MapKit POI icons

You can download icons as of 5th April, 2025 in attached zip file. Download Apple Maps POI icons as zip archive

изображение
  1. Go to https://duckduckgo.com/local.js?get_mk_token=1
  2. Make a GET request to https://cdn.apple-mapkit.com/ma/bootstrap?apiVersion=2&mkjsVersion=5.78.158&poi=1 with Authorization: [previous response] header
  3. From that response, parse json and find "accessKey" in it. It should look like this: 1743879209_3285637747132202088_/_gViGKMuzZNzmDskrn2ovwl0pl9XMsGcon7VsPG9kfmg=
  4. Finally grab icons from their cdn using GET requests to https://cdn.apple-mapkit.com and access key in query

[16th February 2024]

API reference for ons.sessionbots.directory:

  • No Authorization required
  • No rate limits other than Cloudflare's
  • Data is fetched directly from local SQL databse
  • HTTPS-only (with http->https 301 redirect)
  • Always returns either JSON (from API) or HTML (from Cloudflare)
  • Base URL is https://ons.sessionbots.directory/api/
  • Always returns {"ok":true} with other properties or {"ok":false,"error":"string"}
@VityaSchel
VityaSchel / at-dead-of-night-js-player.html
Created October 13, 2024 19:40
Based on window.vids. To run: place Hotel.m4v near this html file and start simple http server that hosts both of these files.
<html>
<head>
<title>Navigation test</title>
<script src="./data.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/lodash.min.js"></script>
<style>
body {
margin: 0;
padding: 0;
}
@VityaSchel
VityaSchel / tapochek-net-scraper.js
Created October 3, 2024 05:10
Tapochek.net HTML scraper that gets topics
// OPEN https://tapochek.net/viewforum.php?f=910&start=0 FIRST
// THEN RUN THIS SCRIPT:
async function start() {
const result = []
async function parsePage(url) {
const response = await fetch(url)
if (!response.ok) {
@VityaSchel
VityaSchel / unity-ui-kit.html
Last active January 3, 2026 16:06
Unity 2017 button, checkbox and button group with tailwind
<div class="flex flex-col items-start gap-8 p-8">
<!-- Checkbox -->
<div class="flex items-center gap-1.5">
<div class="relative">
<input type="checkbox" class="peer absolute z-[10] h-[12px] w-[12px] opacity-0" id="my_checkbox_1" />
<div class="h-[12px] w-[12px] rounded-[2px] bg-gradient-to-b from-[#808080] to-[#434343] p-px shadow-[0px_1px_1px_1px_#2B2B2B] peer-active:from-[#6B6B6B] peer-active:to-[#5E5E5E]"></div>
<div class="top-px left-px absolute z-[5] h-[10px] w-[10px] bg-gradient-to-b from-[#606060] to-[#3D3D3D] peer-active:from-[#525252] peer-active:to-[#5C5C5C]"></div>
<img src="data:image/svg+xml,%3Csvg width='28' height='28' viewBox='0 0 28 28' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cline x1='8.06066' y1='13.9393' x2='14.0607' y2='19.9393' stroke='white' stroke-width='3'/%3E%3Cline x1='11.9765' y1='19.9034' x2='26.9765' y2='5.90342' stroke='white' stroke-width='3'/%3E%3C/svg%3E" width="14" height="14" class="absolute -top-px -left-px hidden h-[14px] min-h
@VityaSchel
VityaSchel / run-this-with-bun-sh.ts
Last active July 2, 2024 22:45
Брутфорс кодового слова на zp.midpass.ru Запуск: bun run-this-with-bun-sh.ts
import crypto from 'node:crypto'
// вместо 4 подставьте предполагаемую длину пароля
const passwordLength = 4
// подставьте строку из localStorage -> DecryptTestMessage
const encryptedText = 'U2FsdGVkX19qOI7LCQdLXzD9HpujeJl7mNCrTNMrVzqWCKd7IcjTdg=='
function decrypt(password: Buffer) {
let bytes = Buffer.concat([password, salt])
@VityaSchel
VityaSchel / teachers.js
Last active January 3, 2026 16:05
Парсер сайта колледжа связи https://ks.psuti.ru/ и https://lk.ks.psuti.ru/
if(window.location.href !== 'https://ks.psuti.ru/about/teachers.html') throw new Error('Перейдите на страницу https://ks.psuti.ru/about/teachers.html')
const table = document.querySelector('form[action="https://ks.psuti.ru/about/teachers.html"')
const limitField = table.querySelector('select[name="limit"]')
if(limitField.options[limitField.selectedIndex].text !== 'Все') throw new Error('Выберете "Все" в "Количество строк"')
const teachers = Array.from(table.querySelectorAll('tbody > tr > td:last-child > a')).slice(1)
const getTeacherInfo = (url) => {