본문 바로가기

728x90

분류 전체보기

(134)
신비한 숫자, 카프레카(Kaprekar) 상수 6174 숫자 6174를 '카프레카' 상수라고 한다. 카프레카는 6174를 발견한 인도 수학자 이름이고, 아주 특별한 규칙을 가지고 있다. 어떤 규칙일까? 최소한 두 개의 서로 다른 숫자를 사용하여 네 자리 숫자를 선택합니다(앞에 0도 허용된다.). 숫자를 내림차순으로 정렬한 다음 오름차순으로 정렬하면서 두 개의 4자리 숫자를 얻고 필요한 경우 앞에 0을 추가한다. 큰 수에서 작은 수를 뺀다. 2번으로 돌아가서 이 프로세스를 반복한다. 위 프로세스가 카프레카 루틴이다. 최대 7번의 반복을 통해 항상 숫자는 6174가 된다 6174에 값이 도달하면 프로세스는 다시 계속해서 7641 – 1467 = 6174를 생성합니다. 다시 예를 들어보자. 이번에 선택할 숫자는 1459다. 9541 – 1459 = 808..
[파일] pycryptodome를 이용한 암호화, 복호화 파이썬에서 가장 많이 사용되는 두 개의 암호화 라이브러리는 “cryptography”와 “pycryptodome”이다. 이 중 pycryptodome을 이용해 암호화 평문을 만들고 복호화를 만드는 코드를 파이썬으로 만들어본다. 먼저, 라이브러리를 설치한다. 설치 후 다음과 같은 파일을 만들고 실행한다. import sys # -*- coding: utf-8 -*- from Crypto.Cipher import AES from Crypto.Random import get_random_bytes from Crypto.Util.Padding import pad, unpad # 키 생성 key = get_random_bytes(16) # AES 암호화 객체 생성 cipher = AES.new(key, AES.M..
[파일] ZIP 파일 만들기 코드 python이 설치되어 있다는 가정하에 진행한다. 파이썬 설치와 실행은 간단하므로 다른 포스팅을 ref. 해주길 먼저, 아래와 같은 jpg파일을 준비한다. 파일이름은 example.jpg로 바꾼다. 파이썬 코드를 이용하여 jpg파일을 zip파일로 변환하는 코드를 다음과 같이 만들고 파일명은 zipzip.py로 한다. import zipfile def compress_file(input_filename, output_filename): with zipfile.ZipFile(output_filename, 'w') as zipf: zipf.write(input_filename, arcname=input_filename) # Example usage: input_file = 'example.jpg' output..
[파일] Scapy를 이용한 패킷 캡쳐 파이썬 라이브러리들 중에서 패킷을 캡쳐할 수 있는 라이브러리가 있다. 스카피(Scapy) Scapy는 원래 Network용 packet을 위조하거나 디코딩하는 '패킷 조작'툴이다. 여러 종류의 protocol을 지원하며 packet에서 필요한 field를 수정할 수도 있고, 상세 정보를 쉽게 분석할 수도 있다. 스카피를 사용하기 위해서는 다음과 같이 pip install scapy를 실행하고 Windows에서 Scapy는 WinPcap 또는 Npcap을 사용하여 네트워크 패킷을 캡처하는데 다음의 WinPcap 웹에서 install for Windows를 통해 추가 설치를 해줘야 동작한다. 설치 후 실행하면 다음과 같이 패킷을 볼 수 있다. 첨부 파일은 위 cmd창에서 실행한 scapymaker.py 파일..
[파일] (영어)가짜이름, 가짜이메일, 가짜주소 생성코드 파이썬에 왜 이같은 라이브러리가 있냐고? 가상의 데이터를 만들어서 입력해보고 잘 처리되는지 테스트 하기 위해서다. 혹여 생각하는 암흑에서 일어나는 어떤 일을 위함이 절대 아니다. fakermaker.py 라는 파일명으로 코드를 만들었고, 실행한 결과는 다음과 같다. 모두 가짜 영어이름, 가짜 이메일, 가짜 주소다. 명령을 한 번 실행할 때마다 한 개씩 생성된다. 다음은 위 파일의 코드다. 위 파일의 내용은 다음과 같다. (위 파일 실행이 안된다면 우선 faker 라이브러리를 pip install faker로 설치하길) from faker import Faker # Faker 객체 생성 fake = Faker() # 가짜 이름 생성 fake_name = fake.name() # 가짜 이메일 생성 fake_..
[파일] 비번용 6자리 영단어 100개, 생성코드 100개지만 소스 코드의 100을 1000, 10000으로 바꾸면 저장되는 데이터가 커진다. ※ 주의할 것은 '6자리로 된 영어단어'라는 한계치를 준다면 100개 이상이 존재할 확률이 떨어질 수 있다. python으로 만든 코드다. 실행 전 아래처럼 faker라는 라이브러리를 먼저 설치한다. 다음에 random6.py 라는 이름으로 파이썬 소스 파일을 만든다. # -*- coding: utf-8 -*- from faker import Faker fake = Faker() word_list = set() while len(word_list) < 100: word = fake.word() if len(word) == 6: word_list.add(word) word_list = list(word_list) ..
JPG 파일 구조 분석 #1 JPEG는 이미지 파일 형식이 아니라 알고리즘이다. 보여지는 JPEG 이미지는 내부적으로 JPEG 압축 알고리즘을 사용하는 JFIF 형식(JPEG File Interchange Format)이다. 앞의 포스팅에서 보여준 파일을 다시 한 번 보여주고, 테스트를 위한 파일을 첨부한다. JPG 파일의 시작은 ff d8로 시작한다. ff d8은 JPG 파일의 시작을 의미한다. ff d8이 JPG 파일을 나타내기 때문에 고유한 이 값을 '마커(Marker)'라고 부른다. ff d8을 SOI라고 하는데 Start Of Image의 약어다. 파일의 마지막은 ff d9으로 끝나야 한다. JPG는 Segment들로 구성되고, 각 각의 Segment는 Marker로 시작하는데 마커값은 ff로 시작하고 그 뒤에 마커의 종류..
[파일] JPG 파일 만드는 C# 코드 JPG 이미지 파일을 가지고 몇가지 포렌식 테스트를 하기 위해 먼저, C#으로 32(pixel) × 32(pixel)의 JPG 파일을 만들도록 한다. 0,0 픽셀부터 32,32 픽셀까지 픽셀의 데이터값이 순차적으로 증가되는 형태로 만든다. Code는 C#이며, 코드는 아래에 첨부한다. 단, 코드를 Copy & Paste하기 전에 nuget에서 System.Drawing.Common을 설치하기 위해 이 패키지를 사전에 설치해주도록 한다. 각 패키지는 해당 소유자에 의해 사용이 허가되었습니다. NuGet은 타사 패키지에 대해 책임을 지지 않으며 라이선스를 부여하지도 않습니다. 일부 패키지에는 추가 라이선스에 의해 관리되는 종속성이 포함되어 있을 수 있습니다. 패키지 소스(피드) URL로 이동하여 종속성을 확..

728x90