반응형

 

하드웨어의 고유 번호를 사용하여 인증하는 것은 일반적으로 보안 목적으로 사용됩니다. 

이를 위해서는 사용자가 시스템에 접근할 때 해당 하드웨어의 고유 번호를 확인하고, 이를 이용하여 접근을 허용하거나 거부하는 방식의 인증 시스템을 구축해야 합니다. 

 

예를 들어, 하드 디스크의 시리얼 번호를 사용하여 인증하는 경우를 생각해보겠습니다. 

이를 위해서는 먼저 시스템에서 하드 디스크의 시리얼 번호를 읽어오는 방법이 필요합니다.

 

시리얼넘버 읽어오는 방법

DriveGet, ver, Serial, C: ; C: 드라이브의 시리얼 번호를 읽어옵니다.
clipboard := ver
MsgBox,64,안내,% "시리얼번호는 " ver " 입니다`n복사되었습니다"

시리얼확인.ahk
0.00MB

 

시리얼넘버 확인하는 스크립트 코드

DriveGet, DriveSerial, Serial, C: ; C: 드라이브의 시리얼 번호를 읽어옵니다.
InputBox, InputSerial, 하드웨어 인증, 하드 디스크 시리얼 번호를 입력하세요:
if (InputSerial = DriveSerial) {
    MsgBox, 인증 성공!
} else {
    MsgBox, 인증 실패!
}

시리얼인증.ahk
0.00MB

 

 

C드라이브의 고유 시리얼 번호를 받아온뒤,

사용자가 inputbox에 시리얼 넘버를 적고, 

 

적은 내용과 C드라이브 시리얼 넘버를 대조하여 

인증성공과 실패를 띄우는 방법입니다.

반응형
반응형

 

Key Point
반복 작업을 위해서는 반복행위가 필요합니다.
조건을 걸고, 특정 조건을 성립하면 특정행동을 하고 다음 행동으로 가는
가장 기초적인 부분을 알려드릴 것입니다. 

 

 

 

위 사진을 간단하게나마 그려보았는데요

왼쪽은 Loop 오른쪽은 while 입니다. 

 

Loop / While 차이점
Loop 
특정 횟수나 범위를 정하여 코드를 반복 실행합니다.
예를 들어, loop, 5는 중괄호안에있는  코드를 10번 반복 실행합니다.

Loop,5
{
코드
}

 

while 
조건을 지정하여 해당 조건이 참(True)인 동안 코드를 반복 실행합니다. 

i = 0
while (i < 5) { 

MsgBox, % "i는 5보다 작습니다. 현재 값: " i 
i++ 

}

 

Loop

반복문을 넣고, 조건에 부합할때까지 넣을건가?

while

처음부터 조건을 걸고 거짓이 될 때까지 반복시킬건가?

 

 

 

가령 무한으로 반복 시키고싶다  라고 하면 둘다 동일하게 사용가능합니다
Loop,{
msgbox,% "현재 반복 횟수는 : " A_index " 입니다"
}
while (1){
    MsgBox,% "현재 반복 횟수는? " A_index " 입니다"
}

 

 

 

조건을 걸고 싶다
ver = 0
Loop,{
  if(ver >= 5){
	break
  }else{
	msgbox,% "현재 ver 값은 " ver " 입니다"
  }
  ver++
}
msgbox,끝
exitapp

테스트파일1.ahk
0.00MB

 

ver := 0
while (ver < 5){
    MsgBox, % "현재 ver 값은 " ver " 입니다"
    ver++
}
MsgBox, 끝
ExitApp

테스트파일2.ahk
0.00MB

 

반복문 탈출 ( 반복문에서 벋어나다)
Loop,{
msgbox, 한번만 반복하고 탈출하자!
break
}

msgbox,64,안내,탈출성공!

 

 

while 명령어와 loop 명령어 위와같이 조건을 걸때 보면 while 명령어가 더 좋아보이고 심플해보이지만,

결국 각상황에 맞게 사용할 수 있습니다.

조건은 loop나 while에 둘다 사용가능합니다 

 

Loop는 여러 상황에서도 사용될 수 있습니다. 

가령 listview의 항목중 "특정" 항목의 내용을 가져와서 조건에 부합하면 탈출하는 것도 가능합니다

 

#SingleInstance,force

title:= "테스트파일"
Gui, Add, ListView, x12 y9 w210 h300 vlist_a,no|이름
Gui, Add, Button, x12 y319 w210 h30 gmsg,메세지출력
Gui, Show, x612 y285 h365 w235,% title
	Lv_add(,"1","홍길동")
	Lv_add(,"2","김이박")
	Lv_add(,"3","김뚜레")
	Lv_add(,"4","정발산")
	Lv_add(,"5","홍인범")
	Lv_add(,"6","이순신")
Return
msg:
gui,submit,nohide
Loop,% LV_GetCount(){
	LV_GetText(Count,A_index,1)
	LV_GetText(name,A_index,2)
	if(name = "정발산"){
		msgbox,64,안내,% name " 님의 순서는 " Count " 번 째 입니다"
		break
	}
}


return
GuiClose:
ExitApp
return

listview_test.ahk
0.00MB

 

 

 

스크립트(ahk, exe실행파일) 이 있는 폴더안에 있는 텍스트 문서의 위치를 전체 취득하고싶다. 

#SingleInstance,force
Loop, %A_workingdir%\*.txt, 1, 1
    ver .= A_LoopFileLongPath "`n"

MsgBox, % "텍스트 파일들의 위치:" . "`n" . ver
exitapp

테스트.zip
0.00MB

 

간단한 몇줄로 하위 폴더내 텍스트 파일의 위치를 알 수 있습니다. 

조금더 해볼까요 ?

 

#SingleInstance,force
Loop, %A_workingdir%\*.txt, 1, 1
{
    FileRead,read_ver,% A_LoopFileLongPath
    msgbox,% "현재 파일위치는 : " A_LoopFileLongPath " 이며`n파일 내용은: " read_ver " 입니다"
}

exitapp

 

하위 폴더안 .txt 확장자를 가진 파일을 전체 확인하고

확인하는 족족 내용을 메세지박스에 위치랑, 내용을 표시하는 소스입니다.

 

 

이렇듯, Loop,와 while 문은 상황에 맞게 사용할 수있습니다.

반응형
반응형

 

사용자 동의 없이 설치된 응용 프로그램으로부터 PC를 보호하도록 설계된 

윈도우 내장 설정 입니다. 

 

마이크로소프트 디펜더(Microsoft Defender)는

마이크로소프트에서 개발한 보안 소프트웨어입니다. Windows 운영 체제에서 사용되며, 컴퓨터를 다양한 온라인 위협으로부터 보호하는 역할을 합니다.  랜섬웨어, 바이러스, 스파이웨어, 악성 코드를 탐지하고 차단하는 기능을 제공합니다.

 

인증서가 없는 프리웨어와 개발자가 만든 프로그램 (exe , dll ) 형식의 파일을 

비인가 프로그램이라고 인식 후 차단을 하는 경우가 많습니다. 

 

Microsoft Defender SmartScreen / windows pc 보호

 

Window의 PC보호는, 하단 "추가설정"을 눌르고 

 

실행을 눌르면 간단하게 사용가능합니다

 

 

 

 

 

 

윈도우 검색 창 -> 보안 -> Windows 보안 클릭

 

 

 

바이러스 및 위협방지 클릭

 

 

 

 

바이러스 및 위협방지 설정 -> 설정관리 

 

( 만약 해당 바이러스 및 위협방지 설정이 뜨지않는다면, 외부 보안 프로그램이 있어서 안뜨실겁니다.)

( 이는, 보안 프로그램을 삭제하시거나, 보안 프로그램 자체 예외설정을 해주시면 됩니다 )

( 어베스트, V3, 알약 등)

 

 

 

우선 실시간 보호기능을 꺼주세요 ( 위 이미지는 켜진상태입니다 )

 

 

하단으로 쭉 내리면 제외 추가 또는 제거가 있습니다. 

 

 

 

 

제외사항 추가를 눌러 / 파일 혹은 폴더 를 클릭해서

exe 혹은 폴더를 선택하면 다음부터는 해당 문제가 뜨지 않을 것입니다.

반응형
반응형

 

 

< 이전 내용을 보고 오지 못한 분들을 위해 링크 남겨드립니다. > 

 

<준비 단계>

https://peuming.tistory.com/11

 

오토핫키 [AHK] 셀레니움 크롬 드라이버 없이 사용하기

안녕하세요, 본 원문은 https://github.com/Xeo786/Rufaydium-Webdriver 의 자료를 가지고 제작되었습니다. 크롬 셀레니움을 사용할때 오토핫키, 혹은 다른 언어도 크롬 드라이버를 사용하였습니다. 이 Rufay

peuming.tistory.com

 

<루파디움 기초문법>

https://peuming.tistory.com/19

 

오토핫키 [AHK] 루파디움(셀레니움 대용) 네이버 로그인하기-1

Xeo786/Rufaydium-Webdriver / Github https://github.com/Xeo786/Rufaydium-Webdriver 루페디움 깃허브에 들어가서code -> download ZIP 를 눌러 알집으로 다운로드 합시다 알집을 풀면 Lib 폴더를 제외하고 위 이미지처럼

peuming.tistory.com

 

 

 

<가장 우선시 되어야하는 항목입니다>

1.

Web 요소 식별 및 기초적 개발 지식

HTML, CSS, JavaScript 등의 기본적인 웹 기술을 이해하는 것이 중요합니다. 웹 페이지의 요소를 식별하고 상호 작용하기 위해 필요하며, 웹 페이지내 요소를 식별하는 다양한 방법을 어느정도는 알고 있어야합니다. 

 

2.

루파디움 라이브러리 이해

루파디움의 기본문법 및 지원하는 명령어등이 숙달되어있어야합니다.

 

3.

드라이버의 이해

웹 드라이버( ChromeDriver 사용 ) 의 이해가 필요합니다. 

 

 

 

왜 셀레니움 즉, 루파디움을 사용하는가?

1. 동적 데이터 크롤링

지금의 웹사이트들은 기본적으로 동적 이벤트가 많이 존재합니다.

자바스크립트를 통해 사용자가 클릭한 요소들이 페이지이동이 아닌 실시간으로 불러와 작동하는 형태라고 보시면됩니다. 

이를 크롤링하기 위함입니다.

 

2. 웹사이트 조작

사이트 내 다양한 요소 클릭 및 키값 보내기등과 같은 자동화를 할 수 있다.

 

사이트내 지루한 반복된 작업을 자동화 할 수 있다.

이 이유 하나만으로 시간을 아끼고, 직원을 쓰는 사업장에게 한달월글을 아낄 수있는 이유가 된다. 

 

 

 

일단, 해보기

 

https://nid.naver.com/nidlogin.login?mode=form&url=https://www.naver.com/

https://nid.naver.com/nidlogin.login

 

페이지 링크에대한 부분도 어느정도 이해가 필요합니다. 

흔히 지나치고있는 주소들을 보면, 이 페이지가 어떤 파라미터를 적용하고있구나 라는 유추가 필요합니다

 

https://nid.naver.com/nidlogin.login?mode=form&url=https://www.naver.com/

의 링크같은경우 mode=form&url=https//www.naver.com 의 형태는 

어디서 이 페이지를 들어왔는가? 그리고 페이지 오류가 있을때, 로그인 페이지 전에 있던 페이지를 되돌아 갈 수있는

형태로 추측이 됩니다.  이와같이 상품페이지 같은경우 Page=1&sort=itemsort 등과같이 동적으로 작동하지 않은 페이지구조들은, 페이지1,2,3,4, 형태의 링크형식을 띄고있습니다. 

 

 

 

개발자 모드를 켜봅시다. 

네이버 로그인 페이지에서 F12를 눌러보세요 ( 위 이미지는 크롬에서 실행된 개발자모드입니다. 다른 웹 브라우저도 지원하니 확인해보세요 )

 

*만약 f12(개발자모드)를 눌렀는데 켜지지 않거나 켜지고 바로 꺼지는 경우, 금융권에서 설치를 권장하고있는 보안 프로그램이 현재 실행 및 컴퓨터에 설치가 되어있다면 삭제해 주시면 정상 적으로 켜지실 것입니다. 

 

우리가 유심히 봐야하는 것은 

 

 

네이버 ID 로그인 탭의

아이디 / 비밀번호와 로그인 버튼은 어느 요소로 되어있고 어떻게 작동하는지 부터 봐야합니다. 

 

 

 

개발자모드의 왼쪽 상단의 네모 커서모양을 클릭후, 아이디 칸에 마우스를 대시고 클릭해보면 하단 

input type="text" id="id" name="id" placeholder="아이디" title"아이디" class="input_text" 형태를 가진 요소가 선택되어있습니다. 

 

 

 

Div 요소 panel_inner 라는 요소안에,

id_pw_wrap 즉 아이디 비밀번호를 감싸주는 요소가 있고, 그 안에

input_row의 아이디 칸이 있으며

icon_Cell 아이콘과, input형식의 input_text 입력칸이 같이 있습니다. 

 

부모가 자식을 감싸고 있는 형태지요 

div 요소를 가지고 텍스트를 입력시키면 안되고, input 요소를 선택하여 텍스트를 입력하게 해야합니다. 

 

 

input 요소라고 말했는데 왜 인풋을 감싸고있는 영역을 선택하는건가요 ?

 

우리는 매크로, 자동화라는 개념에서 간단하게 다가가서 제작하면되지만, 사람이 하는 행동을 그대로 따라하기 위함입니다. 영역을 클릭하고 아이디를 입력하고, 탭 혹은 비밀번호칸을 클릭하고, 내용을 적고 ,엔터를 누르거나 로그인버튼을클릭해서 로그인을 하듯이요 .

 

위 이미지 처럼 영역을 오른쪽클릭 -> Copy -> Copy JS path를 클릭해봅시다.

 

그 다음

 

개발자모드의 콘솔탭에 들어가서 컨트롤 V를 눌러보시면 

document.querySelector("#id_line") 라고 적힐텐데 거기서 .click() 을 더 붙혀서 엔터를 눌러봅시다.

 

 

반응이 없으시죠 ? 하단에 Undefined가 뜨면 문제가 없습니다.

이 과정이 실제 웹사이트에서 테스트를 할 수있는 방법입니다. 잘 기억해주세요 .

 

 

다시 엘리먼트 탭에 들어와서 input 오른쪽클릭 -> copy -> copy js path 눌러주세요

 

 

콘솔창에 들어가 컨트롤 v 해주시고 .value="testid"를 적어주세요

 

 

 

이렇게 웹사이트에서 요소를 분석하고 콘솔창을 통해 테스트하는방법까지 배워봤습니다.

다음은 소스를 적용하고, 예외상황을 적용하는 법을 알아보도록하겠습니다

 

 

반응형

+ Recent posts