public void WriteData()
        {
            if (isIOInProgress)
            {
                return;
            }

            try
            {
                isIOInProgress = true;

                // convert ActivityTimer View Model to Model...
                List <Data.ActivityTimerRow> rows = new List <Data.ActivityTimerRow>();
                foreach (ActivityTimerVM timerVM in TimerCollection)
                {
                    rows.Add(timerVM.GetModel());
                }

                // write the model out...
                using (var sWriter = new System.IO.StreamWriter(strFilePath))
                    using (var csvWriter = new CsvHelper.CsvWriter(sWriter))
                    {
                        csvWriter.WriteRecords(rows);
                    }
            }
            finally
            {
                isIOInProgress = false;
            }
        }
Beispiel #2
0
        public async Task <IActionResult> OnPostExportEventsFromFilesStoreToCsv()
        {
            if ((_eventPersistence is FilesEventPersistence) == false)
            {
                throw new ApplicationException($"{nameof(FilesEventPersistence)} not configured");
            }

            var events = await _eventPersistence.LoadAllCommittedEvents(GlobalPosition.Start, 1000, CancellationToken.None);

            var result = events.CommittedDomainEvents
                         .Cast <FilesEventPersistence.FileEventData>()
                         .Select(x => new { Source = x, Deserialized = _eventJsonSerializer.Deserialize(x) })
                         .Select(x => new EventFlow.SQLite.EventStores.SQLiteEventPersistence.EventDataModel()
            {
                GlobalSequenceNumber = x.Source.GlobalSequenceNumber,
                BatchId                 = Guid.Parse(x.Deserialized.Metadata["batch_id"]),
                AggregateId             = x.Source.AggregateId,
                AggregateName           = x.Deserialized.Metadata["aggregate_name"],
                Data                    = x.Source.Data,
                Metadata                = x.Source.Metadata,
                AggregateSequenceNumber = x.Source.AggregateSequenceNumber
            });

            using (var stream = new System.IO.MemoryStream())
                using (var writer = new System.IO.StreamWriter(stream))
                    using (var csv = new CsvHelper.CsvWriter(writer, new CsvHelper.Configuration.CsvConfiguration(System.Globalization.CultureInfo.CurrentUICulture)))
                    {
                        csv.WriteRecords(result);
                        csv.Flush();
                        writer.Flush();
                        return(File(stream.ToArray(), "text/csv", "events.csv"));
                    }
        }
        static void Main(string[] args)
        {
            using (var sr = new StreamWriter($"{Environment.CurrentDirectory}/my.csv"))
                using (var csv = new CsvHelper.CsvWriter(sr, CultureInfo.InvariantCulture))
                {
                    int start           = 4200;
                    int stop            = 6400;
                    int parallelThreads = 50;
                    int failCounter     = 0;
                    foreach (var request in JiraHttpRequest.getWorkItemObjects(start, stop, parallelThreads))
                    {
                        try
                        {
                            csv.WriteRecords(FlattenItems(request));
                            Console.WriteLine($"Finished writing POB-{request.id}");
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine($"Failed to write POB-{request.id} " + e.ToString());
                            failCounter++;
                        }
                    }

                    Console.WriteLine($"Failed to write {failCounter} records");
                }
        }
        public async Task <IActionResult> OnPostExportToCsv(GetSubmissions.Query query)
        {
            query.PageNo   = 1;
            query.PageSize = int.MaxValue;
            var submissions = await _engine.Query(query);

            using (var stream = new System.IO.MemoryStream())
                using (var writer = new System.IO.StreamWriter(stream))
                    using (var csv = new CsvHelper.CsvWriter(writer, new CsvHelper.Configuration.CsvConfiguration(System.Globalization.CultureInfo.CurrentUICulture)))
                    {
                        csv.WriteRecords(submissions.Select(x => new {
                            Timestamp         = x.Timestamp.ToString(),
                            FirstName         = x.FirstName,
                            LastName          = x.LastName,
                            FullName          = x.FullName,
                            EmailAddress      = x.Email.ToString(),
                            PhoneNumber       = x.PhoneNumber.ToString(),
                            Region            = x.Region,
                            HasLecturerRights = x.HasLecturerRights,
                            HasResigned       = x.HasResignedPermanently || x.HasResignedTemporarily
                        }));
                        csv.Flush();
                        writer.Flush();
                        return(File(stream.ToArray(), "text/csv", "enrollments.csv"));
                    }
        }
Beispiel #5
0
        public void ExportTranslationUnits(string filePath, IEnumerable <XlfTransUnit> units, string language, XlfDialect dialect)
        {
            using (var textWriter = new System.IO.StreamWriter(filePath, false, Encoding.UTF8))
            {
                var csv = new CsvHelper.CsvWriter(textWriter);
                csv.Configuration.Encoding        = Encoding.UTF8;
                csv.Configuration.HasHeaderRecord = false;

                if (IsCsvHeaderRequired)
                {
                    WriteHeader(csv);
                }

                foreach (var t in units)
                {
                    if (!string.IsNullOrEmpty(CustomIdColumn))
                    {
                        csv.WriteField(CustomIdColumn);
                    }

                    csv.WriteField(t.GetId(dialect));
                    csv.WriteField(/*XmlUtil.DeNormalizeLineBreaks(*/ t.Source);
                    csv.WriteField(/*XmlUtil.DeNormalizeLineBreaks(*/ t.Target);
                    csv.WriteField(t.Optional.TargetState);

                    if (this.IsLangColumnRequired)
                    {
                        csv.WriteField(language);
                    }

                    csv.NextRecord();
                }
            }
        }
Beispiel #6
0
 private void CreateEmptyBookingFile(string file)
 {
     using (var f = File.OpenWrite(file))
         using (var s = new StreamWriter(f))
             using (var csv = new CsvHelper.CsvWriter(s, CultureInfo.InvariantCulture))
             {
                 csv.Configuration.TypeConverterOptionsCache.GetOptions <DateTime>().Formats
                     = new string[] { "yyyy-MM-dd" };
                 csv.WriteRecords <UnscheduledCsvRow>(new[] {
                     new UnscheduledCsvRow()
                     {
                         Id       = "12345",
                         DueDate  = DateTime.Today.AddDays(10),
                         Priority = 100,
                         Part     = "part1",
                         Quantity = 50,
                     },
                     new UnscheduledCsvRow()
                     {
                         Id       = "98765",
                         DueDate  = DateTime.Today.AddDays(12),
                         Priority = 100,
                         Part     = "part2",
                         Quantity = 77,
                     }
                 });
             }
 }
Beispiel #7
0
 private static void po2csv(string poPath, string csvPath)
 {
     try
     {
         var items = PoReader.GetItems(poPath);
         using (StreamWriter streamWriter = new StreamWriter(csvPath))
         {
             using (CsvHelper.CsvWriter csvWriter = new CsvHelper.CsvWriter(streamWriter))
             {
                 foreach (var item in items)
                 {
                     csvWriter.WriteRecord(item);
                 }
             }
         }
         Console.WriteLine("Convert to CSV file successfully.");
     }
     catch (PoConvert.Exception.InvalidFormatException e)
     {
         Console.WriteLine("[ERROR] {0}", e.Message);
     }
     catch (FileNotFoundException e)
     {
         Console.WriteLine(e.Message);
     }
     catch (System.Exception e)
     {
         Console.WriteLine(e.Message);
     }
 }
        internal string createCsvWithStructure(IEnumerable<dynamic> data, CsvConfiguration configuration)
        {
            var guid = Guid.NewGuid().ToString();
            var builder = new StringBuilder();
            var writer = new CsvHelper.CsvWriter(new StringWriter(builder), configuration);

            foreach (var column in Structure)
                writer.WriteField(column.Name);

            writer.NextRecord();

            foreach (var datum in data)
            {
                var dict = ToDictionary(guid, datum);
                foreach (var column in Structure)
                {
                    var value = dict[column.Name];
                    var str = string.IsNullOrEmpty(column.Format) ? value.ToString()
                            : value.ToString(column.Format);

                    writer.WriteField(str);
                }
                writer.NextRecord();
            }
            return builder.ToString();
        }
        protected override void OutBlock(ResModel resModel, IXAQuery query, CsvHelper.CsvWriter writer)
        {
            var szTrCode = resModel.Name;
            var block    = resModel.Blocks[szTrCode + "OutBlock"];

            writer.WriteHeader <_t8401OutBlock>();
            for (var i = 0; i < query.GetBlockCount(block.Name); i++)
            {
                var result = new _t8401OutBlock()
                {
                    hname    = query.GetFieldData(block.Name, "hname", i),
                    shcode   = query.GetFieldData(block.Name, "shcode", i),
                    expcode  = query.GetFieldData(block.Name, "expcode", i),
                    basecode = query.GetFieldData(block.Name, "basecode", i),
                };
                writer.NextRecord();
                writer.WriteRecord(result);
                Constants.CodeFutures.Add(result.shcode, new CodeFutures()
                {
                    UnderlyingAssetsCategory = "STOCK",
                    UnderlyingAssetsCode     = result.basecode,
                    Name         = result.hname,
                    Code         = result.shcode,
                    ExpandedCode = result.expcode,
                    //TODO Listing, Expirationdate
                    ListingDate    = "",
                    ExpirationDate = "",
                });
            }
        }
Beispiel #10
0
        /// <summary>
        /// Application entry point.
        /// Opens USDA Nutrient database (revision 26), denormalizes it using UsdaDenormalizer library
        /// and writes result to a CSV file with a specified name.
        /// </summary>
        /// <param name="args">
        /// [0] path to the directory containing ASCII version of database
        /// [1] path to the output CSV file
        /// </param>
        static void Main(string[] args)
        {
            // check if input is valid
            if (args.Length > 1)
            {
                string inputDirectoryPath = args[0];
                string outputCsvPath = args[1];

                if (System.IO.Directory.Exists(inputDirectoryPath))
                {
                    // read nutrient data from files in filesystem to object model in memory
                    DirectoryDataProvider dataProvider = new DirectoryDataProvider(inputDirectoryPath, 26, new WindowsTextReader());
                    DatabaseRepresentation dbModel = new DatabaseRepresentation(dataProvider);

                    // create denormalized (flat) model based using database data
                    DenormalizedModel denormalizedModel = new DenormalizedModel(dbModel);
                    // write flat model into CSV file as one big table
                    using (var writer = System.IO.File.CreateText(outputCsvPath))
                    {
                        CsvHelper.CsvWriter csvWriter = new CsvHelper.CsvWriter(writer);
                        csvWriter.WriteRecords(denormalizedModel.FoodItems);
                    }
                }
                else
                {
                    throw new ArgumentException("Specified directory does not exist or you don't have an access to it: " + inputDirectoryPath);
                }
            }
            else
            {
                throw new ArgumentException("No arguments were provided.");
            }
        }
Beispiel #11
0
        private static string WriteToFile(List <Tweet> tweets, string startDate, string endDate, string dataType)
        {
            var csvFilePath = $"/Users/{Environment.UserName}/Desktop/{dataType}_{startDate.ReplaceAll("/","-")}-{endDate.ReplaceAll("/", "-")}.csv".MapAbsolutePath();

            using (var writer = new StreamWriter(csvFilePath))
                using (var csv = new CsvHelper.CsvWriter(writer, CultureInfo.InvariantCulture))
                {
                    csv.WriteHeader <Tweet>();
                    csv.NextRecord();
                    foreach (var tweet in tweets)
                    {
                        Tweet extendedTweet = tweet;
                        extendedTweet.MediaData.ForEach(media =>
                        {
                            extendedTweet.MediaDataUrl     = media.url;
                            extendedTweet.MediaTitle       = media.title;
                            extendedTweet.MediaDescription = media.description;
                        });
                        extendedTweet.ReferencedTweets.ForEach(reference =>
                        {
                            extendedTweet.ReferencedTweetId   = reference.Id;
                            extendedTweet.ReferencedTweetType = reference.Type;
                        });

                        csv.WriteRecord(extendedTweet);
                        csv.NextRecord();
                    }
                }

            return(csvFilePath);
        }
Beispiel #12
0
        public FileStreamResult EcrireCsvDansMemoire <T>(IEnumerable <T> records, string fileName, string filtre)
        {
            using (var memoryStream = new MemoryStream())
            {
                using (var streamWriter = new StreamWriter(memoryStream))
                {
                    if (!string.IsNullOrEmpty(filtre))
                    {
                        streamWriter.WriteLine($"Filtre : {filtre}");
                        streamWriter.WriteLine();
                    }

                    using (var csvWriter = new CsvHelper.CsvWriter(streamWriter))
                    {
                        csvWriter.Configuration.Delimiter = ";";
                        csvWriter.WriteRecords(records);

                        streamWriter.Flush();
                    }
                }

                return(new FileStreamResult(new MemoryStream(memoryStream.ToArray()), "text/csv")
                {
                    FileDownloadName = fileName
                });
            }
        }
        public JsonResult _GetProductsInfo(MarketplaceFeed model)
        {
            // get the products's ASINs
            var infoFeeds = _productService.GetProductInfoFeeds(model);

            // create the file to save the list of product's ASIN
            var fileFullPath = string.Format("{0}\\Products_ASINS_{1:yyyyMMdd_HHmmss}.txt", _systemJobsRoot, DateTime.Now);

            // write the asins to the file
            using (var streamWriter = new StreamWriter(fileFullPath))
            {
                var writer = new CsvHelper.CsvWriter(streamWriter);
                foreach (var info in infoFeeds)
                {
                    writer.WriteField(info.EisSKU);
                    writer.WriteField(info.ASIN);
                    writer.WriteField(info.UPC);
                    writer.NextRecord();
                }
            }

            // create new job for the Amazon Get Info for the asins
            var systemJob = new SystemJobDto
            {
                JobType     = JobType.AmazonGetInfo,
                Parameters  = fileFullPath,
                SubmittedBy = User.Identity.Name
            };

            _systemJobService.CreateSystemJob(systemJob);

            return(Json(new { Success = "Amazon Get Info has been passed to EIS System Jobs for execution." },
                        JsonRequestBehavior.AllowGet));
        }
Beispiel #14
0
        public void Write(Data data)
        {
            using (var csvWriter = new CsvHelper.CsvWriter(new StreamWriter(_stream)))
            {
                foreach (string property in data.Description.Properties)
                {
                    csvWriter.WriteField(property);
                }
                csvWriter.NextRecord();

                foreach (IDataObject item in data.Items)
                {
                    if (_transforms?.Length > 0)
                    {
                        foreach (ITransform transform in _transforms)
                        {
                            transform.TransformData(data.Description, item);
                        }
                    }

                    foreach (string property in data.Description.Properties)
                    {
                        csvWriter.WriteField(item.Get <string>(property));
                    }
                    csvWriter.NextRecord();
                }
            }
        }
Beispiel #15
0
        private void InjectCsv(string filePath, string fileName, IniParser.Model.SectionData sectionData)
        {
            //var fileWriter = File.OpenWrite(filePath + ".new");
            var          writer    = new StreamWriter(filePath + ".new", false, Encoding.Default);
            var          csvWriter = new CsvHelper.CsvWriter(writer);
            StreamReader reader    = new StreamReader(filePath, Encoding.Default);
            var          csvReader = new CsvHelper.CsvReader(reader);

            while (csvReader.Read())
            {
                if (csvReader.Row == 2)
                {
                    var headers = csvReader.FieldHeaders;
                    foreach (var item in headers)
                    {
                        csvWriter.WriteField(item);
                    }
                    csvWriter.NextRecord();
                }

                var ligne = csvReader.CurrentRecord;

                if (ligne != null)
                {
                    foreach (var sectionKey in sectionData.Keys)
                    {
                        int    valueIndex = ExtractCsvValueIndexFromString(sectionKey.KeyName);
                        string key        = ExtractKeyFromString(sectionKey.KeyName);

                        if (ligne.Length > valueIndex)
                        {
                            if (ligne.Any(k => k == key))
                            {
                                ligne[valueIndex] = sectionKey.Value.RemoveSurroundedQuotes().SanitizeQuotes().Trim();
                                if (this.RemoveSpecialsChars)
                                {
                                    ligne[valueIndex] = ligne[valueIndex].DeleteAccentAndSpecialsChar().RemoveDiacritics();
                                }
                            }
                        }
                    }

                    foreach (var item in ligne)
                    {
                        csvWriter.WriteField(item);
                    }
                    csvWriter.NextRecord();
                }
            }

            reader.Close();
            reader.Dispose();
            csvReader.Dispose();
            writer.Close();
            writer.Dispose();

            // replace old file
            File.Delete(filePath);
            File.Move(filePath + ".new", filePath);
        }
        /// <summary>
        /// Exports all customers for the reseller to the specified file.
        /// </summary>
        /// <param name="defaultDomain">default domain of the reseller</param>
        /// <param name="appId">appid that is registered for this application in Azure Active Directory (AAD)</param>
        /// <param name="key">Key for this application in Azure Active Directory</param>
        /// <param name="customerMicrosoftId">Microsoft Id of the customer</param>
        /// <param name="resellerMicrosoftId">Microsoft Id of the reseller</param>
        public static void ExportCustomers(string filename, string defaultDomain, string appId, string key, string resellerMicrosoftId)
        {
            GetTokens(defaultDomain, appId, key, resellerMicrosoftId);

            var adCustomers = Customer.GetAllCustomers(resellerMicrosoftId, adAuthorizationToken.AccessToken);

            using (StreamWriter outputFile = new StreamWriter(filename))
            using (var writer = new CsvHelper.CsvWriter(outputFile))
            {
                writer.WriteField("displayName");
                writer.WriteField("defaultDomainName");
                writer.WriteField("cspCustomerCid");
                writer.WriteField("customerContextId");
                writer.NextRecord();

                foreach (AzureADContract adCustomer in adCustomers)
                {
                    adCustomer.cspCustomerCid = Customer.GetCustomerCid(adCustomer.customerContextId.ToString(), resellerMicrosoftId,
                            saAuthorizationToken.AccessToken);

                    writer.WriteField(adCustomer.displayName);
                    writer.WriteField(adCustomer.defaultDomainName);
                    writer.WriteField(adCustomer.cspCustomerCid);
                    writer.WriteField(adCustomer.customerContextId);
                    writer.NextRecord();
                }
            }
        }
Beispiel #17
0
 public static void ExtractToCSV(Course[] courses)
 {
     using (context = new Context())
         using (System.IO.StreamWriter writer = new System.IO.StreamWriter("ExportedFiles/file.csv"))
             using (CsvHelper.CsvWriter csv = new CsvHelper.CsvWriter(writer, System.Globalization.CultureInfo.InvariantCulture))
                 csv.WriteRecords(courses);
 }
Beispiel #18
0
        private void btnWrite_Click(object sender, EventArgs e)
        {
            using (SaveFileDialog sfd = new SaveFileDialog()
            {
                Filter = "CSV|*.csv", ValidateNames = true
            })
            {
                if (sfd.ShowDialog() == DialogResult.OK)
                {
                    using (var sw = new StreamWriter(sfd.FileName))
                    {
                        var csvWriter = new CsvHelper.CsvWriter(sw);
                        csvWriter.WriteHeader(typeof(Student));
                        csvWriter.NextRecord();
                        // Method 1
                        //foreach (Student s in studentBindingSource.DataSource as List<Student>)
                        //{
                        //    csvWriter.WriteRecord(s);
                        //    csvWriter.NextRecord();
                        //}

                        // Method 2
                        foreach (Student s in studentBindingSource.List)
                        {
                            csvWriter.WriteRecord(s);
                            csvWriter.NextRecord();
                        }
                    }

                    MessageBox.Show("Your data has been successfully saved", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
        }
Beispiel #19
0
        public void CsvHelperSync()
        {
            TextWriter tw    = TextWriter.Null;
            var        items = TestData.GetTestObjects();
            var        csv   = new CsvHelper.CsvWriter(tw, new CsvConfiguration(CultureInfo.InvariantCulture));

            csv.WriteField("Id");
            csv.WriteField("Name");
            csv.WriteField("Date");
            csv.WriteField("IsActive");
            for (int i = 0; i < ValueCount; i++)
            {
                csv.WriteField("Value" + i);
            }
            csv.NextRecord();

            foreach (var item in items)
            {
                csv.WriteField(item.Id);
                csv.WriteField(item.Name);
                csv.WriteField(item.Date);
                csv.WriteField(item.IsActive);
                for (int i = 0; i < ValueCount; i++)
                {
                    csv.WriteField(item.DataSet[i]);
                }
                csv.NextRecord();
            }
            csv.Flush();
        }
Beispiel #20
0
 public static void Write <T>(string path, IEnumerable <T> records)
     where T : ICsvModel
 {
     using var writer    = new StreamWriter(path, false, EncodesResolver.Resolve <T>());
     using var csvWriter = new CsvHelper.CsvWriter(writer, CultureInfo.InvariantCulture);
     csvWriter.WriteRecords(records);
 }
        public void TranslateDirectory(string path)
        {
            foreach (var kvp in GetTranslationsFromDirectory(path))
            {
                var fileName     = kvp.Key;
                var translations = kvp.Value;
                var output       = Path.Combine(path, $"{fileName}.csv");

                using (var file = File.OpenWrite(output))
                {
                    using (var writer = new StreamWriter(file, _encoding))
                    {
                        using (var csvWriter = new CsvHelper.CsvWriter(writer, new Configuration {
                            HasHeaderRecord = false, QuoteAllFields = true
                        }))
                        {
                            foreach (var translation in translations)
                            {
                                csvWriter.WriteRecord(translation);
                                csvWriter.NextRecord();
                            }
                        }
                    }
                }
            }
        }
Beispiel #22
0
        private static void WriteCSV(System.Data.Common.DbDataReader reader, TextWriter writer)
        {
            Action <string> logBadData = s =>
            {
                Log.Logger.Warning(s);
                Console.Error.WriteLine("Unable to write record: {0}", s);
            };

            using (var csv = new CsvHelper.CsvWriter(writer))
            {
                csv.Configuration.TrimOptions = CsvHelper.Configuration.TrimOptions.None;

                int length = reader.FieldCount;

                for (var i = 0; i < length; i++)
                {
                    csv.WriteField(reader.GetName(i));
                }
                csv.NextRecord();

                while (reader.Read())
                {
                    for (var i = 0; i < length; i++)
                    {
                        csv.WriteField(reader[i]);
                    }
                    csv.NextRecord();
                }
            }
        }
Beispiel #23
0
        private void ToolStripMenuItem_save_Click(object sender, EventArgs e)
        {
            SaveFileDialog sa = new SaveFileDialog();

            sa.Title            = "ファイルを保存する";
            sa.InitialDirectory = ConfigurationManager.AppSettings["lastSaveDir"];
            sa.FileName         = CurrentFileName;
            sa.Filter           = "CSV(*.csv)|*.csv|すべてのファイル(*.*)|*.*";
            sa.FilterIndex      = 1;

            DialogResult result = sa.ShowDialog();

            if (result == DialogResult.OK)
            {
                // フルパスが取得される
                string fileName = sa.FileName;
                using (var csvr = new CsvHelper.CsvWriter(new StreamWriter(fileName, false, Encoding.UTF8)))
                {
                    csvr.Configuration.RegisterClassMap <TalkTable>();
                    csvr.WriteRecords(talkings.ToArray());

                    ConfigurationManager.AppSettings["lastSaveDir"] = Path.GetDirectoryName(fileName);
                    CurrentFileName = Path.GetFileName(fileName);
                    this.Text       = formTitle;
                }
                isSaved = true;
            }
            else if (result == DialogResult.Cancel)
            {
            }
        }
Beispiel #24
0
        public static void Test()
        {
            Console.WriteLine("CSV: CsvHelper.CsvReader|CsvWriter");
            // CsvHelper.CsvReader 只支持流
            var source = "Name,Age,Sex\r\nWagsn,23,True\r\nBruce,25,True\r\n";

            using (CsvHelper.CsvReader reader = new CsvHelper.CsvReader(new System.IO.StreamReader(ConvertHelper.ConvertToStream(source))))
            {
                foreach (var per in reader.GetRecords <Person>())
                {
                    Console.WriteLine($"deserialize: name: {per?.Name}, age: {per?.Age}, sex: {per?.Sex}");
                }
            }
            var path = "./CSV/person.csv";

            using (CsvHelper.CsvWriter writer = new CsvHelper.CsvWriter(new System.IO.StreamWriter(System.IO.File.OpenWrite(path))))
            {
                var per = new Person {
                    Name = "Wagsn", Age = 23, Sex = true
                };
                writer.WriteRecords(new List <Person> {
                    per
                });
            }
        }
Beispiel #25
0
        public static void WriteCSV <T>(IEnumerable <T> simulationResults, string fileName)
        {
            var csvFilePath = Path.Combine(Directory.GetCurrentDirectory(), fileName);

            Console.WriteLine(csvFilePath);

            using (var fileStream = new FileStream(csvFilePath, FileMode.Create))
            {
                using (var writer = new StreamWriter(fileStream, Encoding.UTF8))
                {
                    using (var csvWriter = new CsvHelper.CsvWriter(writer))
                    {
                        csvWriter.WriteHeader <T>();
                        csvWriter.Flush();
                        writer.WriteLine();
                        writer.Flush();

                        foreach (var result in simulationResults)
                        {
                            csvWriter.WriteRecord(result);
                            csvWriter.Flush();
                            writer.WriteLine();
                            writer.Flush();
                        }
                    }
                }
            }
        }
Beispiel #26
0
        public static void ExportByPropertyNames <T>(IEnumerable <T> objs, IEnumerable <PropertyInfo> properties, string path, Encoding encoding)
        {
            if (!File.Exists(path))
            {
                using (File.Create(path)) { }
            }
            //List<string> title = properties.Select(p => p.Name).ToList();

            List <dynamic> list = new List <dynamic>();

            foreach (var obj in objs)
            {
                dynamic target = new ExpandoObject();
                foreach (var prop in properties)
                {
                    object value = prop.GetValue(obj);
                    (target as IDictionary <string, object>).Add(prop.Name, value);
                }
                list.Add(target);
            }

            using (StreamWriter stream = new StreamWriter(File.Open(path, FileMode.Create), encoding))
            {
                CsvHelper.CsvWriter writer = new CsvHelper.CsvWriter(stream, CultureInfo.InvariantCulture);
                writer.WriteRecords(list);
            }
        }
Beispiel #27
0
        protected void btnExport_Click(object sender, EventArgs e)
        {
            var fileName      = "redirects.csv".FileNamePlusDate();
            var fileDirectory = FoldersHelper.GetPathAbsolut(FolderType.PriceTemp);

            if (!Directory.Exists(fileDirectory))
            {
                Directory.CreateDirectory(fileDirectory);
            }

            using (var csvWriter = new CsvHelper.CsvWriter(new StreamWriter(fileDirectory + fileName), new CsvConfiguration()
            {
                Delimiter = ";", SkipEmptyRecords = false
            }))
            {
                foreach (var item in new[] { "RedirectFrom", "RedirectTo", "ProductArtNo" })
                {
                    csvWriter.WriteField(item);
                }
                csvWriter.NextRecord();

                foreach (var redirect in RedirectSeoService.GetRedirectsSeo())
                {
                    csvWriter.WriteField(redirect.RedirectFrom);
                    csvWriter.WriteField(redirect.RedirectTo);
                    csvWriter.WriteField(redirect.ProductArtNo);

                    csvWriter.NextRecord();
                }
            }
            Response.Clear();
            CommonHelper.WriteResponseFile(fileDirectory + fileName, fileName);
            Response.End();
        }
Beispiel #28
0
        static void Main(string[] args)
        {
            IWebDriver driver = new PhantomJSDriver();

            var url = "http://www.urbanspoon.com/r/1/1291/restaurant/Internacional-District/Seattle-Deli-Seattle";

            driver.Navigate().GoToUrl(url);


            var name   = driver.FindElements(By.CssSelector("span6>h1")).First().Text;
            var phone  = driver.FindElements(By.CssSelector(".phone.tel")).First().Text;
            var rating = driver.FindElements(By.CssSelector(".avarage.digits.rating")).First().Text.Split('\r')[0];
            var votes  = driver.FindElements(By.CssSelector(".total")).First().Text.Split(' ')[0];

            var sw        = new StreamWriter(@"output.csv");
            var csvWriter = new CsvHelper.CsvWriter(sw);

            csvWriter.WriteField(name);
            csvWriter.WriteField(phone);
            csvWriter.WriteField(rating);
            csvWriter.WriteField(votes);

            csvWriter.NextRecord();

            csvWriter.WriteField(name + " Hello! ");
            csvWriter.WriteField(phone);
            csvWriter.WriteField(rating);
            csvWriter.WriteField(votes);

            csvWriter.NextRecord();

            sw.Flush();
        }
        protected override void OutBlock(ResModel resModel, IXAQuery query, CsvHelper.CsvWriter writer)
        {
            var szTrCode = resModel.Name;

            var block1 = resModel.Blocks[szTrCode + "OutBlock1"];

            writer.WriteHeader <_t9905OutBlock1>();
            for (var i = 0; i < query.GetBlockCount(szTrCode + "OutBlock1"); i++)
            {
                var result = new _t9905OutBlock1()
                {
                    shcode  = query.GetFieldData(block1.Name, "shcode", i),
                    expcode = query.GetFieldData(block1.Name, "expcode", i),
                    hname   = query.GetFieldData(block1.Name, "hname", i),
                };
                writer.NextRecord();
                writer.WriteRecord(result);
                Constants.CodeElwBases.Add(result.shcode, new CodeElwBase()
                {
                    Name         = result.hname,
                    Code         = result.shcode,
                    ExpandedCode = result.expcode,
                });
            }
        }
        public IProfile Create(string profileName)
        {
            if (Exists(profileName))
            {
                throw new Core.Services.ProfileNameConflictException(profileName);
            }

            string       profilePath     = ProfilePath(profileName);
            FileInfoBase profileFileInfo = _fileSystem.FileInfo.FromFileName(profilePath);
            StreamWriter writer          = profileFileInfo.CreateText();

            using (CsvHelper.CsvWriter csvWriter = new CsvHelper.CsvWriter(writer, leaveOpen: false))
            {
                csvWriter.Configuration.QuoteAllFields = true;
                csvWriter.Configuration.RegisterClassMap(new CSV.MatchRecordConfiguration());

                csvWriter.WriteHeader <MatchRecord>();
                csvWriter.NextRecord();
            }

            FileSystemProfile profile = new FileSystemProfile(_fileSystem, profileName, profilePath);

            AddToCache(profileName, profile);
            return(profile);
        }
Beispiel #31
0
        public void ToFile(string outputFilePath)
        {
            using (var fileStream = File.OpenWrite(outputFilePath))
                using (var streamWriter = new StreamWriter(fileStream))
                    using (var csvWriter = new CsvHelper.CsvWriter(streamWriter))
                    {
                        csvWriter.Configuration.Delimiter       = ";";
                        csvWriter.Configuration.Encoding        = System.Text.Encoding.UTF8;
                        csvWriter.Configuration.HasHeaderRecord = true;

                        foreach (var header in Headers)
                        {
                            csvWriter.WriteField(header);
                        }

                        csvWriter.NextRecord();

                        foreach (var row in Data)
                        {
                            var rowAsDict = row as IDictionary <string, object>;
                            foreach (var field in Headers)
                            {
                                object value = null;
                                if (!rowAsDict.TryGetValue(field, out value) || value == null)
                                {
                                    value = string.Empty;
                                }

                                csvWriter.WriteField(value);
                            }

                            csvWriter.NextRecord();
                        }
                    }
        }
        protected override void OutBlock(ResModel resModel, IXAQuery query, CsvHelper.CsvWriter writer)
        {
            var szTrCode = resModel.Name;
            var block    = resModel.Blocks[szTrCode + "OutBlock"];

            writer.WriteHeader <_t9942OutBlock>();
            for (var i = 0; i < query.GetBlockCount(block.Name); i++)
            {
                var result = new _t9942OutBlock()
                {
                    hname   = query.GetFieldData(block.Name, "hname", i),
                    shcode  = query.GetFieldData(block.Name, "shcode", i),
                    expcode = query.GetFieldData(block.Name, "expcode", i),
                };
                writer.NextRecord();
                writer.WriteRecord(result);
                Constants.CodeElws.Add(result.shcode, new CodeElw()
                {
                    UnderlyingAssetsCategory = "",
                    UnderlyingAssetsCode     = "",
                    Name         = result.hname,
                    Code         = result.shcode,
                    ExpandedCode = result.expcode,
                });
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            List <Musteri> musterilerim = new List <Musteri>();

            for (int i = 0; i < 50; i++)
            {
                Musteri temp = new Musteri();
                temp.ID     = i;
                temp.Adi    = FakeData.NameData.GetFirstName();
                temp.Soyadi = FakeData.NameData.GetSurname();
                temp.Email  = $"{temp.Adi}.{temp.Soyadi}@{FakeData.NetworkData.GetDomain()}";

                temp.Tel = FakeData.PhoneNumberData.GetPhoneNumber();
                musterilerim.Add(temp);
            }


            if (!Directory.Exists("D:\\CSV\\Dosyam"))
            {
                Directory.CreateDirectory("D:\\CSV\\Dosyam");
            }
            StreamWriter sw = new StreamWriter("D:\\CSV\\Dosyam\\yeni", true);

            CsvHelper.CsvWriter writer = new CsvHelper.CsvWriter(sw);
            writer.WriteHeader(typeof(Musteri));

            foreach (Musteri item in musterilerim)
            {
                writer.WriteRecord(item);
            }
            sw.Close();

            MessageBox.Show("Tamamlandı");
        }
        public JsonResult _DeleteProducts(MarketplaceFeed model)
        {
            try
            {
                // get product's EIS SKU
                var productEisSkus = _productService.GetProductsEisSku(model);

                var fileFullPath = string.Format("{0}\\BulkDeleteProducts_{1:yyyyMMdd_HHmmss}.txt", _systemJobsRoot, DateTime.Now);

                using (var streamWriter = new StreamWriter(fileFullPath))
                {
                    var writer = new CsvHelper.CsvWriter(streamWriter);
                    foreach (var eisSku in productEisSkus)
                    {
                        writer.WriteField(eisSku);
                        writer.NextRecord();
                    }
                }

                // create new job for the Amazon Get Info for the asins
                var systemJob = new SystemJobDto
                {
                    JobType     = JobType.BulkDeleteProduct,
                    Parameters  = fileFullPath,
                    SubmittedBy = User.Identity.Name
                };
                _systemJobService.CreateSystemJob(systemJob);

                return(Json("Bulk deletion of products has been passed to EIS System Jobs for execution.", JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                return(Json(new { Error = "Error in deleting products! - Message: " + EisHelper.GetExceptionMessage(ex) }, JsonRequestBehavior.AllowGet));
            }
        }
Beispiel #35
0
    public void Write(IEnumerable<CsvModel> models, TextWriter writer, string delimiter)
    {
      /* get all headers row */
      List<string> headers = new List<string>();
      headers.Add(CsvHeaders.ObjectType);
      headers.Add(CsvHeaders.Class);
      headers.Add(CsvHeaders.Source);

      foreach (var model in models)
      {
        foreach (string key in model.Values.Keys)
          if (!headers.Contains(key))
            headers.Add(key);
      }

      using (var csvWriter = new CsvHelper.CsvWriter(writer,
        new CsvHelper.Configuration.CsvConfiguration() {
          QuoteAllFields = true,
          Delimiter = delimiter }
        ))
      {
        /* write the header row */
        foreach (string header in headers)
          csvWriter.WriteField<string>(header);
        csvWriter.NextRecord();

        /* write the content of each csv model */
        foreach (var model in models)
        {
          for (int i = 0; i < headers.Count; i++)
          {
            string value = string.Empty;
            switch (i)
            {
              case 0: value = model.ObjectType; break;
              case 1: value = model.Class; break;
              case 2: value = string.Join(new string (new char[] {Constants.SourceFileDelimiter }), model.SourceFiles); break;
              default:
                if (!model.Values.TryGetValue(headers[i], out value))
                  value = string.Empty;
                break;
            }
            csvWriter.WriteField<string>(value);
          }
          csvWriter.NextRecord();
        }
      }
    }
Beispiel #36
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="dataDirectory"></param>
        /// <param name="outputDirectory"></param>
        public void PostProcess(string dataDirectory, 
                                string outputDirectory)
        {
            CsvConfiguration csvConfiguration = new CsvConfiguration();
            csvConfiguration.QuoteAllFields = true;

            using (FileStream fileStream = new FileStream(System.IO.Path.Combine(outputDirectory, "Attachment.Hashes.csv"), FileMode.Append, FileAccess.Write, FileShare.Read))
            using (StreamWriter streamWriter = new StreamWriter(fileStream))
            using (CsvHelper.CsvWriter csvWriter = new CsvHelper.CsvWriter(streamWriter, csvConfiguration))
            {
                // Now MD5 the files
                foreach (string file in System.IO.Directory.EnumerateFiles(outputDirectory,
                                                                           "*.xml",
                                                                           SearchOption.AllDirectories))
                {
                    string fileName = System.IO.Path.GetFileName(file);
                    if (fileName.StartsWith("Message.Details.") == false)
                    {
                        continue;
                    }

                    MessageDetails messageDetails = new MessageDetails();
                    string ret = messageDetails.Load(file);
                    if (ret.Length == 0)
                    {
                        foreach (AttachmentDetails attachment in messageDetails.Attachments)
                        {
                            csvWriter.WriteField(attachment.Md5);
                            csvWriter.WriteField(attachment.File);
                            csvWriter.WriteField(messageDetails.SrcIp);
                            csvWriter.WriteField(messageDetails.SrcPort);
                            csvWriter.WriteField(messageDetails.DstIp);
                            csvWriter.WriteField(messageDetails.DstPort);
                            csvWriter.WriteField(messageDetails.To);
                            csvWriter.WriteField(messageDetails.From);
                            csvWriter.WriteField(messageDetails.MailFrom);
                            csvWriter.WriteField(messageDetails.Sender);
                            csvWriter.WriteField(messageDetails.Subject);
                            csvWriter.WriteField(messageDetails.Date);
                            csvWriter.NextRecord();
                        }
                    }
                }
            }

            ProcessAttachmentHashes(outputDirectory);
        }
        internal string createCsvWithoutStructure(IEnumerable<dynamic> data, CsvConfiguration configuration)
        {
            var guid = Guid.NewGuid().ToString();
            var builder = new StringBuilder();
            var writer = new CsvHelper.CsvWriter(new StringWriter(builder), configuration);

            if (data.Count() == 0)
                return null;

            var first = ToDictionary(guid, data.First());

            foreach (var name in first.Keys)
                writer.WriteField(name);
            writer.NextRecord();

            foreach (var datum in data)
            {
                var dict = ToDictionary(guid, datum);

                foreach (var key in first.Keys)
                    writer.WriteField(dict[key].ToString());

                writer.NextRecord();
            }

            return builder.ToString();
        }
Beispiel #38
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void contextExportUniqueSourceIp_Click(object sender, EventArgs e)
        {
            SaveFileDialog saveFileDialog = new SaveFileDialog();
            saveFileDialog.Title = "Select the export CSV";
            saveFileDialog.Filter = "TSV Files|*.tsv";
            if (saveFileDialog.ShowDialog(this) == DialogResult.Cancel)
            {
                return;
            }

            List<Session> sessions = listSession.Objects.Cast<Session>().ToList();
            var unique = sessions.Select(s => s.SrcIpText).Distinct();

            CsvConfiguration csvConfiguration = new CsvConfiguration();
            csvConfiguration.Delimiter = "\t";

            using (FileStream fileStream = new FileStream(saveFileDialog.FileName, FileMode.Append, FileAccess.Write))
            using (StreamWriter streamWriter = new StreamWriter(fileStream))
            using (CsvHelper.CsvWriter csvWriter = new CsvHelper.CsvWriter(streamWriter, csvConfiguration))
            {
                csvWriter.WriteField("Source IP");
                csvWriter.NextRecord();

                foreach (var ip in unique)
                {
                    csvWriter.WriteField(ip);
                    csvWriter.NextRecord();
                }
            }
        }
Beispiel #39
0
        private static void Main(string[] args)
        {
            Licensing.RegisterLicenseFromFileIfExists(SSLicenseFile);

            SetupNLog();

            _keywords = new HashSet<string> {"temp", "tmp"};

            _logger = LogManager.GetCurrentClassLogger();

            if (!CheckForDotnet46())
            {
                _logger.Warn(".net 4.6 not detected. Please install .net 4.6 and try again.");
                return;
            }

            _fluentCommandLineParser = new FluentCommandLineParser<ApplicationArguments>
            {
                IsCaseSensitive = false
            };

            _fluentCommandLineParser.Setup(arg => arg.File)
                .As('f')
                .WithDescription("File to process. Either this or -d is required");

            _fluentCommandLineParser.Setup(arg => arg.Directory)
                .As('d')
                .WithDescription("Directory to recursively process. Either this or -f is required");

            _fluentCommandLineParser.Setup(arg => arg.Keywords)
                .As('k')
                .WithDescription(
                    "Comma separated list of keywords to highlight in output. By default, 'temp' and 'tmp' are highlighted. Any additional keywords will be added to these.");

            _fluentCommandLineParser.Setup(arg => arg.Quiet)
                .As('q')
                .WithDescription(
                    "Do not dump full details about each file processed. Speeds up processing when using --json or --csv\r\n")
                .SetDefault(false);

            _fluentCommandLineParser.Setup(arg => arg.JsonDirectory)
                .As("json")
                .WithDescription(
                    "Directory to save json representation to. Use --pretty for a more human readable layout");

            _fluentCommandLineParser.Setup(arg => arg.CsvDirectory)
                .As("csv")
                .WithDescription(
                    "Directory to save CSV (tab separated) results to. Be sure to include the full path in double quotes");

//            _fluentCommandLineParser.Setup(arg => arg.XmlDirectory)
//               .As("xml")
//               .WithDescription(
//                   "Directory to save XML formatted results to. Be sure to include the full path in double quotes");

            _fluentCommandLineParser.Setup(arg => arg.xHtmlDirectory)
                .As("html")
                .WithDescription(
                    "Directory to save xhtml formatted results to. Be sure to include the full path in double quotes");

            _fluentCommandLineParser.Setup(arg => arg.JsonPretty)
                .As("pretty")
                .WithDescription(
                    "When exporting to json, use a more human readable layout\r\n").SetDefault(false);

            _fluentCommandLineParser.Setup(arg => arg.LocalTime)
                .As("local")
                .WithDescription(
                    "Display dates using timezone of machine PECmd is running on vs. UTC\r\n").SetDefault(false);

            _fluentCommandLineParser.Setup(arg => arg.DateTimeFormat)
.As("dt")
.WithDescription(
  "The custom date/time format to use when displaying time stamps. Default is: yyyy-MM-dd HH:mm:ss K").SetDefault("yyyy-MM-dd HH:mm:ss K");

            _fluentCommandLineParser.Setup(arg => arg.PreciseTimestamps)
   .As("mp")
   .WithDescription(
       "When true, display higher precision for time stamps. Default is false").SetDefault(false);


            var header =
                $"PECmd version {Assembly.GetExecutingAssembly().GetName().Version}" +
                "\r\n\r\nAuthor: Eric Zimmerman ([email protected])" +
                "\r\nhttps://github.com/EricZimmerman/PECmd";

            var footer = @"Examples: PECmd.exe -f ""C:\Temp\CALC.EXE-3FBEF7FD.pf""" + "\r\n\t " +
                         @" PECmd.exe -f ""C:\Temp\CALC.EXE-3FBEF7FD.pf"" --json ""D:\jsonOutput"" --jsonpretty" +
                         "\r\n\t " +
                         @" PECmd.exe -d ""C:\Temp"" -k ""system32, fonts""" + "\r\n\t " +
                         @" PECmd.exe -d ""C:\Temp"" --csv ""c:\temp"" --local --json c:\temp\json" +
                         "\r\n\t " +
//                         @" PECmd.exe -f ""C:\Temp\someOtherFile.txt"" --lr cc -sa" + "\r\n\t " +
//                         @" PECmd.exe -f ""C:\Temp\someOtherFile.txt"" --lr cc -sa -m 15 -x 22" + "\r\n\t " +
                         @" PECmd.exe -d ""C:\Windows\Prefetch""" + "\r\n\t " +
                         "\r\n\t" +
                         "  Short options (single letter) are prefixed with a single dash. Long commands are prefixed with two dashes\r\n";

            _fluentCommandLineParser.SetupHelp("?", "help")
                .WithHeader(header)
                .Callback(text => _logger.Info(text + "\r\n" + footer));

            var result = _fluentCommandLineParser.Parse(args);

            if (result.HelpCalled)
            {
                return;
            }

            if (result.HasErrors)
            {
                _logger.Error("");
                _logger.Error(result.ErrorText);

                _fluentCommandLineParser.HelpOption.ShowHelp(_fluentCommandLineParser.Options);

                return;
            }

            if (UsefulExtension.IsNullOrEmpty(_fluentCommandLineParser.Object.File) &&
                UsefulExtension.IsNullOrEmpty(_fluentCommandLineParser.Object.Directory))
            {
                _fluentCommandLineParser.HelpOption.ShowHelp(_fluentCommandLineParser.Options);

                _logger.Warn("Either -f or -d is required. Exiting");
                return;
            }

            if (UsefulExtension.IsNullOrEmpty(_fluentCommandLineParser.Object.File) == false &&
                !File.Exists(_fluentCommandLineParser.Object.File))
            {
                _logger.Warn($"File '{_fluentCommandLineParser.Object.File}' not found. Exiting");
                return;
            }

            if (UsefulExtension.IsNullOrEmpty(_fluentCommandLineParser.Object.Directory) == false &&
                !Directory.Exists(_fluentCommandLineParser.Object.Directory))
            {
                _logger.Warn($"Directory '{_fluentCommandLineParser.Object.Directory}' not found. Exiting");
                return;
            }

            if (_fluentCommandLineParser.Object.Keywords?.Length > 0)
            {
                var kws = _fluentCommandLineParser.Object.Keywords.Split(new[] {','},
                    StringSplitOptions.RemoveEmptyEntries);

                foreach (var kw in kws)
                {
                    _keywords.Add(kw.Trim());
                }
            }



            _logger.Info(header);
            _logger.Info("");
            _logger.Info($"Command line: {string.Join(" ", Environment.GetCommandLineArgs().Skip(1))}");
            _logger.Info("");
            _logger.Info($"Keywords: {string.Join(", ", _keywords)}");
            _logger.Info("");

            if (_fluentCommandLineParser.Object.PreciseTimestamps)
            {
                _fluentCommandLineParser.Object.DateTimeFormat = _preciseTimeFormat;
            }

            _processedFiles = new List<IPrefetch>();

            _failedFiles = new List<string>();

            if (_fluentCommandLineParser.Object.File?.Length > 0)
            {
                IPrefetch pf = null;

                try
                {
                    pf = LoadFile(_fluentCommandLineParser.Object.File);
                    if (pf != null)
                    {
                        _processedFiles.Add(pf);
                    }
                }
                catch (UnauthorizedAccessException ex)
                {
                    _logger.Error(
                        $"Unable to access '{_fluentCommandLineParser.Object.File}'. Are you running as an administrator? Error: {ex.Message}");
                }
                catch (Exception ex)
                {
                    _logger.Error(
                        $"Error getting prefetch files in '{_fluentCommandLineParser.Object.Directory}'. Error: {ex.Message}");
                }
            }
            else
            {
                _logger.Info($"Looking for prefetch files in '{_fluentCommandLineParser.Object.Directory}'");
                _logger.Info("");

                string[] pfFiles = null;

              

                try
                {
                    pfFiles = Directory.GetFiles(_fluentCommandLineParser.Object.Directory, "*.pf",
                        SearchOption.AllDirectories);
                }
                catch (UnauthorizedAccessException ua)
                {
                    _logger.Error(
                        $"Unable to access '{_fluentCommandLineParser.Object.Directory}'. Are you running as an administrator? Error: {ua.Message}");
                    return;
                }
                catch (Exception ex)
                {
                    _logger.Error(
                        $"Error getting prefetch files in '{_fluentCommandLineParser.Object.Directory}'. Error: {ex.Message}");
                    return;
                }

                _logger.Info($"Found {pfFiles.Length:N0} Prefetch files");
                _logger.Info("");

                var sw = new Stopwatch();
                sw.Start();

                foreach (var file in pfFiles)
                {
                    var pf = LoadFile(file);
                    if (pf != null)
                    {
                        _processedFiles.Add(pf);
                    }
                }

                sw.Stop();

                if (_fluentCommandLineParser.Object.Quiet)
                {
                    _logger.Info("");
                }

                _logger.Info(
                    $"Processed {pfFiles.Length - _failedFiles.Count:N0} out of {pfFiles.Length:N0} files in {sw.Elapsed.TotalSeconds:N4} seconds");

                if (_failedFiles.Count > 0)
                {
                    _logger.Info("");
                    _logger.Warn("Failed files");
                    foreach (var failedFile in _failedFiles)
                    {
                        _logger.Info($"  {failedFile}");
                    }
                }

            }

            if (_processedFiles.Count > 0)
            {
                _logger.Info("");

                try
                {
                    CsvWriter csv = null;
                    StreamWriter streamWriter = null;

                    CsvWriter csvTl = null;
                    StreamWriter streamWriterTl = null;


                    if (_fluentCommandLineParser.Object.CsvDirectory?.Length > 0)
                    {
                        var outName = $"{DateTimeOffset.Now.ToString("yyyyMMddHHmmss")}_PECmd_Output.tsv";
                        var outNameTl = $"{DateTimeOffset.Now.ToString("yyyyMMddHHmmss")}_PECmd_Output_Timeline.tsv";
                        var outFile = Path.Combine(_fluentCommandLineParser.Object.CsvDirectory, outName);
                        var outFileTl = Path.Combine(_fluentCommandLineParser.Object.CsvDirectory, outNameTl);


                        if (Directory.Exists(_fluentCommandLineParser.Object.CsvDirectory) == false)
                        {
                            _logger.Warn($"Path to '{_fluentCommandLineParser.Object.CsvDirectory}' doesn't exist. Creating...");
                            Directory.CreateDirectory(_fluentCommandLineParser.Object.CsvDirectory);
                        }

                        _logger.Warn($"CSV (tab separated) output will be saved to '{outFile}'");
                        _logger.Warn($"CSV time line (tab separated) output will be saved to '{outFileTl}'");

                        try
                        {
                            streamWriter = new StreamWriter(outFile);
                            csv = new CsvWriter(streamWriter);
                            csv.Configuration.Delimiter = $"{'\t'}";
                            csv.WriteHeader(typeof(CsvOut));

                            streamWriterTl = new StreamWriter(outFileTl);
                            csvTl = new CsvWriter(streamWriterTl);
                            csvTl.Configuration.Delimiter = $"{'\t'}";
                            csvTl.WriteHeader(typeof(CsvOutTl));
                        }
                        catch (Exception ex)
                        {
                            _logger.Error(
                                $"Unable to open '{outFile}' for writing. CSV export canceled. Error: {ex.Message}");
                        }
                    }

                    if (_fluentCommandLineParser.Object.JsonDirectory?.Length > 0)
                    {
                        _logger.Warn($"Saving json output to '{_fluentCommandLineParser.Object.JsonDirectory}'");
                    }

                    XmlTextWriter xml = null;

                    if (_fluentCommandLineParser.Object.xHtmlDirectory?.Length > 0)
                    {
                        var outDir = Path.Combine(_fluentCommandLineParser.Object.xHtmlDirectory,
                            $"{DateTimeOffset.UtcNow.ToString("yyyyMMddHHmmss")}_PECmd_Output_for_{_fluentCommandLineParser.Object.xHtmlDirectory.Replace(@":\", "_").Replace(@"\", "_")}");

                        if (Directory.Exists(outDir) == false)
                        {
                            Directory.CreateDirectory(outDir);
                        }

                        var styleDir = Path.Combine(outDir, "styles");
                        if (Directory.Exists(styleDir) == false)
                        {
                            Directory.CreateDirectory(styleDir);
                        }

                        File.WriteAllText(Path.Combine(styleDir, "normalize.css"), Resources.normalize);
                        File.WriteAllText(Path.Combine(styleDir, "style.css"), Resources.style);

                        Resources.directories.Save(Path.Combine(styleDir, "directories.png"));
                        Resources.filesloaded.Save(Path.Combine(styleDir, "filesloaded.png"));

                        var outFile = Path.Combine(_fluentCommandLineParser.Object.xHtmlDirectory, outDir,
                            "index.xhtml");

                        _logger.Warn($"Saving HTML output to '{outFile}'");

                        xml = new XmlTextWriter(outFile, Encoding.UTF8)
                        {
                            Formatting = Formatting.Indented,
                            Indentation = 4
                        };

                        xml.WriteStartDocument();

                        xml.WriteProcessingInstruction("xml-stylesheet", "href=\"styles/normalize.css\"");
                        xml.WriteProcessingInstruction("xml-stylesheet", "href=\"styles/style.css\"");

                        xml.WriteStartElement("document");
                    }

                    foreach (var processedFile in _processedFiles)
                    {
                        var o = GetCsvFormat(processedFile);

                        try
                        {
                            foreach (var dateTimeOffset in processedFile.LastRunTimes)
                            {
                                var t = new CsvOutTl();

                                var exePath =
                                    processedFile.Filenames.FirstOrDefault(
                                        y => y.EndsWith(processedFile.Header.ExecutableFilename));

                                if (exePath == null)
                                {
                                    exePath = processedFile.Header.ExecutableFilename;
                                }

                                t.ExecutableName = exePath;
                                t.RunTime = dateTimeOffset.ToString(_fluentCommandLineParser.Object.DateTimeFormat);

                                csvTl?.WriteRecord(t);
                            }
                        }
                        catch (Exception ex)
                        {
                            _logger.Error(
                                $"Error getting time line record for '{processedFile.SourceFilename}' to '{_fluentCommandLineParser.Object.CsvDirectory}'. Error: {ex.Message}");

                        }

                        try
                        {
                            csv?.WriteRecord(o);
                        }
                        catch (Exception ex)
                        {
                            _logger.Error(
                                $"Error writing CSV record for '{processedFile.SourceFilename}' to '{_fluentCommandLineParser.Object.CsvDirectory}'. Error: {ex.Message}");
                        }

                        if (_fluentCommandLineParser.Object.JsonDirectory?.Length > 0)
                        {
                            SaveJson(processedFile, _fluentCommandLineParser.Object.JsonPretty,
                                _fluentCommandLineParser.Object.JsonDirectory);
                        }

                        //XHTML
                        xml?.WriteStartElement("Container");
                        xml?.WriteElementString("SourceFile", o.SourceFilename);
                        xml?.WriteElementString("SourceCreated", o.SourceCreated);
                        xml?.WriteElementString("SourceModified", o.SourceModified);
                        xml?.WriteElementString("SourceAccessed", o.SourceAccessed);

                        xml?.WriteElementString("LastRun", o.LastRun);

                        xml?.WriteElementString("PreviousRun0", $"{o.PreviousRun0}");
                        xml?.WriteElementString("PreviousRun1", $"{o.PreviousRun1}");
                        xml?.WriteElementString("PreviousRun2", $"{o.PreviousRun2}");
                        xml?.WriteElementString("PreviousRun3", $"{o.PreviousRun3}");
                        xml?.WriteElementString("PreviousRun4", $"{o.PreviousRun4}");
                        xml?.WriteElementString("PreviousRun5", $"{o.PreviousRun5}");
                        xml?.WriteElementString("PreviousRun6", $"{o.PreviousRun6}");

                        xml?.WriteStartElement("ExecutableName");
                        xml?.WriteAttributeString("title", "Note: The name of the executable tracked by the pf file");
                        xml?.WriteString(o.ExecutableName);
                        xml?.WriteEndElement();

                        xml?.WriteElementString("RunCount", $"{o.RunCount}");

                        xml?.WriteStartElement("Size");
                        xml?.WriteAttributeString("title", "Note: The size of the executable in bytes");
                        xml?.WriteString(o.Size);
                        xml?.WriteEndElement();

                        xml?.WriteStartElement("Hash");
                        xml?.WriteAttributeString("title", "Note: The calculated hash for the pf file that should match the hash in the source file name");
                        xml?.WriteString(o.Hash);
                        xml?.WriteEndElement();

                        xml?.WriteStartElement("Version");
                        xml?.WriteAttributeString("title", "Note: The operating system that generated the prefetch file");
                        xml?.WriteString(o.Version);
                        xml?.WriteEndElement();

                        xml?.WriteElementString("Note", o.Note);

                        xml?.WriteElementString("Volume0Name", o.Volume0Name);
                        xml?.WriteElementString("Volume0Serial", o.Volume0Serial);
                        xml?.WriteElementString("Volume0Created", o.Volume0Created);

                        xml?.WriteElementString("Volume1Name", o.Volume1Name);
                        xml?.WriteElementString("Volume1Serial", o.Volume1Serial);
                        xml?.WriteElementString("Volume1Created", o.Volume1Created);


                        xml?.WriteStartElement("Directories");
                        xml?.WriteAttributeString("title", "A comma separated list of all directories accessed by the executable");
                        xml?.WriteString(o.Directories);
                        xml?.WriteEndElement();

                        xml?.WriteStartElement("FilesLoaded");
                        xml?.WriteAttributeString("title", "A comma separated list of all files that were loaded by the executable");
                        xml?.WriteString(o.FilesLoaded);
                        xml?.WriteEndElement();

                        xml?.WriteEndElement();

                    }


                    //Close CSV stuff
                    streamWriter?.Flush();
                    streamWriter?.Close();

                    streamWriterTl?.Flush();
                    streamWriterTl?.Close();

                    //Close XML
                    xml?.WriteEndElement();
                    xml?.WriteEndDocument();
                    xml?.Flush();
                }
                catch (Exception ex)
                {
                    _logger.Error($"Error exporting data! Error: {ex.Message}");
                }
            }
        }
Beispiel #40
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void menuFileExportUrls_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog fbd = new FolderBrowserDialog();
            fbd.Description = "Select the export directory";

            if (fbd.ShowDialog(this) == DialogResult.Cancel)
            {
                return;
            }

            string directory = fbd.SelectedPath;
            string fileName = System.IO.Path.Combine(directory, "urls.tsv");

            new Thread(() =>
            {
                MethodInvoker methodInvoker = delegate
                {
                    using (new HourGlass(this))
                    {
                        CsvConfiguration csvConfiguration = new CsvConfiguration();
                        csvConfiguration.Delimiter = "\t";

                        using (FileStream fileStream = new FileStream(fileName, FileMode.Create, FileAccess.Write))
                        using (StreamWriter streamWriter = new StreamWriter(fileStream))
                        using (CsvHelper.CsvWriter csvWriter = new CsvHelper.CsvWriter(streamWriter, csvConfiguration))
                        {
                            csvWriter.WriteField("Host");
                            csvWriter.WriteField("Destination IP");
                            csvWriter.WriteField("URL");
                            csvWriter.NextRecord();

                            List<string> temp = new List<string>();

                            foreach (Session session in listSession.Objects)
                            {
                                if (File.Exists(System.IO.Path.Combine(this.dataDirectory, session.Guid + ".urls")) == false)
                                {
                                    continue;
                                }

                                string[] urls = File.ReadAllLines(System.IO.Path.Combine(this.dataDirectory, session.Guid + ".urls"));
                                foreach (string url in urls)
                                {
                                    string tempUrl = url.Trim();
                                    if (tempUrl.Length == 0)
                                    {
                                        continue;
                                    }

                                    if (temp.Contains(session.HttpHost + tempUrl) == false)
                                    {
                                        temp.Add(session.HttpHost + tempUrl);
                                    }

                                    csvWriter.WriteField(session.HttpHost);
                                    csvWriter.WriteField(session.DstIpText);
                                    csvWriter.WriteField(tempUrl);
                                    csvWriter.NextRecord();
                                }
                            }

                            temp.Sort();

                            foreach (string url in temp)
                            {
                                IO.WriteUnicodeTextToFile(url, System.IO.Path.Combine(directory, "urls.txt"), true);
                            }
                        }
                    }
                };

                if (this.InvokeRequired == true)
                {
                    this.BeginInvoke(methodInvoker);
                }
                else
                {
                    methodInvoker.Invoke();
                }
            }).Start();
        }
Beispiel #41
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="dataDirectory"></param>
        /// <param name="outputDirectory"></param>
        public void PostProcess(string dataDirectory, string outputDirectory)
        {
            CsvConfiguration csvConfiguration = new CsvConfiguration();
            csvConfiguration.QuoteAllFields = true;

            using (FileStream fileStream = new FileStream(System.IO.Path.Combine(outputDirectory, "Urls.csv"), FileMode.Append, FileAccess.Write, FileShare.Read))
            using (StreamWriter streamWriter = new StreamWriter(fileStream))
            using (CsvHelper.CsvWriter csvWriter = new CsvHelper.CsvWriter(streamWriter, csvConfiguration))
            {
                foreach (string file in System.IO.Directory.EnumerateFiles(outputDirectory,
                                                                           "*.xml",
                                                                           SearchOption.AllDirectories))
                {
                    string fileName = System.IO.Path.GetFileName(file);
                    if (fileName.StartsWith("Url.Details.") == false)
                    {
                        continue;
                    }

                    UrlDetails urlDetails = new UrlDetails();
                    string ret = urlDetails.Load(file);
                    if (ret.Length == 0)
                    {
                        foreach (string url in urlDetails.Urls)
                        {
                            csvWriter.WriteField(url);
                            csvWriter.WriteField(urlDetails.SrcIp);
                            csvWriter.WriteField(urlDetails.SrcPort);
                            csvWriter.WriteField(urlDetails.DstIp);
                            csvWriter.WriteField(urlDetails.DstPort);
                            csvWriter.NextRecord();
                        }
                    }
                }
            }
        }
Beispiel #42
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="filePath">The output file name</param>
        public void ExportExcludes(string filePath)
        {
            if (IsRunning == true)
            {
                OnExclamation("Already performing an export");
                return;
            }

            IsRunning = true;

            new Thread(() =>
            {
                try
                {
                    List<Exclude> excludes = new List<Exclude>();
                    using (NPoco.Database dbMySql = new NPoco.Database(Db.GetOpenMySqlConnection()))
                    {
                        var data = dbMySql.Fetch<Dictionary<string, object>>(_sql.GetQuery(snorbert.Configs.Sql.Query.SQL_EXCLUDES));

                        foreach (Dictionary<string, object> temp in data)
                        {
                            Exclude exclude = new Exclude();
                            exclude.Id = long.Parse(temp["id"].ToString());
                            exclude.SigId = long.Parse(temp["sig_id"].ToString());
                            exclude.SigSid = long.Parse(temp["sig_sid"].ToString());
                            exclude.Rule = temp["sig_name"].ToString();
                            exclude.SourceIpText = temp["ip_src"].ToString();
                            exclude.DestinationIpText = temp["ip_dst"].ToString();
                            if (((byte[])temp["fp"])[0] == 48)
                            {
                                exclude.FalsePositive = false;
                            }
                            else
                            {
                                exclude.FalsePositive = true;
                            }

                            exclude.Timestamp = DateTime.Parse(temp["timestamp"].ToString());
                            excludes.Add(exclude);
                        }
                    }

                    CsvConfiguration csvConfiguration = new CsvConfiguration();
                    csvConfiguration.Delimiter = '\t';

                    using (FileStream fileStream = new FileStream(filePath, FileMode.Append, FileAccess.Write))
                    using (StreamWriter streamWriter = new StreamWriter(fileStream))
                    using (CsvHelper.CsvWriter csvWriter = new CsvHelper.CsvWriter(streamWriter, csvConfiguration))
                    {
                        // Write out the file headers
                        csvWriter.WriteField("Sig. ID");
                        csvWriter.WriteField("Source IP");
                        csvWriter.WriteField("Destination IP");
                        csvWriter.WriteField("FP");
                        csvWriter.WriteField("Comment");
                        csvWriter.WriteField("Sig. Name");
                        csvWriter.WriteField("Timestamp");
                        csvWriter.WriteField("Sig.");
                        csvWriter.NextRecord();

                        foreach (var temp in excludes)
                        {
                            csvWriter.WriteField(temp.SigId);
                            csvWriter.WriteField(temp.SourceIpText);
                            csvWriter.WriteField(temp.DestinationIpText);
                            csvWriter.WriteField(temp.FalsePositive);
                            csvWriter.WriteField(temp.Comment);
                            csvWriter.WriteField(temp.Rule);
                            csvWriter.WriteField(temp.Timestamp);
                            csvWriter.WriteField(temp.Rule);
                            csvWriter.NextRecord();
                        }
                    }

                    OnComplete();
                }
                catch (Exception ex)
                {
                    OnError("An error occurred whilst performing the export: " + ex.Message);
                }
                finally
                {
                    IsRunning = false;
                }
            }).Start();
        }
Beispiel #43
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="filePath"></param>
        /// <param name="dateFrom"></param>
        /// <param name="initials"></param>
        /// <param name="text"></param>
        public void ExportAcknowledgmentsFrom(string filePath,
            string dateFrom,
            string initials,
            bool text)
        {
            if (IsRunning == true)
            {
                OnExclamation("Already performing an export");
                return;
            }

            IsRunning = true;

            new Thread(() =>
            {
                try
                {
                    if (text == true)
                    {
                        using (NPoco.Database db = new NPoco.Database(Db.GetOpenMySqlConnection()))
                        using (FileStream fileStream = new FileStream(filePath, FileMode.Append, FileAccess.Write))
                        using (StreamWriter streamWriter = new StreamWriter(fileStream))
                        {
                            string query = _sql.GetQuery(snorbert.Configs.Sql.Query.SQL_ACKNOWLEDGEMENT);
                            query = query.Replace("#WHERE#", @"WHERE acknowledgment.initials = @0
                                                                 AND acknowledgment.timestamp > @1");

                            var data = db.Fetch<Dictionary<string, object>>(query, new object[] { initials, dateFrom });

                            foreach (Dictionary<string, object> temp in data)
                            {
                                streamWriter.WriteLine("Signature: " + temp["sig_name"].ToString());
                                streamWriter.WriteLine("SID/GID: " + temp["sig_sid"].ToString() + "/" + temp["sig_gid"].ToString());
                                if (temp["successful"] == null)
                                {
                                    streamWriter.WriteLine("Acknowledgement: " + temp["description"].ToString());
                                }
                                else
                                {
                                    streamWriter.WriteLine("Acknowledgement: " + temp["description"].ToString() + " (" + temp["successful"].ToString() + ")");
                                }
                                streamWriter.WriteLine("Notes: " + temp["notes"].ToString());
                                streamWriter.WriteLine(string.Empty);
                            }

                            OnComplete();
                        }
                    }
                    else
                    {
                        CsvConfiguration csvConfiguration = new CsvConfiguration();
                        csvConfiguration.Delimiter = '\t';

                        using (NPoco.Database db = new NPoco.Database(Db.GetOpenMySqlConnection()))
                        using (FileStream fileStream = new FileStream(filePath, FileMode.Append, FileAccess.Write))
                        using (StreamWriter streamWriter = new StreamWriter(fileStream))
                        using (CsvHelper.CsvWriter csvWriter = new CsvHelper.CsvWriter(streamWriter, csvConfiguration))
                        {
                            string query = _sql.GetQuery(snorbert.Configs.Sql.Query.SQL_ACKNOWLEDGEMENT);
                            query = query.Replace("#WHERE#", @"WHERE acknowledgment.initials = @0
                                                                 AND acknowledgment.timestamp > @1");

                            var data = db.Fetch<Dictionary<string, object>>(query, new object[] { initials, dateFrom });

                            // Write out the file headers
                            csvWriter.WriteField("Sig Name");
                            csvWriter.WriteField("Sig SID");
                            csvWriter.WriteField("Sig GID");
                            csvWriter.WriteField("Acknowledgement");
                            csvWriter.WriteField("Notes");
                            csvWriter.NextRecord();

                            foreach (Dictionary<string, object> temp in data)
                            {
                                csvWriter.WriteField(temp["sig_name"].ToString());
                                csvWriter.WriteField(temp["sig_sid"].ToString());
                                csvWriter.WriteField(temp["sig_gid"].ToString());
                                if (temp["successful"] == null)
                                {
                                    csvWriter.WriteField(temp["description"].ToString());
                                }
                                else
                                {
                                    csvWriter.WriteField(temp["description"].ToString() + " (" + temp["successful"].ToString() + ")");
                                }
                                csvWriter.WriteField(temp["notes"].ToString());
                                csvWriter.NextRecord();
                            }

                            OnComplete();
                        }
                    }
                }
                catch (Exception ex)
                {
                    OnError("An error occurred whilst performing the export: " + ex.Message);
                }
                finally
                {
                    IsRunning = false;
                }
            }).Start();
        }
Beispiel #44
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="signatures"></param>
        /// <param name="filePath">The output file name</param>
        public void ExportRules(List<Signature> signatures,
            string filePath)
        {
            if (IsRunning == true)
            {
                OnExclamation("Already performing an export");
                return;
            }

            IsRunning = true;

            new Thread(() =>
            {
                try
                {
                    CsvConfiguration csvConfiguration = new CsvConfiguration();
                    csvConfiguration.Delimiter = '\t';

                    using (FileStream fileStream = new FileStream(filePath, FileMode.Append, FileAccess.Write))
                    using (StreamWriter streamWriter = new StreamWriter(fileStream))
                    using (CsvHelper.CsvWriter csvWriter = new CsvHelper.CsvWriter(streamWriter, csvConfiguration))
                    {
                        // Write out the file headers
                        csvWriter.WriteField("SID");
                        csvWriter.WriteField("Name");
                        csvWriter.WriteField("Priority");
                        csvWriter.WriteField("Count");
                        csvWriter.NextRecord();

                        foreach (Signature temp in signatures)
                        {
                            csvWriter.WriteField(temp.Sid);
                            csvWriter.WriteField(temp.Name);
                            csvWriter.WriteField(temp.Priority);
                            csvWriter.WriteField(temp.Count);
                            csvWriter.NextRecord();
                        }
                    }

                    OnComplete();
                }
                catch (Exception ex)
                {
                    OnError("An error occurred whilst performing the export: " + ex.Message);
                }
                finally
                {
                    IsRunning = false;
                }
            }).Start();
        }
Beispiel #45
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="events"></param>
        /// <param name="filePath">The output file name</param>
        public void ExportEventCurrent(List<Event> events, 
            string filePath)
        {
            if (IsRunning == true)
            {
                OnExclamation("Already performing an export");
                return;
            }

            IsRunning = true;

            new Thread(() =>
            {
                try
                {
                    CsvConfiguration csvConfiguration = new CsvConfiguration();
                    csvConfiguration.Delimiter = '\t';

                    using (FileStream fileStream = new FileStream(filePath, FileMode.Append, FileAccess.Write))
                    using (StreamWriter streamWriter = new StreamWriter(fileStream))
                    using (CsvHelper.CsvWriter csvWriter = new CsvHelper.CsvWriter(streamWriter, csvConfiguration))
                    {
                        // Write out the file headers
                        csvWriter.WriteField("CID");
                        csvWriter.WriteField("Src IP");
                        csvWriter.WriteField("Src Port");
                        csvWriter.WriteField("Dst IP");
                        csvWriter.WriteField("Dst Port");
                        csvWriter.WriteField("Protocol");
                        csvWriter.WriteField("Timestamp");
                        csvWriter.WriteField("TCP Flags");
                        csvWriter.WriteField("Payload (ASCII)");
                        csvWriter.NextRecord();

                        foreach (Event temp in events)
                        {
                            csvWriter.WriteField(temp.Cid);
                            csvWriter.WriteField(temp.IpSrcTxt);
                            csvWriter.WriteField(temp.SrcPort);
                            csvWriter.WriteField(temp.IpDstTxt);
                            csvWriter.WriteField(temp.DstPort);
                            csvWriter.WriteField(temp.Protocol);
                            csvWriter.WriteField(temp.Timestamp);
                            csvWriter.WriteField(temp.TcpFlagsString);
                            csvWriter.WriteField(temp.PayloadAscii);
                            csvWriter.NextRecord();
                        }
                    }

                    OnComplete();
                }
                catch (Exception ex)
                {
                    OnError("An error occurred whilst performing the export: " + ex.Message);
                }
                finally
                {
                    IsRunning = false;
                }
            }).Start();
        }
Beispiel #46
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="filePath">The output file name</param>
        /// <param name="dateFrom"></param>
        /// <param name="dateTo"></param>
        /// <param name="sid"></param>
        public void ExportEventsAll(string filePath, 
            string dateFrom,
            string dateTo,
            string sid)
        {
            if (IsRunning == true)
            {
                OnExclamation("Already performing an export");
                return;
            }

            IsRunning = true;

            new Thread(() =>
            {
                try
                {
                    using (NPoco.Database db = new NPoco.Database(Db.GetOpenMySqlConnection()))
                    {
                        string query = _sql.GetQuery(snorbert.Configs.Sql.Query.SQL_RULES_EVENTS_EXPORT);
                        query = query.Replace("#WHERE#", @"WHERE exclude.id IS NULL
                                                             AND event.timestamp > @0
                                                             AND event.timestamp < @1
                                                             AND signature.sig_sid = @2");

                        List<Event> events = db.Fetch<Event>(query, new object[] { dateFrom, dateTo, sid });
                        events = Helper.ProcessEventDataSet(events);

                        CsvConfiguration csvConfiguration = new CsvConfiguration();
                        csvConfiguration.Delimiter = '\t';

                        using (FileStream fileStream = new FileStream(filePath, FileMode.Append, FileAccess.Write))
                        using (StreamWriter streamWriter = new StreamWriter(fileStream))
                        using (CsvHelper.CsvWriter csvWriter = new CsvHelper.CsvWriter(streamWriter, csvConfiguration))
                        {
                            // Write out the file headers
                            csvWriter.WriteField("CID");
                            csvWriter.WriteField("Src IP");
                            csvWriter.WriteField("Src Port");
                            csvWriter.WriteField("Dst IP");
                            csvWriter.WriteField("Dst Port");
                            csvWriter.WriteField("Protocol");
                            csvWriter.WriteField("Timestamp");
                            csvWriter.WriteField("TCP Flags");
                            csvWriter.WriteField("Payload (ASCII)");
                            csvWriter.WriteField("Payload (HEX)");
                            csvWriter.NextRecord();

                            foreach (var item in events)
                            {
                                csvWriter.WriteField(item.Cid);
                                csvWriter.WriteField(item.IpSrcTxt);
                                csvWriter.WriteField(item.SrcPort);
                                csvWriter.WriteField(item.IpDst);
                                csvWriter.WriteField(item.DstPort);
                                csvWriter.WriteField(item.Protocol);
                                csvWriter.WriteField(item.Timestamp);
                                csvWriter.WriteField(item.TcpFlagsString);
                                csvWriter.WriteField(item.PayloadAscii);
                                csvWriter.WriteField( Helper.ConvertByteArrayToHexString(item.PayloadHex));
                                csvWriter.NextRecord();
                            }
                        }

                        OnComplete();
                    }
                }
                catch (Exception ex)
                {
                    OnError("An error occurred whilst performing the export: " + ex.Message);
                }
                finally
                {
                    IsRunning = false;
                }
            }).Start();
        }
Beispiel #47
-1
        private static void Main(string[] args)
        {
            Licensing.RegisterLicenseFromFileIfExists(SSLicenseFile);

            LoadMACs();

            SetupNLog();

            _logger = LogManager.GetCurrentClassLogger();

            if (!CheckForDotnet46())
            {
                _logger.Warn(".net 4.6 not detected. Please install .net 4.6 and try again.");
                return;
            }

            _fluentCommandLineParser = new FluentCommandLineParser<ApplicationArguments>
            {
                IsCaseSensitive = false
            };

            _fluentCommandLineParser.Setup(arg => arg.File)
                .As('f')
                .WithDescription("File to process. Either this or -d is required");

            _fluentCommandLineParser.Setup(arg => arg.Directory)
                .As('d')
                .WithDescription("Directory to recursively process. Either this or -f is required");

            _fluentCommandLineParser.Setup(arg => arg.AllFiles)
                .As("all")
                .WithDescription(
                    "Process all files in directory vs. only files matching *.lnk\r\n").SetDefault(false);

            _fluentCommandLineParser.Setup(arg => arg.CsvDirectory)
                .As("csv")
                .WithDescription(
                    "Directory to save CSV (tab separated) formatted results to. Be sure to include the full path in double quotes");

            _fluentCommandLineParser.Setup(arg => arg.XmlDirectory)
                .As("xml")
                .WithDescription(
                    "Directory to save XML formatted results to. Be sure to include the full path in double quotes");

            _fluentCommandLineParser.Setup(arg => arg.xHtmlDirectory)
                .As("html")
                .WithDescription(
                    "Directory to save xhtml formatted results to. Be sure to include the full path in double quotes");

            _fluentCommandLineParser.Setup(arg => arg.JsonDirectory)
                .As("json")
                .WithDescription(
                    "Directory to save json representation to. Use --pretty for a more human readable layout");

            _fluentCommandLineParser.Setup(arg => arg.JsonPretty)
                .As("pretty")
                .WithDescription(
                    "When exporting to json, use a more human readable layout\r\n").SetDefault(false);

            _fluentCommandLineParser.Setup(arg => arg.Quiet)
                .As('q')
                .WithDescription(
                    "Only show the filename being processed vs all output. Useful to speed up exporting to json and/or csv\r\n")
                .SetDefault(false);

            _fluentCommandLineParser.Setup(arg => arg.NoTargetIDList)
                .As("nid")
                .WithDescription(
                    "Suppress Target ID list details from being displayed. Default is false.").SetDefault(false);

            _fluentCommandLineParser.Setup(arg => arg.NoExtraBlocks)
                .As("neb")
                .WithDescription(
                    "Suppress Extra blocks information from being displayed. Default is false.\r\n").SetDefault(false);

            _fluentCommandLineParser.Setup(arg => arg.DateTimeFormat)
            .As("dt")
            .WithDescription(
            "The custom date/time format to use when displaying time stamps. Default is: yyyy-MM-dd HH:mm:ss K").SetDefault("yyyy-MM-dd HH:mm:ss K");

            _fluentCommandLineParser.Setup(arg => arg.PreciseTimestamps)
               .As("mp")
               .WithDescription(
               "Display higher precision for time stamps. Default is false").SetDefault(false);

            var header =
                $"LECmd version {Assembly.GetExecutingAssembly().GetName().Version}" +
                "\r\n\r\nAuthor: Eric Zimmerman ([email protected])" +
                "\r\nhttps://github.com/EricZimmerman/LECmd";

            var footer = @"Examples: LECmd.exe -f ""C:\Temp\foobar.lnk""" + "\r\n\t " +
                         @" LECmd.exe -f ""C:\Temp\somelink.lnk"" --json ""D:\jsonOutput"" --jsonpretty" + "\r\n\t " +
                         @" LECmd.exe -d ""C:\Temp"" --csv ""c:\temp"" --html c:\temp --xml c:\temp\xml -q" + "\r\n\t " +
                         @" LECmd.exe -f ""C:\Temp\some other link.lnk"" --nid --neb " + "\r\n\t " +
                         @" LECmd.exe -d ""C:\Temp"" --all" + "\r\n\t" +
                         "\r\n\t"+
                         "  Short options (single letter) are prefixed with a single dash. Long commands are prefixed with two dashes\r\n";

            _fluentCommandLineParser.SetupHelp("?", "help")
                .WithHeader(header)
                .Callback(text => _logger.Info(text + "\r\n" + footer));

            var result = _fluentCommandLineParser.Parse(args);

            if (result.HelpCalled)
            {
                return;
            }

            if (result.HasErrors)
            {
                _logger.Error("");
                _logger.Error(result.ErrorText);

                _fluentCommandLineParser.HelpOption.ShowHelp(_fluentCommandLineParser.Options);

                return;
            }

            if (UsefulExtension.IsNullOrEmpty(_fluentCommandLineParser.Object.File) &&
                UsefulExtension.IsNullOrEmpty(_fluentCommandLineParser.Object.Directory))
            {
                _fluentCommandLineParser.HelpOption.ShowHelp(_fluentCommandLineParser.Options);

                _logger.Warn("Either -f or -d is required. Exiting");
                return;
            }

            if (UsefulExtension.IsNullOrEmpty(_fluentCommandLineParser.Object.File) == false &&
                !File.Exists(_fluentCommandLineParser.Object.File))
            {
                _logger.Warn($"File '{_fluentCommandLineParser.Object.File}' not found. Exiting");
                return;
            }

            if (UsefulExtension.IsNullOrEmpty(_fluentCommandLineParser.Object.Directory) == false &&
                !Directory.Exists(_fluentCommandLineParser.Object.Directory))
            {
                _logger.Warn($"Directory '{_fluentCommandLineParser.Object.Directory}' not found. Exiting");
                return;
            }

            _logger.Info(header);
            _logger.Info("");
            _logger.Info($"Command line: {string.Join(" ", Environment.GetCommandLineArgs().Skip(1))}\r\n");

            if (_fluentCommandLineParser.Object.PreciseTimestamps)
            {
                _fluentCommandLineParser.Object.DateTimeFormat = _preciseTimeFormat;
            }

            _processedFiles = new List<LnkFile>();

            _failedFiles = new List<string>();

            if (_fluentCommandLineParser.Object.File?.Length > 0)
            {
                LnkFile lnk = null;

                try
                {
                    lnk = ProcessFile(_fluentCommandLineParser.Object.File);
                    if (lnk != null)
                    {
                        _processedFiles.Add(lnk);
                    }
                }
                catch (UnauthorizedAccessException ua)
                {
                    _logger.Error(
                        $"Unable to access '{_fluentCommandLineParser.Object.File}'. Are you running as an administrator? Error: {ua.Message}");
                    return;
                }
                catch (Exception ex)
                {
                    _logger.Error(
                        $"Error processing file '{_fluentCommandLineParser.Object.Directory}' Please send it to [email protected]. Error: {ex.Message}");
                    return;
                }
            }
            else
            {
                _logger.Info($"Looking for lnk files in '{_fluentCommandLineParser.Object.Directory}'");
                _logger.Info("");

                string[] lnkFiles = null;

                try
                {
                    var mask = "*.lnk";
                    if (_fluentCommandLineParser.Object.AllFiles)
                    {
                        mask = "*";
                    }

                    lnkFiles = Directory.GetFiles(_fluentCommandLineParser.Object.Directory, mask,
                        SearchOption.AllDirectories);
                }
                catch (UnauthorizedAccessException ua)
                {
                    _logger.Error(
                        $"Unable to access '{_fluentCommandLineParser.Object.Directory}'. Error message: {ua.Message}");
                    return;
                }
                catch (Exception ex)
                {
                    _logger.Error(
                        $"Error getting lnk files in '{_fluentCommandLineParser.Object.Directory}'. Error: {ex.Message}");
                    return;
                }

                _logger.Info($"Found {lnkFiles.Length:N0} files");
                _logger.Info("");

                var sw = new Stopwatch();
                sw.Start();

                foreach (var file in lnkFiles)
                {
                    var lnk = ProcessFile(file);
                    if (lnk != null)
                    {
                        _processedFiles.Add(lnk);
                    }
                }

                sw.Stop();

                if (_fluentCommandLineParser.Object.Quiet)
                {
                    _logger.Info("");
                }

                _logger.Info(
                    $"Processed {lnkFiles.Length - _failedFiles.Count:N0} out of {lnkFiles.Length:N0} files in {sw.Elapsed.TotalSeconds:N4} seconds");
                if (_failedFiles.Count > 0)
                {
                    _logger.Info("");
                    _logger.Warn("Failed files");
                    foreach (var failedFile in _failedFiles)
                    {
                        _logger.Info($"  {failedFile}");
                    }
                }
            }

            if (_processedFiles.Count > 0)
            {
                _logger.Info("");

                try
                {
                    CsvWriter csv = null;
                    StreamWriter sw = null;

                    if (_fluentCommandLineParser.Object.CsvDirectory?.Length > 0)
                    {
                        if (Directory.Exists(_fluentCommandLineParser.Object.CsvDirectory) == false)
                        {
                            _logger.Warn($"'{_fluentCommandLineParser.Object.CsvDirectory} does not exist. Creating...'");
                            Directory.CreateDirectory(_fluentCommandLineParser.Object.CsvDirectory);
                        }

                        var outName = $"{DateTimeOffset.Now.ToString("yyyyMMddHHmmss")}_LECmd_Output.tsv";
                        var outFile = Path.Combine(_fluentCommandLineParser.Object.CsvDirectory, outName);

                        _fluentCommandLineParser.Object.CsvDirectory =
                            Path.GetFullPath(outFile);
                        _logger.Warn(
                            $"CSV (tab separated) output will be saved to '{Path.GetFullPath(outFile)}'");

                        try
                        {
                            sw = new StreamWriter(outFile);
                            csv = new CsvWriter(sw);
                            csv.Configuration.Delimiter = $"{'\t'}";
                            csv.WriteHeader(typeof(CsvOut));
                        }
                        catch (Exception ex)
                        {
                            _logger.Error(
                                $"Unable to open '{outFile}' for writing. CSV export canceled. Error: {ex.Message}");
                        }
                    }

                    if (_fluentCommandLineParser.Object.JsonDirectory?.Length > 0)
                    {
                        if (Directory.Exists(_fluentCommandLineParser.Object.JsonDirectory) == false)
                        {
                            _logger.Warn($"'{_fluentCommandLineParser.Object.JsonDirectory} does not exist. Creating...'");
                            Directory.CreateDirectory(_fluentCommandLineParser.Object.JsonDirectory);
                        }
                        _logger.Warn($"Saving json output to '{_fluentCommandLineParser.Object.JsonDirectory}'");
                    }
                    if (_fluentCommandLineParser.Object.XmlDirectory?.Length > 0)
                    {
                        {
                            if (Directory.Exists(_fluentCommandLineParser.Object.XmlDirectory) == false)
                            {
                                _logger.Warn($"'{_fluentCommandLineParser.Object.XmlDirectory} does not exist. Creating...'");
                                Directory.CreateDirectory(_fluentCommandLineParser.Object.XmlDirectory);
                            }

                        }
                        _logger.Warn($"Saving XML output to '{_fluentCommandLineParser.Object.XmlDirectory}'");
                    }

                    XmlTextWriter xml = null;

                    if (_fluentCommandLineParser.Object.xHtmlDirectory?.Length > 0)
                    {

                        var outDir = Path.Combine(_fluentCommandLineParser.Object.xHtmlDirectory,
                            $"{DateTimeOffset.UtcNow.ToString("yyyyMMddHHmmss")}_LECmd_Output_for_{_fluentCommandLineParser.Object.xHtmlDirectory.Replace(@":\", "_").Replace(@"\", "_")}");

                        if (Directory.Exists(outDir) == false)
                        {
                            Directory.CreateDirectory(outDir);
                        }

                        File.WriteAllText(Path.Combine(outDir, "normalize.css"), Resources.normalize);
                        File.WriteAllText(Path.Combine(outDir, "style.css"), Resources.style);

                        var outFile = Path.Combine(_fluentCommandLineParser.Object.xHtmlDirectory, outDir, "index.xhtml");

                        _logger.Warn($"Saving HTML output to '{outFile}'");

                        xml = new XmlTextWriter(outFile, Encoding.UTF8)
                        {
                            Formatting = Formatting.Indented,
                            Indentation = 4
                        };

                        xml.WriteStartDocument();

                        xml.WriteProcessingInstruction("xml-stylesheet", "href=\"normalize.css\"");
                        xml.WriteProcessingInstruction("xml-stylesheet", "href=\"style.css\"");

                        xml.WriteStartElement("document");
                    }

                    foreach (var processedFile in _processedFiles)
                    {
                        var o = GetCsvFormat(processedFile);

                        try
                        {
                            csv?.WriteRecord(o);
                        }
                        catch (Exception ex)
                        {
                            _logger.Error(
                                $"Error writing record for '{processedFile.SourceFile}' to '{_fluentCommandLineParser.Object.CsvDirectory}'. Error: {ex.Message}");
                        }

                        if (_fluentCommandLineParser.Object.JsonDirectory?.Length > 0)
                        {
                            SaveJson(processedFile, _fluentCommandLineParser.Object.JsonPretty,
                                _fluentCommandLineParser.Object.JsonDirectory);
                        }

                        //XHTML
                        xml?.WriteStartElement("Container");
                        xml?.WriteElementString("SourceFile", o.SourceFile);
                        xml?.WriteElementString("SourceCreated", o.SourceCreated);
                        xml?.WriteElementString("SourceModified", o.SourceModified);
                        xml?.WriteElementString("SourceAccessed", o.SourceAccessed);

                        xml?.WriteElementString("TargetCreated", o.TargetCreated);
                        xml?.WriteElementString("TargetModified", o.TargetModified);
                        xml?.WriteElementString("TargetAccessed", o.TargetModified);

                        xml?.WriteElementString("FileSize", o.FileSize.ToString());
                        xml?.WriteElementString("RelativePath", o.RelativePath);
                        xml?.WriteElementString("WorkingDirectory", o.WorkingDirectory);
                        xml?.WriteElementString("FileAttributes", o.FileAttributes);
                        xml?.WriteElementString("HeaderFlags", o.HeaderFlags);
                        xml?.WriteElementString("DriveType", o.DriveType);
                        xml?.WriteElementString("DriveSerialNumber", o.DriveSerialNumber);
                        xml?.WriteElementString("DriveLabel", o.DriveLabel);
                        xml?.WriteElementString("LocalPath", o.LocalPath);
                        xml?.WriteElementString("CommonPath", o.CommonPath);
                        xml?.WriteElementString("Arguments", o.Arguments);

                        xml?.WriteElementString("TargetIDAbsolutePath", o.TargetIDAbsolutePath);

                        xml?.WriteElementString("TargetMFTEntryNumber", $"{o.TargetMFTEntryNumber}");
                        xml?.WriteElementString("TargetMFTSequenceNumber", $"{o.TargetMFTSequenceNumber}");

                        xml?.WriteElementString("MachineID", o.MachineID);
                        xml?.WriteElementString("MachineMACAddress", o.MachineMACAddress);
                        xml?.WriteElementString("MACVendor", o.MACVendor);

                        xml?.WriteElementString("TrackerCreatedOn", o.TrackerCreatedOn);

                        xml?.WriteElementString("ExtraBlocksPresent", o.ExtraBlocksPresent);

                        xml?.WriteEndElement();

                        if (_fluentCommandLineParser.Object.XmlDirectory?.Length > 0)
                        {
                            SaveXML(o, _fluentCommandLineParser.Object.XmlDirectory);
                        }
                    }

                    //Close CSV stuff
                    sw?.Flush();
                    sw?.Close();

                    //Close XML
                    xml?.WriteEndElement();
                    xml?.WriteEndDocument();
                    xml?.Flush();
                }
                catch (Exception ex)
                {
                    _logger.Error(
                        $"Error exporting data! Error: {ex.Message}");
                }
            }
            }