Skip to content

limitedeternity/limitedeternity

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 

Repository files navigation

Привет!


Меня зовут Вячеслав. Для простоты можно Ви.

Решаю судоку перманентным маркером, слушаю синтвейв, починяю примус и участвую в CTF-соревнованиях.
Я – IT-энтузиаст с широким набором языков, инструментов и реализованных проектов за плечами. В сфере IT меня привлекает творческая составляющая – как писатель выражает свои идеи через слова, я выражаю их в виде команд вычислительному устройству.

Получил степень бакалавра в РГПУ им. А. И. Герцена по направлению «Информационные системы и технологии» (2018-2022). Связаться со мной можно, кликнув любую из кнопочек соцсетей выше, а я продолжу свой нарратив.

🔖 Внешние профили

Мой профиль на CodeWars:

Мой профиль на HackTheBox:

🖥 Мои проекты

JavaScript

  • 🔓 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. Ветка с кодом осталась в исторических целях.

Python

  • 💾 Foxford Downloader: magnum opus, начало моей истории. Ныне представляет чисто историческую ценность. Титанический комбайн для сохранения материалов курсов с сайта foxford.ru, который поддерживался мной в одиночку. Умел скачивать видеолекции различными способами, которые активно исправлялись командой Нетологии, а также "рулил" headless-браузером для сохранения домашних заданий с ответами на них и лекциями в текстовом формате.

  • 📡 UpDown: программа для мониторинга доступности веб-сайтов. Создаёт уведомление, когда сайт падает или возвращается в онлайн. Поле экспериментов с различными шаблонами; в качестве базы данных используется SQLite3.

  • ☎️ gRPC-AddressBook: программа "Контакты", или же "Адресная книга". Учился использовать gRPC в качестве альтернативы REST.

Java

Этому языку я с нуля учился на платформе JetBrains Academy (он же Hyperskill). За месяц (вплоть до истечения пробного периода) сумел выполнить два проекта наивысшего уровня сложности. Вот они:

  • 📬 WebQuizEngine: полноценный бекэнд приложения для создания и проведения опросов, написанный при помощи Spring Boot. Система сборки – Maven. В качестве базы данных используется H2. Есть система авторизации и валидация данных.

  • 🔗 Blockchain: упрощённая модель блокчейна с транзакциями, ботами и сервисами. Многопоточность, сериализация данных и многое другое. Система сборки – Gradle.

  • 📝 TextEditor: простенький редактор, сделанный при помощи Swing. "Читатель" есть, а "редактора" не было. Я это исправил 😊

Dart/Flutter

  • 📲 MediaServer: приложение, позволяющее поделиться содержимым папки с мультимедиа в локальной сети. Можно дать кому-нибудь послушать свою многотонную аудиотеку или посмотреть смешные видосики, которые ты кропотливо сохранял на телефоне.

  • 📷 Scanner: приложение-сканер, занимающееся оцифровкой ч/б документов и фискальных чеков. Осуществляет поиск документов на фотографии, нормализацию их ориентации и выравнивание цветовых параметров для получения изображения с очень высоким разрешением. Бекэнд написан на Python (использует OpenCV), а фронтэнд – на Dart.

  • 📤 GetItUploaded: быстрый и минималистичный загрузчик, позволяющий создать одноразовую ссылку на файл и поделиться ей. Файл можно выбрать как непосредственно в приложении, так и при помощи функции "поделиться" в вашем любимом файловом менеджере или любом другом приложении. Интерфейс нарисован в Sketch, а код для него автоматически сгенерирован в Supernova Studio.

  • ✉️ FlutterSMSApp: приложение для доступа к СМС в режиме "только чтение", чтобы случайно не отправлять ответы на тарифах, в которые не входят бесплатные сообщения.

  • ⚙️ JoystickNavDemo: эксперимент, демонстрирующий кастомное переключение карточек с использованием внешнего управляющего элемента. Может быть использован в качестве каркаса для приложения.

  • 🧬 FASTAUtils: веб-приложение, написанное по просьбе знакомого генного инженера. Принимает на вход цепочку ДНК в формате FASTA и разбивает её на более мелкие фрагменты с пересечениями. Учитывает максимальную допустимую длину фрагментов, а также температуру плавления и размер их пересечений.

Rust

  • 🖥 Yanes: виртуальная машина, эмулирующая процессор 6502. Есть адресное пространство, дисплей, возможность ввода с клавиатуры и ассемблер. Дипломная работа.

  • 🔧 squidclient: утилита, написанная мной в процессе прохождения виртуальной машины Unbalanced на CTF-платформе HackTheBox. Под MacOS её не было, я сделал. Нужна для осуществления запросов к кэш-менеджеру Squid.

  • 🐍 pyenv-py: лаунчер для pyenv-win – менеджера версий Python, позволяющего устанавливать и использовать несколько версий Python одновременно на одной системе. Запускает различные версии Python из списка установленных без необходимости переключаться на них.

🔭 Что мне дал университет

✨ CTF-достижения

  • "Не 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


Releases

No releases published

Packages

No packages published