Auto Log in to website using VBS - Engineer of NiagaraFramework

Tridium, NiagaraFramework, SCADA, HMI, PLC, Automation, SmartFAM etc.. About controls.
나이아가라 프레임워크 QnA : neverlikekami@gmail.com

2019년 4월 25일 목요일

Auto Log in to website using VBS

개요

웹에 자동으로 로그인하는 프로그램은 사실 위험하다는 생각이다.
하지만 단순히 로컬 인트라넷에서 운영되어지는 몇몇 웹 페이지는 자동로그인이 필요할때가 있다.

개인적으로는 직접 ID와 PW를 치고 들어가는것을 추천하지만 그렇지 않은 사람들이 생각보다 많다.


    <최종실행화면>

    본론


    기타 여건들을 배재하고 무조건 자동 로그인이 필요한 경우가 있다.
    이러한 경우에 사용할 수 있는 방법에 대해 알아본다.


    How to automatically log in to web site.

    어떻게 해야 자동으로 로그인을 할 수 있을까
    여러가지 방법이 있다.
    1. wget과같은 프로그램을 이용하여 서버에ID/PW값을 넘겨준다.
    2. 키보드가 자동 타이핑되도록하여 ID타이핑,TAB,PW타이핑,Enter타이핑 순서로 SEND
    3. JavaScript를 이용하여 ID/PW 필드를 채운 후 action이 되도록 한다.
    4. etc.. 기타등등 무궁무진하다.



    제작할 프로그램의 기능정리

    여러가지 방법들이 있겠지만 내게 필요한 기능을 정리하면 아래와같았다.
    1. 바탕화면에서 바로가기를 더블클릭한다.
    2. 브라우저가 실행되며 자동으로 로그인이 된다.
    3. 로그인 후 볼 수 있는 페이지를 서비스 받는다.


    VBS란?

    위와같은 프로그램을 만들기위해 VBS 를 이용하기로 하였다.

    Microsoft Visual Basic Scripting Edition (Visual Basic Script)
    마이크로소프트에서 제공하는 스크립트 언어이며 bat 비슷하게 사용 가능.
    bat 파일이 CommandLine 환경이라면 VBS는 좀더 GUI를 컨트롤 할 수 있는 환경제공.
    Windows는 기본적으로 VBS 실행 환경을 탑재 .

    VBS는 정상적인 목적을 갖고 있다면 매우 유용할 수 있지만 좋지못한 의도로 사용자의PC를 점거할 수 있으며 내 의지와 다른 무언가를 실행할 수 있는 강력한(?) 언어다.
    내가만든 VBS가 아니라면 반드시 소스를 확인하고 실행할것을 추천한다.

    만일 본인이 언어에 무지한데 p2p, torrent 등에서 .vbs를 받았다면 실행하면 안된다.
    아.. 물론 본인이 누군가에게 탈탈 털리기를 희망한다면 관리자 권한으로 실행하면 된다.

    이제 VBS를 이용해 웹 접속을 어떤식으로 구현하였는지 보자.
    본 소스는 ID와 PW를 고스란히 포함하고있는 용감함을 보여준다.
    피치못할 사정이 있을때만 사용하자...

    VBS를 이용한 구현(Implement a program using VBS, Tested on chrome)

    1. Run notepad
    2. Copy and paste source code below
    3. Save filename.vbs
    4. run filename.vbs

    set WshShell = CreateObject("WScript.Shell")
    Set proc = WshShell.Exec("C:\Program Files (x86)\Google\Chrome\Application\chrome.exe 192.168.0.243/prelogin")
        Do While proc.Status = 0
               WScript.Sleep 1000
        Loop
    WshShell.sendkeys("admin")
    WshShell.sendkeys "{ENTER}"
    WScript.Sleep 500
    WshShell.sendkeys ("1212w334r{%}T")
    WshShell.sendkeys "{ENTER}"


    위의코드는 크롬 브라우저를 이용하여 특정 웹 페이지에 접속하고
    keyboard로 "admin"을 보내고
    "Enter"키를 누른뒤 500ms뒤에
    "1212w334r%T" 라는 패스워드를 적고
    "Enter"키를 누르게 하는 코드다.

    웹 사이트의 특성에 맞추어 위의 소스를 에디팅 하여 사용하면 된다.

    PC의 환경이 느리거나 브라우저에서 proc.Status를 정상적으로 받을 수 없는 경우는
    해당 코드를 삭제하고 아래와같이 사용할 수 있다.

    set WshShell = CreateObject("WScript.Shell")
    Set proc = WshShell.Exec("C:\Program Files (x86)\Google\Chrome\Application\chrome.exe 192.168.0.243/prelogin")
        Do While proc.Status = 0
               WScript.Sleep 2000
        Loop
    WshShell.sendkeys("admin")
    WshShell.sendkeys "{ENTER}"
    WScript.Sleep 2000
    WshShell.sendkeys ("1212q2w3e4r{%}T")
    WshShell.sendkeys "{ENTER}"

    위의 삭제한 코드는 웹 페이지가 정상적으로 브라우저에서 로드가 되었음을 기다린 후 로그인 절차를 진행하도록 하는 부분이다.
    하지만 브라우저의 상태나 웹 페이지와의 호환성, PC의 성능이나 기타 환경등으로 정상적인 로드완료 신호를 받지 못할 수 있다.

    그래서... 프로답게. 아웃풋으로 승부한다는 마인드로. 거추장(?)스러운 검사절차를 날려버렸다. (잘 돌아간다. 똥컴에서는 WScript.Sleep 10000 으로 사용하였다. )

    우리는 이제 누군가 "자동으로 로그인시켜줘~" 라고 할때.. 이러한 편법을 사용할 수 있게 되었다.

    다시한번 강조하지만. 탈탈 털어도 가져갈 것이 없는 환경에서만 사용하기 바란다.
    탈탈 털려도 털린지 조차 모르는것이 PC보안이며, 세상은 넓고 고수는 많다..



    댓글 없음:

    댓글 쓰기

    Post list