Строки дробить выглядит так:Regex выражения - разбить строку на три переменные
192.168.1.254445.... 0000 0000 0010 = Flags: 0x002 (SYN)
Есть три бита информации в этой строке, которые должны быть выведены различными переменными, которые являются:
ip - 192.168.1.254
port - 445
flag - SYN
IP-адрес ip, поэтому он должен будет захватить весь диапазон адресов. Порт может быть от 1 до 4 цифр. , и флаг может содержать три символа с тремя буквами, например. SYN или SYN, ACK или SYN, ACK, URG и т. Д. (Например, различные комбинации флагов пакетов.
Я попытался использовать Split с (: '' как разрывы, но всякий раз, когда я помещаю [1] в качестве результата, который он создает
error - Index was outside the bounds of the array.
затем я создал этот код из глядя на C# RegEx string extraction:
Regex pattern = new Regex(@"(<?ip>\d+)(<?port>\d+).... \d{4} \d{4} \d{4} \d{4} = Flags: \d{1}x\d{3} ((<?flag>\w+))");
Match match = pattern.Match(dst1);
string ip = (match.Groups["ip"].Value);
string port = (match.Groups["port"].Value);
string flag = (match.Groups["flag"].Value);
string dst = ip + port + flag;
listBox1.Items.Add(dst);
Но это не возвращает значения в listbox1
Если строка изменяется на.:
192.168.1.254.... 0000 0000 0010 = Flags: 0x002 (SYN)445
Будет ли это проще?
Любые предложения были бы замечательными,
Спасибо.
вы не можете, потому что нет способа узнать, где заканчивается последний номер ip и где начинается номер порта. В примере, который вы указали, результатом может быть: ip = 192.168.1.25, порт: 4445. Но, возможно, у вас есть дополнительная информация об этом формате. –
Если мне удастся переместить порт в конец позади (SYN), это можно сделать тогда? – Taz
Да, но как вы это сделаете, это та же проблема. –