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); }
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); }