본문 바로가기

디지털포렌식(Digital forensic)/알파벳

[파일]아이디(ID) 리스트

반응형


댓글은 '익명'이긴 하지만 사용하는 아이디의 일부가 공개된 후부터

 

 

댓글 진정한 '익명성'을 보장받지는 않는다.

 

 

예를 들어, superapple이라는 아이디를 사용한다면 포털에서
supe****와 같이 앞의 4자리만 공개하고 뒷자리는 은닉시킨다.


아래 코드는 공개된 아이디의 앞자리 4글자를 입력하면 뒤의 4자리를 알파벳으로 채워넣어

전체적인 아이디를 추정할 수 있는 코드다. 

다시 한 번 강조하지만, 코드에 대한 '흥미'를 높이고자 하는 목적이므로 악용하거나 오용하지 않았으면 한다.

 

아이디가 8자리만 있는 것은 아니다.

아래 코드는 공개된 아이디 앞글자 4자리 이후가 4자리(총 8자리의 아이디)라고 가정한 코드다.

아이디의 길이가 9, 10, 11, 12자리... 자릿수가 늘어날 수록 생성되는 파일의 크기가 기가바이트 단위로 넘어가므로
여러분의 시스템 환경에 따라 다양하게 응용해보시길 권한다.

 

ID_Combinations.txt
4.36MB

 

소스 코드는 C#으로 작성했다.

using System;
using System.IO;
using System.Linq;

class Program
{
    static void Main(string[] args)
    {
        // 사용자로부터 4글자를 입력받습니다.
        Console.Write("아이디 앞 4글자를 입력하세요: ");
        string prefix = Console.ReadLine();

        // 입력된 4글자가 알파벳인 경우에 대해서만 처리합니다.
        if (prefix.Length == 4 && prefix.All(char.IsLetter))
        {
            GenerateAndSaveCombinations(prefix, 4);
        }
        else
        {
            Console.WriteLine("입력한 4글자가 알파벳이 아닙니다.");
        }
    }

    static void GenerateAndSaveCombinations(string prefix, int length)
    {
        // 파일명을 생성합니다.
        string fileName = "ID_Combinations.txt";

        using (StreamWriter writer = new StreamWriter(fileName))
        {
            GenerateCombinationsRecursive(prefix, length, "", writer);
        }

        Console.WriteLine($"모든 조합이 파일로 저장되었습니다: {fileName}");
    }

    static void GenerateCombinationsRecursive(string prefix, int length, string current, StreamWriter writer)
    {
        if (length == 0)
        {
            writer.WriteLine(prefix + current);
            return;
        }

        for (char c = 'a'; c <= 'z'; c++)
        {
            GenerateCombinationsRecursive(prefix, length - 1, current + c, writer);
        }
    }
}

 

 

728x90