Ejemplo n.º 1
0
 public ProcessedCallLog(MetaCallLog mf)
 {
     this.MetaData           = mf;
     this.InAddressBook      = false;
     this.SuspectPhoneNumber = false;
     this.NameBadness        = 0;
 }
Ejemplo n.º 2
0
 public ProcessedCallLog(MetaCallLog mf)
 {
     this.MetaData = mf;
     this.InAddressBook = false;
     this.SuspectPhoneNumber = false;
     this.NameBadness = 0;
 }
Ejemplo n.º 3
0
        /// <summary>
        /// Takes the list of call log metafields and generates a list of ProcessedCallLog
        /// objects. Eliminates those whose timestamps are clearly out of range.
        /// </summary>
        /// <param name="metaList">List of call log records to be filtered.</param>
        /// <param name="pruneTimestamp">Whether or not to use the timestamp of a call log record as a parameter for filtering.</param>
        /// <param name="lower">Lower limit for timestamps.</param>
        /// <param name="upper">Upper limit for timestamps.</param>
        /// <returns>A list of processed call log records.</returns>
        private List <ProcessedCallLog> GetCallLogs(List <MetaField> metaList, bool pruneTimestamp, DateTime lower, DateTime upper)
        {
            List <ProcessedCallLog> pList = new List <ProcessedCallLog>();

            foreach (MetaCallLog mf in metaList)
            {
                if (!mf.TimeStamp.HasValue)
                {
                    continue;
                }
                if (pruneTimestamp && ((mf.TimeStamp.Value < lower) || (mf.TimeStamp.Value > upper)))
                {
                    continue;
                }
                pList.Add(new ProcessedCallLog(mf));
            }
            // Can we get rid of any duplicate call logs?
            pList = EliminateDupCallLogs(pList);
            // Save numbers and names for later cross referencing.
            foreach (ProcessedCallLog pcl  in pList)
            {
                MetaCallLog mf = (MetaCallLog)pcl.MetaData;
                AddNumber(callLogNumbersFull, mf.Number);
                AddNumber(callLogNumbers7, mf.SevenDigit);
                AddRecordToDict(callLogNames, mf.Name, pcl);
                AddRecordToDict(callLogSevenDigits, mf.SevenDigit, pcl);
            }
            return(pList);
        }
Ejemplo n.º 4
0
 private bool CompareNumbers(MetaCallLog mcl, MetaSms msms)
 {
     if (CompareNumbers1(mcl, msms))
     {
         return(true);
     }
     return(CompareNumbers2(mcl, msms));
 }
Ejemplo n.º 5
0
 private bool CompareNumbers2(MetaCallLog mcl, MetaSms msms)
 {
     if ((mcl.Number != null) && (msms.Number2 != null) &&
         (mcl.Number != MetaField.DEFAULT_STRING) && (mcl.Number == msms.Number2))
     {
         return(true);
     }
     if ((mcl.Number != null) && (msms.Number2 != null))
     {
         string acode1 = Dec0de.Bll.Utilities.GetAreaCode(mcl.Number);
         string acode2 = Dec0de.Bll.Utilities.GetAreaCode(msms.Number2);
         if ((acode1 != null) && (acode2 != null) && (acode1 != acode2))
         {
             return(false);
         }
     }
     if ((mcl.SevenDigit != null) && (msms.SevenDigit2 != null) &&
         (mcl.SevenDigit != MetaField.DEFAULT_STRING) && (mcl.SevenDigit == msms.SevenDigit2))
     {
         return(true);
     }
     return(false);
 }
Ejemplo n.º 6
0
 private bool CompareNumbers(MetaCallLog mcl, MetaAddressBookEntry mabe)
 {
     if ((mcl.Number != null) && (mabe.Number != null) &&
         (mcl.Number != MetaField.DEFAULT_STRING) && (mcl.Number == mabe.Number))
     {
         return(true);
     }
     if ((mcl.Number != null) && (mabe.Number != null))
     {
         string acode1 = Dec0de.Bll.Utilities.GetAreaCode(mcl.Number);
         string acode2 = Dec0de.Bll.Utilities.GetAreaCode(mabe.Number);
         if ((acode1 != null) && (acode2 != null) && (acode1 != acode2))
         {
             return(false);
         }
     }
     if ((mcl.SevenDigit != null) && (mabe.SevenDigit != null) &&
         (mcl.SevenDigit != MetaField.DEFAULT_STRING) && (mcl.SevenDigit == mabe.SevenDigit))
     {
         return(true);
     }
     return(false);
 }
Ejemplo n.º 7
0
        private List <MetaCallLog> GetMetaCallLog(ViterbiField field, List <MetaResult> metaResults)
        {
            string          name             = null;
            string          number           = null;
            List <DateTime> timeStamps       = new List <DateTime>();
            string          type             = null;
            long            startOffset      = -1;
            List <long>     proximityOffsets = new List <long>();

            FieldPaths path = new FieldPaths();

            for (int i = 0; i < field.Raw.Length; i++)
            {
                if (i == 0)
                {
                    path._path_beg_offset = metaResults[(int)field.OffsetFile].Field.OffsetFile;
                }
                if (i == field.Raw.Length - 1)
                {
                    path._path_end_offset = metaResults[(int)field.OffsetFile + i].Field.OffsetFile;
                }
                path._fields_in_path.Add(metaResults[(int)field.OffsetFile + i].Field.MachineName.ToString());

                if (field.Raw[i] == (byte)MetaMachine.Text && name == null)
                {
                    name = metaResults[(int)field.OffsetFile + i].Field.FieldString;
                }

                else if (field.Raw[i] == (byte)MetaMachine.PhoneNumber && number == null)
                {
                    number = metaResults[(int)field.OffsetFile + i].Field.FieldString;
                }

                else if (field.Raw[i] == (byte)MetaMachine.TimeStamp)
                {
                    timeStamps.Add(DateTime.Parse(metaResults[(int)field.OffsetFile + i].Field.FieldString));
                    proximityOffsets.Add(metaResults[(int)field.OffsetFile + i].Field.OffsetFile);
                }
                else if (field.Raw[i] == (byte)MetaMachine.CallLogType && type == null)
                {
                    type = metaResults[(int)field.OffsetFile + i].Field.FieldString;
                }

                if (startOffset == -1)
                {
                    startOffset = metaResults[(int)field.OffsetFile + i].Field.OffsetFile;
                }
            }
            path.find_actual_path();
            fieldPaths.Add(path);

            var entries = new List <MetaCallLog>();

            for (int i = 0; i < timeStamps.Count; i++)
            {
                var entry = new MetaCallLog()
                {
                    Name            = name,
                    Number          = number,
                    SevenDigit      = Utilities.GetLastSevenDigits(number),
                    TimeStamp       = timeStamps[i],
                    Type            = type,
                    Offset          = startOffset,
                    MachineName     = field.MachineName,
                    ProximityOffset = proximityOffsets[i]
                };

                if (entry.Name == null)
                {
                    entry.Name = MetaField.DEFAULT_STRING;
                }

                if (entry.Number == null)
                {
                    entry.Number = MetaField.DEFAULT_STRING;
                }

                if (entry.SevenDigit == null)
                {
                    entry.SevenDigit = MetaField.DEFAULT_STRING;
                }

                if (entry.Type == null)
                {
                    entry.Type = MetaField.DEFAULT_STRING;
                }

                if (entry.TimeStamp == null)
                {
                    entry.TimeStamp = MetaField.DEFAULT_DATE;
                }

                entries.Add(entry);
            }

            return(entries);
        }
Ejemplo n.º 8
0
        private List <MetaCallLog> GetMetaCallLogNokia(ViterbiField field, List <MetaResult> metaResults)
        {
            string          name             = null;
            var             numbers          = new List <string>();
            List <DateTime> timeStamps       = new List <DateTime>();
            string          type             = null;
            long            startOffset      = -1;
            List <long>     proximityOffsets = new List <long>();

            var phoneIndex     = new List <string>();
            var timeStampIndex = new List <string>();

            FieldPaths path = new FieldPaths();

            for (int i = 0; i < field.Raw.Length; i++)
            {
                if (i == 0)
                {
                    path._path_beg_offset = metaResults[(int)field.OffsetFile].Field.OffsetFile;
                }
                if (i == field.Raw.Length - 1)
                {
                    path._path_end_offset = metaResults[(int)field.OffsetFile + i].Field.OffsetFile;
                }
                path._fields_in_path.Add(metaResults[(int)field.OffsetFile + i].Field.MachineName.ToString());

                if (field.Raw[i] == (byte)MetaMachine.Text && name == null)
                {
                    name = metaResults[(int)field.OffsetFile + i].Field.FieldString;
                }

                //There should be a binary field in between.
                else if (field.Raw[i] == (byte)MetaMachine.CallLogNumberIndex && field.Raw[i + 2] == (byte)MetaMachine.PhoneNumber)
                {
                    phoneIndex.Add(metaResults[(int)field.OffsetFile + i].Field.FieldString);

                    numbers.Add(metaResults[(int)field.OffsetFile + i + 2].Field.FieldString);

                    i += 2;
                }
                else if (field.Raw[i] == (byte)MetaMachine.TimeStamp && field.Raw[i + 1] == (byte)MetaMachine.CallLogNumberIndex)
                {
                    timeStamps.Add(DateTime.Parse(metaResults[(int)field.OffsetFile + i].Field.FieldString));
                    timeStampIndex.Add(metaResults[(int)field.OffsetFile + i + 1].Field.FieldString);
                    proximityOffsets.Add(metaResults[(int)field.OffsetFile + i].Field.OffsetFile);
                    i++;
                }
                else if (field.Raw[i] == (byte)MetaMachine.CallLogType && type == null)
                {
                    type = metaResults[(int)field.OffsetFile + i].Field.FieldString;
                }

                if (startOffset == -1)
                {
                    startOffset = metaResults[(int)field.OffsetFile + i].Field.OffsetFile;
                }
            }
            path.find_actual_path();
            fieldPaths.Add(path);

            var entries = new List <MetaCallLog>();

            for (int i = 0; i < timeStamps.Count; i++)
            {
                int numberI = -1;
                //Get phone number
                for (int j = 0; j < phoneIndex.Count; j++)
                {
                    if (timeStampIndex[i] == phoneIndex[j])
                    {
                        numberI = j;
                        break;
                    }
                }

                string number = (numberI != -1) ? numbers[numberI] : "*NONE*";

                var entry = new MetaCallLog()
                {
                    Name            = name,
                    Number          = number,
                    SevenDigit      = Utilities.GetLastSevenDigits(number),
                    TimeStamp       = timeStamps[i],
                    Type            = type,
                    Offset          = startOffset,
                    MachineName     = field.MachineName,
                    ProximityOffset = proximityOffsets[i]
                };

                if (entry.Name == null)
                {
                    entry.Name = MetaField.DEFAULT_STRING;
                }

                if (entry.Number == null)
                {
                    entry.Number = MetaField.DEFAULT_STRING;
                }

                if (entry.SevenDigit == null)
                {
                    entry.SevenDigit = MetaField.DEFAULT_STRING;
                }

                if (entry.Type == null)
                {
                    entry.Type = MetaField.DEFAULT_STRING;
                }

                if (entry.TimeStamp == null)
                {
                    entry.TimeStamp = MetaField.DEFAULT_DATE;
                }

                entries.Add(entry);
            }

            return(entries);
        }
Ejemplo n.º 9
0
        private List<MetaCallLog> GetMetaCallLogNokia(ViterbiField field, List<MetaResult> metaResults)
        {
            string name = null;
            var numbers = new List<string>();
            List<DateTime> timeStamps = new List<DateTime>();
            string type = null;
            long startOffset = -1;
            List<long> proximityOffsets = new List<long>();

            var phoneIndex = new List<string>();
            var timeStampIndex = new List<string>();

            FieldPaths path = new FieldPaths();
            for (int i = 0; i < field.Raw.Length; i++)
            {
                if (i == 0)
                {
                    path._path_beg_offset = metaResults[(int)field.OffsetFile].Field.OffsetFile;
                }
                if (i == field.Raw.Length - 1)
                {
                    path._path_end_offset = metaResults[(int)field.OffsetFile + i].Field.OffsetFile;
                }
                path._fields_in_path.Add(metaResults[(int)field.OffsetFile + i].Field.MachineName.ToString());

                if (field.Raw[i] == (byte)MetaMachine.Text && name == null)
                    name = metaResults[(int)field.OffsetFile + i].Field.FieldString;

                //There should be a binary field in between.
                else if (field.Raw[i] == (byte)MetaMachine.CallLogNumberIndex && field.Raw[i + 2] == (byte)MetaMachine.PhoneNumber)
                {
                    phoneIndex.Add(metaResults[(int)field.OffsetFile + i].Field.FieldString);

                    numbers.Add(metaResults[(int)field.OffsetFile + i + 2].Field.FieldString);

                    i += 2;
                }
                else if (field.Raw[i] == (byte)MetaMachine.TimeStamp && field.Raw[i + 1] == (byte)MetaMachine.CallLogNumberIndex)
                {
                    timeStamps.Add(DateTime.Parse(metaResults[(int)field.OffsetFile + i].Field.FieldString));
                    timeStampIndex.Add(metaResults[(int)field.OffsetFile + i + 1].Field.FieldString);
                    proximityOffsets.Add(metaResults[(int)field.OffsetFile + i].Field.OffsetFile);
                    i++;
                }
                else if (field.Raw[i] == (byte)MetaMachine.CallLogType && type == null)
                    type = metaResults[(int)field.OffsetFile + i].Field.FieldString;

                if (startOffset == -1)
                {
                    startOffset = metaResults[(int)field.OffsetFile + i].Field.OffsetFile;
                }
            }
            path.find_actual_path();
            fieldPaths.Add(path);

            var entries = new List<MetaCallLog>();

            for (int i = 0; i < timeStamps.Count; i++)
            {
                int numberI = -1;
                //Get phone number
                for (int j = 0; j < phoneIndex.Count; j++)
                {
                    if (timeStampIndex[i] == phoneIndex[j])
                    {
                        numberI = j;
                        break;
                    }
                }

                string number = (numberI != -1) ? numbers[numberI] : "*NONE*";

                var entry = new MetaCallLog()
                {
                    Name = name,
                    Number = number,
                    SevenDigit = Utilities.GetLastSevenDigits(number),
                    TimeStamp = timeStamps[i],
                    Type = type,
                    Offset = startOffset,
                    MachineName = field.MachineName,
                    ProximityOffset = proximityOffsets[i]
                };

                if (entry.Name == null)
                    entry.Name = MetaField.DEFAULT_STRING;

                if (entry.Number == null)
                    entry.Number = MetaField.DEFAULT_STRING;

                if (entry.SevenDigit == null)
                    entry.SevenDigit = MetaField.DEFAULT_STRING;

                if (entry.Type == null)
                    entry.Type = MetaField.DEFAULT_STRING;

                if (entry.TimeStamp == null)
                    entry.TimeStamp = MetaField.DEFAULT_DATE;

                entries.Add(entry);

            }

            return entries;
        }
Ejemplo n.º 10
0
        private List<MetaCallLog> GetMetaCallLog(ViterbiField field, List<MetaResult> metaResults)
        {
            string name = null;
            string number = null;
            List<DateTime> timeStamps = new List<DateTime>();
            string type = null;
            long startOffset = -1;
            List<long> proximityOffsets = new List<long>();

            FieldPaths path = new FieldPaths();
            for (int i = 0; i < field.Raw.Length; i++)
            {
                if (i == 0)
                {
                    path._path_beg_offset = metaResults[(int)field.OffsetFile].Field.OffsetFile;
                }
                if (i == field.Raw.Length - 1)
                {
                    path._path_end_offset = metaResults[(int)field.OffsetFile + i].Field.OffsetFile;
                }
                path._fields_in_path.Add(metaResults[(int)field.OffsetFile + i].Field.MachineName.ToString());

                if (field.Raw[i] == (byte)MetaMachine.Text && name == null)
                    name = metaResults[(int)field.OffsetFile + i].Field.FieldString;

                else if (field.Raw[i] == (byte)MetaMachine.PhoneNumber && number == null)
                    number = metaResults[(int)field.OffsetFile + i].Field.FieldString;

                else if (field.Raw[i] == (byte)MetaMachine.TimeStamp)
                {
                    timeStamps.Add(DateTime.Parse(metaResults[(int)field.OffsetFile + i].Field.FieldString));
                    proximityOffsets.Add(metaResults[(int)field.OffsetFile + i].Field.OffsetFile);
                }
                else if (field.Raw[i] == (byte)MetaMachine.CallLogType && type == null)
                    type = metaResults[(int)field.OffsetFile + i].Field.FieldString;

                if (startOffset == -1)
                {
                    startOffset = metaResults[(int)field.OffsetFile + i].Field.OffsetFile;
                }
            }
            path.find_actual_path();
            fieldPaths.Add(path);

            var entries = new List<MetaCallLog>();

            for (int i = 0; i < timeStamps.Count; i++)
            {
                var entry = new MetaCallLog()
                {
                    Name = name,
                    Number = number,
                    SevenDigit = Utilities.GetLastSevenDigits(number),
                    TimeStamp = timeStamps[i],
                    Type = type,
                    Offset = startOffset,
                    MachineName = field.MachineName,
                    ProximityOffset = proximityOffsets[i]
                };

                if (entry.Name == null)
                    entry.Name = MetaField.DEFAULT_STRING;

                if (entry.Number == null)
                    entry.Number = MetaField.DEFAULT_STRING;

                if (entry.SevenDigit == null)
                    entry.SevenDigit = MetaField.DEFAULT_STRING;

                if (entry.Type == null)
                    entry.Type = MetaField.DEFAULT_STRING;

                if (entry.TimeStamp == null)
                    entry.TimeStamp = MetaField.DEFAULT_DATE;

                entries.Add(entry);

            }

            return entries;
        }
Ejemplo n.º 11
0
        public List <MetaCallLog> GetMetaCallLog(ViterbiField field, List <MetaResult> metaResults)
        {
            string          name        = null;
            string          number      = null;
            List <DateTime> timeStamps  = new List <DateTime>();
            string          type        = null;
            long            startOffset = -1;

            for (int i = 0; i < field.Raw.Length; i++)
            {
                if (field.Raw[i] == (byte)MetaMachine.Text && name == null)
                {
                    name = metaResults[(int)field.OffsetFile + i].Field.FieldString;
                }

                else if (field.Raw[i] == (byte)MetaMachine.PhoneNumber && number == null)
                {
                    number = metaResults[(int)field.OffsetFile + i].Field.FieldString;
                }

                else if (field.Raw[i] == (byte)MetaMachine.TimeStamp)
                {
                    timeStamps.Add(DateTime.Parse(metaResults[(int)field.OffsetFile + i].Field.FieldString));
                }

                else if (field.Raw[i] == (byte)MetaMachine.CallLogType && type == null)
                {
                    type = metaResults[(int)field.OffsetFile + i].Field.FieldString;
                }

                if (startOffset == -1)
                {
                    startOffset = metaResults[(int)field.OffsetFile + i].Field.OffsetFile;
                }
            }

            var entries = new List <MetaCallLog>();

            for (int i = 0; i < timeStamps.Count; i++)
            {
                var entry = new MetaCallLog()
                {
                    Name       = name,
                    Number     = number,
                    SevenDigit = Utilities.GetLastSevenDigits(number),
                    TimeStamp  = timeStamps[i],
                    Type       = type,
                    Offset     = startOffset
                };

                if (entry.Name == null)
                {
                    entry.Name = MetaField.DEFAULT_STRING;
                }

                if (entry.Number == null)
                {
                    entry.Number = MetaField.DEFAULT_STRING;
                }

                if (entry.SevenDigit == null)
                {
                    entry.SevenDigit = MetaField.DEFAULT_STRING;
                }

                if (entry.Type == null)
                {
                    entry.Type = MetaField.DEFAULT_STRING;
                }

                if (entry.TimeStamp == null)
                {
                    entry.TimeStamp = MetaField.DEFAULT_DATE;
                }

                entries.Add(entry);
            }

            return(entries);
        }
Ejemplo n.º 12
0
        public List<MetaCallLog> GetMetaCallLog(ViterbiField field, List<MetaResult> metaResults)
        {
            string name = null;
            string number = null;
            List<DateTime> timeStamps = new List<DateTime>();
            string type = null;
            long startOffset = -1;

            for (int i = 0; i < field.Raw.Length; i++)
            {
                if (field.Raw[i] == (byte)MetaMachine.Text && name == null)
                    name = metaResults[(int)field.OffsetFile + i].Field.FieldString;

                else if (field.Raw[i] == (byte)MetaMachine.PhoneNumber && number == null)
                    number = metaResults[(int)field.OffsetFile + i].Field.FieldString;

                else if (field.Raw[i] == (byte)MetaMachine.TimeStamp)
                    timeStamps.Add(DateTime.Parse(metaResults[(int)field.OffsetFile + i].Field.FieldString));

                else if (field.Raw[i] == (byte)MetaMachine.CallLogType && type == null)
                    type = metaResults[(int)field.OffsetFile + i].Field.FieldString;

                if (startOffset == -1)
                    startOffset = metaResults[(int)field.OffsetFile + i].Field.OffsetFile;
            }

            var entries = new List<MetaCallLog>();

            for (int i = 0; i < timeStamps.Count; i++)
            {
                var entry = new MetaCallLog()
                                {
                                    Name = name,
                                    Number = number,
                                    SevenDigit = Utilities.GetLastSevenDigits(number),
                                    TimeStamp = timeStamps[i],
                                    Type = type,
                                    Offset = startOffset
                                };

                if (entry.Name == null)
                    entry.Name = MetaField.DEFAULT_STRING;

                if (entry.Number == null)
                    entry.Number = MetaField.DEFAULT_STRING;

                if (entry.SevenDigit == null)
                    entry.SevenDigit = MetaField.DEFAULT_STRING;

                if (entry.Type == null)
                    entry.Type = MetaField.DEFAULT_STRING;

                if (entry.TimeStamp == null)
                    entry.TimeStamp = MetaField.DEFAULT_DATE;

                entries.Add(entry);

            }

            return entries;
        }
Ejemplo n.º 13
0
 private bool CompareNumbers2(MetaCallLog mcl, MetaSms msms)
 {
     if ((mcl.Number != null) && (msms.Number2 != null) &&
         (mcl.Number != MetaField.DEFAULT_STRING) && (mcl.Number == msms.Number2)) {
         return true;
     }
     if ((mcl.Number != null) && (msms.Number2 != null)) {
         string acode1 = Dec0de.Bll.Utilities.GetAreaCode(mcl.Number);
         string acode2 = Dec0de.Bll.Utilities.GetAreaCode(msms.Number2);
         if ((acode1 != null) && (acode2 != null) && (acode1 != acode2)) {
             return false;
         }
     }
     if ((mcl.SevenDigit != null) && (msms.SevenDigit2 != null) &&
         (mcl.SevenDigit != MetaField.DEFAULT_STRING) && (mcl.SevenDigit == msms.SevenDigit2)) {
         return true;
     }
     return false;
 }
Ejemplo n.º 14
0
 private bool CompareNumbers(MetaCallLog mcl, MetaSms msms)
 {
     if (CompareNumbers1(mcl, msms)) {
         return true;
     }
     return CompareNumbers2(mcl, msms);
 }
Ejemplo n.º 15
0
 private bool CompareNumbers(MetaCallLog mcl, MetaAddressBookEntry mabe)
 {
     if ((mcl.Number != null) && (mabe.Number != null) &&
         (mcl.Number != MetaField.DEFAULT_STRING) && (mcl.Number == mabe.Number)) {
         return true;
     }
     if ((mcl.Number != null) && (mabe.Number != null)) {
         string acode1 = Dec0de.Bll.Utilities.GetAreaCode(mcl.Number);
         string acode2 = Dec0de.Bll.Utilities.GetAreaCode(mabe.Number);
         if ((acode1 != null) && (acode2 != null) && (acode1 != acode2)) {
             return false;
         }
     }
     if ((mcl.SevenDigit != null) && (mabe.SevenDigit != null) &&
         (mcl.SevenDigit != MetaField.DEFAULT_STRING) && (mcl.SevenDigit == mabe.SevenDigit)) {
         return true;
     }
     return false;
 }