Как запускать команды WireShark в командной строке через C# - PullRequest
0 голосов
/ 11 марта 2020

Я хочу преобразовать файлы .pcapng в файлы .csv, используя следующие команды:

     > cd C:\Program Files\Wireshark
     > tshark -r output.pcapng -T fields -e frame.number -e eth.src -e eth.dst -e frame.len -e frame.time -e frame.time_relative -e data -E header=y -E separator=, > output.csv

В C# я использовал следующий код.

        string command = @"cd C:\Program Files\Wireshark & tshark -r output.pcapng -T fields -e frame.number -e eth.src -e eth.dst -e frame.len -e frame.time -e frame.time_relative -e data -E header=y -E separator=, > output.csv";
        System.Diagnostics.Process process = new System.Diagnostics.Process();
        System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
        startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
        startInfo.FileName = "CMD.exe";
        startInfo.Arguments = command;
        startInfo.Verb = "runas";
        process.StartInfo = startInfo;
        process.Start();
        process.WaitForExit();

Это не так кажется, работает.

Ответы [ 2 ]

0 голосов
/ 11 марта 2020

Проверьте этот путь:

string command = @"cd C:\ProgramFiles\Wireshark & tshark -r output.pcapng -T fields -e frame.number -e eth.src -e eth.dst -e frame.len -e frame.time -e frame.time_relative -e data -E header=y -E separator=, > output.csv";

На моей машине Program Files имеет пробел между двумя словами, и Wireshark & tshark тоже подозрительно. Амперсанд (особенно при использовании оболочек) интерпретируется по-разному.

0 голосов
/ 11 марта 2020

С cmd /?:

Starts a new instance of the Windows command interpreter

CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF]
    [[/S] [/C | /K] string]

/C      Carries out the command specified by string and then terminates
<snip>

Попробуйте добавить /C в начало командной строки:

 string command = @"/C cd C:\ProgramFiles\Wireshark & tshark -r output.pcapng -T fields -e frame.number -e eth.src -e eth.dst -e frame.len -e frame.time -e frame.time_relative -e data -E header=y -E separator=, > output.csv";

Обновление:

Команда ниже работает для меня. И количество символов двойной кавычки не является опечаткой. Это 4 в начале пути программы tshark и 3 в конце.

cmd /k """"C:\Program Files\Wireshark\tshark""" -r output.pcapng -T fields -e frame.number -e eth.src -e eth.dst -e frame.len -e frame.time -e frame.time_relative -e data -E header=y -E separator=, > output.csv"

...