Аналог dcom для linux

Обновлено: 07.07.2024

Одним из недостатком Native API является то, что мы не можем возвратить ВК и передать параметры ВК в метод ВК. Поэтому пришлось возвращать ссылку на объект в виде строки. И создавать методы для обертки ВК над строкой.

Не буду описывать внутренности ВК. Описание и исходники можно посмотреть

Там же можно скачать и исходники.

Сначала определим вспомогательные методы для создания объектоа типов и обертки.

Я создал каталог, в который положил библиотеки

AddInNetObjectToNative.dll это сама ВК

Заодно проверим передаваемые типы.

Ух ты, и это работает!

Еще одна особенность Native API в том, что мы можем получить двоичные данные, но вот передать их в параметры метода метода ВК нет.

Дальше идет проверка вызова сторонней библиотеки и работа с двоичными данными.

Самое главное, что мы можем использовать сторонние библиотеки, которые должны лежать рядом с NetObjectToNative.dll

К сожалению, в отличие от COM в .Native ВК мы не можем использовать энумераторы

Поэтому для упрощения использования массивов и списков создана функция ПолучитьЭнумератор

Теперь перейдем к более грустному.
В этой статье был тест скорости, время вызова которого составляло более 300 000 вызовов в секунду.

Проведем аналогичный тест на 1С:

То есть скорость вызова уменьшилась до 20 000 вызовов в секунду.
Но и этого достаточно, так обычно вызываются более тяжелые методы.


Добавил поддержку IDynamicMetaObjectProvider (DynamicObject,ExpandoObject). В исходниках есть примеры. Это важно при использовании различного рода парсеров


Теперь стоит поговорить о недостатках 1С реализации Технологии Внешних Компонент.

1. Абсолютно не нужны методы FindMethod, FindProp, IsPropReadable, IsPropWritable, GetNParams, HasRetVal, GetParamDefValue

Так как у методов

bool SetPropVal и bool GetPropVal есть возвращаемое значение об успешном выполнении

Информация об ошибке возвращается через AddError.

Да и вызов по индексу это анахронизм от IDiapatch, где было описание диспинтерфейсов для увеличения скорости вызова.

2. При возвращении методами SetPropVal и GetPropVal исключение не вызывается

3. Зачем-то происходит установка свойств там, где в коде этого не требуется.

4. Вызывается метод как функция там, где метод вызывается как процедура.

5. Один из основных - это нельзя вернуть и передать экземпляр ВК из методов ВК.

Я лично не вижу никаких проблем. Определить значение для такого типа и установить ссылку в поле pInterfaceVal.

Подсчет ссылок происходит на стороне 1С. Передавать можно в том числе и объекты 1С только на время вызова метода.

Специальные предложения

Electronic Software Distribution

Интеграция 1С с системой Меркурий

Алкогольная декларация

Готовые переносы данных

54-ФЗ

Управление проектом на Инфостарте

Траектория обучения 1С-разработчика

Скажите, а таки чем вы руководствуетесь когда называете функции "Ъ", "Ъновый" и "Ътип" . Чтобы было сокращенно и было созвучно с Новый , а Ътип из той же оперы.
Мне лично, так код удобнее читать. Плюс за старания. Но по опыту скажу, если совмещать высокую нагрузку с внешними компонентами, до добра это не доводит.

(3) pbazeliuk,
Проблема тут не в самой компоненте, а интерфейсе, что 1С предоставляет.

Например практически все программисты 1С используют ComОбъект.

По моей методе можно использовать
NetОбъект,NetТип
JavaОбъект,JavaТип

И эти объявления будут реально кроссплатформенны.
При это различия с ComОбъект минимальны. Имя класса равноценно комовскому ProgID. При этом нет ограничений на используемые типы.
Ты можешь написать свою библиотеку поместить в определенное место и использовать её вместо COM. Без регистрации итд. Расширять возможности 1С станет легче.

При этом например нетовская библиотека весит всего 65 мегабайт, которую можно включить в дистрибутив и главное это кроссплатформенное решение. Причем нет ничего сложного передавать в параметрах и объекты 1С которые поддерживают аналогичный интерфейс. Можно пойти по пути подсчета ссылок в 1С, а доступ к объектам 1С только на время вызова метода ВК.

Например, существует DCOM сервер под Windows.
Необходимо обеспечить взаимодействие с этим сервером из Linux.

Posted via ActualForum NNTP Server 1.3

>Еще можно посмотреть в сторону SOAP.

А SOAP активно развивается?

Posted via ActualForum NNTP Server 1.3

Да. Кроме того, это гетерогенный протокол. То есть,
создающийся для взаимодействия разнородных систем.

вообщето строго говоря сам то COM - от платформы не зависит. зависит всё то, что вокруг COMа. регистрация компоннентов, хранилище и прочая чушь. Если строго следовать технологии COM - то ось на которой он выполняеться - не регламентируеться (см. книгу по кому. Например "Основы COM" - первые главы. что это, для чего и с чем едят).

Другое дело - COMпоненты написаные под винды и для виндов.
Либо по другому. Если Вам писать своё - то платформа не при чём. Если юзать чужое - не прокатит вообще. Если удалённо - то нуна реализовать протокол DCOM. Задача не благодарная, но в принцепе, решаемо всё.

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

>вообщето строго говоря сам то COM - от платформы не зависит. зависит всё
то, что вокруг COMа. >регистрация компоннентов, хранилище и прочая чушь.
Если строго следовать технологии COM - то >ось на которой он выполняеться -
не регламентируеться (см. книгу по кому. Например "Основы COM" >- первые
главы. что это, для чего и с чем едят).

Ну а может ли кто-нибудь назвать библиотеку COM реализованную на другой
платформе?
Я почему-то немогу найти года два уже. Да. Все говорят мол стандарт не
регламентирует что
COM должен работать только на виндовс, однако никто почемуто не решается
реализовать COM
под линукс на промышленном уровне.
Почему ни одна фирма не рискнула просто взять и повторить мелкосовтовские
широко используемые COM интерфейсы на другой платформе?
Видимо на это есть очень веские причины.

Posted via ActualForum NNTP Server 1.3

кхм. почитайте лучше книгу :) повторять что Вы собрались ? Интерфейс айкноу ?

ышо раз о кошках. COM - это технология. Если хотите "закон общения". Где Вы видели его реализацию в библиотеки ? Если ткнёте в ОЛЕ - дык про это заблуждение уже указывал выше.

Технология COM регламентирует 4 (если не ошибаюсь правила), соглашение о именах, способ нахождения точки входа. И всё.

Помню, когда то на спор сделал "технологию загрузки по COMу" без олешной дэлеле. Работало. Да, поиск-хранение компонентов стало моей головной болью. Да, фабрикой компонентов там и не пахло. Да все виндовые настройки по боку. Но простите, COM этого и не утверждал ! В этом то и комизм ситуации кстати. Люди от юникса - считают COM чиссо мелкософтовским мальчиком для каких то там выкрутасов (технология COM родилась от чиссо форточкенных разработок - OLE). На самом деле в данную технологию заложен очень универсальный механизм. Который, на мой взгляд, не шибко любят на других платформах (похоже просто по глупости, или скажем по консерватизности).

Конечно же есть DCOM. Тому нуна уже ессесвенно библиотека. И она уже будет платформозависимая.

Эта статья содержит набор методов для подключения к удаленной системе Windows из Linux и примеры того, как выполнять команды на машинах Windows удаленно из Linux с помощью ряда различных инструментов. И мы рассмотрим как осуществлять удаленный доступ к системам Windows из Linux.

Она охватывает более 30 различных методов получения удаленной оболочки, удаленного выполнения команд или подключения к удаленному рабочему столу с использованием различных свободно доступных инструментов и утилит.

Существует множество различных инструментов, которые можно использовать для доступа к удаленному компьютеру с Windows из Linux и выполнения на нем команд. Вот список существующих инструментов, описанных в этой статье, которые можно использовать для этой задачи.

Инструменты для удаленной команды или удаленного доступа к оболочке:

Инструменты для удаленного графического отображения:

Все эти инструменты имеют открытый исходный код и свободно доступны в любом дистрибутиве Linux (Kali, Ubuntu, Debian, Arch, CentOS, RedHat, Parrot ..), включая платформы на основе UNIX, такие как BSD, Mac OS X и многие другие.

Большинство этих инструментов работают путем подключения к порту SMB (tcp / 445) на удаленном компьютере с Windows, но некоторые из них также используют другие интерфейсы, такие как WMI, MMC, DCOM, NetBIOS и, конечно, RDP или VNC в случае подключение к удаленному (графическому) рабочему столу.

Более подробная информация об этом включена в обзорную таблицу ниже.

Обзорная таблица

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

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

Удаленный доступ к системам Windows из Linux

Удаленный доступ к системам Windows из Linux

Удаленный доступ к системам Windows из Linux


Методы удаленного доступа из командной строки

Этот раздел содержит все методы удаленного доступа к командной строке, которые можно использовать для удаленного выполнения команд на машине Windows из Linux, включая создание интерактивной оболочки (cmd.exe или powershell.exe). ВАЖНО : Для использования этих методов необходимо предоставить учетные данные администратора. Это относится ко всем описанным ниже методам. Теперь перейдем к реальным методам и приемам.

Impacket

Impacket — это библиотека Python для работы с различными сетевыми протоколами Windows. Он используется многими различными инструментами тестирования на проникновение и содержит ряд методов для выполнения команд на удаленных компьютерах с Windows.

Impacket dcomexec.py RCE example

Вот как мы можем использовать Impacket для выполнения команд в удаленной системе Windows:

1. Impacket psexec.py

Это создаст интерактивную удаленную оболочку с помощью метода Psexec:

psexec.py "./Administrator:pass123"@192.168.0.1

2. Impacket dcomexec.py

Это создаст полуинтерактивную удаленную оболочку с использованием DCOM:

dcomexec.py "./Administrator:pass123"@192.168.0.1

3. Impacket smbexec.py

Это создаст полуинтерактивную удаленную оболочку через встроенные функции Windows SMB:

smbexec.py "./Administrator:pass123"@192.168.0.1

4. Impacket wmiexec.py

Это создаст полуинтерактивную удаленную оболочку с использованием WMI:

wmiexec.py "./Administrator:pass123"@192.168.0.1

5. Impacket atexec.py

Это выполнит команду удаленно через Atsvc:

atexec.py "./Administrator:pass123"@192.168.0.1 "whoami"

Примечание: Impacket также поддерживает метод аутентификации с использованием хеш-кода, что позволяет использовать NTLM-хэш вместо пароля. Вот пример с psexec.py:

psexec.py -hashes aad3b435b51404eeaad3b435b51404ee:5fbc3d5fec8206a30f4b6c473d68ae76 "./Administrator"@192.168.0.1

Подробную информацию об этих методах с еще большим количеством примеров и снимков экрана можно найти здесь.

CrackMapExec

CrackMapExec — это швейцарский армейский нож пентеста. Он имеет множество полезных функций и интегрируется с рядом других проектов по обеспечению безопасности, таких как Mimikatz, Empire, PowerSploit или Metasploit.

Он также содержит ряд методов для выполнения команд на удаленных машинах Windows.

CrackMapExec winrm RCE method utilizing PSRemoting

Вот как использовать CrackMapExec для выполнения команд в удаленных системах:

6. CrackMapExec wmiexec

Это выполнит команду (CMD / PowerShell) удаленно с помощью WMI:

crackmapexec smb -d <DOMAIN> -u <USER> -p <PASSWORD> -x <COMMAND> <TARGET> crackmapexec smb -d . -u Administrator -p 'pass123' -x "whoami" 192.168.0.1

7. CrackMapExec atexec

Это выполнит команду (CMD / PowerShell) удаленно через Atsvc:

crackmapexec smb --exec-method atexec -d <DOMAIN> -u <USER> -p <PASSWORD> -x <COMMAND> <TARGET>

crackmapexec smb --exec-method atexec -d . -u Administrator -p 'pass123' -x "whoami" 192.168.0.1

8. CrackMapExec smbexec

Это выполнит команду (CMD / PowerShell) удаленно с использованием собственного SMB:

crackmapexec smb --exec-method smbexec -d <DOMAIN> -u <USER> -p <PASSWORD> -x <COMMAND> <TARGET>

crackmapexec smb --exec-method smbexec -d . -u Administrator -p 'pass123' -x "whoami" 192.168.0.1

9. CrackMapExec mmcexec

Это выполнит команду (CMD / PowerShell) удаленно через MMC:

crackmapexec smb --exec-method mmcexec -d <DOMAIN> -u <USER> -p <PASSWORD> -x <COMMAND> <TARGET>

crackmapexec smb --exec-method mmcexec -d . -u Administrator -p 'pass123' -x "whoami" 192.168.0.1

10. CrackMapExec winrm

Это выполнит команду (CMD / PowerShell) удаленно с помощью PSRemoting:

crackmapexec winrm -d <DOMAIN> -u <USER> -p <PASSWORD> -x <COMMAND> <TARGET>

crackmapexec winrm -d . -u Administrator -p 'pass123' -x "whoami" 192.168.0.1

Примечание: Хотя CrackMapExec позволяет запускать команду только в удаленной системе, мы все равно можем использовать ее для создания интерактивной оболочки с помощью командлета обратной оболочки PowerShell (например, некоторых из них ).

CrackMapExec также поддерживает передачу хэша NTLM вместо пароля (pass-the-hash). Вот пример с wmiexec:

crackmapexec smb -d <DOMAIN> -u <USER> -H <LM:NTLM> -x <COMMAND> <TARGET>

crackmapexec smb -d . -u Administrator -H aad3b435b51404eeaad3b435b51404ee:5fbc3d5fec8206a30f4b6c473d68ae76 -x "cmd /c whoami" 192.168.0.1

Более подробную информацию о CrackMapExec с примерами и скриншотами можно найти здесь.

Набор инструментов PTH

PTH Toolkit — это набор утилит, созданный пионерами техники передачи хеширования. Он содержит ряд полезных инструментов для подключения к удаленным машинам Windows, некоторые из которых также предназначены для выполнения команд в удаленных системах Windows.

pth-winexe RCE command example

Вот как использовать все функции удаленного доступа PTH Toolkit:

11. PTH Toolkit: pth-winexe

Это создаст интерактивную удаленную оболочку с использованием метода, подобного Psexec:

pth-winexe -U <DOMAIN>\\<USER>%<PASSWORD> --uninstall //<TARGET> <COMMAND>

pth-winexe -U ".\Administrator%pass123" --uninstall //192.168.0.1 cmd

Обратите внимание, что с помощью параметра «–system» pth-winexe также может автоматически расширяться до учетной записи «nt Authority \ system».

12. PTH Toolkit: pth-wmis

Это выполнит команду удаленно с помощью WMI:

pth-wmis -U ".\Administrator%pass123" //192.168.0.1 'cmd.exe /c whoami'

Обратите внимание, что этот конкретный метод не возвращает выходные данные команды. Если нам нужен результат, мы должны получить его с помощью дополнительной утилиты pth-smbget.

Примечание: PTH Toolkit, конечно, также поддерживает предоставление хеш-кода NTLM вместо пароля (pass-the-hash). Вот пример с pth-winexe:

pth-winexe -U <DOMAIN>\\<USER>%<LM|NTLM> --uninstall //<TARGET> <COMMAND>

pth-winexe -U ".\Administrator%aad3b435b51404eeaad3b435b51404ee:5fbc3d5fec8206a30f4b6c473d68ae76" --uninstall //192.168.0.1 cmd

Более подробную информацию о PTH Toolkit с примерами и скриншотами можно найти здесь:

Keimpx

Keimpx — это инструмент лаборатории NCC Group, разработанный для пентестинга сред Windows. Он имеет много интересных функций, таких как работа с общими сетевыми ресурсами или кустами реестра, сброс хэшей и удаленное извлечение файлов NTDS, и, конечно же, ряд методов для удаленного выполнения команд в системах Windows.

Keimpx svcshell remote semi-interactive shell

Вот как использовать Keimpx для удаленного выполнения команд.

Сначала нам нужно запустить Keimpx с целевым списком, к которому нужно подключиться. Здесь мы подключаемся к одной машине:

keimpx.py -D <DOMAIN> -U <USER> -P <PASSWORD> -t <TARGET>

keimpx.py -D . -U Administrator -P pass123 -t 192.168.0.1

Теперь будет интерактивное меню, в котором мы сможем выбрать, что мы хотим сделать.

Вот список всех поддерживаемых методов, доступных в меню для выполнения команд или создания оболочек:

13. Keimpx: svcexec

Это выполняет команду в удаленной системе с помощью службы Windows. Введите в меню:

s vcexec <COMMAND>

svcexec "dir c:\users"

14. Keimpx: svcexec SERVER

Метод svcexec SERVER также выполняет команду, но он разработан для более ограниченных систем, в которых нет доступных для записи сетевых ресурсов:

svcexec <COMMAND> SERVER

svcexec "dir c:\users" SERVER

15. Keimpx: svcshell

Это создаст полуинтерактивную оболочку в удаленной системе с помощью службы Windows:

svcshell

16. Keimpx: svcshell SERVER

Svcshell также поддерживает режим СЕРВЕРА, который может порождать удаленную оболочку в более ограниченных системах без какого-либо доступного для записи сетевого ресурса:

Veizdem --> Veizdem



Просмотр профиля

Ищу аналоги COM объектов для загрузки/выгрузки XML, работы с XSD файлами, а так же аналог COMConnector под ОС Linux. Необходимо все делать без использования wine или windows. Кто что знает по данному поводу?

Сервер 1С на Debian, сервер БД PostgreSQL на CentOS, все клиенты на Kubuntu.

Vofka --> Vofka



Просмотр профиля Технология COM - это технология самой Windows. Если мы говорим о том, что есть какой-то COM объект - это само собой подразумевает то, что речь идет про Windows. Veizdem --> Veizdem



Просмотр профиля Технология COM - это технология самой Windows. Если мы говорим о том, что есть какой-то COM объект - это само собой подразумевает то, что речь идет про Windows.

То, что COM это сугубо плюшка Windows я знаю, меня интересует как те же действия выполнять на Linux, где нет COM объектов.

Вот нашел пример записи XML файла без использования COM:

И пример чтения XML файла без того же COM:

А такая же реализация но для COMConnector есть?

Так же не нашел, как работать с XSD.

Vofka --> Vofka



Просмотр профиля

COMConnector-а под Линуксом нету.


Потому что то, что вы выше привели - это делается средствами платформы. А платформа на 90+% (мне так кажется) работает одинаково и в Виндовсе и в Линуксе. С XSD платформа сама работать не умеет. Veizdem --> Veizdem



Просмотр профиля

Работать с xml можно двумя способами получается - COM и внутренними средствами платформы, а что-то внутреннее по аналогии для COMConnector не придумано? Идиотизм какой-то. В очередной раз убеждаюсь, что проще было вместо 1С самостоятельно что-то написать.

Получается что для Linux только галочку на сайте разработали, а толку от этого никакого нет.

Petre --> Petre



Просмотр профиля Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія". Veizdem --> Veizdem



Просмотр профиля
А как мне их применять, чтобы работая в одной ИБ получить данные из другой ИБ, если они обе физически на одной машине лежат на одном сервере БД и одном сервере 1с? Или как мне это применить чтобы выгнать всех из 1С обработкой? Petre --> Petre



Просмотр профиля Не пойму, какие ограничения могут накладывать "если они обе физически на одной машине лежат на одном сервере БД и одном сервере 1с". Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія". Veizdem --> Veizdem



Просмотр профиля Не пойму, какие ограничения могут накладывать "если они обе физически на одной машине лежат на одном сервере БД и одном сервере 1с".
Ну в этом случае я спрашивал что мне с этим делать, так как еще ни разу с этим дела не имел. Извините, если не совсем понятно выразился. Vofka --> Vofka



Просмотр профиля Ну в этом случае я спрашивал что мне с этим делать, так как еще ни разу с этим дела не имел. Извините, если не совсем понятно выразился.
Ну так цель озвучьте, пора уже. Вы задали вопрос про COM в Linux - вам сказали, что такого нету. Что вы собираетесь сделать - никому кроме вас из здесь присутствующих неизвестно. Veizdem --> Veizdem



Просмотр профиля Ну так цель озвучьте, пора уже. Вы задали вопрос про COM в Linux - вам сказали, что такого нету. Что вы собираетесь сделать - никому кроме вас из здесь присутствующих неизвестно.
Так цель же вот она - как мне организовать обмен данными между двумя разными базами и как делать выброс всех пользователей, включая зависшие сеансы? Vofka --> Vofka



Просмотр профиля как мне организовать обмен данными между двумя разными базами

XML-ем делайте, либо любым форматом на свое усмотрение, в чем проблема? Так же, как выше писали - веб сервисы.

как делать выброс всех пользователей, включая зависшие сеансы?
Где-то (на диске ИТС кажется) встречал программный java интерфейс для управления сервером 1С. Вот видимо для счастливых обладателей Линукса его и сделали, чтобы через него можно было программно работать с сервером 1С. Veizdem --> Veizdem



Просмотр профиля Где-то (на диске ИТС кажется) встречал программный java интерфейс для управления сервером 1С. Вот видимо для счастливых обладателей Линукса его и сделали, чтобы через него можно было программно работать с сервером 1С.

Порылся на диске, нашел, да есть такая штука на Java, только вот я два дня промучился и не смог даже их пример работать заставить, он мне ошибку "отказ в соединении" выкидывает. И вот как с этим работать?

И ладно бы я не знал что такое Java, но я на ней не один проект сделать успел, до того как пересесть за 1С.

Может быть где-то есть какая-нибудь детальная информация как это все должно работать? JavaDoc предоставляемый в комплекте не дает полного описания того, как это все должно работать.

Vofka --> Vofka



Просмотр профиля

Читайте также: