public string Initialize(string filePath, string[] dataLines, bool flipBytes, bool syncListViaNetcore) { byteList = new List <byte[]>(); //For every line in the list, build up our list of bytes for (int i = 0; i < dataLines.Length; i++) { string t = dataLines[i]; byte[] bytes = null; try { //Get the string as a byte array if ((bytes = CorruptCore_Extensions.StringToByteArray(t)) == null) { throw new Exception($"Error reading list {Path.GetFileName(filePath)}. Valid format is a list of raw hexadecimal values.\nLine{(i + 1)}.\nValue: {t}\n"); } } catch (Exception e) { var logger = NLog.LogManager.GetCurrentClassLogger(); logger.Error(e, "Error in loadListFromPath"); MessageBox.Show(e.Message); return(""); } //If it's big endian, flip it if (flipBytes) { bytes.FlipBytes(); } byteList.Add(bytes); } var name = Path.GetFileNameWithoutExtension(filePath); //var hash = Filtering.RegisterList(byteList, name, syncListViaNetcore); byteList = byteList.Distinct(new CorruptCore_Extensions.ByteArrayComparer()).ToList(); hashSet = new HashSet <byte[]>(byteList, new CorruptCore_Extensions.ByteArrayComparer()); string hash = Filtering.RegisterList(this, name, syncListViaNetcore); return(hash); }
private bool GenerateList() { if (tbListValues.Lines.Length == 0) { return(false); } List <String> newList = new List <string>(); foreach (string line in tbListValues.Lines) { if (string.IsNullOrWhiteSpace(line)) { continue; } string trimmedLine = line.Trim(); string[] lineParts = trimmedLine.Split('-'); //We can't do a range on anything besides plain old numbers if (lineParts.Length > 1) { //Hex if (isHex(lineParts[0]) && isHex(lineParts[1])) { ulong start = safeStringToULongHex(lineParts[0]); ulong end = safeStringToULongHex(lineParts[1]); for (ulong i = start; i < end; i++) { newList.Add(i.ToString("X")); } } //Decimal else if (isWholeNumber(lineParts[0]) && isWholeNumber(lineParts[1])) { ulong start = ulong.Parse(lineParts[0]); ulong end = ulong.Parse(lineParts[1]); for (ulong i = start; i < end; i++) { newList.Add(i.ToString("X")); } } } else { //If it's not a range we parse for both prefixes and suffixes then see the type if (isHex(trimmedLine)) //Hex with 0x prefix { newList.Add(lineParts[0].Substring(2)); } else if (Regex.IsMatch(trimmedLine, "^[0-9]+[fF]$")) //123f float { float f = Convert <float>(trimmedLine.Substring(0, trimmedLine.Length - 1)); byte[] t = BitConverter.GetBytes(f); newList.Add(CorruptCore_Extensions.BytesToHexString(t)); } else if (Regex.IsMatch(trimmedLine, "^[0-9]+[dD]$")) //123d double { double d = Convert <double>(trimmedLine.Substring(0, trimmedLine.Length - 1)); byte[] t = BitConverter.GetBytes(d); newList.Add(CorruptCore_Extensions.BytesToHexString(t)); } else if (isDecimalNumber(trimmedLine)) //double no suffix { double d = Convert <double>(trimmedLine); byte[] t = BitConverter.GetBytes(d); newList.Add(CorruptCore_Extensions.BytesToHexString(t)); } else if (isWholeNumber(trimmedLine)) //plain old number { newList.Add(ulong.Parse(trimmedLine).ToString("X")); } } } String filename = CorruptCore_Extensions.MakeSafeFilename(tbListName.Text, '-'); //Handle saving the list to a file if (cbSaveFile.Checked) { if (!String.IsNullOrWhiteSpace(filename)) { File.WriteAllLines(Path.Combine(CorruptCore.RtcCore.RtcDir, "LISTS", filename + ".txt"), newList); } else { MessageBox.Show("Filename is empty. Unable to save your list to a file"); } } //If there's no name just generate one if (String.IsNullOrWhiteSpace(filename)) { filename = CorruptCore.RtcCore.GetRandomKey(); } //Register the list and update netcore List <Byte[]> byteList = new List <byte[]>(); foreach (string t in newList) { byte[] bytes = CorruptCore_Extensions.StringToByteArray(t); byteList.Add(bytes); } string hash = Filtering.RegisterList(byteList, true); //Register the list in the ui CorruptCore.Filtering.RegisterListInUI(filename, hash); return(true); }