#region Using directives using System; using System.Collections.Generic; using System.Text; using System.IO; #endregion namespace ExtractData { class Program { static byte[] bytes = null; static bool readRecord(ref int pos) { int count = bytes[pos] + 256* bytes[pos + 1]; if (count > 0 && count < 250) { pos += 2 + count + 3; return true; } return false; } static void Main(string[] args) { using (FileStream fs = new FileStream(@"E:\save.me", FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { bytes = new byte[fs.Length]; fs.Read(bytes, 0, bytes.Length); } for (int i = 0; i < bytes.Length; i++) { if ((bytes[i] == 255) && (bytes[i + 1] == 255) && (bytes[i + 2] == 255) && (bytes[i + 3] == 255)) { // FF FF FF FF // 04 00 int count = bytes[i + 4] + 256 * bytes[i + 5]; if (count >1 && count < 255) { bool ok = true; for (int x = 0; x < count; x++) if (bytes[i+x + 6] < '0' || bytes[i+x + 6] > '9') { ok = false; break; } if (ok) { // 31 30 30 30 String chart = Encoding.ASCII.GetString(bytes, i + 6, count); //Console.WriteLine(chart); // 0C 00 00 int curPos = i + count + 6 + 3; // 05 00 78 00 00 00 01 3D 00 00 if (!readRecord(ref curPos)) continue; // 05 00 01 09 D4 07 01 0B 00 00 String date = bytes[curPos + 2].ToString() + "/" + bytes[curPos + 3].ToString(); if (bytes[curPos + 3] < 10) continue; if (bytes[curPos + 3] > 12) continue; if (bytes[curPos + 2] > 33) continue; if (bytes[curPos + 3] == 10 && bytes[curPos + 2] <= 19) continue; if (!readRecord(ref curPos)) continue; // 08 00 C3 F5 28 5C 8F C2 F1 BF 32 00 00 String data = ""; /* count = bytes[curPos] + 256 * bytes[curPos + 1]; if (count < 100) { for (int h = 2; h < count+2; h++) { data += bytes[h].ToString("h"); } } */ if (!readRecord(ref curPos)) continue; // 08 00 74 65 73 74 69 6E 67 36 D9 00 00 int testLen = bytes[curPos] + bytes[curPos + 1] * 256; if (testLen < 100) { String testMessage = Encoding.ASCII.GetString(bytes, curPos + 2, testLen); Console.Write(chart); Console.Write(" "); Console.Write(date); Console.Write(" "); Console.Write(testMessage); Console.Write(" "); Console.WriteLine(data); } } } } } } } }