СВОИ СБОРКИ ФАЙЛОВОГО МЕНЕДЖЕРА КИБЕР-ФАЙЛ Наверное многие из вас мечтали сделать свою операционную систему. И, я надеюсь, не из-за желания писать и поддерживать тысячу драйверов всевозможных устройств: вы просто видите мир иначе, и считаете нужным не то, что вам предлагают маркетологи Microsoft и Google. Вам нужны другие программы, другие утилиты, другие методы работы с компьютером, другие цветовые решения и другой интерфейс. Может быть, вы - геймер, и вас в первую очередь интересует система для гейминга, с сотней-двумя лучших игр в поставке, с ботами, читами, модпаками и инструментами для их создания. Это можно было-бы сделать "из коробки". Может быть - вы инженер-конструктор, или электронщик, и от компьютера вам надо именно работа с САПР-ами, системами автоматизированного проектирования. Или же вам регулярно надо готовить задания для станков с ЧПУ или производственных роботов. Очевидно, что программы в поставке ОС тут должны быть совершенно другие. Их можно включить в дистрибутив. Но, может быть, вы - хэкер, занимающийся добычей информации и обратной инженерией каких-нибудь там биологических микрочипов, GSM-жучков или DECT-имлантантов. Для личной безопасности или в интересах общества. Вам нужны совершенно другие программы, а не поставляемые google или Microsoft. Так тоже можно сделать, можно скачать всё нужное вместе со сборкой операционной системы. Или же вы регулярно работаете со звуком и музыкой, вы - журналист или ведущий радио-станции, стриммер или youtub-ер, контент-мейкер или звукооператор, диктор или автор сценариев или аудио-книг. Тогда вам нужно совершенно другое программное обеспечение, а не поставляемое обычным пользователям. Именно о подготовке стандартизированных расширений операционной системы и идёт речь в данной статье. СИСТЕМА В СИСТЕМЕ Операционная система - набор программ для выполнения операций за компьютером. Система тут означает "совокупность", а операционная - "для операций", "действий", "работы". Для работы операционной системы ей нужен загрузчик, загружающий её с диска или по сети во время включения компьютера, драйвера устройств, обеспечивающий единообразный способ работы с разными устройствами компьютера другим программам, ядро, обеспечивающее связь программ пользователя и драйверов и организующее работу драйверов, и библиотеки полезных и часто-вызываемых подпрограмм, функций. Именно это множество, вместе с интерпретатором комманд и менеджером рабочего стола, вместе с несколькими пользовательскими программами, традиционно понимается под операционной системой и выпускается основными разработчиками, будь-то Windows, Unix, Solaris, FreeBSD, Linuz, iOS, Android, Plan9, QNX или другая ОС. Однако, в последние годы особую популярность приобрели расширения одной операционной системы - другими. Вместо выбора загрузки одной из нескольких операционных систем в меню загрузочной записи диска, пользователь может грузить ОС и запускать в ней другую ОС (например, грузить Windows и запускать в её окне Linux или FreeBSD), параллельно, дря работы сразу с двумя или с несколькими операционными системами. Обычно это делается эмулятором оборудования, виртуальной машиной типа VMWare или VirtualBox, но существуют подходы и запуска другой ОС как приложения основной системы. Именно так раньше запускались первые версии Linux под Windows 95 и именно так запускается современный DOS - файловый менеджер Кибер-файл, улучшенный аналог Norton Commander и всем известных его клонов FAR Manager, DOS Navigator, Volkov Commander, Total Commander. Такой подход, запуск другой операционной системы в основной, как приложения или в виртуальной машине, логично называть системой-в-системе. В окнах основной операционной системы могут быть запущены несколько других операционных систем, и в них - возможно следующих. Одна в другой, образуя структуру дерева выполнения операционных систем в памяти. Итак, файловый менеджер кибер-файл это система-в-системе, современный форк двухпанельного файловго менеджера Norton Commander, переписанный на надёжном высокоуровневом языке C-Sharp в Visual Studio 2018, призванный упростить работу за компьютером, с файлами и приложениями, и поставляемый с десятками лучших программ, как условно-бесплатных, так и полностью бесплатных. Это современный DOS поверх Windows 10/11, к которому привыкли миллиарды компьютерных пользователей по всему миру и который пришлось реанимировать с нуля опытному программисту, автору этой статьи. Внизу окна этого файлового менеджера располагаются кнопки быстрого запуска приложений и плагинов, а также быстрого переключения на папки. Также, приложения запускаются из контекстного меню правого клика мышки и в нём-же реализована часть открытия файлов приложениями. Набор поставляемых с кибер-файлом лучших нужных программ является системой, и начиная с версии 2.8.0 он сделан настраиваемым и расширяемым. Теперь каждый опытный пользователь или программист может выпустить свою сборку, операционную систему на основе кибер-файла, практически не программируя: добавляя папки с программами и правя конфигурационный файл этого менеджера, и собирая инсталлятор, например - в InnoSetup. Программ может быть 20, 40, 100 или даже 150, я не ограничиваю этот список, часть ограничений возникает только из требования для контекстного меню правой кнопки мыши помещаться на экран. Даёшь собственную сборку своей операционной системы! ФОРМАТ КОНФИГУРАЦИОННОГО ФАЙЛА CYBERFILE Ниже я привожу пример конфигурационного файла config.txt из папки CyberFile-2 и потом рассказываю назначение его записей и формат каждой записи. Итак. Код (Text): { "BuildName": "Original", "Plugins": { "plugins": [ { "ButtonText": "$CLI", "CyberfileSubfolder": "CLI", "ExecutableName": "", "CommandLineArgs": "", "RightMenuText": "", "GiveFileNameInMenu": false }, { "ButtonText": "RTF", "CyberfileSubfolder": "$SYS", "ExecutableName": "write.exe", "CommandLineArgs": "", "RightMenuText": "", "GiveFileNameInMenu": false }, { "ButtonText": "TXT", "CyberfileSubfolder": "$SYS", "ExecutableName": "notepad.exe", "CommandLineArgs": "", "RightMenuText": "", "GiveFileNameInMenu": false }, { "ButtonText": "Books", "CyberfileSubfolder": "BOOKS", "ExecutableName": "", "CommandLineArgs": "", "RightMenuText": "", "GiveFileNameInMenu": false }, { "ButtonText": "IDA Free", "CyberfileSubfolder": "IDA Freeware", "ExecutableName": "ida64.exe", "CommandLineArgs": "", "RightMenuText": "Open in IDA", "GiveFileNameInMenu": true }, { "ButtonText": "x64dbg", "CyberfileSubfolder": "x64dbg\\release\\x64", "ExecutableName": "x64dbg.exe", "CommandLineArgs": "", "RightMenuText": "", "GiveFileNameInMenu": false }, { "ButtonText": "IL Spy", "CyberfileSubfolder": "ILSpy", "ExecutableName": "ILSpy.exe", "CommandLineArgs": "", "RightMenuText": "Open in IL Spy", "GiveFileNameInMenu": true }, { "ButtonText": "JavaDec", "CyberfileSubfolder": "jd-gui-windows-1.6.6", "ExecutableName": "jd-gui.exe", "CommandLineArgs": "", "RightMenuText": "", "GiveFileNameInMenu": false }, { "ButtonText": "HexEdit", "CyberfileSubfolder": "Frhed-1.6.0-exe", "ExecutableName": "Frhed.exe", "CommandLineArgs": "", "RightMenuText": "Open as Hex", "GiveFileNameInMenu": true }, { "ButtonText": "DllExp", "CyberfileSubfolder": "DLLEXP", "ExecutableName": "dllexp.exe", "CommandLineArgs": "", "RightMenuText": "", "GiveFileNameInMenu": false }, { "ButtonText": "Sniffer", "CyberfileSubfolder": "Ethereal", "ExecutableName": "ethereal.exe", "CommandLineArgs": "", "RightMenuText": "", "GiveFileNameInMenu": false }, { "ButtonText": "JabberX", "CyberfileSubfolder": "JabberX", "ExecutableName": "JabberX.exe", "CommandLineArgs": "", "RightMenuText": "", "GiveFileNameInMenu": false }, { "ButtonText": "Psi", "CyberfileSubfolder": "Psi-1.4", "ExecutableName": "psi-portable.exe", "CommandLineArgs": "", "RightMenuText": "", "GiveFileNameInMenu": false }, { "ButtonText": "Multi", "CyberfileSubfolder": "MultiSearchEngine", "ExecutableName": "MultiSearch.exe", "CommandLineArgs": "", "RightMenuText": "", "GiveFileNameInMenu": false }, { "ButtonText": "Deluge", "CyberfileSubfolder": "Deluge", "ExecutableName": "deluge.exe", "CommandLineArgs": "", "RightMenuText": "", "GiveFileNameInMenu": false }, { "ButtonText": "Trade", "CyberfileSubfolder": "FLAT", "ExecutableName": "Flat.exe", "CommandLineArgs": "", "RightMenuText": "", "GiveFileNameInMenu": false }, { "ButtonText": "Radio", "CyberfileSubfolder": "DiscordRadio", "ExecutableName": "DiscordRadio.exe", "CommandLineArgs": "", "RightMenuText": "", "GiveFileNameInMenu": false }, { "ButtonText": "Micro", "CyberfileSubfolder": "Amplify Voice Recorder", "ExecutableName": "AmplifyVoiceRecorder.exe", "CommandLineArgs": "", "RightMenuText": "", "GiveFileNameInMenu": false }, { "ButtonText": "Scanner", "CyberfileSubfolder": "CYBERSCAN-2", "ExecutableName": "CYBERSCAN2.exe", "CommandLineArgs": "", "RightMenuText": "", "GiveFileNameInMenu": false }, { "ButtonText": "PDF.mp3", "CyberfileSubfolder": "CLI\\PDF-MP3", "ExecutableName": "", "CommandLineArgs": "", "RightMenuText": "", "GiveFileNameInMenu": false }, { "ButtonText": "Audacity", "CyberfileSubfolder": "Audacity", "ExecutableName": "Audacity.exe", "CommandLineArgs": "", "RightMenuText": "Open in Audacity", "GiveFileNameInMenu": true }, { "ButtonText": "ShareX", "CyberfileSubfolder": "ShareX", "ExecutableName": "ShareX.exe", "CommandLineArgs": "", "RightMenuText": "", "GiveFileNameInMenu": false }, { "ButtonText": "NoPad", "CyberfileSubfolder": "npp-portable", "ExecutableName": "notepad++.exe", "CommandLineArgs": "", "RightMenuText": "", "GiveFileNameInMenu": false }, { "ButtonText": "", "CyberfileSubfolder": "npp-portable", "ExecutableName": "notepad++.exe", "CommandLineArgs": "", "RightMenuText": "Open in Notepad++", "GiveFileNameInMenu": true }, { "ButtonText": "", "CyberfileSubfolder": "$SYS", "ExecutableName": "write.exe", "CommandLineArgs": "", "RightMenuText": "Open as RTF", "GiveFileNameInMenu": true }, { "ButtonText": "GIMP", "CyberfileSubfolder": "GIMP 2\\bin", "ExecutableName": "gimp-2.10.exe", "CommandLineArgs": "", "RightMenuText": "", "GiveFileNameInMenu": false }, { "ButtonText": "", "CyberfileSubfolder": "GIMP 2\\bin", "ExecutableName": "gimp-2.10.exe", "CommandLineArgs": "", "RightMenuText": "Open in GIMP", "GiveFileNameInMenu": true }, { "ButtonText": "Paint", "CyberfileSubfolder": "$SYS", "ExecutableName": "mspaint.exe", "CommandLineArgs": "", "RightMenuText": "", "GiveFileNameInMenu": false }, { "ButtonText": "", "CyberfileSubfolder": "$SYS", "ExecutableName": "mspaint.exe", "CommandLineArgs": "", "RightMenuText": "Open in Paint", "GiveFileNameInMenu": true }, { "ButtonText": "", "CyberfileSubfolder": "SumatraPDF", "ExecutableName": "SumatraPDF-3.3.3-32.exe", "CommandLineArgs": "", "RightMenuText": "Open as PDF", "GiveFileNameInMenu": true }, { "ButtonText": "", "CyberfileSubfolder": "WinDjView", "ExecutableName": "WinDjView.exe", "CommandLineArgs": "", "RightMenuText": "Open as Djvu", "GiveFileNameInMenu": true }, { "ButtonText": "", "CyberfileSubfolder": "IDA Freeware", "ExecutableName": "ida64.exe", "CommandLineArgs": "", "RightMenuText": "Open in IDA", "GiveFileNameInMenu": true }, { "ButtonText": "", "CyberfileSubfolder": "ILSpy", "ExecutableName": "ILSpy.exe", "CommandLineArgs": "", "RightMenuText": "Open in IL Spy", "GiveFileNameInMenu": true }, { "ButtonText": "", "CyberfileSubfolder": "Frhed-1.6.0-exe", "ExecutableName": "Frhed.exe", "CommandLineArgs": "", "RightMenuText": "Open as Hex", "GiveFileNameInMenu": true }, { "ButtonText": "SiteTxt", "CyberfileSubfolder": "CLI\\NET", "ExecutableName": "", "CommandLineArgs": "", "RightMenuText": "", "GiveFileNameInMenu": false }, { "ButtonText": "Mkill", "CyberfileSubfolder": "CLI\\MKILL", "ExecutableName": "", "CommandLineArgs": "", "RightMenuText": "", "GiveFileNameInMenu": false }, { "ButtonText": "Wipe", "CyberfileSubfolder": "CLI\\FASTWIPE2", "ExecutableName": "", "CommandLineArgs": "", "RightMenuText": "", "GiveFileNameInMenu": false }, { "ButtonText": "John", "CyberfileSubfolder": "CLI\\JOHN-1.9.0", "ExecutableName": "", "CommandLineArgs": "", "RightMenuText": "", "GiveFileNameInMenu": false }, { "ButtonText": "Putty", "CyberfileSubfolder": "CLI\\PuTTY", "ExecutableName": "", "CommandLineArgs": "", "RightMenuText": "", "GiveFileNameInMenu": false }, { "ButtonText": "Zydis", "CyberfileSubfolder": "CLI\\ZYDIS", "ExecutableName": "", "CommandLineArgs": "", "RightMenuText": "", "GiveFileNameInMenu": false }, { "ButtonText": "TorCycle", "CyberfileSubfolder": "CLI", "ExecutableName": "tor-change-ip-cycle.bat", "CommandLineArgs": "", "RightMenuText": "", "GiveFileNameInMenu": false }, { "ButtonText": "ToPage", "CyberfileSubfolder": "CLI\\NET", "ExecutableName": "", "CommandLineArgs": "", "RightMenuText": "", "GiveFileNameInMenu": false }, { "ButtonText": "SpltTxt", "CyberfileSubfolder": "CLI\\NET", "ExecutableName": "", "CommandLineArgs": "", "RightMenuText": "", "GiveFileNameInMenu": false }, { "ButtonText": "UntTxt", "CyberfileSubfolder": "CLI\\NET", "ExecutableName": "", "CommandLineArgs": "", "RightMenuText": "", "GiveFileNameInMenu": false }, { "ButtonText": "GrnCat", "CyberfileSubfolder": "CLI\\NET", "ExecutableName": "", "CommandLineArgs": "", "RightMenuText": "", "GiveFileNameInMenu": false }, { "ButtonText": "ImgASC", "CyberfileSubfolder": "CLI\\NET", "ExecutableName": "ImageToAscii.exe", "CommandLineArgs": "", "RightMenuText": "", "GiveFileNameInMenu": false }, { "ButtonText": "T-Con", "CyberfileSubfolder": "CLI\\NET", "ExecutableName": "", "CommandLineArgs": "", "RightMenuText": "", "GiveFileNameInMenu": false } ] }, "CurrentPalette": { "WindowBackgroundColor": "153, 64, 30", "PanelFrameColor": "1, 105, 222", "PanelBackgroundColor": "120, 161, 63", "PositionHighlightColor": "195, 217, 166", "UpperBannerColor": "169, 115, 200", "ProgramNameColor": "252, 119, 122", "FireColor": "121, 130, 58", "RegistrationColor": "17, 230, 67", "UpperLinksColor": "242, 155, 255", "RenamePanelBackgroundColor": "193, 118, 7", "RenameInactiveColor": "55, 252, 71", "RenameActiveColor": "93, 220, 16", "CommandTextColor": "59, 223, 95", "CommandTextBoxBackgroundColor": "166, 6, 27", "CommanTextBoxForegroundColor": "22, 185, 138", "ButtonType0Foreground": "151, 82, 147", "ButtonType0Background": "109, 243, 52", "ButtonType1Foreground": "149, 87, 118", "ButtonType1Background": "87, 136, 89", "ButtonType2Foreground": "218, 14, 205", "ButtonType2Background": "223, 182, 43", "ButtonType3Foreground": "56, 140, 221", "ButtonType3Background": "94, 76, 150", "ButtonType4Foreground": "183, 193, 152", "ButtonType4Background": "27, 210, 124", "ButtonType5Foreground": "31, 250, 45", "ButtonType5Background": "184, 91, 72", "BottomPanelBackground": "108, 84, 130", "RecordMarkedCurrent": "211, 161, 164", "RecordCurrent": "208, 6, 84", "RecordMarked": "183, 96, 209", "RecordDollarPoint": "145, 199, 79", "RecordExeBat": "239, 221, 45", "RecordPdf": "173, 56, 6", "RecordPng": "252, 181, 49", "RecordMpeg": "155, 122, 132", "RecordDll": "250, 55, 141", "RecordFile": "43, 34, 179", "RecordDirectory": "133, 114, 98" } } Конфигурационный файл имеет формат JSON, это человеко-машинный формат, позволяющий записывать состояния классов из памяти на диск и читать их с диска. Ну, не классов, а объектов, если вы знакомы с ООП. Файл начинается с поля BuildName, это имя сборки, высвечиваемое при старте программы в заголовке главного окна справа. Тут надо прописать название своей сборки. Далее, в файле идут две больших секции: секция плагинов, то есть программ, поставляемых с кибер-файлом и запускаемых из него, и секция палитры приложения - цветов панелей, файлов, папок, кнопок, и так далее. Эту секцию в ручную лучше не править, её прекрасно заполняет искусственный интеллект компьютера при переключении между Black и Random внизу справа в кибер-файле. Подберите хорошее сочетание цветов и нажмите Save - палитра сама сохранится в конфиг. Итак, секция плагинов - именно её надо править, если вы создаёте собственную сборку кибер-файла. Это набор записей для каждой программы, и я привожу пример одной записи ниже для расшифровки её полей. Вы копируете и вставляете запись в текстовом редакторе для каждой добавляемой программы, после чего правите значения её полей. Для одной программы может быть две записи в конфиге, одна - для кнопки запуска, одна - для контекстного меню правой кнопки мыши. Если программ больше, чем помещается в главном окне менеджера - их список с кнопками запуска можно промотать стрелками в правом нижнем углу окна. Код (Text): { "ButtonText": "RTF", "CyberfileSubfolder": "$SYS", "ExecutableName": "write.exe", "CommandLineArgs": "", "RightMenuText": "", "GiveFileNameInMenu": false }, ButtonText - текст, отображаемый на кнопке запуска программы. Кнопки упорядочиваются с заполнением из конфига и нумеруются с низу-вверх слева-направа, то есть сначала описывается нижний ряд кнопок, потом - верхний ряд. Если сделать это поле пустыми кавычками, то запись будет рассматриваться при чтении конфига как пункт меню правой кнопки мыши, а если поле заполнено - это описание кнопки на панели. CyberfileSubfolder - поддиректория в папке установки файлового менеджера кибер-файл, например значение CLI обозначает папку C:\CyberFile-2\CLI . Если в этом поле прописать $SYS, то будет подразумеваться системная папка C:\WINDOWS ExecutableName - имя программы, которую надо запускать при клике на кнопку или при выборе пункта меню правого клика мыши. Если сделать это поле пустыми кавычками, то запись будет означать просто открытие директории, это надо, например, для быстрого открытия папки с книгами или для открытия папки с утилитами командной строки. CommandLineArgs - аргументы командной строки, вставляемые после имени исполняемого файла и перед именем передаваемого программе файла на открытие, если файл передаётся. При клике на кнопку или пункт меню, программе всегда будут передаваться данные аргументы. RightMenuText - текст пункта меню правого клика мышки, если запись относится к меню, а не к кнопке запуска. Игнорируется кнопками и используется пунктами меню. GiveFileNameInMenu - передавать ли подсвеченный файл запускаемой правым кликом мышки программе, true - да, false - нет. Вот и все поля для заполнения при добавлении программы в свою сборку кибер-файла. Ниже я привожу фрагмент конфига, где одна и та-же программа стартует и при нажатии кнопки на панели, и при выборе пункта меню мыши. Код (Text): { "ButtonText": "NoPad", "CyberfileSubfolder": "npp-portable", "ExecutableName": "notepad++.exe", "CommandLineArgs": "", "RightMenuText": "", "GiveFileNameInMenu": false }, { "ButtonText": "", "CyberfileSubfolder": "npp-portable", "ExecutableName": "notepad++.exe", "CommandLineArgs": "", "RightMenuText": "Open in Notepad++", "GiveFileNameInMenu": true }, Это добавленный плагин всем известного текстового редактора для программистов Notepad++. Первая запись описывает кнопку запуска программы на панели снизу, у неё не пустой ButtonText, вторая запись описывает открытие файла в Notepad++ по правому клику мыши - у неё пустой ButtonText. Также, в описании меню стоит в true поле GiveFileNameInMenu - текущий подсвеченный файл на панели менеджера будет передаваться Notepad++ при его старте аргументом командной строки. Итак, конфиг прост, его легко читать и редактировать в текстовом редакторе notepad++. Отметьте пожалуйста, что после последней записи не должно быть запятой, а все остальные записи отделяются друг от друга запятыми. Копирование, вставка и редактирование записей о программах в конфиге это всё, что надо, чтобы сделать сборку своей операционной системы без программирования! А может быть - и с оным, если вы хотите зарелизить свои программы, бесплатные или условно - бесплатные, особенно, если вы нехилый кодер или коммерческий программер. С вами был Таломир Миротал, лаборатория искусственного интеллекта и радио-хакинга Технологии Боттинга 12, январь 2023. Скачать сборку CyberFile-2.8.0 Original с десятками хакерских программ и сотнями книг по хэкингу можно будет со времени обновления 23:54 22.01.2023 на сайте разработчика http://unhide.site --- Сообщение объединено, 22 янв 2023 --- Кибер-файл 2.8.0 Original Build закачан на анхайд. --- Сообщение объединено, 22 янв 2023 ---