디지털포렌식(Digital forensic)/숫자
[파일] 추천 비밀번호 1000만 개
이정욱교수
2023. 9. 28. 02:00
반응형
비밀번호를 만들 때 머리가 아프신 분들을 위해
1000만 개의 6자리 랜덤비밀번호를 첨부 파일로 올린다.
파일은 txt 텍스트 파일이며, 380MB의 사이즈를 갖고 있다.
파일당 용량이 정해져서 쪼개서 올린다.
(동영상은 PC로 보면 더 잘보인다.)
10,000,000
▼ 1000만개를 압축파일형태로 올린 것
6digits_password.vol1
10.00MB
6digits_password.vol2
10.00MB
6digits_password.vol3
10.00MB
6digits_password.vol4
10.00MB
6digits_password.vol5
2.82MB
잘 사용하는 방법
1. 검색 기능으로 자신이 좋아하는 숫자 조합을 찾는다(예: 74)
2. 찾아진 숫자조합들 중에서 마음에 들며 의미있는 숫자 조합을 다시 찾는다.
3. 찾은 숫자조합을 사용한다. 즐겁게.
국가와 민족을 위해 디지털암호학에 관심갖는 젊음이 많아지길 바라며.
using System;
using System.IO;
class Program
{
static Random random = new Random();
static int GenerateRandomDigit()
{
return random.Next(10); // 0부터 9까지의 난수 생성
}
static string GeneratePassword()
{
while (true)
{
int[] passwordDigits = new int[6];
// 앞의 3자리와 뒤의 3자리가 같으면 안됨
do
{
for (int i = 0; i < 6; i++)
{
passwordDigits[i] = GenerateRandomDigit();
}
} while (passwordDigits[0] == passwordDigits[3] && passwordDigits[1] == passwordDigits[4] && passwordDigits[2] == passwordDigits[5]);
// 2자리 + 2자리 + 2자리의 숫자가 반복되면 안됨
bool isRepeatedPattern = true;
for (int i = 0; i < 4; i += 2)
{
if (passwordDigits[i] != passwordDigits[i + 1] || passwordDigits[i + 2] != passwordDigits[i + 3])
{
isRepeatedPattern = false;
break;
}
}
if (isRepeatedPattern)
continue;
// 0, 1, 2, 3, 4, 5와 같이 연속되면 안됨
bool isConsecutive = true;
for (int i = 0; i < 5; i++)
{
if (passwordDigits[i] != passwordDigits[i + 1] - 1)
{
isConsecutive = false;
break;
}
}
if (isConsecutive)
continue;
// 조건을 모두 만족하는 비밀번호 생성
return string.Join("", passwordDigits);
}
}
static void Main()
{
int numberOfPasswords = 10000000;
string fileName = "6digits_password.txt";
using (StreamWriter writer = new StreamWriter(fileName))
{
for (int i = 0; i < numberOfPasswords; i++)
{
string password = GeneratePassword();
writer.WriteLine($"생성된 비밀번호 {i + 1}: {password}");
}
}
Console.WriteLine($"파일 '{fileName}'에 비밀번호를 저장했습니다.");
}
}
728x90