본문 바로가기

디지털포렌식(Digital forensic)

[파일] 27자리 비밀번호

반응형

 

VB.NET으로 만든 27자리 비번만드는 코드를 공유한다.

 

pw27.zip
0.28MB

 

 

27자리 비밀번호 생성코드를 공유한다.
생성조건은 다음과 같다.

 

1. 비번은 27자리이어야 한다.
2. 특수문자가 포함되야 한다.
3. 숫자가 포함되야 한다.
4. 영문 소문자만 사용한다.
5. 기본 텍스트는 밀리터리 코드를 영어로 사용한다. (알파, 브라보, 찰리, 델타...)

Imports System.Security.Cryptography
Imports System.Text
Imports System.Windows.Forms

Public Class Form1

    ' 암호에 사용되는 영어 단어 정의
    Private ReadOnly Words As String() = {"alpha", "bravo", "charlie", "delta", "echo",
                                          "foxtrot", "golf", "hotel", "india", "juliet",
                                          "kilo", "lima", "mike", "november", "oscar",
                                          "papa", "quebec", "romeo", "sierra", "tango",
                                          "uniform", "victor", "whiskey", "x-ray", "yankee", "zulu"}

    ' 비밀번호에 사용되는 특수 문자 정의
    Private ReadOnly SpecialChars As String = "!@#$%^&*()_+-=[]{}|;:',.<>?/`~"

    ' 비밀번호에 사용되는 숫자 정의
    Private ReadOnly Digits As String = "0123456789"

    ' 타이머를 사용하여 타이핑 효과를 구현
    Private WithEvents TypingTimer As New Timer()
    Private CurrentPassword As StringBuilder
    Private Passwords As New List(Of String)
    Private CurrentPasswordIndex As Integer
    Private CharIndex As Integer

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ' 타이머 설정
        TypingTimer.Interval = 20 ' 타이핑 속도 (밀리초 단위)
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        ' 초기화
        Passwords.Clear()
        RichTextBox1.Clear()
        CurrentPasswordIndex = 0

        ' 비밀번호 생성
        For i As Integer = 1 To 20 ' 비밀번호 20개 생성
            Passwords.Add(GeneratePassword())
        Next

        ' 타이머 시작
        If Passwords.Count > 0 Then
            CurrentPassword = New StringBuilder(Passwords(CurrentPasswordIndex))
            CharIndex = 0
            TypingTimer.Start()
        End If
    End Sub

    Private Function GeneratePassword() As String
        Dim random As New Random()
        Dim password As New StringBuilder()

        ' 4자리 숫자 추가
        For i As Integer = 1 To 4
            password.Append(Digits(random.Next(Digits.Length)))
        Next

        ' 추가 단어와 특수 문자로 비밀번호 생성
        While password.Length < 27
            Dim word As String = Words(random.Next(Words.Length))
            If password.Length + word.Length <= 27 Then
                password.Append(word)
            End If

            If password.Length < 27 AndAlso random.Next(2) = 1 Then
                password.Append(SpecialChars(random.Next(SpecialChars.Length)))
            End If
        End While

        ' 비밀번호 문자열을 셔플
        Dim passwordChars As Char() = password.ToString().ToCharArray()
        ShuffleArray(passwordChars)

        Return New String(passwordChars).Substring(0, 27)
    End Function

    Private Sub ShuffleArray(Of T)(array As T())
        Dim rng As New Random()
        Dim n As Integer = array.Length
        While n > 1
            n -= 1
            Dim k As Integer = rng.Next(n + 1)
            Dim value As T = array(k)
            array(k) = array(n)
            array(n) = value
        End While
    End Sub

    Private Sub TypingTimer_Tick(sender As Object, e As EventArgs) Handles TypingTimer.Tick
        If CharIndex < CurrentPassword.Length Then
            RichTextBox1.AppendText(CurrentPassword(CharIndex))
            CharIndex += 1
        Else
            RichTextBox1.AppendText(Environment.NewLine)
            CurrentPasswordIndex += 1

            If CurrentPasswordIndex < Passwords.Count Then
                CurrentPassword = New StringBuilder(Passwords(CurrentPasswordIndex))
                CharIndex = 0
            Else
                TypingTimer.Stop()
            End If
        End If
    End Sub



End Class

 

728x90