public void MatchesExpectedChecksum(string identityNumberSection, int checksum)
        {
            var result =
                SouthAfricanIdentityNumberUtil.CalculateLuhnChecksumDigit(identityNumberSection: identityNumberSection);

            Assert.Equal(expected: checksum, actual: result);
        }
        public void MatchesExpectedGender(string identityNumber, GenderType gender)
        {
            var result =
                SouthAfricanIdentityNumberUtil.ParseIdentityNumberStringToModel(identityNumber: identityNumber);

            Assert.Equal(expected: gender, actual: result.Gender);
        }
Ejemplo n.º 3
0
        private static async Task Main(string[] args)
        {
            await CleanOutputDirectory();

            var files = await ListInputFiles();

            var striataDocuments =
                files.FindAll(match: f =>
                              string.Equals(a: f.Extension, b: ".emc", comparisonType: StringComparison.OrdinalIgnoreCase));
            var pdfDocuments =
                files.FindAll(match: f =>
                              string.Equals(a: f.Extension, b: ".pdf", comparisonType: StringComparison.OrdinalIgnoreCase));


            var seed =
                SouthAfricanIdentityNumberUtil.ParseIdentityNumberStringToModel(identityNumber: "190620****084");
            var identityNumbers =
                SouthAfricanIdentityNumberUtil.GenerateValidIdentityNumbers(seedModel: seed,
                                                                            genderType: GenderType.Male);

            var document = pdfDocuments.First();
            var sw       = new Stopwatch();

            sw.Start();
            var password =
                BruteForceUtil.BruteForcePdfFile(identityNumbers: identityNumbers, documentPath: document.FullName);

            sw.Stop();
            if (!string.IsNullOrEmpty(value: password))
            {
                document.CopyTo(destFileName: $"{_outputDirectory}{password}_{document.Name}");
            }

            Console.WriteLine(value: $"password: {password} {sw.ElapsedMilliseconds}ms");
        }
        public void PermutationContainsIdentityNumber(string identityNumber)
        {
            var masked = identityNumber;

            masked = masked.Remove(startIndex: 6, count: 4).Insert(startIndex: 6, value: "****");
            var seed =
                SouthAfricanIdentityNumberUtil.ParseIdentityNumberStringToModel(identityNumber: masked);
            var result = SouthAfricanIdentityNumberUtil.GenerateValidIdentityNumbers(seedModel: seed);

            Assert.Contains(expected: identityNumber, collection: result, comparer: StringComparer.OrdinalIgnoreCase);
        }