• XSS.stack #1 – первый литературный журнал от юзеров форума

Вопросы по С#

Как получить список всех файлов находящихся на машине (полный путь + имя файла)? Я использую Directory.EnumerateFiles вместе с EnumerationOptions { IgnoreInaccessible = true }. Когда параметр path="/home/user/" то все ошибки пропускаются, и я получаю список всех доступных файлов, но когда path="/" то программа бросает исключение
C#:
System.UnauthorizedAccessException: Access to the path '/usr/share/doc/lite-themes/copyright' is denied.
 ---> System.IO.IOException: Permission denied
   --- End of inner exception stack trace ---
   at System.IO.Enumeration.FileSystemEntry.get_IsHidden()
   at System.IO.Enumeration.FileSystemEnumerator`1.MoveNext()
   at System.Linq.Enumerable.LongCount[TSource](IEnumerable`1 source)
Try-catch не помогает.
И более общий вопрос: как получить список всех фалов с определенным расширением (.docx, .xlsx, к примеру) кроме как отфильтровать полученный выше список?
(Сейчас пишу на линукс, но программа будет запускаться на windows)

Можно например как-то так - рекурсивно или используя итераторы

C#:
public IEnumerable<string> EnumerateFiles(string dir, string pattern)
        {
            Stack<string> directoryList = new Stack<string>();
            directoryList.Push(dir);

            while (directoryList.Count != 0)
            {
                var currentPath = directoryList.Pop();
                string[] next = null;
                try
                {
                    next = Directory.GetFiles(currentPath, pattern);
                }
                catch { /* тут бы формировать список недоступных файлов/папок на всякий случай*/ }
                if (next != null && next.Length != 0)
                    foreach (var file in next) yield return file;
                try
                {
                    next = Directory.GetDirectories(currentPath);
                    foreach (var subdir in next) directoryList.Push(subdir);
                }
                catch { }
            }
        }

В Directory.GetFiles можно использовать маску поиска ака search pattern. В Directory.EnumerateFiles вроде нет, но там можно довольно удобно использовать LINQ

надеюсь это не очередной говношкафчик на дотнете...
 
Последнее редактирование:
Большинство мужчин озадачено тем как увеличить размер МПХ, а я вот озадачился тем как уменьшить размер исполняемого файла, к примеру состоящего лишь из

Код:
Console.Writeline("Hello World!")

Если эта тема поднималась на этом форуме либо где-то еще, дайте пожалуйста ссылочку, из полезного по данному вопросу обнаружил лишь

 
Всем привет. Есть клиент-серверное приложение. Два разных проекта: Library и WinExe. Вопрос, а как узнать(посмотреть в реестре нужные разделы) какие guid использовались? В assemblyinfo.cs (ComVisible -False) и SLN (не который стандартный FAE04EC0-301F-11D3-BF4B-00C04F79EFBC), у Library"название программы".csproj {guid....} У WinExe"название программы".ProdUI.csproj {guid....} Guid's разные. Или Visual Studio сама guid генерирует?
 
Загрузил я свой HelloWorld на VT, который почему-то детектируется 3/71 как Win64:Evo-gen [Trj] (Avast, AVG). VT ещё приписал моему HelloWorld Persistence, Privilege Escalation, и Defense Evasion. Но больше всего меня беспокоит то, что все созданные на дотнет приложения стучат на сервера Microsoft. Ничего из вышеперечисленного я не реализовывал, особенно связь с интернетом, т.е. это встаивается в программу на этапе компиляции по-умолчанию. Как от этой спайвари избавится (чтобы на сервера Microsoft не стучало)?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Но больше всего меня беспокоит то, что все созданные на дотнет приложения стучат на сервера Microsoft. Ничего из вышеперечисленного я не реализовывал, особенно связь с интернетом, т.е. это встаивается в программу на этапе компиляции по-умолчанию. Как от этой спайвари избавится (чтобы на сервера Microsoft не стучало)?
Лол, что?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Так и что? Где этот семпл хелоуворлд на шарпах, который все это делает по твоему?
 
На другом форуме мне говорили, что мол траффик это от Visual Studio, но как это может быть VS, если я конкретно бинарник загрузил и анализ этого бинарника показал, что он стучит на сервера MS?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
На другом форуме мне говорили, что мол траффик это от Visual Studio, но как это может быть VS, если я конкретно бинарник загрузил и анализ этого бинарника показал, что он стучит на сервера MS?
Ты давай слезай с тяжелых наркотиков, брат. Семпл залей куда-нибудь, ты откровенный бред несешь.
 
Может конкретно этот HelloWorld не только выводит "Hello world" в консоль (старый семл просто, может что-то ещё добавлял). Но это уже не первый раз, когда я лью дотнет бинарник на VT и аланиз VT показывает, что есть траффик на сервера Microsoft (обычно 3-4 IPv4 и иногда IPv6)
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Опять же, очень смешно, не знаю, чего ты сам напихал в эту парашу, но может не стоит дотнет 8ой использовать в принципе? Отличная идея собрать 2мб нативного кода хер пойми из чего, а потом удивляться, что это у меня хеллоуворд палится. Может это не хеллоуворлд вовсе? Это просто старый семпл, просто запамятовал, чего ты на вирустотал заливаешь, бывает...
 
А чем по-твоему восьмой нет плох? Палится или нет - вопрос второстепенный. Но факт того, что идет трафик, там где его в принципе быть не должно остается.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
А чем по-твоему восьмой нет плох?
Тем что, тебе он зачем? Используй 4.0 или 3.5, если нужна поддержка старых систем. Будет тебе хеллоуворлд в 4кб вместо 2мб хер пойми какого нативного кода.

https://askubuntu.com/questions/792214/how-to-stop-net-core-from-collecting-data-to-protect-privacy - лол, майкрософт такой майкрософт.
 
В этом нативном коде весь смысл использования восьмой версии, чтобы небыло никаких зависимостей и соблазна декомпилировать семпл и заглянуть что там внутри. Поэтому проблема непонятного трафика для меня весьма серьезна (наверное). Плюс мне не нужно переписывать отдельно код под Windows и Linux, что для меня весьма важно.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
чтобы небыло никаких зависимостей и соблазна декомпилировать семпл и заглянуть что там внутри
Четвертый дотнет предустановлен на всех версиях венды, начиная с 10 и выше, версия 3.5 предустановлена на семерке. А насчет запуска этого экзешника на семерках я не уверен. По поводу декомпиляции - есть обфускаторы, а кому надо разобраться в том, что ты там в 2мб напихал, тот и так разберется, вне зависимости от того, будет там нативный код или msil. Наоборот, msil куда проще морфить и рандомизировать будет.

Ну вот честный хеллоуворлд на седьмом дотнете (восьмой еще в превью), само собой файл куда жирнее (одна из фишек восьмого дотнета в более мелких экзешниках, может, я еще чего не отключил, так как не шарю хорошо за это), но при этом при всем: https://www.virustotal.com/gui/file...3149e2e1b7af7474a4a4ea6aba83cc2d3741/behavior

IP Traffic​

  • 192.229.211.108:80 (TCP) - видимо digicert.com
  • 20.99.184.37:443 (TCP) - что-то из ms azure
  • a83f:8110:8d00:100:89:9598:0:8b:53 (UDP)
Как бы хорошо это или плохо - вопрос открытый, такое бывает, когда ты готов принять 2мб какого-то кода в своих экзешничках (хотя, опять же, может быть это система делает, а не сам экзешник), но ничего критичного в бехейвиор я особо не вижу.

C#:
Console.WriteLine("Hello, World!");

XML:
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net7.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
    <PublishSingleFile>true</PublishSingleFile>
    <SelfContained>true</SelfContained>
    <RuntimeIdentifier>win-x64</RuntimeIdentifier>
    <OptimizationPreference>Size</OptimizationPreference>
    <DebugType>None</DebugType>
    <DebugSymbols>False</DebugSymbols>
    <PublishTrimmed>true</PublishTrimmed>
    <TrimmerRemoveSymbols>true</TrimmerRemoveSymbols>
    <DebuggerSupport>false</DebuggerSupport>
  </PropertyGroup>

</Project>
 
Последнее редактирование:
Есть подозрение, что трафик вызван C:\Windows\System32\WerFault.exe или C:\Windows\System32\wuapihost.exe (подозрений больше к WerFault.exe). Так как бывает приложение ничего не делает, а использование приложением CPU за 30% зашкаливает (BingChat сказал, что это как раз может быть вызвано WerFault.exe: C:\Windows\system32\WerFault.exe -u -p 3500 -s 428 - из анализа VT). Есть может какие-то способы сразу убить WerFault.exe при запуске (без нужды в Админ правах)?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
C:\Windows\System32\WerFault.exe или C:\Windows\System32\wuapihost.exe
Первый запускается, когда приложение падает (возможно, у тебя какое-то необрабатываемое исключение вываливается), второй - это клиент к Windows Update. Когда werfault.exe сработал, ты уже ничего не можешь сделать, ты упал. У AppDomain есть событие для обработки unhandled исключений, можешь поставить свой обработчик и что-то с этим сделать.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх