XOR 다른 프로그램의 소스로 프로그램을 암호화


24

소스 코드의 바이트가 XOR-d 일 때 동일한 언어로 유효한 세 번째 프로그램을 생성하도록 두 개의 프로그램을 작성하십시오. 바이트 단위의 세 프로그램 각각의 길이는 동일해야합니다.

첫 번째 프로그램이 출력되어야합니다 A. 두 번째 프로그램이 출력되어야합니다 B. 세 번째 프로그램이 출력되어야합니다 C.

개행은 선택 사항이지만 한 개가 개행을 출력하는 경우 다른 개행도 모두 수행해야합니다.

명령 행 플래그를 사용하는 경우 각 프로그램마다 동일한 것을 사용해야합니다. 즉, 세 프로그램 모두 동일한 방식으로 실행해야합니다. 예를 들어 동일한 문자 조합으로 시작하는 PHP와 같은 언어를 사용하는 경우, 예를 들어 <?해당 문자를 삭제하는 명령 행 옵션이 있습니다. 즉, 대신 PHP를 명령 행에서만 실행해야합니다.

입력이 허용되지 않습니다. 각 프로그램은 독립적이어야합니다.

프로그램이 ASCII로 완전히 작성된 경우 다음 표가 도움이 될 수 있습니다.

Codes 0x20 - 0x3F
 !"#$%&'()*+,-./
0123456789:;<=>?

Codes 0x40 - 0x5F
@ABCDEFGHIJKLMNO
PQRSTUVWXYZ[\]^_

Codes 0x60 - 0x7E
`abcdefghijklmno
pqrstuvwxyz{|}~

편집하다

원래는 명시 적으로 금지하지 않았으므로 비 인쇄 문자 를 사용할 수 있습니다. 그러나 인쇄 가능한 문자 만 사용하는 버전을 게시하려면 좋을 것입니다! 제어 코드를 사용하는 "영리한 요소"는 이제 다소 마모되었습니다.

편집 종료

동일한 블록에서 두 코드를 XOR하면 0x20 미만의 코드가 생성되므로 유효한 인쇄 가능한 ASCII 코드가 아닙니다 (예 : 0x41 ( A) XOR 0x5A ( Z) = 0x1B). 다른 블록에서 두 코드를 aXOR하면 0x61 ( ) XOR 0x54 ( T) = 0x35 ( 5) 와 같이 세 번째 블록에서 코드가 생성됩니다 .

    |  @` !Aa "Bb #Cc $Dd %Ee &Ff 'Gg (Hh )Ii *Jj +Kk ,Ll -Mm .Nn /Oo 0Pp 1Qq 2Rr 3Ss 4Tt 5Uu 6Vv 7Ww 8Xx 9Yy :Zz ;[{ <\| =]} >^~ ?_
--- + --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- ---
 @` |  @` !Aa "Bb #Cc $Dd %Ee &Ff 'Gg (Hh )Ii *Jj +Kk ,Ll -Mm .Nn /Oo 0Pp 1Qq 2Rr 3Ss 4Tt 5Uu 6Vv 7Ww 8Xx 9Yy :Zz ;[{ <\| =]} >^~ ?_
!Aa | !Aa  @` #Cc "Bb %Ee $Dd 'Gg &Ff )Ii (Hh +Kk *Jj -Mm ,Ll /Oo .Nn 1Qq 0Pp 3Ss 2Rr 5Uu 4Tt 7Ww 6Vv 9Yy 8Xx ;[{ :Zz =]} <\| ?_ >^~
"Bb | "Bb #Cc  @` !Aa &Ff 'Gg $Dd %Ee *Jj +Kk (Hh )Ii .Nn /Oo ,Ll -Mm 2Rr 3Ss 0Pp 1Qq 6Vv 7Ww 4Tt 5Uu :Zz ;[{ 8Xx 9Yy >^~ ?_ <\| =]}
#Cc | #Cc "Bb !Aa  @` 'Gg &Ff %Ee $Dd +Kk *Jj )Ii (Hh /Oo .Nn -Mm ,Ll 3Ss 2Rr 1Qq 0Pp 7Ww 6Vv 5Uu 4Tt ;[{ :Zz 9Yy 8Xx ?_ >^~ =]} <\|
$Dd | $Dd %Ee &Ff 'Gg  @` !Aa "Bb #Cc ,Ll -Mm .Nn /Oo (Hh )Ii *Jj +Kk 4Tt 5Uu 6Vv 7Ww 0Pp 1Qq 2Rr 3Ss <\| =]} >^~ ?_ 8Xx 9Yy :Zz ;[{
%Ee | %Ee $Dd 'Gg &Ff !Aa  @` #Cc "Bb -Mm ,Ll /Oo .Nn )Ii (Hh +Kk *Jj 5Uu 4Tt 7Ww 6Vv 1Qq 0Pp 3Ss 2Rr =]} <\| ?_ >^~ 9Yy 8Xx ;[{ :Zz
&Ff | &Ff 'Gg $Dd %Ee "Bb #Cc  @` !Aa .Nn /Oo ,Ll -Mm *Jj +Kk (Hh )Ii 6Vv 7Ww 4Tt 5Uu 2Rr 3Ss 0Pp 1Qq >^~ ?_ <\| =]} :Zz ;[{ 8Xx 9Yy
'Gg | 'Gg &Ff %Ee $Dd #Cc "Bb !Aa  @` /Oo .Nn -Mm ,Ll +Kk *Jj )Ii (Hh 7Ww 6Vv 5Uu 4Tt 3Ss 2Rr 1Qq 0Pp ?_ >^~ =]} <\| ;[{ :Zz 9Yy 8Xx
(Hh | (Hh )Ii *Jj +Kk ,Ll -Mm .Nn /Oo  @` !Aa "Bb #Cc $Dd %Ee &Ff 'Gg 8Xx 9Yy :Zz ;[{ <\| =]} >^~ ?_ 0Pp 1Qq 2Rr 3Ss 4Tt 5Uu 6Vv 7Ww
)Ii | )Ii (Hh +Kk *Jj -Mm ,Ll /Oo .Nn !Aa  @` #Cc "Bb %Ee $Dd 'Gg &Ff 9Yy 8Xx ;[{ :Zz =]} <\| ?_ >^~ 1Qq 0Pp 3Ss 2Rr 5Uu 4Tt 7Ww 6Vv
*Jj | *Jj +Kk (Hh )Ii .Nn /Oo ,Ll -Mm "Bb #Cc  @` !Aa &Ff 'Gg $Dd %Ee :Zz ;[{ 8Xx 9Yy >^~ ?_ <\| =]} 2Rr 3Ss 0Pp 1Qq 6Vv 7Ww 4Tt 5Uu
+Kk | +Kk *Jj )Ii (Hh /Oo .Nn -Mm ,Ll #Cc "Bb !Aa  @` 'Gg &Ff %Ee $Dd ;[{ :Zz 9Yy 8Xx ?_ >^~ =]} <\| 3Ss 2Rr 1Qq 0Pp 7Ww 6Vv 5Uu 4Tt
,Ll | ,Ll -Mm .Nn /Oo (Hh )Ii *Jj +Kk $Dd %Ee &Ff 'Gg  @` !Aa "Bb #Cc <\| =]} >^~ ?_ 8Xx 9Yy :Zz ;[{ 4Tt 5Uu 6Vv 7Ww 0Pp 1Qq 2Rr 3Ss
-Mm | -Mm ,Ll /Oo .Nn )Ii (Hh +Kk *Jj %Ee $Dd 'Gg &Ff !Aa  @` #Cc "Bb =]} <\| ?_ >^~ 9Yy 8Xx ;[{ :Zz 5Uu 4Tt 7Ww 6Vv 1Qq 0Pp 3Ss 2Rr
.Nn | .Nn /Oo ,Ll -Mm *Jj +Kk (Hh )Ii &Ff 'Gg $Dd %Ee "Bb #Cc  @` !Aa >^~ ?_ <\| =]} :Zz ;[{ 8Xx 9Yy 6Vv 7Ww 4Tt 5Uu 2Rr 3Ss 0Pp 1Qq
/Oo | /Oo .Nn -Mm ,Ll +Kk *Jj )Ii (Hh 'Gg &Ff %Ee $Dd #Cc "Bb !Aa  @` ?_ >^~ =]} <\| ;[{ :Zz 9Yy 8Xx 7Ww 6Vv 5Uu 4Tt 3Ss 2Rr 1Qq 0Pp
0Pp | 0Pp 1Qq 2Rr 3Ss 4Tt 5Uu 6Vv 7Ww 8Xx 9Yy :Zz ;[{ <\| =]} >^~ ?_  @` !Aa "Bb #Cc $Dd %Ee &Ff 'Gg (Hh )Ii *Jj +Kk ,Ll -Mm .Nn /Oo
1Qq | 1Qq 0Pp 3Ss 2Rr 5Uu 4Tt 7Ww 6Vv 9Yy 8Xx ;[{ :Zz =]} <\| ?_ >^~ !Aa  @` #Cc "Bb %Ee $Dd 'Gg &Ff )Ii (Hh +Kk *Jj -Mm ,Ll /Oo .Nn
2Rr | 2Rr 3Ss 0Pp 1Qq 6Vv 7Ww 4Tt 5Uu :Zz ;[{ 8Xx 9Yy >^~ ?_ <\| =]} "Bb #Cc  @` !Aa &Ff 'Gg $Dd %Ee *Jj +Kk (Hh )Ii .Nn /Oo ,Ll -Mm
3Ss | 3Ss 2Rr 1Qq 0Pp 7Ww 6Vv 5Uu 4Tt ;[{ :Zz 9Yy 8Xx ?_ >^~ =]} <\| #Cc "Bb !Aa  @` 'Gg &Ff %Ee $Dd +Kk *Jj )Ii (Hh /Oo .Nn -Mm ,Ll
4Tt | 4Tt 5Uu 6Vv 7Ww 0Pp 1Qq 2Rr 3Ss <\| =]} >^~ ?_ 8Xx 9Yy :Zz ;[{ $Dd %Ee &Ff 'Gg  @` !Aa "Bb #Cc ,Ll -Mm .Nn /Oo (Hh )Ii *Jj +Kk
5Uu | 5Uu 4Tt 7Ww 6Vv 1Qq 0Pp 3Ss 2Rr =]} <\| ?_ >^~ 9Yy 8Xx ;[{ :Zz %Ee $Dd 'Gg &Ff !Aa  @` #Cc "Bb -Mm ,Ll /Oo .Nn )Ii (Hh +Kk *Jj
6Vv | 6Vv 7Ww 4Tt 5Uu 2Rr 3Ss 0Pp 1Qq >^~ ?_ <\| =]} :Zz ;[{ 8Xx 9Yy &Ff 'Gg $Dd %Ee "Bb #Cc  @` !Aa .Nn /Oo ,Ll -Mm *Jj +Kk (Hh )Ii
7Ww | 7Ww 6Vv 5Uu 4Tt 3Ss 2Rr 1Qq 0Pp ?_ >^~ =]} <\| ;[{ :Zz 9Yy 8Xx 'Gg &Ff %Ee $Dd #Cc "Bb !Aa  @` /Oo .Nn -Mm ,Ll +Kk *Jj )Ii (Hh
8Xx | 8Xx 9Yy :Zz ;[{ <\| =]} >^~ ?_ 0Pp 1Qq 2Rr 3Ss 4Tt 5Uu 6Vv 7Ww (Hh )Ii *Jj +Kk ,Ll -Mm .Nn /Oo  @` !Aa "Bb #Cc $Dd %Ee &Ff 'Gg
9Yy | 9Yy 8Xx ;[{ :Zz =]} <\| ?_ >^~ 1Qq 0Pp 3Ss 2Rr 5Uu 4Tt 7Ww 6Vv )Ii (Hh +Kk *Jj -Mm ,Ll /Oo .Nn !Aa  @` #Cc "Bb %Ee $Dd 'Gg &Ff
:Zz | :Zz ;[{ 8Xx 9Yy >^~ ?_ <\| =]} 2Rr 3Ss 0Pp 1Qq 6Vv 7Ww 4Tt 5Uu *Jj +Kk (Hh )Ii .Nn /Oo ,Ll -Mm "Bb #Cc  @` !Aa &Ff 'Gg $Dd %Ee
;[{ | ;[{ :Zz 9Yy 8Xx ?_ >^~ =]} <\| 3Ss 2Rr 1Qq 0Pp 7Ww 6Vv 5Uu 4Tt +Kk *Jj )Ii (Hh /Oo .Nn -Mm ,Ll #Cc "Bb !Aa  @` 'Gg &Ff %Ee $Dd
<\| | <\| =]} >^~ ?_ 8Xx 9Yy :Zz ;[{ 4Tt 5Uu 6Vv 7Ww 0Pp 1Qq 2Rr 3Ss ,Ll -Mm .Nn /Oo (Hh )Ii *Jj +Kk $Dd %Ee &Ff 'Gg  @` !Aa "Bb #Cc
=]} | =]} <\| ?_ >^~ 9Yy 8Xx ;[{ :Zz 5Uu 4Tt 7Ww 6Vv 1Qq 0Pp 3Ss 2Rr -Mm ,Ll /Oo .Nn )Ii (Hh +Kk *Jj %Ee $Dd 'Gg &Ff !Aa  @` #Cc "Bb
>^~ | >^~ ?_ <\| =]} :Zz ;[{ 8Xx 9Yy 6Vv 7Ww 4Tt 5Uu 2Rr 3Ss 0Pp 1Qq .Nn /Oo ,Ll -Mm *Jj +Kk (Hh )Ii &Ff 'Gg $Dd %Ee "Bb #Cc  @` !Aa
?_ | ?_ >^~ =]} <\| ;[{ :Zz 9Yy 8Xx 7Ww 6Vv 5Uu 4Tt 3Ss 2Rr 1Qq 0Pp /Oo .Nn -Mm ,Ll +Kk *Jj )Ii (Hh 'Gg &Ff %Ee $Dd #Cc "Bb !Aa  @`

다른 열에서 두 문자를 찾아 다른 열에있는 교차에서 문자를 선택하십시오 (예 : Band e: "BbXOR %Eeis) 'Gg. B두 번째 열이고, e세 번째 열이 때문에 첫 번째 열에서 문자를 선택할 수있다 'Gg: '.

소스 예 :

 Ld+|?dpHs'-,pUe    (Program 1)
~bWn=n5Xe!t_G($3    (Program 2)
^.3EAQQ(-RSrkXqV    (Program 3)

각 열에는 하나의 숫자, 하나의 대문자 및 하나의 소문자 만있을 수 있습니다. 각 열에 대해 첫 번째 프로그램에서 원하는 문자를 사용할 수 있고 두 번째 프로그램에서 64자를 선택하지만 세 번째 프로그램에서 가능한 문자는 하나만 사용할 수 있습니다. 0x7F는 어느 곳에서도 유효하지 않습니다.

유니 코드를 사용하는 경우 XOR-ing의 유효성을 검사하는 것은 전적으로 사용자의 책임이며 UTF-8, UTF-16 등의 인코딩 방식을 말해야합니다. 각 파일은 동일한 인코딩을 사용해야합니다.

점수 : 한 프로그램의 길이. 가장 적은 바이트가 이깁니다!

답변:


13

GolfScript, 6 바이트

에이

A'AA'|

cdc"B"

기음

"C"ce^

|그리고 ^아무것도하지 않고 있지만 문자열에서 중복을 제거 할 빈 입력 문자열과 setwise 또는과 XOR입니다.

원본 버전 (인쇄 할 수없는 문자 포함)

에이

Xz'A'v

z9\x05"B"

기음

"C"ceT

GolfScript는 정의되지 않은 것을 무시하고 세 프로그램은 단지 'A' "B" "C"입니다.


12

자바 스크립트, 23 바이트

프로그램 A :

alert(' A '[~-~~2],'B')

프로그램 B :

alert(FL$RSsYnYW1f='B')

프로그램 C :

\0\0\0\0\0\0alert('C')\0;\0\0\03\0\0

다음 기능을 사용하여 변환을 테스트 할 수 있습니다.

function xorString(a, b) {
  b = b || '';
  var length = Math.max(a.length, b.length);
  var chars = a.split('').map(function(charA, i) {
    var charB = b[i] || ' ';
    return String.fromCharCode(charA.charCodeAt(0) ^ charB.charCodeAt(0));
  });

  return chars.join('');
}

좋은 것 !!! 이것을 보여주는 stacksnippet을 포함시킬 수 있습니다.
Ismael Miguel

3

PHP, 15 + 1 바이트

이건 쉬운 정말 예상보다 더 열심히,하지만 재미!
안타깝게도 이것은 잘못된 답변으로 인해 세 번째 재 작성입니다.

이번에는 콘솔에서 (매개 변수 사용) 실행해야합니다 -r.

프로그램 A :

echo A;E925Z9A;

프로그램 B :

echo B; zzzzzz;

XORing 결과 :

\0\0\0\0\0\3\0eCHO C;\0 //base 64: AAAAAAADAGVDSE8gQzsA

육각 덤프 :

   |00|01|02|03|04|05|06|07|08|09|0A|0B|0C|0D|0E|0F|      TEXT      
--------------------------------------------------------------------
00 |00|00|00|00|00|03|00|65|43|48|4F|20|43|3B|00|  |.......eCHO C;.
====================================================================

PHP는 에코 앞에 \0\3문자를 갖는 것에 대한 경고를 표시 하지만 무시할 수는 없습니다.
그냥 경고입니다!
여전히 실행되고 정답을 출력합니다!


콘솔에서 이것을 실행하십시오.

php -r "@eval('echo B; zzzzzz;' ^ 'echo A;E925Z9A;');"

할 수 없으면 다음 중 하나를 시도하십시오.

그래도 여전히 코드를 실행할 수 없으면 직접 코드를 실행하십시오.

<?php

error_reporting( 0 );

$program_a = 'echo A;E925Z9A;';

$program_b = 'echo B; zzzzzz;';

eval( $program_a );

eval( $program_b );

eval( $program_c = $program_a ^ $program_b );

echo PHP_EOL, 'a ^ b = ';

var_dump( $program_c );

오래된 코드, 유효하지 않습니다 :

프로그램 A :

<?=A;zzzzz;

프로그램 B :

<?=B;FEG9A;

XORing 결과 :

\0\0\0\0<?=C;\0 //base64: AAAAAwA8Pz1DOwA=

실제로 \x00콘솔에 입력 할 수는 없지만 \x03작동으로 대체하고 \x00서버의 PHP 자체에서 여전히 실행되므로 답변이 유효하다고 가정합니다! 또한 모든 오류를 억제하기 위해 플래그를 사용해야했습니다 : php -d error_reporting=0 -r "^C^C^C^C^C^CeCHO C;^C"Outputs C. stderr ( 2>Windows에서)를 리디렉션 하면 출력의 모든 오류가 억제되지 않았습니다.
CJ 데니스

Windows 콘솔의 프로그램 : "♥ eCHO C;"!
CJ 데니스

@CJDennis 경고는 항상 무시됩니다. 치명적인 오류 인 경우 최악입니다. 그러나 XORing 할 때 출력되는 것이 이상합니다. 그러나 그것은 아마도 \3하트 클럽으로 보이는 저기 때문일 것입니다 . 하지만 -d카운트에 깃발을 추가 하겠습니까?
Ismael Miguel

GolfScript 코드를 두드리지 않으므로 걱정하지 마십시오. 6 바이트 버전을 찾으면 다시 재고해야합니다! 그러나 php.ini 파일을 다시 구성하지 않고 열심히 작동해야 깨끗하게 작동했습니다! 나는 Windows가 \x03마음을 돌리는 방식을 좋아했습니다 ! Windows ♥ PHP!
CJ 데니스

1
예, @모든 오류를 억제했습니다!
CJ 데니스

3

핍, 4 바이트

user23013이 GolfScript에서 비 인쇄 ASCII를 사용하고 있기 때문에 Pip 에서도 동일한 작업을 수행 할 수 있다고 생각했습니다 . 리디렉션이 필요 stderr하지만 괜찮 습니다.

에이

??'A

여기서 두 ?s는 ASCII 문자 0을 나타냅니다.

'C'B

기음

'C??

여기서 두 ?s는 각각 ASCII 문자 0과 3을 나타냅니다.

각 프로그램을 파일에 넣으십시오 ( A.pip예 :). Linux에서 다음을 수행하십시오.

./pip.py A.pip 2>/dev/null

Windows에서 :

pip.py A.pip 2>nul

오류 출력이 잘못되면 다음은 인쇄 가능한 ASCII의 5 바이트 솔루션입니다.

pAa'A
 f"B"
P'Cec

그렇습니다. stderr 리디렉션 (추악한 그대로!)과 비 인쇄 문자 사용이 허용됩니다. 그래도 완전히 인쇄 가능한 버전을 게시 해 주셔서 감사합니다!
CJ 데니스

2

마이크로 스크립트 , 각 8 바이트

에이: 'APhgap)

비: 'BPh@" A

기음: <0><3><0><0>'CPh


많은 언어가 소스의 제어 코드를 매우 용서한다는 것을 깨닫지 못했습니다. 다른 답변을 살펴보십시오. 그 중 일부는 인쇄되지 않은 코드를 사용합니다. 똑같이하세요!
CJ 데니스

나는 비 인쇄 ASCII를 사용하지 않는다고 생각했지만 잘못되었을 수 있습니다. 편집 : 그리고 지금 당신이 그것을 변경 한 것을 볼 수 있습니다. 좋아, 내가 뭘 할 수 있는지 볼게
SuperJedi224

1
그렇지 <0><3><0><0>...않습니까?
CJ 데니스

네가 옳아. 지적 해 주셔서 감사합니다.
SuperJedi224

2

파이썬, 19 15 14 바이트

a.py

00000000  70 72 69 6e 00 28 32 50  69 0a 74 22 41 22        |prin.(2Pi.t"A"|

b.py

00000000  70 72 69 6e 74 22 42 22  00 64 00 00 02 00        |print"B".d....|

c.py

00000000  00 00 00 00 74 0a 70 72  69 6e 74 22 43 22        |....t.print"C"|

NUL 문자를 본 후 파이썬 (Ubuntu 14.04의 2.7.6)이 나머지 줄을 무시한다는 것을 알았을 때이 솔루션을 생각해 냈습니다.

인쇄 후 공간이 필요하지 않다는 것을 알게되면 1 바이트 단축되었습니다. NUL 문자로 인해 줄 바꿈이 무시되어 키워드 중간에 줄 바꿈이 가능하다는 것을 알게되면 4 바이트가 더 줄었습니다.


0

, 8 바이트

모두 플래그가 필요합니다 -w.

프로그램 A

a*gt*...

( .널 문자 \x00임)

프로그램 B

...*gb*t

( .널 문자 \x00임)

프로그램 C

a*g^Mb*t

A와 B는 각각 세 가지 경고를 생성 1:6 WARN: '' (0) is not a valid character하지만 (예 :) stderr로 이동하므로 무시해도됩니다. 요소 ^와는 M유효하지만, 여기에 아무것도하지 않습니다.

나는 이것이 인쇄 할 수없는 것을 허용 할 수있는 최선이라고 확신합니다. 이 증명이 완료되었는지는 확실하지 않지만 다음과 같습니다.

A는 필요 a, g, t, 그 요소를 활성화 할 수있는 방법은 (두 심볼의 최소이 필요하고, *여기에 간단한 방법입니다). 마찬가지로,
B가 필요로 b, g, t, 2 개의 *S 및
C에 필요한 a, b, g, t, 2 개의 *S.

C가 A와 B에서 직접 기호를 빌리면, 2 개의 문자와 2 개의 문자 *가 남아 있습니다. (내 구현에서 A t와 B g). 이 네 가지 요소는 C로 엉망이되도록 겹칠 수 있습니다 ( 이 경우 생성 ^M이 경우). 우리는 이제 그 두 개의 엉망 요소와 위의 여섯 가지 필수 요소 (C는 6, 다른 것은 5이지만 max ()는 필요합니다)를 가지고 총 8 개의 요소가 있습니다.


(경고 없음), 10 바이트

모두 플래그가 필요합니다 -wo.

프로그램 A

a*HH^t*Gg 

(후행 공간이 있습니다)

프로그램 B

KKb*t*^g G

프로그램 C

*a*b*^t Gg

이것은 인쇄 가능한 ASCII 내에서 다음과 같이 할 수있는 최선의 결과 일 것입니다. 결합 된 세 개의 프로그램에는 총 2 a초, 2 b초, 3 g초 및 3 t초가 필요합니다. 이러한 문자는 다른 문자로 전환 할 수 없으므로 2+2+3+3 = 10별도의 위치 가 필요 합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.