본문 바로가기

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

긴 주소를 짧게 만드는 비틀리 주소, 가상주소 만들기

반응형

https://bit.ly/3IZCxuY

 

비틀리는 길고 복잡한 주소를 위 주소처럼 짧고 간결하게 만들어준다.

생성된 주소는 8자리로

각 자리는 ①숫자, ②영어대문자, ③영어소문자들의 조합으로 구성된다.

 

Dart 언어를 이용해서 비틀리에서 아래 조건에 맞는 주소를 생성하는

코드를 구현해보자.

 

먼저, 조건은 아래와 같이 정의한다.

조건1) 각 자리에는 숫자가 0부터9까지 들어간다
조건2) 각 자리에는 대문자 A부터 Z까지 들어간다
조건3) 각 자리에는 소문자 a부터 z까지 들어간다.
조건4) 위의 조건1) 조건2) 조건3)은 8자리를 구성하는데 랜덤으로 작용한다.

 

 

import 'dart:math';

String generateRandomString() {
  Random random = Random();

  String digits = '0123456789';
  String uppercaseLetters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  String lowercaseLetters = 'abcdefghijklmnopqrstuvwxyz';

  String result = '';

  // 2개의 랜덤 디지트를 생성
  result += digits[random.nextInt(digits.length)];
  result += digits[random.nextInt(digits.length)];

  // 2개의 랜덤 대문자 디지트를 생성
  result += uppercaseLetters[random.nextInt(uppercaseLetters.length)];
  result += uppercaseLetters[random.nextInt(uppercaseLetters.length)];

  // 2개의 랜덤 소문자 디지트를 생성
  result += lowercaseLetters[random.nextInt(lowercaseLetters.length)];
  result += lowercaseLetters[random.nextInt(lowercaseLetters.length)];

  // 생성된 데이터를 이용해 100개의 주소조합을 생성한다.
  for (int i = 0; i < 2; i++) {
    int choice = random.nextInt(3);
    switch (choice) {
      case 0:
        result += digits[random.nextInt(digits.length)];
        break;
      case 1:
        result += uppercaseLetters[random.nextInt(uppercaseLetters.length)];
        break;
      case 2:
        result += lowercaseLetters[random.nextInt(lowercaseLetters.length)];
        break;
    }
  }

  // Shuffle the characters randomly
  List<String> chars = result.split('');
  chars.shuffle();
  result = chars.join('');

  return result;
}

void main() {
  for (int i = 0; i < 100; i++) {
    String randomString = generateRandomString();
    print(randomString);
  }
}

/**********************************************************************************

위 코드를 이용해 나온 결과는 아래와 같다.

(랜덤이므로 여러분이 실행할 때와 결과는 다르다.)

**********************************************************************************/

h90LPf3A
3cmIf2L2
Rb9f2wBW
AJ33dFSj
g8LBPs47
6c8Xje1K
1ptQ3O8Q
qJL331pK
S1Kky50z
82gAtoOD
qzJ2KV9K
zm11MgUe
Oa7Yr422
fn7EgY6I
1Bs2wTFn
9gRZb34L
1fwGF83e
B87o69Nu
h05Z3Ae4
lrjCQ681
5I5nwMCr
NOS5qb91
3T9Ytz1N
808jVBop
D4zaK8vn
Ls6qP9Ld
np7J26Uc
gxKI2034
xVt77jKI
68BU1Xwk
jhrJW486
j6ES58xf
8eEkd6Nl
11FcJaxA
uDOy2oE9
Xw9GQ5Xe
4h5VyZ6f
6uy5Hw9I
Jn576Xkp
USQng301
s4wcP2Jq
s0A0zSGx
On7fa3J3
L0PrJB6i
8n0eG2rT
Z8bj97Ad
3w512rJR
HR52cF9k
Sjke4cD6
eB6B9nBt
7rEl33K5
95aHTd0F
VxRM9x7L
v4zIwgC0
MQy4x60n
4J0v82fC
16k9HiBv
zKEfs53U
66Wpl9U3
ksV1V8o1
s7DDY46q
VCev40KB
2Jm284bF
8u7nOD81
27eGExm1
kT98n65A
3y7j5Z0X
x29qZ5Z0
7P1W7nJd
JS9ru904
Wm3e537S
BxE9343k
4HZ7c73u
51Fufo8I
Qfq261hJ
AO010Jvv
ic9T3PFt
z82fYrO6
1le790HV
5r76FFgh
t1aRBtT9
O6S44eYw
vYNv3e9D
WigHN2D0
I5Il76kt
o6YzUsR7
d58tXoXK
N9Kp23iv
a9e3CRdk
1e9B9Gd1
73z9H5rA
4eM6p1NF
1zDaz2BF
TUjoZ8f5
Of158gWp

 

 

728x90