- Russia, Saint Petersburg
- 16:20
(UTC +03:00) - https://limitedeternity.github.io
Highlights
Меня зовутВячеслав. Для простоты можноВи.
Решаю судоку перманентным маркером, слушаю синтвейв, починяю примус и участвую в CTF-соревнованиях.
Я – IT-энтузиаст с широким набором языков, инструментов и реализованных проектов за плечами. В сфере IT меня привлекает творческая составляющая – как писатель выражает свои идеи через слова, я выражаю их в виде команд вычислительному устройству.
Получил степень бакалавра в РГПУ им. А. И. Герцена по направлению «Информационные системы и технологии» (2018-2022). Связаться со мной можно, кликнув любую из кнопочек соцсетейвыше, а я продолжу свой нарратив.
Мой профиль на CodeWars:
Мой профиль на HackTheBox:
🔓Unblocker: задумывавшийся изначально как приложение для рендера веб-страниц в PDF-формат, был реорганизован для обеспечения read-only доступа к заблокированным ресурсам. Может конвертировать magnet-ссылки в torrent-файлы, выступать в качестве прокси-сервера для скачивания файлов по прямым ссылкам. И, конечно же, рендерить страницы в PDF-формат. Регулярно набирал 1000+ часов аптайма на Heroku в месяц до того, как платформа убрала Free Tier.
📒DnevnikClient: альтернатива официальному клиентуdnevnik.ru, которая разрабатывалась мной в школьные годы и принесла мне победу на районном конкурсе IT-проектов. PWA-приложение, поддерживающее работу в офлайн-режиме. Лёгкое и быстрое, написано на фреймворке Vue.js.
💡AbitOnline: проект с хакатона "Цифровой Прорыв" в номинации "Государственное управление". Электронная приёмная комиссия. Тоже реализован на Vue.js, на бекэнде – Zeit Micro.
🔎MimeDetect: эксперимент по написанию нативного Node-модуля на языке Rust с обёрткой в виде Electron.js и использованию Blocs для вёрстки UI. Приложение идентифицирует формат передаваемых ему файлов по "магическим байтам", а если это сделать не удаётся – сопоставляет расширение файла со внутренней базой данных.
📄TextReader: тоже Electron.js приложение. Позволяет читать большие текстовые файлы по кусочкам в 1000 байт. Так, например, можно заглянуть в файл, не загружая его в память полностью.
⌨️MathNote: и ещё одно Electron.js приложение. Позволяет делать заметки в формате Markdown с поддержкой LaTeX выражений. Можно сохранять часто используемые выражения в видесокращений, которые при использовании будут раскрываться приложением при отображении заметки.
⚙️Channel4: форк библиотеки, реализующейCSP для выполнения асинхронных задач в простейшем виде. Провёл рефакторинг и сделал пару фиксов, касающихся универсальности этого решения.
📥VK-Audio-Downloader: приложение, которое "рулило" headless-браузером для извлечения аудиотеки со страницы в ВК (пользователя или сообщества), пока последний не обфусцировал доступ к аудио ещё больше.
Занимательный факт: изначально оно было реализовано в качестве плагина дляMITMProxy на языке Python. Ветка с кодомосталась в исторических целях.
💾Foxford Downloader: magnum opus, начало моей истории. Ныне представляет чисто историческую ценность. Титанический комбайн для сохранения материалов курсов с сайтаfoxford.ru, который поддерживался мной в одиночку. Умел скачивать видеолекции различными способами, которые активно исправлялись командой Нетологии, а также "рулил" headless-браузером для сохранения домашних заданий с ответами на них и лекциями в текстовом формате.
📡UpDown: программа для мониторинга доступности веб-сайтов. Создаёт уведомление, когда сайт падает или возвращается в онлайн. Поле экспериментов с различными шаблонами; в качестве базы данных используется SQLite3.
☎️gRPC-AddressBook: программа "Контакты", или же "Адресная книга". Учился использовать gRPC в качестве альтернативы REST.
Этому языку я с нуля учился на платформе JetBrains Academy (он же Hyperskill). За месяц (вплоть до истечения пробного периода) сумел выполнить два проекта наивысшего уровня сложности. Вот они:
📬WebQuizEngine: полноценный бекэнд приложения для создания и проведения опросов, написанный при помощи Spring Boot. Система сборки – Maven. В качестве базы данных используется H2. Есть система авторизации и валидация данных.
🔗Blockchain: упрощённая модель блокчейна с транзакциями, ботами и сервисами. Многопоточность, сериализация данных и многое другое. Система сборки – Gradle.
📝TextEditor: простенький редактор, сделанный при помощи Swing. "Читатель" есть, а "редактора" не было. Я это исправил 😊
📲MediaServer: приложение, позволяющее поделиться содержимым папки с мультимедиа в локальной сети. Можно дать кому-нибудь послушать свою многотонную аудиотеку или посмотреть смешные видосики, которые ты кропотливо сохранял на телефоне.
📷Scanner: приложение-сканер, занимающееся оцифровкой ч/б документов и фискальных чеков. Осуществляет поиск документов на фотографии, нормализацию их ориентации и выравнивание цветовых параметров для получения изображения с очень высоким разрешением. Бекэнд написан на Python (использует OpenCV), а фронтэнд – на Dart.
📤GetItUploaded: быстрый и минималистичный загрузчик, позволяющий создать одноразовую ссылку на файл и поделиться ей. Файл можно выбрать как непосредственно в приложении, так и при помощи функции "поделиться" в вашем любимом файловом менеджере или любом другом приложении. Интерфейс нарисован в Sketch, а код для него автоматически сгенерирован в Supernova Studio.
✉️FlutterSMSApp: приложение для доступа к СМС в режиме "только чтение", чтобы случайно не отправлять ответы на тарифах, в которые не входят бесплатные сообщения.
⚙️JoystickNavDemo: эксперимент, демонстрирующий кастомное переключение карточек с использованием внешнего управляющего элемента. Может быть использован в качестве каркаса для приложения.
🧬FASTAUtils: веб-приложение, написанное по просьбе знакомого генного инженера. Принимает на вход цепочку ДНК в формате FASTA и разбивает её на более мелкие фрагменты с пересечениями. Учитывает максимальную допустимую длину фрагментов, а также температуру плавления и размер их пересечений.
🖥Yanes: виртуальная машина, эмулирующая процессор 6502. Есть адресное пространство, дисплей, возможность ввода с клавиатуры и ассемблер. Дипломная работа.
🔧squidclient: утилита, написанная мной в процессе прохождения виртуальной машины Unbalanced на CTF-платформе HackTheBox. Под MacOS её не было, я сделал. Нужна для осуществления запросов к кэш-менеджеру Squid.
🐍pyenv-py: лаунчер дляpyenv-win – менеджера версий Python, позволяющего устанавливать и использовать несколько версий Python одновременно на одной системе. Запускает различные версии Python из списка установленных без необходимости переключаться на них.
Попробовал Haskell на вкус. Вот, например, программы для построения таблиц истинности, конструирования полиномов Жегалкина и поиска отношений между множествами:https://github.com/limitedeternity/some-gists/tree/master/RelationalAlgebra
Прошёл введение в язык Си:https://github.com/limitedeternity/ProgTech-Labs
Реализовал различные алгоритмы кодирования, преобразования, сжатия (LZW) и корректирования ошибок (алгоритм Хэмминга) на С++:https://github.com/limitedeternity/TIPS-Labs
Прошёл введение в MATLAB:https://github.com/limitedeternity/Model-Labs
Научился конструировать доказательства теорем о свойствах программ и эквивалентности функций на языке Coq:https://github.com/limitedeternity/PrPr-Labs.
Вот, например, доказательство самостоятельно выдвинутого fold-свойства:https://gist.github.com/limitedeternity/65d6de67a5ecc25b56e0eb3f08263855Научился работать с Transact-SQL и языком SQL в целом:https://github.com/limitedeternity/SQL-Labs
Понял, как программировать на языке Prolog (и зачем он вообще):https://github.com/limitedeternity/PrKnow-Labs
Получил толчок к изучению языка ассемблера. Вот, например, написанный мной промежуточный загрузчик для QEMU:https://github.com/limitedeternity/qemu-bootloader.
А в остальном, знания ассемблера я, чаще всего, использую на CTF-заданиях раздела "бинарные уязвимости". Это вообще мой любимый раздел 🙂Научился осуществлять поддержку других open-source проектов:https://github.com/lex-js/lex-js.
Переписал проект сначала на Node.js, а затем на Python, настроил CI-среду с автоматической сборкой проекта в исполняемый PE-файл под две разные архитектуры.
"Не Mr. Robot, но...": добраться с ранга Noob до Elite Hacker на HackTheBox за месяц, по пути захватив пол сотни машин.
Использованное "снаряжение" и отчёты тут:https://github.com/limitedeternity/HackTheBox"А что, так можно было?": расширить знания по эксплуатации Linux-систем, используяNebula.
"process is executing new program: /bin/dash": расширить знания по эксплуатации бинарных уязвимостей, используяPhoenix.
"Приключение на 20 минут": пройтиdostackbufferoverflowgood за 20 минут, в процессе открыв для себя пару-тройку "тайных" знаний.
"Индиана Джонс": выполнить все заданияROPEmporium для архитектур i386 и amd64.
Эксплойты тут:https://github.com/limitedeternity/ROPEmporium"Одного байта хватит": пройти курс наUdemy по эксплуатации "выделителей памяти" (malloc).
Эксплойты тут:https://github.com/limitedeternity/HeapLAB
PinnedLoading
- foxford_courses
foxford_courses Public archiveШапка треда, посвященного курсам Фоксфорда и не только.
- UnblockerAPI/unblocker
UnblockerAPI/unblocker Public archiveMakes region-restricted websites accessible
If the problem persists, check theGitHub status page orcontact support.