
import와 같은 코드는 문자열이 아니기 때문에 코드를 쉽게 읽을 수 있습니다.따라서 import, 클래스의 함수 등을 문자열로 변환하여 난독화할 수 있습니다.다음의 예제는 subprocess를 난독화하는 방법을 서술합니다. 먼저 원본은 다음과 같습니다.import를

if-else 문을 한 줄로 변경해 봅니다.if 문에 속하는 코드는 앞으로 else 문에 속하는 코드는 뒤로 보내면 한 줄로 사용할 수 있습니다.if-elif-else도 한 줄로 변경해 볼 수 있습니다.if 문에 속하는 코드는 앞으로 elif-else는 뒤로 보내되 i

0.0 이상 1.0 미만의 실수 형은 random 함수를 사용하여 얻을 수 있습니다.범위를 지정하고 싶다면 uniform 함수를 사용합니다.마찬가지로 $a \\le x < b$를 만족하는 $x$(실수형)가 반환됩니다.실수형이 아닌 정수형 난수를 생성해 볼 수 있습

mode가 w 이면 파일이 이미 존재하여도 새롭게 작성됩니다.mode에 b가 함께 전달되면 바이너리 형식으로 취급됩니다.mode가 r 이면 파일이 이미 존재하고 있어야 합니다. 존재하지 않다면 <span style="color: mode에 b가 함께 전달되면 바이

실습을 위해 다음과 같은 디렉터리 구조를 만들어 봅니다.현재 디렉터리 안에 파일 및 디렉터리를 조회해 봅니다.listdir, scandir, iterdir 모두 현재 디렉터리 내 파일 및 디렉터리에 대한 정보를 반환합니다.실습을 위해 다음과 같은 디렉터리 구조를 만들어

블록 알고리즘이기 때문에 key, iv와 암호화 대상의 크기는 블록 사이즈만큼 나뉘어 떨어져야 합니다. 그래서 나뉘어 떨어지지 않는 데이터에 대해서는 PKCS 패딩을 적용해야 합니다.키의 길이가 128비트에 CBC 방식으로 암호화를 진행한다면 AES-128-CBC이고,

블록 알고리즘이기 때문에 key, iv와 암호화 대상의 크기는 블록 사이즈만큼 나뉘어 떨어져야 합니다. 그래서 나뉘어 떨어지지 않는 데이터에 대해서는 PKCS 패딩을 적용해야 합니다.DES는 패리티 비트를 포함한 키의 길이가 64비트이고, 64비트 블록 단위로 데이터를

키의 길이가 2048인 비대칭 키를 생성합니다.기본적으로 \`PKCS이번에는 개인키를 암호화한 후 파일로 저장해 봅니다.저장된 개인키로부터 공개키를 추출한 뒤 이를 이용해 데이터를 암호화해 봅니다.RSA는 비대칭 키이기 때문에 암호화 후 데이터의 길이가 길어집니다. 그

해시 함수에 전달할 입력 값은 bytes형이어야 하며 hashlib 모듈을 통해 MD5 알고리즘을 사용할 수 있습니다.MD5의 출력값의 길이는 16바이트입니다.

두 개의 비트가 서로 다를 때 결과값이 1이 되고, 같을 때는 0이 되는 이항 연산자로 두 피연산자는 같은 길이를 가져야 합니다.Python에서는 ^ 기호로 XOR 연산을 수행할 수 있습니다.

다음 이미지에 글자를 숨겨 봅니다.JPG는 글자 추출이 되지 않습니다.output.png로 글자가 포함된 이미지가 저장됩니다.이미지에 숨겨진 글자를 추출해 볼 수 있습니다.

pymysql을 이용하여 MariaDB 서버로 접속할 수 있습니다.접속 이후 close를 이용하여 세션을 종료합니다.INSERT 쿼리를 통해 데이터베이스에 데이터를 생성해 봅니다.SQL 문에 데이터와 함께 전달할 수 있으며 excute의 인자를 통해 전달할 수 있습니다

pymongo을 이용하여 MongoDB 서버로 접속할 수 있습니다.connector의 속성으로 데이터베이스 명을 지정하여 사용할 수 있으며 connector.get_database(name="test_db")으로 사용해도 됩니다.데이터베이스의 속성으로 Collectio

pymysql을 이용하여 MySQL 서버로 접속할 수 있습니다.접속 이후 close를 이용하여 세션을 종료합니다.INSERT 쿼리를 통해 데이터베이스에 데이터를 생성해 봅니다.SQL 문에 데이터와 함께 전달할 수 있으며 excute의 인자를 통해 전달할 수 있습니다.데

psycopg2를 이용하여 PostgreSQL 서버로 접속할 수 있습니다.접속 이후 close를 이용하여 세션을 종료합니다.INSERT 쿼리를 통해 데이터베이스에 데이터를 생성해 봅니다.SQL 문에 데이터와 함께 전달할 수 있으며 excute의 인자를 통해 전달할 수

sqlite3을 이용하여 데이터베이스 파일을 관리할 수 있습니다.접속 이후 close를 이용하여 세션을 종료합니다.INSERT 쿼리를 통해 데이터베이스에 데이터를 생성해 봅니다.SQL 문에 데이터와 함께 전달할 수 있으며 excute의 인자를 통해 전달할 수 있습니다.

Base64 인코딩은 바이너리 데이터를 ASCII 문자로 변환하는 인코딩 방식 중 하나입니다.Base64는 64개의 문자 (A-Z, a-z, 0-9, +, /)로 이루어진 문자열로 변환되며 원본보다 대략 4/3 정도 크기가 늘어나게 되고 의미 없어 보이는 문자열이 나열

URL 인코딩은 문자열을 URL에 적합한 형식으로 변환하는 과정을 말합니다. URL에 사용되는 문자들 중 일부는 URL 인코딩이 필요합니다. 예를 들어, URL에서 공백은 %20으로, 물음표는 %3F로 인코딩됩니다.urllib.parse 혹은 requests를 이용하여

ECHO 서버와 큰 차이점은 클라이언트를 지속적으로 받기 위하여 accept가 반복문 안으로 들어가게 됩니다.이후 클라이언트의 데이터를 송신 및 수신을 위한 스레드를 생성하여 비동기적으로 클라이언트가 채팅을 할 수 있게 합니다.스레드에서는 데이터를 송신한 클라이언트를

소켓은 다음과 같이 socket 모듈을 이용하여 생성할 수 있습니다.IP 프로토콜의 버전은 크게 4와 6이 존재합니다.각 버전은 다음과 같이 사용할 수 있습니다.소켓의 타입은 크게 TCP, UDP, RAW를 사용할 수 있습니다.각 타입은 다음과 같이 사용할 수 있습니다

서버의 포트로 들어오는 데이터는 정해진 주소(TARGET_IP:TARGET_PORT)로 데이터를 전달하고 응답 데이터는 클라이언트로 전달합니다.클라이언트가 접속할 때마다 포워딩할 서버로 접속하여 데이터를 중계해 주면 됩니다.

원격 대상지의 공개 키를 가지고 있지 않을 시 자동으로 등록하게 하며 SSH 접속을 시도합니다.exec_command 함수를 사용하여 명령어를 실행시킬 수 있으며, 명령어의 출력인 2번째 반환 값(stdout)을 출력해 봅니다.백그라운드로 명령어를 실행시킬 필요가 있을

requests는 HTTP Method 별로 다른 함수를 호출하여 접속할 수 있습니다.Method 별로 다른 함수를 호출하기에는 불편할 수 있지만getattr을 이용하면 문자열로 함수를 호출할 수 있기 때문에다음과 같이 한 줄의 코드로 다양한 Method를 호출할 수

Chrome을 설치 후 버전을 확인합니다.수동 설치를 원한다면 Chrome 다운로드에서 최신 stable 버전을 다운로드할 수 있는데,의존성이 많으니 하나하나 찾아서 같이 설치해 줘야 합니다.의존성이 해결되어 있다면 설치해 줍니다.Chrome Old version 다운

다음과 같은 URL을 쪼개면 다음과 같습니다.urllib.parse를 이용하여 URL 구조를 해부해 봅니다.query를 다시 분해하기 위해서 parse_qs 혹은 parse_qsl을 이용해 볼 수 있습니다.POST Method의 경우 data 인자를 추가하여 전송하면

글자의 색을 바꾸고자 할 때는 Fore을 이용하고 print가 끝나면 autoreset에 의해서 색상은 복원됩니다.중간에 강제로 색을 복원할 필요가 있을 경우 RESET을 사용합니다.사용 가능한 글자의 색은 다음과 같습니다.배경의 색을 바꾸고자 할 때는 Back을 이용

VMX 경로를 전달하여 해당 VM의 상태를 확인해 볼 수 있습니다.power_state는 전원 ON/OFF 및 일시정지 여부 등 다양한 상태 정보를 확인할 수 있지만, 전원 ON/OFF만 판단하고 싶다면 다음과 같이 확인할 수 있습니다.다음의 표와 같이 다양한 상태로