/// <summary> /// Pärchen Zeile hinzufügen /// </summary> /// <returns></returns> private void AddPaarLine(string aLine, Int32 aCount) { string sDatum; string sTyp = ""; string sLength = ""; string sEmm = ""; string[] data = aLine.Split(new Char[] { ' ', '\t' }); sDatum = data[0] + ' ' + data[1]; sEmm = data[3] + ' ' + data[4]; //Typ auslesen sTyp = data[3].Substring(16, 2); //Längenangabe extrahieren sLength = data[3].Substring(4, 2); LengthInfo info = vLengthList.Find(x => x.Length == sLength); sLength = sLength + " hex / " + int.Parse(sLength, System.Globalization.NumberStyles.HexNumber); Int64 xDiff = ((DateTime.Now).Subtract(new DateTime(Convert.ToInt32(data[0].Substring(0, 4)), Convert.ToInt32(data[0].Substring(5, 2)), Convert.ToInt32(data[0].Substring(8, 2)), Convert.ToInt32(data[1].Substring(0, 2)), Convert.ToInt32(data[1].Substring(3, 2)), Convert.ToInt32(data[1].Substring(6, 2))))).Ticks; //EMM formatieren mit Leerzeichen string sOrigEmm = sEmm; if (vCardCode != "") { sEmm = sEmm.Replace(vCardCode, "xxxxxxxx"); } if (vCamType == OSCAM) { sEmm = sEmm.Insert(18, " "); sEmm = sEmm.Insert(16, " "); } else { sEmm = sEmm.Insert(10, " "); } sEmm = sEmm.Insert(8, " "); sEmm = sEmm.Insert(6, " "); sEmm = sEmm.Insert(4, " "); PaarListView.Items.Add(new ListViewItem(new string[] { sDatum, CalcDatum(sDatum), aCount.ToString(), sTyp, sLength, CalcCheckSum(sEmm), sEmm, sOrigEmm })); }
/// <summary> /// Analyse des EMM's /// </summary> private void button1_Click(object sender, EventArgs e) { int lineNr = 1; int Count = 1; string sDatum; string sEmmTyp; string sTyp = ""; string sCard = ""; string sBox = ""; string sLength = ""; string sDescription = ""; string sEmm = ""; string sOrigEmm = ""; DateTime firstDate = new DateTime(); DateTime lastDate = new DateTime(); listView1.Items.Clear(); vDoubles.Clear(); vDoubleCount.Clear(); foreach (string line in TextBox.Lines) { string corrLine = RemoveDoubleSpaceCharacters(line); //doppelte Leerzeichen entfernen string[] data = corrLine.Split(new Char[] { ' ', '\t' }); if (data.Count() == 5) { if ((!dateCheckBox.Checked) || (dateTimePicker.Value <= new DateTime(Convert.ToInt32(data[0].Substring(0, 4)), Convert.ToInt32(data[0].Substring(5, 2)), Convert.ToInt32(data[0].Substring(8, 2)), Convert.ToInt32(data[1].Substring(0, 2)), Convert.ToInt32(data[1].Substring(3, 2)), Convert.ToInt32(data[1].Substring(6, 2))))) { if ((!vDoubles.Contains(data[3])) || (!doubleCheckBox.Checked)) { //Datum merken if (listView1.Items.Count == 0) { firstDate = new DateTime(Convert.ToInt32(data[0].Substring(0, 4)), Convert.ToInt32(data[0].Substring(5, 2)), Convert.ToInt32(data[0].Substring(8, 2)), Convert.ToInt32(data[1].Substring(0, 2)), Convert.ToInt32(data[1].Substring(3, 2)), Convert.ToInt32(data[1].Substring(6, 2))); } lastDate = new DateTime(Convert.ToInt32(data[0].Substring(0, 4)), Convert.ToInt32(data[0].Substring(5, 2)), Convert.ToInt32(data[0].Substring(8, 2)), Convert.ToInt32(data[1].Substring(0, 2)), Convert.ToInt32(data[1].Substring(3, 2)), Convert.ToInt32(data[1].Substring(6, 2))); //Einträge auslesen sDatum = data[0] + ' ' + data[1]; sEmmTyp = data[2]; sEmm = data[3] + ' ' + data[4]; sOrigEmm = sEmm; //prüfen ob Card Key enthalten if ((vCardCode != "") && (data[3].Contains(vCardCode))) { //sCard = "1"; sCard = CountStrings(data[3], vCardCode).ToString(); } else { sCard = ""; } //prüfen ob Box Key enthalten if ((vBoxCode != "") && (data[3].Contains(vBoxCode))) { //sBox = "1"; sCard = CountStrings(data[3], vBoxCode).ToString(); } else { sBox = ""; } //Typ auslesen sTyp = data[3].Substring(16, 2); //Längenangabe extrahieren sLength = data[3].Substring(4, 2); LengthInfo info = vLengthList.Find(x => x.Length == sLength); sLength = sLength + " hex / " + int.Parse(sLength, System.Globalization.NumberStyles.HexNumber); if (KeyCheckBox.Checked) { if (vCardCode != "") { sEmm = sEmm.Replace(vCardCode, "xxxxxxxx"); } if (vBoxCode != "") { sEmm = sEmm.Replace(vBoxCode, "xxxxxxxx"); } } //sDescription = CreateDescription(sEmm); if (info != null) { sDescription = info.Text; } else { sDescription = ""; } //EMM formatieren mit Leerzeichen if (vCamType == OSCAM) { sEmm = sEmm.Insert(18, " "); sEmm = sEmm.Insert(16, " "); } else { sEmm = sEmm.Insert(10, " "); } sEmm = sEmm.Insert(8, " "); sEmm = sEmm.Insert(6, " "); sEmm = sEmm.Insert(4, " "); ListViewItem listItem = listView1.Items.Add(new ListViewItem(new string[] { Convert.ToString(lineNr), Convert.ToString(Count), sDatum, sEmmTyp, sTyp, sCard, sBox, sLength, sDescription, sEmm, sOrigEmm })); listItem.BackColor = Color.White; //Hintergrund weiß zeichnen vDoubles.Add(data[3]); vDoubleCount.Add(1); } else { if (doubleCheckBox.Checked) { vDoubleCount[vDoubles.IndexOf(data[3])] += 1; lastDate = new DateTime(Convert.ToInt32(data[0].Substring(0, 4)), Convert.ToInt32(data[0].Substring(5, 2)), Convert.ToInt32(data[0].Substring(8, 2)), Convert.ToInt32(data[1].Substring(0, 2)), Convert.ToInt32(data[1].Substring(3, 2)), Convert.ToInt32(data[1].Substring(6, 2))); } } } lineNr++; } } //wenn keine Doubles dann die Anzahl aktualisieren if (doubleCheckBox.Checked) { int count = 0; foreach (ListViewItem item in listView1.Items) { item.SubItems[1].Text = vDoubleCount[count].ToString(); count++; } } //Zeit ausgeben erster Eintrag bis jetzt if (firstDate != DateTime.MinValue) { Int64 lTicks = (DateTime.Now).Subtract(firstDate).Ticks; TimeSpan ts = TimeSpan.FromTicks(lTicks); TimeStripLabel.Text = "Dauer: " + ts.Days + " Tage " + ts.Hours + " Stunden " + ts.Minutes + " Minuten (" + Math.Round(ts.TotalHours, 2).ToString() + " h)"; } else { TimeStripLabel.Text = "Dauer: --"; } //Zeit ausgeben erster Eintrag bis letzter Eintrag if ((firstDate != DateTime.MinValue) && (lastDate != DateTime.MinValue)) { Int64 lTicks = (lastDate).Subtract(firstDate).Ticks; TimeSpan ts = TimeSpan.FromTicks(lTicks); LogTimeStripLabel.Text = "Logdauer: " + ts.Days + " Tage " + ts.Hours + " Stunden " + ts.Minutes + " Minuten (" + Math.Round(ts.TotalHours, 2).ToString() + " h)"; } else { LogTimeStripLabel.Text = "Logdauer: --"; } }