본문 바로가기

Programming

(165)
엑셀 매크로 소스코드 비밀번호 없이 추출하는 방법 엑셀에 있는 (워드나 파워포인트도 마찬가지지만) 매크로 코드 (= VBA 코드, VBA: Visual Basic for Application)를 다른 사람이 함부로 볼 수 없게 하기 위해 비밀번호를 걸어 놓을 수 있다. 그러나, 이 방법은 너무 쉽게 무력화되고, 그 무력화하는 방법이 인터넷에 너무 많이 알려져서, 개발자 수준도 아니고 일반 사용자가 쉽게 암호를 모르고도 매크로 코드를 볼 수 있다. 그래서, 다른 방식으로 매크로 코드를 보호하는 툴이 있고, 유상으로 판매하기도 한다. 암호 없이 매크로 코드(VBA 소스코드)를 보는 방법 정리 가장 널리 알려지고 손쉬운 방법은, 엑셀 파일를 구성하는 부속 파일인 vbaProject.bin 파일의 내용 중 일부(암호에 관련된 값)를 수정하는 것이다. 이 방법을..
[파워포인트 팁]사용되지않는 마스터 장표 찾아서 자동 삭제하는 VBA 코드 쓰레기 마스터 장표가 쌓이는 경우 특히 회사에서 이런 경우가 많은데, 템플릿처럼 사용되는 파워포인트 파일을 계속 재활용하여 작성하다 보면, 슬라이드 마스터 장표가 계속해서 쌓이고, 어느 순간부터는 이 파일에 대해서 파워포인트가 버벅대며 동작을 잘 안하게 된다. 문제는 슬라이드 마스터 장표가 너무 많아서이다.!!! 그것도 실제 사용은 안되면서 자리만 차지하는. 이것을 수동으로 일일이 지울 수도 있는 데, 수십 개를 넘어가면 막노동이 된다. 일일이 지우다가 짜증이나서, 프로그램을 만들었다. 간단한 VBA 프로그래밍으로 해결할 수 있다. (Excel용 VBA는 꽤 많이 보이는데, 파워포인트로는 잘 안 보인다. 파워포인트에서도 VBA를 활용하면, 막노동을 줄일 수 있다.) 해결책 1. 수동으로 사용되지 않는 마..
엑셀 VBA 코드 보호 및 크랙 방법 엑셀 파일 자체를 보호하는 것은 파일을 저장할 때 패스워드를 지정하면 된다. Excel 2016까지는 패스워드를 무력화 시키는 쉬운 방법들이 있는데( 앞 글 참조), Excel 2019부터는 쉽지 않다. 엑셀 파일 자체를 보호하는 것과 별개로, VBA(Visual Basic for Application) 코드를 보호하는 것은 또 다른 일이다. 일반적으로 VBA코드에 암호화를 하는 이유는, 엑셀 파일 자체는 이용할 수 있게 배포하면서, VBA 코드는 자신의 노하우가 들어 있기에, 사용자가 볼 수 없게 하려는 것이 대부분의 이유 따라서, 엑셀 파일 암호화를 해도, 그 암호는 알려줘야하고, 단 VBA 코드에 대한 패스워드는 알려주지 않아서 사용자가 VBA 코드를 보지 못하게 해야 한다. 주식 거래용 기능을 엑..
비밀번호에 의해 보호된 엑셀 파일 보호 해제 방법(Excel 97 - 2016) 엑셀 파일을 저장할 때 비밀번호를 지정하면, 비밀번호를 암호화 키로해서 파일 전체가 암호화된다. 열기 암호: 파일 전체가 암호화된다. 쓰기 암호: 파일을 수정 후 저장하려고 할 때 인증용으로 사용 암호를 지정하는 방법은 : "다른 이름으로 저장 - 도구 - 일반 옵션"에서 사용할 암호를 입력 후 "확인"클릭 스펙상으로, 파일 암호화에 사용될 수 있는 방법은 4가지. (출처: MS사의 MS-OFFCRYPTO 문서) XOR RC4 CAPI or CryptoAPI ECMA-376 실제 엑셀 버전별 사용된 암호화 알고리즘은, Excel 97 - 2003: RC4 사용 RC4 알고리즘 자체의 취약성으로, password를 모르고도 Decryption 가능 (참조) Excel 2007 - 2013: AES-128 ..
엑셀 파일 종류별(통합문서, 매크로, 추가기능) 파일 포맷 자료 엑셀에서 자주 사용되는 파일 형태인 '통합 문서', '매크로 포함 통합문서', '엑셀 추가기능' 파일에 대해서, 각 포맷을 정리해 둔다. 파일 종류 확장자 지원되는 엑셀 버전 설명 통합 문서 .xls Excel 5.0, Excel 95 BIFF5 포맷 .xls Excel 97 - Excel 2003 BIFF8 포맷, 설명 페이지 .xlsx Excel 2007 부터 - 설명 페이지 매크로 통합 문서 .xlsm Excel 2007, Excel 2010, Excel 2013, Excel 2016 설명 페이지 추가 기능 .xla Excel 97 - Excel 2003 위 xls와 xlsm 설명 페이지와 동일 .xlam Excel 2007, Excel 2010 - - - MS Office 문서 암호화에 대한 설명..
Notepad++에서 작성한 한글이 cmd에서 깨질 때 C나 C++에서 한글이 print 되도록 했는데, cmd에서 실행했을 때 깨져서 나온다면, 대부분 인코딩 불일치 때문이다. Notepad++와 cmd 창의 인코딩 종류를 일치시켜주면 해결된다. 해결 방법 Notepad++과 cmd창 모두 인코딩을 같은 것으로 맞춰준다. (예를 들어 UTF-8로 통일) 1. Notepad++에서의 인코딩 설정 방법 "인코딩" 메뉴에서 "UTF-8"이 설정되어 있는지 확인한다. 만약 안되어 있으면 "UTF-8"로 설정 2. cmd 창에서의 인코딩 설정 1) cmd 창을 연다 "윈도우키 + R" 키를 누르고, "실행" 창에서 "cmd"라고 타이핑 후 "확인" 버튼 누른다. 2) cmd 창에서 "chcp 65001"이라고 타이핑하고 엔터 chcp 명령은 "chnage code ..
[팁] 티스토리(Tistory)에서 Latex 수식 사용하기(모바일도 지원되게) tistory에서 Latex를 이용해서 수학 수식 표현이 가능하다. 여러 가지 방법이 있는데, 현재(2021.3월)까지 내가 헤매면서 찾아낸 결론은, 각 페이지마다 아래 스크립트 문구를 넣는 것이 최고이다. 넣는 방법은, 1. '글쓰기'를 눌러 글을 하나 생성해서 편집하려는 상태라 가정. 2. tstory 편집기에서 오른쪽 상단에 있는 '기본모드'로 되어 있는 모드 선택기를 눌러 'HTML"로 변경 3. 위 두 줄짜리 스크립트를 복사해서, 자신이 지금 쓰는 글에다가 붙여넣기 함 4. 그 다음은, 일반 Latex 수식 쓰듯이 쓰면 됨 : 달러($)와 달러 사이, 혹은 더블 달러($$) 사이에 Latex 수식을 쓰면됨 ex) $e^x$ : e의 x승이 표현됨 위 처럼 모든 페이지를 작성할 때마다 위 두 줄의..
[Manim Collection]Table of Contents 1. Sine Curve by Rotating Dot around the Circle - Code: infograph.tistory.com/230 - Explain the code (by Korean): infograph.tistory.com/222 2. Sine/Cosine curve by rotating the dot around the circle - code: infograph.tistory.com/231 - explain the code (by Korean): infograph.tistory.com/223 3. Moving sine-wave - code: infograph.tistory.com/232 - explain the code (by Korean): infograph.tistory.com..
Draw dots with several circles Code from manimlib.imports import * # draw dots instead the lines class Rotate_Circles3_DrawDots(Scene): def construct(self): running_time = 10.2 ### 1. circles and dots circles_radius = [2.5, 1, 0.8, 0.4, 0.1] circle_orgins = [ np.array([0, 0, 0]), np.array([0 + 2.5, 0, 0]), np.array([2.5 + 1, 0, 0]), np.array([3.5 + 0.8, 0, 0]), np.array([4.3 + 0.1, 0, 0]), ] curve_start = np.array([4.4, 0, 0]..
Draw line with rotating circles Code # draw curve by the last dot class Rotate_Circles2(Scene): def construct(self): running_time = 10.2 ### 1. circles and dots circles_radius = [2.5, 1, 0.8, 0.4, 0.1] circle_orgins = [ np.array([0, 0, 0]), np.array([0 + 2.5, 0, 0]), np.array([2.5 + 1, 0, 0]), np.array([3.5 + 0.8, 0, 0]), np.array([4.3 + 0.1, 0, 0]), ] curve_start = np.array([4.4, 0, 0]) circles = [Circle(radius=r, name=str(i)..