방법 1

개인키 파일과 공개키 파일을 만들어서 공개키로 글자를 암호화 하고 개인키로 해제 하는 방식입니다.

 

공개키를 공유해서 다른 사람과 암호 해제를 하도록 허용 할 수 있으며, 개인키를 분실하지 않는 이상 암호관련해서는 강력하게 보안이 되는 방식입니다.

 

  1. 파이썬에서 rsa를 설치 합니다. 
    • pip install rsa  
    • pip install base64
  2. 파일 생성을 원하는 폴더를 열고 Git Bash Here를 선택합니다.
    1.  
  3. 먼저 개인키를 생성합니다.
    • openssl genrsa -out private.pem 4096
  4. 개인키를 이용하여 공개키를 생성합니다.
    • openssl rsa -in private.pem -out public.pem -pubout
  5. 글자 암호화 하기
    1. import base64
      import rsa 
      
      def encryptionMsg(encrypt_msg):
          msg = encrypt_msg.encode('utf-8')
          keyType = 'public.pem' 
          public_key_bytes = open(keyType, 'rb').read()
          public_key = rsa.PublicKey.load_pkcs1_openssl_pem(keyfile=public_key_bytes) 
          encrypted_bytes = rsa.encrypt(msg, public_key) 
          encrypted_msg = base64.b64encode(encrypted_bytes).decode('utf-8')
          return encrypted_msg
  6. 글자 복호화 하기
    1. def decryptionMsg(encrypted_msg):
          encoded_msg = base64.b64decode(encrypted_msg) 
          keyType = 'private.pem'
          private_key_bytes = open(keyType, 'rb').read()
          private_key = rsa.PrivateKey.load_pkcs1(keyfile=private_key_bytes)
          msg = rsa.decrypt(encoded_msg, private_key).decode('utf-8')
          return msg

 

 

버전 추출 스크립트

## 현재 폴더 값을 가져 옵니다.
A_Folder  = os.path.dirname(__file__) 

## PC 마다 크롬 설치 경로에 차이가 있을 수 있으므로 폴더를 검색하여 파일 존재 여부를 확인합니다.
path = r"C:\Program Files\Google\Chrome\Application\chrome.exe"
if not os.path.exists(path): 
	## 파일이 없으면 폴더를 변경해 줍니다.
	path = r"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"

## 한번 더 파일 체크 후 버전 체크를 진행합니다.
if os.path.exists(path): 
	
	parser = Dispatch("Scripting.FileSystemObject")
	version = parser.GetFileVersion(path) 
    ## 버전을 표시 합니다.
	print(  version  )


## 만약 크롬 드라이버가 맞지 않는 경우 동작하는 코드 
## 크롬 드라이버 다운로드 페이지를 실행 시켜 줍니다.
subprocess.Popen([path , "https://chromedriver.storage.googleapis.com/index.html"])

 

 

 

 

 

mysql 설치는 하단 링크로 가서 GPL 버전을 다운로드 하시면 됩니다.

https://www.mysql.com/downloads/

 

 

mysql 이 설치 후 정상적으로 가동 된다면 오류 종류에 따라 추가적인 작업이 필요 할 수 있습니다.

 

MySQL server on '...' (10061) - 에러코드 10061 오류
ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)

 

  • mysql 을 설치 후 서버는 환경변수의 path 로 추가해 주어야 합니다.
  • netstat -ap TCP|find ":3306" 명령어를 통해 포트 충돌 여부를 확인해 줍니다.
  • cmd 창 실행 시 관리자 모드 실행여부를 확인해야 합니다.

 

More help is available by typing NET HELPMSG 3534.  오류

cmd 에서 서버를 재시작 해줍니다.

 

  • 대응
    • mysqld --initialize   ( my.ini 초기화 )
    • net stop mysql
    • net start mysql
  •  

 

 

 

  • 서비스 설치 명령어
    • mysqld --install 

 

  • 서비스 설치 후 재부팅 후 재시작
    • net start mysql
  • 오류
    • ERROR 1045 (28000): Access denied for user 'root'@'localhost'
  • 대응 - 기본 값 입력 후 바꿀 비밀 번호 입력이 필요 할 수 있습니다.



MySQL server on '...' (10061) - 에러코드 10061 오류ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)


mysql 을 설치 후 서버는 환경변수의 path 로 추가해 주어야 합니다.netstat -ap TCP|find ":3306" 명령어를 통해 포트 충돌 여부를 확인해 줍니다.cmd 창 실행 시 관리자 모드 실행여부를 확인해야 합니다.

More help is available by typing NET HELPMSG 3534. 오류
cmd 에서 서버를 재시작 해줍니다.


대응mysqld --initialize ( my.ini 초기화 )net stop mysqlnet start mysql




서비스 설치 명령어mysqld --install 

서비스 설치 후 재부팅 후 재시작net start mysql오류ERROR 1045 (28000): Access denied for user 'root'@'localhost'대응 - 기본 값 입력 후 바꿀 비밀 번호 입력

  • mysql -u root -p 1234

공인 인증서가 사라지고 있지만 여전히 사용 되는 곳이 많이 있는 공인 인증서 입니다.

해당 폴더 위치는 다음과 같습니다.

  • C:\Users\사용자\AppData\LocalLow

 

직접 찾아가려면 숨김 폴더를 보이도록 처리해 주셔야 합니다. 

Win10의 경우 폴더를 열고 옵션을 선택합니다.

옵션 선택 후 나타나는 폴더 옵션 대화상자에서 "숨김 파일, 폴더 및 드라이브 표시"로 라디오 버튼을 선택합니다.

 

해당 옵션 변경 후 다시 폴더를 들어가 보면 숨겨져 있던 폴더가 흐릿하게 보이는 것을 확인할 수 있습니다.

 

---------------

 

폴더 옵션 변경없이 숨김 폴더를 자동으로 (PC 상관없이) 열어주는 명령어는 다음과 같습니다.

ShellExecute(@UserProfileDir &"\AppData\LocalLow\NPKI")

@UserProfileDir 은 PC마다 사용자 이름이 달라져도 그 값을 가져와 주므로 유용하게 사용 됩니다. 내가 필요한 폴더 값을 넣어서 유용하게 사용 가능합니다.

 

해당 파일을 EXE로 생성한 동작파일은 아래 파일 참조하시면 됩니다. 실행하면 인증서 폴더를열어줍니다.

 

 

결과 실행 파일 : - 주의사항 : 아래 EXE 파일은 위 소스를 EXE로 변경하여 빠른 실행을 도와 주는 파일입니다.  인터넷에서 다운 받은 EXE의 경우 보안알림이 뜰 확률이 매우 높습니다. 관련 메세지가 불안하신 경우 상단 링크의 스크립트 소스를 이용해서 직접 빌드해서 사용하시면 됩니다. 

 

Open_NPKI.zip
0.42MB

계정 정보를 제어판에서 제거하는 방법은 아래 링크 참고 하세요.

smart-west.tistory.com/65

 

[ Outlook ] 계정 정보 지우기 - 아웃룩

아웃룩에 연결 된 계정 정보 지우는 방법 입니다. 먼저 제어판으로 들어갑니다. 우측 상단 검색에서 '메일' 이나 'Mail' 로 검색 합니다. PC 환경에 따라 결과가 달라질 수 있습니다. 검색 된 메일

smart-west.tistory.com

 

 

아웃룩 설정 과정에서 문제가 생겨서 기존에 등록 된 내용을 지우고 초기화 하는 위치는 크기 2군데 입니다.

레지스트리와 데이터 폴더 인데요 각각의 위치는 다음과 같습니다.

 

  • 컴퓨터\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0\Outlook

  • C:\Users\사용자\AppData\Local\Microsoft\Outlook

 

 

다음 경로를 제거하기 위한 자동화 코드는 3줄입니다.

해당 내용을 복제 후 빌드하여 사용하시면 됩니다. 

레지스트리 삭제나 폴더 삭제 명령어는 매우 매우 위험하므로 변경하고 실행 전 다시 한번 확인 하시길 권장해 드립니다.

RegDelete("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\15.0\Outlook")
RegDelete("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0\Outlook")
DirRemove( @UserProfileDir &"\AppData\Local\Microsoft\Outlook")

 

만약 아웃룩 프로세스가 실행 된 경우에는 정상적인 삭제가 이루어 지지 않을 가능성이 높으므로 해당 프로세스 종료 후 실행이 필요합니다.

 

프로세스 종료는 다음 코드로 진행 됩니다.

ProcessClose("OUTLOOK.EXE")

 

 

결과 실행 파일 : - 주의사항 : 아래 EXE 파일은 위 소스를 EXE로 변경하여 빠른 실행을 도와 주는 파일입니다.  인터넷에서 다운 받은 EXE의 경우 보안알림이 뜰 확률이 매우 높습니다. 관련 메세지가 불안하신 경우 위에 AU3 파일이나 상단 링크의 스크립트 소스를 이용해서 직접 빌드해서 사용하시면 됩니다. 

 

Clear_Outlook.zip
0.54MB

자동화를 적용하기 위해 현재 모니터의 크기를 구하는 방법에 대하여 알아보고자 합니다.

 

기본적인 모니터의 크기중 좌/우의 폭을 구하는 함수는 @DesktopWidth 입니다.

위 / 아래의 높이를 구하는 함수는 @DesktopHeight 입니다.

 

해당 모니터 크기가 올바른지 확인하는 방법 중 가장 쉬운 방법은 MouseMove를 이용해서 직접 움직이게 해보는 방법입니다.

아래 코드를 이용하면 우측위, 우측아래, 좌측아래 , 위쪽 으로 각각 1초씩 이동하게 됩니다. 모니터 크기가 아니더라도 특정 제품의 크기를 구하시게 되면 종종 이런 방식으로 올바르게 구하고 있는지 위치 추적이 가능합니다.

	MouseMove(@DesktopWidth - 100  , 100)
	sleep(1000)
	MouseMove(@DesktopWidth - 100  , @DesktopHeight - 100)
	sleep(1000)
	MouseMove(100  , @DesktopHeight - 100)
	sleep(1000)
	MouseMove(100 , 100)

 

듀얼 모니터인 경우 다른 방식으로 2개가 합쳐진 모니터의 크기를 구할 수 있습니다.

#include <WinAPISys.au3>
$DesktopWidth = _WinAPI_GetSystemMetrics(78)
$DesktopHeight = _WinAPI_GetSystemMetrics(79)
MsgBox("", $DesktopWidth , $DesktopHeight)

또 다른 방법으로는 "Program Manager" 의 크기를 구하는 방식으로 듀얼 모니터의 크기를 구할 수 있습니다.

#include <MsgBoxConstants.au3>

Example()

Func Example()
    Local $aPos = WinGetPos("Program Manage")
    MsgBox($MB_SYSTEMMODAL, "", "X-Pos: " & $aPos[0] & @CRLF & _
            "Y-Pos: " & $aPos[1] & @CRLF & _
            "Width: " & $aPos[2] & @CRLF & _
            "Height: " & $aPos[3])
EndFunc   ;==>Example

 

도서 추천

https://www.millie.co.kr/v3/bookDetail/179592953?referrer=searchResult

 

AutoIt을 활용한 업무 자동화

배우기 쉬운 프리웨어 자동화 언어인 AutoIt을 사용하여 업무를 자동화 합니다. 이 책은 프로그래밍에 대한 지식이나 이론적인 부분을 살펴보기보다는 ..

www.millie.co.kr

 

 

https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000005138322

 

AutoIt을 활용한 업무 자동화 | PlanB | 스프링드림- 교보ebook

단순하지만 반복적이고 손이 많이 가는 업무를 진행하고 있나요? 업무 자동화를 꿈꾸지만 프로그래밍을 모르는 비전공자라서 시작을 두려워 하고 있지 않은가요? 프로그래밍을 잘 몰라도 예제

ebook-product.kyobobook.co.kr

 

먼저 마우스를 활용하여 클릭하는 법은 하단 링크를 참조 해주세요.

 

smart-west.tistory.com/25

 

[ Autoit ] 마우스 컨트롤 하기 #1 - 기본편

기본적인 마우스의 움직임을 조절하기 위해서는 MouseMove를 이용합니다. 원하는 위치로 이동시키기 위해서는 좌측값과 상단 값을 지정하여 이동하면됩니다. MouseMove( 350 , 250 ) 간단한 숫자를 입력

smart-west.tistory.com

 

내가 원하는 위치를 마음대로 클릭 할 수 있는 방법을 위해서는 내가 어디를 클릭할지를 알고 있는지 여부가 중요 합니다. 내가 클릭하고자하는 범위를 보다 정확히 알 수 있다면 좀더 쉽게 범위를 좁히고 그것은 자동화 성공률을 올려주게 됩니다.

 

마우스 위치를 구하는 함수는 MouseGetPos 함수를 활용 할 예정입니다. 편집기의 도움말에서 해당 함수를 찾아 예제를 가져 옵니다.

#include <MsgBoxConstants.au3>

Local $aPos = MouseGetPos()
MsgBox($MB_SYSTEMMODAL, "Mouse x, y:", $aPos[0] & ", " & $aPos[1])

 

해당 함수를 실행하면 마우스의 위치가 직관적인 대화상자로 표시 됩니다.

 

 

첫번째 값은 왼쪽 , 두번째 값은 위 기준 값입니다. 

하지만 대화상자로 나타나게 되면 2개 이상을 측정하려면 매우 번거롭기 때문에 툴팁으로 표시 되도록 변경 할 예정입니다.

먼저 while 문을 활용하여 지속적으로 실행 되도록 설정해줍니다. 그리고 이것을 종료 하기 위한 코드를 추가 합니다. 저는 ESC을 누르면 종료되도록 핫키를 추가 할 예정입니다. 핫키 지정관련해서는 아래 링크를 참조 하세요.

smart-west.tistory.com/21

 

[ Autoit ] 핫키(단축키) 생성하기

버튼이 아닌 단축키로 동작하기 위해서 핫키를 지정해서 넣을 수 있습니다. Autoit 편집기를 실행 후 [ File ] > [ New ] 하여 빈 문서를 생성하여 저장 후 [ F1 ] 키를 누르세요.  도움말이 표시되면 ��

smart-west.tistory.com

 

HotKeySet("{ESC}", "_HotKeyPressed")
Func _HotKeyPressed()
	Exit
EndFunc

 

핫키가 추가 되었으니 이제 While 안에 마우스 좌표가 툴팁으로 표시 되도록 할 예정입니다. 시작적으로 점더 잘 보이게 하기 위해 마우스를 따라다니도록 설정하는 방법도 추가 해봅니다. 이것은 단지.. 복사 한번 더 해주시면 됩니다. 

 

먼저 마우스위치가 0,0 위치에 툴팁으로 표시 되는 코드는 다음과 같습니다.

	ToolTip("Mouse x, y:"& $aPos[0] & ", " & $aPos[1], 0, 0)

 

이제 툴팁이 마우스를 따라다니게 하는 코드는 다음과 같습니다.

	ToolTip("Mouse x, y: "& $aPos[0] & ", " & $aPos[1],  $aPos[0] , $aPos[1] )

 

여기서 저는 아무스 위치와 정확히 겹치는 툴팁 보다는 조금 우측 아래로 이동한 툴팁이 좀더 좋을 것 같다는 생각이 들기 시작 했습니다. 그래서 위치 값을 조금 더 추가 해주도록 하겠습니다. 

	ToolTip("Mouse x, y: "& $aPos[0] & ", " & $aPos[1],  $aPos[0] + 15 , $aPos[1] + 15 )


0.2초 간격으로 리프레쉬 하며 마우스를 추적해서 따라오는 툴팁 툴이 완성되었습니다.

동작 화면은 다음과 같습니다.

 

 

#include <MsgBoxConstants.au3>
HotKeySet("{ESC}", "_HotKeyPressed")
Local $aPos = MouseGetPos()
While 1
	$aPos = MouseGetPos()
	ToolTip("Mouse x, y: "& $aPos[0] & ", " & $aPos[1],  $aPos[0] + 15 , $aPos[1] + 15 )
	Sleep(200)
WEnd
Func _HotKeyPressed()
	Exit
EndFunc

11 줄로 완료된 나만의 툴 입니다. 

빌드 된 실행 파일이 바로 필요하신 분은 아래 링크에서 이용 해주시면 됩니다.

 

smart-west.tistory.com/49

 

마우스 추적 모듈 만들기 - 툴팁으로 위치 표시 모듈

제작 방식은 아래 링크를 참조해주세요. smart-west.tistory.com/48 톨 동작 화면 결과 실행 파일 : - 주의사항 : 아래 EXE 파일은 위 소스를 EXE로 변경하여 빠른 실행을 도와 주는 파일입니다. 인터넷에�

smart-west.tistory.com

 

도서 추천

https://www.millie.co.kr/v3/bookDetail/179592953?referrer=searchResult

 

AutoIt을 활용한 업무 자동화

배우기 쉬운 프리웨어 자동화 언어인 AutoIt을 사용하여 업무를 자동화 합니다. 이 책은 프로그래밍에 대한 지식이나 이론적인 부분을 살펴보기보다는 ..

www.millie.co.kr

 

 

https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000005138322

 

AutoIt을 활용한 업무 자동화 | PlanB | 스프링드림- 교보ebook

단순하지만 반복적이고 손이 많이 가는 업무를 진행하고 있나요? 업무 자동화를 꿈꾸지만 프로그래밍을 모르는 비전공자라서 시작을 두려워 하고 있지 않은가요? 프로그래밍을 잘 몰라도 예제

ebook-product.kyobobook.co.kr

 

+ Recent posts