Как стать автором
Обновить
12.2

Lua *

Скриптовый язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Обнаружение SSH-туннелей по размеру пакетов

Уровень сложности Средний
Время на прочтение 8 мин
Количество просмотров 13K

Иллюстрация из книги «Справочник киберсантехника»

Протокол SSH — очень мощный инструмент, который используется для удалённой консоли или передачи файлов (scp, sftp). Есть менее известная функция перенаправления портов. Такие SSH-туннели используются для пробития файрволов и хорошо скрываются от обнаружения стандартными средствами мониторинга типа Trisul, Zeek (ранее был известен как Bro), Suricata и Snort. Поэтому для их обнаружения в корпоративной сети используются другие методы.
Читать дальше →
Всего голосов 64: ↑60 и ↓4 +56
Комментарии 22

Новости

Звуковые файлы в Lua

Уровень сложности Простой
Время на прочтение 2 мин
Количество просмотров 1.4K

Рассказываю как просто сделать функцию для воспроизведения  звука в различных форматах в скриптах Lua.

Читать далее
Всего голосов 8: ↑4 и ↓4 0
Комментарии 1

Про Vim — Neovim (Lua) PHP IDE

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 4K

По большому счету единственной незакрытой темой в рубрике "Про Vim" осталась тема об альтернативе Conqueror of Completion для Neovim в Lua исполнении. Причиной перерыва между данной и предыдущей статьей в рубрике стало отсутствие необходимости в этой самой альтернативе. Ну или вернее причина может быть и была: во-первых - что бы удовлетворить любопытство, во-вторых - CoC действительно кажется громоздким и достаточно сложным внутри. Вариант на Lua мне бы дался легче, если бы захотелось что-то в нем подшаманить. Наверное.

Читать далее
Всего голосов 8: ↑7 и ↓1 +6
Комментарии 2

Построение планов параллельного выполнения программ для процессоров со сверхдлинным машинным словом (проект)

Уровень сложности Средний
Время на прочтение 13 мин
Количество просмотров 2K

Процессоры архитектуры  сверхдлинного машинного слова (VLIW - Very Long Instruction Word) относятся к специфическим классам архитектур, прямо нацеленным на использование внутреннего параллелизма в алгоритмах (программах), причём параллелизм этот анализируется и планируется к рациональному использованию при вычислениях на программном уровне; собственно аппаратная часть освобождается от процедур распараллеливания  (и поэтому должна стать проще и экономичнее использующих внутреннее распараллеливание).

VLIW-подход основан на идее загрузки во входной буфер процессора одновременно набора (bundle) допускающих параллельное выполнение  машинных команд и исполнения этого ряда команд аналогично единой команде в процессорах классической архитектуры. VLIW-процессоры реализуют параллелизм уровня ILP (Instruction-Level Parallelizm, параллелизм уровня машинных инструкций) и SMP (Symmetric MultiProcessing, системы с общей памятью)   идеологему работы с оперативной памятью. Несмотря на выпуклое преимущество (программным путём дешевле реализовать сложные процедуры параллелизации), работа VLIW-процессоров сопряжена с известными проблемами. Среди них называют статичность полученных планов параллельного выполнения и проблемы с излишней неравномерностью времени доступа к оперативной памяти разных вычислительных ядер   (временна́я антиплотность кода,   следствием является резкое снижение производительности из-за неизбежности  определять время выполнения всей связки команд сверхдлинного слова по продолжительности наиболее длинной из них).

Читать далее
Всего голосов 14: ↑13 и ↓1 +12
Комментарии 26

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

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 2K

Программирование в Roblox для детей – это распространенное увлечение среди современных школьников, интересующихся компьютерными играми. Виртуальная вселенная, населенная миллионами игроков из разных уголков планеты, стала настоящим феноменом в мире детского досуга. Школьники получили возможность не только проводить время в популярных играх, но и разрабатывать собственные виртуальные миры, учиться программированию и создавать уникальную трехмерную графику. Благодаря Roblox каждый ребенок может стать геймдизайнером и воплотить мечту о разработке собственной игры.

Читать далее
Всего голосов 7: ↑5 и ↓2 +3
Комментарии 3

Мойофис: автоматизация отчётности в банке

Уровень сложности Простой
Время на прочтение 4 мин
Количество просмотров 3.5K

Опыт разработки макросов и надстроек для Мойофис показал, что можно автоматизировать практически любой процесс, который раньше выполнялся с использованием Excel и макросов на VBA. А надстройки (о них не сегодня) вообще позволяют создавать корпоративные инструменты в связках "Python-Мойофис", "Nanocad-Мойофис" и т. п. Вот пример одной учебной задачи по автоматизации отчетности в Таблице Мойофис.

Читать далее
Всего голосов 11: ↑11 и ↓0 +11
Комментарии 6

TLS Client Hello — перехватываем и парсим — Nginx + Lua / Go

Уровень сложности Средний
Время на прочтение 10 мин
Количество просмотров 3K

Возникла на днях достаточно интересная задачка - по образу сайта https://www.howsmyssl.com/ получить на страничке список Cipher Suites которые при TLS Handshake клиент передает в своем Client hello.

А заодно обдумать инструмент, который позволит работать с другими заголовками, в частности - Proxy-Connection

Читать далее
Всего голосов 6: ↑6 и ↓0 +6
Комментарии 1

Искусственный интеллект GPT и скрипты Микротик

Уровень сложности Средний
Время на прочтение 6 мин
Количество просмотров 10K
Я не профессиональный программист и не специалист IT, но увлекался программированием с юности, когда мы писали на Бейсике и Ассемблере для первого советского персонального компьютера ПЭВМ АГАТ и даже умудрились оставить определенный след в его истории.

С того времени утекло много воды, я получил другую профессию, но увлечение своё полностью не оставил (я стал врачом и работаю по специальности с 2000 г., но оно помогает мне в работе всю жизнь). В 2013 году возникла необходимость «провести интернет» в загородный дом. Тогда то, я и познакомился впервые с роутерами Микротик. В сетевых технологиях я, на то время не знающий что такое IP-адрес (условно), возможно, не сильно продвинулся выше начального уровня (да и не было необходимости в сложных настройках Микротик), а вот программирование на скриптовом, Lua-подобном, языке Роутер ОС почему-то захватило меня целиком, даже временно в ущерб основной работе в каких-то аспектах. Конечно, до профессионального уровня я, самоучка, не дошёл, но написал за это время немало полезных и достойных по сложности скриптов для Микротик (неполный список моих работ представлен здесь).
Читать дальше →
Всего голосов 9: ↑6 и ↓3 +3
Комментарии 25

Продолжаем изучать аппаратные возможности расширения Микротик RBM33G

Время на прочтение 17 мин
Количество просмотров 6.4K
В своей предыдущей статье я рассказал о возможностях расширения «обвеса» Микротик RBM33G и некоторых особенностях этой платы, в частности интегрированном GPIO-интерфейсе. Я не остановился на достигнутом и продолжил свои опыты, чем и хочу поделиться с читателем. Модули реле через GPIO мы уже подключали к роутеру в предыдущей статье, повторяться не буду. Опишу некоторые другие плюшки.

Чтобы использовать GPIO, в предыдущей статье мы отключали его от второго (serial1) последовательного порта RBM33G. Первый (serial0) порт по умолчанию занят консолью для подключений через DB9-разъем на лицевой панели платы. Предлагаю на время вернуть настройку serial1 по умолчанию:

/system routerboard settings set gpio-function=serial1

Чтобы изменения вошли в силу, нужна перезагрузка:

/system reboot

Читать дальше →
Всего голосов 7: ↑7 и ↓0 +7
Комментарии 4

Реверс мобильных приложений на cocos2dx

Уровень сложности Простой
Время на прочтение 2 мин
Количество просмотров 2.3K

Хочу поделиться своим опытом в реверс инженеринге приложения на lua cocos2d-x. Файлы приложения зашифрованы xxtea, а ключи шифрования находятся в .so файле внутри приложения.

Читать далее
Всего голосов 12: ↑12 и ↓0 +12
Комментарии 3

Как я столкнулся с Tarantool-ом: разбор подводных камней на примере микросервисного pet-проекта

Уровень сложности Средний
Время на прочтение 5 мин
Количество просмотров 2.4K

Привет, Хабр! Меня зовут Сергей Скубач, я работаю в VK и разрабатываю облачное хранилище WorkDisk. Мы используем Tarantool в своём продукте, так как его разрабатывают и развивают наши коллеги. Я впервые столкнулся с Tarantool именно в VK, и для более глубокого понимания решил попробовать использовать его в своём pet-проекте.

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

Читать далее
Всего голосов 28: ↑28 и ↓0 +28
Комментарии 0

Бюджетно снаряжаем Микротик RBM33G для «дальнего боя»

Уровень сложности Средний
Время на прочтение 11 мин
Количество просмотров 10K
Микротик OEM RouterBoard RBM33G далеко не новинка и хорошо известна среди специалистов и пользователей Микротик. Она была создана производителем для того, чтобы дать каждому возможность самому «сконструировать» свой роутер. В настоящее время эта плата вовсе не устарела, активно используется и полна интересных «сюрпризов» для тех, кто не знает всех её возможностей.

Эта небольшая по размеру, весьма производительная плата (на борту двухядерный процессор MediaTek MT7621 880Мгц с 16Мб flash-памяти и 256Мб DDR3 RAM), имеет ещё целый ряд аппаратных возможностей к расширению – два слота mini PCI-e для установки модулей модемов и/или wifi-радиокарт), слот microSD для дополнительной карты памяти (расположен на оборотной стороне платы), M.2 слот для установки SSD, что позволяет с избытком восполнить недостаток flash-памяти на самой плате.


Рис. 1 RBM33G Внешний вид платы. Вверху слева направо разъемы: 2 miniPCI-e, M.2, USB.
Читать дальше →
Всего голосов 22: ↑22 и ↓0 +22
Комментарии 26

Renga STDL: краткий обзор языка для расширения функциональности программы Renga

Уровень сложности Средний
Время на прочтение 4 мин
Количество просмотров 2.2K

Renga - программа для проектирования зданий, с помощью которой можно создать трёхмерную модель, включающую инженерные конструкции, коммуникации и всю информацию о них. Затем из этой модели можно получить чертежи и спецификации. Renga работает под Windows и написана на C++.

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

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

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Комментарии 4

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн

Новые возможности в скриптах Роутер Ос 7 Микротик

Время на прочтение 10 мин
Количество просмотров 12K
Появления Роутер ОС 7 давно ждали. Новая система создавалась разумеется для более производительных устройств, имеющих новые процессоры и больше оперативной памяти. Новое ядро Linux, поддержка WireGuard и ZieroTier, новые возможности маршрутизации и BGP, новый users manager, обновление MPLS, запуск приложений в контейнерах далеко не полный список новинок.

Но в этой статье мы будем обсуждать нововведения только в скриптовом языке системы вплоть до актуальной beta версии 7.12.
Читать дальше →
Всего голосов 13: ↑13 и ↓0 +13
Комментарии 28

Lua FFI

Уровень сложности Средний
Время на прочтение 20 мин
Количество просмотров 3.4K
Под катом описание довольно примитивного FFI для Lua под x64 windows, а теперь ещё и linux (и не только, SysV ABI).

Но который, тем не менее, позволяет делать:

local ffi = require ("ffi")
local msg = ffi("user32.dll", "MessageBoxA")
msg(0, "Message", "Title", 0)

или взять, например glfw3.dll, и путём

local glfw = ffi("glfw3")

сделать все экcпортируемые библиотекой glfw3.dll функции доступными для вызова из Lua.

Размер самой ffi.dll при этом получился аж 9 Кбайт, вот она целиком на картинке размером 32х96 пикселей. Можно сохранить это изображение, сконвертировать в bmp (хабр не умеет в bmp, пришлось дополнительно упаковать в png), потом руками удалить первые 54 байта заголовка (до 'MZ') и пользоваться.


Но очень осторожно, так как в результате всё-таки получилось, что в аккуратную детскую песочницу Lua залезли грязными сапогами, притащили туда всякие небезопасные штуки из С, вроде ручного управления памятью и обращения с указателями вида *(double*) (void * ptr), и вообще использование таких вещей учит всякому нехорошему.

Тут недавно выходил ряд статей про «вредные советы» в программировании «60 антипаттернов для С++ программиста». Под катом можно найти практическое воплощение большинства из них, не всех конечно, но только потому, что не все из них применимы к С, без плюсов :)
Читать дальше →
Всего голосов 14: ↑14 и ↓0 +14
Комментарии 8

Как создать свой мод для Cyberpunk 2077? Шерстим исходники, Lua, C++ и Python

Время на прочтение 16 мин
Количество просмотров 6.8K

Недавно мой коллега @Doctor_IT попросил помочь с его проектом — VR-жилетом, который «проецирует» ощущения урона, которые получает персонаж, на тело игрока. С моей стороны — мод, который будет отправлять данные из Cyberpunk 2077 на сам жилет.

Информации по теме моддинга мало, на русском языке материалов практически нет, а существующие статьи местами устарели — пора это исправить. Если вам интересно, как разработать свой мод для Cyberpunk 2077 и собрать VR-жилет, добро пожаловать под кат.
Читать дальше →
Всего голосов 50: ↑50 и ↓0 +50
Комментарии 10

Расшифровка доклада: О чём я говорю, когда говорю о тестировании корректности работы компиляторов

Уровень сложности Средний
Время на прочтение 15 мин
Количество просмотров 1.7K

Привет, Хабр! Эта статья о том, как тестируют компиляторы. Она будет интересна разработчикам  и тестировщикам компиляторов, а также всем, кто тестирует сложные технологии. Разберём проблемы тестирования LuaJIT и подходы к решению: неструктурированный фаззинг, синтаксический, семантический, сравнительный фаззинги и тестирование оптимизаций. Статья написана на основе доклада Сергея Бронникова из Tarantool на конференции Highload.

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Комментарии 0

Создание надстроек для отечественного офисного пакета «МойОфис». Часть 4. Разбираем структуру

Уровень сложности Простой
Время на прочтение 13 мин
Количество просмотров 1.3K

В заключительной части данного цикла, в котором я постарался на минимальном уровне создать более-менее удобную среду для начала (!) экспериментов по изучения возможностей перевода автоматизации работы с документами из Microsoft Office в «МойОфис».

Напомню, в прошлой части мы перечислили все контролы, которые нам доступны при создании форм. В этой закончим разбор того, как это всё может функционировать (насколько я это понял, конечно), при этом переключившись на работу уже с документами.

Закроем тему!
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 35

Создание сервера для онлайн ММО игр на PHP ч. 9 — Игровые серверные механики

Уровень сложности Простой
Время на прочтение 3 мин
Количество просмотров 4.9K

После успешной оптимизации клиентской части и серверной архитектуры пришла пора писать механики самой игры для взаимодействия по API — я называю их событиями (они вешаются на какой либо игровой объект на сервере, помещаются в очередь и срабатывают когда придет их время).

Суть работы взаимодействия сервера и клиентской части следующая:

Читать далее
Всего голосов 10: ↑7 и ↓3 +4
Комментарии 31

Создание сервера для онлайн ММО игр на PHP ч. 8 — Клиентская часть на Unity

Уровень сложности Простой
Время на прочтение 4 мин
Количество просмотров 2.3K

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

Т. к. сервер для игры является авторитарным, то клиентская часть должна была содержать.

Читать далее
Всего голосов 1: ↑1 и ↓0 +1
Комментарии 0

Вклад авторов