본문 바로가기

AI, 클라우드, 문서, 자동화/파이썬 요리조리5

간단한 Word 자동화 프로그램, 다산 정약용의 유배지에서 보낸 편지 다산 정약용 선생님의 '유배지에서 보낸 편지'의 주요 문구를 정리하고 나름의 해석을 붙인 문서를 만든 다음, 원문 부분을 '기울임꼴'과 '파랑'으로 적용하고자 했습니다(아래 이미지 참조). 전체가 68개 항목이므로, 68번의 반복되는 수작업을 대신하, 간단한 Word 자동화 프로그램을 파이썬으로 구현하여 0.1초만에 정리를 한 코드입니다. from docx import Documentfrom docx.shared import RGBColor# 워드 문서 열기doc = Document(r"C:\Users\user\Desktop\dasan_input.docx")# 플래그: '가. 원문 인용'을 만난 뒤 다음 문단을 수정하기 위해 사용mark_next = False for para in doc.paragra.. 2025. 9. 5.
간단한 번역 프로그램, 파일로 저장하기 아주 간단합니다. 다만, googletrans의 최신 버전은 내부적으로 비동기 함수를 사용하기 때문에, translator.translate() 호출 시 await를 사용하지 않으면 coroutine 객체가 반환됩니다. 그러므로, await 문법을 사용하지 않는 googletrans의 구버전(4.0.0-rc1)을 설치하여 번역 프로그램을 만들수도 있습니다. 1단계: async와 await 사용 비동기 방식을 사용하기 위해, asyncio 라이브러리를 사용하여 코드를 비동기적으로 실행해야 합니다. import googletransimport asyncio # asyncio 라이브러리 추가async def main(): """ 비동기 방식으로 번역을 실행하는 메인 함수 """ tra.. 2025. 8. 24.
당황하지 말자, 기억나지 않는 문서 암호/비밀번호 찾기(2) 파이썬에서는 multiprocessing 모듈을 이용해서 여러 코어에서 동시에 조합을 시도할 수 있습니다. 다만, 비밀번호 크래킹을 단순 brute-force(완전 탐색)로만 하면 경우의 수가 기하급수적으로 커져서 사실상 현실적으로 풀기 힘들어집니다. 그래서 실제 보안 연구나 해킹 실무에서는 여러 현대식 접근 방식이 사용되는데, 아래 코드 하단에 정리합니다. 2. 멀티코어 병렬처리, 비밀번호 찾기 (ZIP + MS Office) import itertoolsimport zipfileimport msoffcryptoimport ioimport osimport multiprocessing as mpclass PasswordCracker: """ 다양한 조합으로 비밀번호를 추측하여 ZIP, DOC.. 2025. 8. 22.
당황하지 말자, 기억나지 않는 문서 암호/비밀번호 찾기(1) 본인이 작성한 오피스(워드, 엑셀, 파워포인트)나 집파일에 암호를 걸어두고, 시간이 지나 비밀번호가 생각나지 않을때가 종종 있어 난처한 경우가 발생합니다. 이때, 시간 여유가 많이 있고 또한 아주 간단한 암호를 설정했다면 '단순 brute-force(무차별 대입) 방식'을 시도해 볼 수 있습니다. (*암호화된 파일을 분실한 경우, 개발사에서도 암호를 복구해 주지 않는 것으로 알고 있습니다. 사본/이전본을 찾는 게 현실적인 해법입니다. 추가로, 본문 하단에 암호분실을 대비한 예방팁을 정리하였습니다.)ZIP 파일zipfile 모듈로 열 수 있고, extractall(pwd=...) 같은 방식으로 비밀번호 검증 가능.MS Office (ppt, pptx, doc, docx, xls, xlsx 등)pptx/do.. 2025. 8. 22.
내부 IP & 외부 IP 조회(함수, 클래스까지 정리) 1. 내부 IP & 외부 IP socket + getsockname() → 내부 IP 확인urllib 또는 http.client + api.ipify.org → 외부 IP 확인### ===== 내부 IP 확인 =====import socket # 네트워크 소켓 통신을 위한 표준 라이브러리import urllib.request # HTTP 요청을 보낼 수 있는 표준 라이브러리import json # JSON 형식 데이터를 파싱하기 위한 라이브러리import ssl # SSL 인증서 처리 라이브러리in_addr = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # TCP 소켓 객체 생성 (IPv4, T.. 2025. 8. 21.