Private Sub DecodeScanLog(ByVal lines As List(Of String), ByRef lst As List(Of ScanInfo))
Dim count = 0
Dim startIndex = lines.FindIndex(Function(s) s.Contains("Cell") And s.Contains("Address"))
Dim partLines As List(Of String) = Nothing
If startIndex <> -1 Then
Do
Dim endIndex = -1
If startIndex <> -1 Then
endIndex = lines.Skip(startIndex + 1).ToList().FindIndex(Function(s) s.Contains("Cell") And s.Contains("Address"))
If endIndex <> -1 Then
partLines = lines.Skip(startIndex).Take(endIndex - startIndex + 2).ToList()
Else
partLines = lines.Skip(startIndex).ToList()
End If
Dim scan = New ScanInfo()
scan.Index = (count + 1).ToString()
If DecodePartScanLog(partLines, scan) Then
lst.Add(scan)
End If
End If
Dim prossedLines = startIndex + partLines.Count()
startIndex = lines.Skip(prossedLines).ToList().FindIndex(Function(s) s.Contains("Cell") And s.Contains("Address"))
If startIndex = -1 Then
Exit Do
Else
lines = lines.Skip(prossedLines).ToList()
End If
count += 1
Loop
End If
End Sub
Private Function DecodePartScanLog(ByVal lines As List(Of String), ByRef scan As ScanInfo) As Boolean
Try
scan.BSSID = lines.Where(Function(s) s.Contains("Address:")).FirstOrDefault().Split(":", 2, StringSplitOptions.RemoveEmptyEntries)(1)
scan.SSID = lines.Where(Function(s) s.Contains("ESSID:")).FirstOrDefault().Split(":")(1).Trim("""")
scan.Frequency = lines.Where(Function(s) s.Contains("Frequency:")).FirstOrDefault().Split(":")(1).Split("(")(0).Replace(" ", "")
scan.Channel = lines.Where(Function(s) s.Contains("Frequency:")).FirstOrDefault().Split(":")(1).Split("(")(1).Trim(")").Split(" ")(1)
Dim line = lines.Where(Function(s) s.Contains("Signal level=")).FirstOrDefault()
scan.Signal = line.Substring(line.IndexOf("Signal level=")).Split("=")(1).Replace(" ", "")
scan.Encryption = lines.Where(Function(s) s.Contains("Encryption key:")).FirstOrDefault().Split(":")(1)
Return True
Catch ex As Exception
Return False
End Try
End Function