Я успешно разбираю файлы .pcap с помощью библиотеки SharpPcap.
Цель - извлечь данные XML из пакетов TCP / HTTP.Для этого я использую приведенный ниже код (удалены нулевые проверки, чтобы сделать его более читабельным):
Packet packet = Packet.ParsePacket(eventArguments.Packet.LinkLayerType, eventArguments.Packet.Data);
EthernetPacket ethernetPacket = ((EthernetPacket)packet);
IpPacket ipPacket = (IpPacket)packet.Extract(typeof(IpPacket));
TcpPacket tcpPacket = (TcpPacket)packet.Extract(typeof(TcpPacket));
string rawData = tcpPacket.PrintHex();
Перемещая в сторону шестнадцатеричные значения и начальные строки, я могу извлечь XMLданные из переменной rawData вместе с неожиданным побочным эффектом.
Вместо пробелов .PrintHex()
возвращает '.'символы:
Вместо:
<xml>Only text here</xml>
Я получаю это:
<xml>Only.text.here</xml>
Я не делаю никаких странных замен или преобразований байтов.Вышеуказанное поведение - это именно то, что .PrintHex()
возвращает.
- Это случайно не ожидаемый результат?
- И что более важно ... Как это можно исправить или предотвратить?(имея в виду, что действительное «.» от преобразованного «.» нельзя отличить)
Версии библиотеки:
.NETFramework :> 4.5.2
Pcapsharp : 4.2.0