하도 고생을 해놔서..

안까먹을라고 적어둔다.


1. 구성요소서비스에 등록된 dll은 삭제한다.
    혹은 레지스트르에 등록되어 있으면  "regsvr32 -u 파일명.dll"을 해서 해당 dll을 레지스트리에서 제거해준다.
사용자 삽입 이미지

사용자 삽입 이미지



2. VB를 실행시키고 해당 소스를 불러온다.

3, 메뉴에 프로젝트 >> 해당프로젝트 속성 >> 디버깅 탭에서
    "URL을 사용한 브라우져 시작(B):" 옵션을 선택하고
    아래 텍스트 박스에 해당 URL을 적어준다. 그리고 확인..

사용자 삽입 이미지



4. IIS 관리자를 띄우고 해당 웹사이트의 등록정보에 들아간다.
   디렉토리 보안 탬에서 "익명 엑세스 및 인증 제어"에 있는 편집(E) 버튼을 클릭한다.
   인증 방법 팝업에서 익명 엑세스를 체크 해제 한후에 확인을 클릭한다.

사용자 삽입 이미지


사용자 삽입 이미지


5. 이제 다 됐다.
   VB에서 원하는 부분에 중단점을 설정(F9)하고 실행(F5)하면 브라우져가 뜨면서 해당 웹사이트가 올라온다. 거기서 중단점이 설정된 부분의 호출이 있으면 해당 부분에서 디버깅이 시작된다.



참조사이트 : http://support.microsoft.com/?scid=kb%3Bko%3B299633&spid=2971&sid=global


파일을 암호화 시키는 가장 기본적인 방법입니다

블럭단위로 입출력을 하기 위해서 이진모드로 처리를 하겠습니다


암호화 / 복호화 되는 전체구조를 파악하기 위해서 제작되었으니 암호화 관련 학습이 아니더라도 아래의 내용을 학습하는데 도움이 되리라 판단됩니다

1. Const 선언과 활용법

2. Type문 및 레코드 처리

3. For~Next문

4. Binary I/O 및 Get,Put

5. Drive,Dir,File 컨트롤 활용


1. 초기화면을 살펴보겠습니다



2. 암호화를 한 화면입니다

처리할 폴더로 이동한 다음 파일을 선택하고 <암호화>를 누릅니다

그러면 아래와 같이 처리가 완료되었다는 메세지가 나옵니다



3. 원본 파일과 암호화된 파일의 내용을 보겠습니다






4. 소스 코드를 살펴보겠습니다


변수의 선언을 요구합니다

Option Explicit


임시로 사용할 파일입니다

Const TEMP_FILE = "C:\TEMPFILE.$$$"



암호화된 파일의 첫부분에 들어갈 문자열입니다

Const ID = "나만의 암호화 프로그램 V1.0"



암호화 키(KEY)입니다.     키를 확장하실려면 이부분을 배열로 선언하고 길이를 늘리면 됩니다

Const LOCK_CODE = &H13


암호화된 파일의 첫부분에 들어갈 구조입니다(파일헤더 입니다)

Private Type HEAD_RECORD

    ID As String * 50           내가 만든 암호화 데이터인지 확인할 식별 코드

    METHOD As Byte         암호화 방식(1: XOR) (2,3,.... 알고리즘 코드입니다)

End Type


Dim HEAD As HEAD_RECORD           HEAD_RECORD형을 갖는 변수 HEAD

Dim i%, cnt&

Dim data As Byte                                      파일에서 읽고/쓸때 필요한 바이트형 변수


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

사용자 함수: 파일리스트에 있는 파일들을 전체선택/전체해제 합니다

선택: True-선택, False-해제

Private Sub 선택해제(선택 As Boolean)

    For i% = 0 To File1.ListCount - 1

        File1.Selected(i%) = 선택

    Next i%

End Sub


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

Private Sub cmd모두선택_Click()

    Call 선택해제(True)

End Sub


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

Private Sub cmd모두해제_Click()

    Call 선택해제(False)

End Sub


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

선택된 파일을 복호화 합니다

Private Sub cmd복호화_Click()

    파일 리스트에 있는 파일들을 처리할려고 시도합니다

    ListIndex는 0부터니까 -1을 해줍니다

    For i% = 0 To File1.ListCount - 1


        선택된 파일만 처리합니다

        If (File1.Selected(i%)) Then


            선택된 파일을 읽기 전용으로 엽니다

            Open Dir1.Path & "\" & File1.List(i%) For Binary Access Read As #1

            Get #1, , HEAD


            내가 만든 암호화 파일인지를 검사하여 맞으면 처리합니다

            If (Left$(HEAD.ID, Len(ID)) = ID) Then


                임시파일을 쓰기 전용으로 엽니다

                Open TEMP_FILE For Binary Access Write As #2


                파일전체 길이에서 헤더길이를 뺀 길이만큼 수행합니다

                For cnt& = 1 To FileLen(Dir1.Path & "\" & File1.List(i%)) - Len(HEAD)


                    한바이트를 읽어옵니다

                    Get #1, , data


                    LOCK_CODE와 XOR 연산을 하여 임시파일에 저장합니다

                    data = data Xor LOCK_CODE

                    Put #2, , data

                Next cnt&


                열려있는 파일을 모두 닫습니다

                Close

           

                원본 파일을 삭제하고 임시파일을 원시파일로 이름 변경합니다

                Kill Dir1.Path & "\" & File1.List(i%)

                Name TEMP_FILE As Dir1.Path & "\" & File1.List(i%)

            Else

                내가 만든 암호화 파일이 아니면 처리하지 않습니다

                Close #1

            End If

        End If

    Next i%



    처리가 완료 되었으면 메세지를 출력합니다

    MsgBox "복호화 작업을 완료하였습니다", vbInformation, "정보"

End Sub


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

선택된 파일을 암호화 합니다

주의: 암호화된 파일이 두 번 암호화 되지 않도록 하는것은 숙~~제 입니다

 

Private Sub cmd암호화_Click()

    HEAD.ID = ID    식별 코드 문자열입니다

                          가능한 길게 주어서 한 번 암호화된 파일이 두번 되지 않도록 합니다

    HEAD.METHOD = 1                  1(XOR 연산)  2(DES),3(SEED),4,... 255

   

    파일 목록에 있는 모든 파일을 처리할려고 시도합니다

    For i% = 0 To File1.ListCount - 1


        선택된 파일만 처리하도록 합니다

        If (File1.Selected(i%)) Then


            원본 파일을 읽기전용으로 엽니다

            Open Dir1.Path & "\" & File1.List(i%) For Binary Access Read As #1


            임시파일을 쓰기전용으로 엽니다

            Open TEMP_FILE For Binary Access Write As #2


            해더정보를 먼저 저장합니다

            Put #2, , HEAD


            원본 파일의 길이만큼 암호화 시킵니다

            For cnt& = 1 To FileLen(Dir1.Path & "\" & File1.List(i%))


                원본 파일에서 한바이트를 읽습니다

                Get #1, , data


                암호화 비트연산을 수행합니다

                data = data Xor LOCK_CODE


                임시파일에 저장합니다

                Put #2, , data

            Next cnt&


            열려있는 모든 파일을 닫습니다

            Close

           

            원본 파일을 삭제합니다

            Kill Dir1.Path & "\" & File1.List(i%)


            임시파일을 원본파일로 이름 변경합니다

            Name TEMP_FILE As Dir1.Path & "\" & File1.List(i%)

        End If

    Next i%

   

    처리가 완료되었다는 메세지를 보여줍니다

    MsgBox "암호화 작업을 완료하였습니다", vbInformation, "정보"

End Sub


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

프로그램을 종료합니다

Private Sub cmd종료_Click()

    End

End Sub


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

드라이브가 변경되었을때 처리

Private Sub Drive1_Change()

    On Error GoTo ERROR_DRIVE

   

    Dir1.Path = Drive1.Drive

    Exit Sub

   

드라이브를 변경했는데, 오류가 나면 여기로 옵니다

A:드라이브에 디스켓이 없는 경우,CD_ROM 드라이브에 CD가 없는 경우등 입니다

ERROR_DRIVE:

    MsgBox Err.Description, vbCritical, "오류"

End Sub


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

다른 폴더가 선택이 되었을때 처리

Private Sub Dir1_Change()

    File1.Path = Dir1.Path

End Sub


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

시작 함수

Private Sub Form_Load()

    폼을 화면의 중앙에 위치하도록 합니다

    Left = (Screen.Width - Me.Width) / 2

    Top = (Screen.Height - Me.Height) / 2

End Sub




==============================================================================

==============================================================================

5. 여러분이 확장할 수 있는 부분들입니다


(1) 해더부분에 여러분의 정보등 기타 정보들을 넣을 수 있습니다

(2) 속도 개선을 위하여 블럭단위(배열이용)로 입출력합니다

(3) 암호화 알고리즘(SEED,DES,....R...)을 접목할 수 있으며, 알고리즘을 선택하도록 할 수도 있습니다

(4) 하위 폴더까지 처리를 할 수 있습니다

(5) 암호화 키의 자릿수를 확장할 수 있습니다


감사합니다

강좌의 원본페이지: http://www.complus.pe.kr/lecture/vb/VB_fileio_09.html

출처 : 데브피아

  1. var introduce = 나는 프로그래머 2019.01.08 17:11

    감사합니다 ㅎㅎ 덕분에 랜섬웨어 제작... 은 아니고 퍼퍼퍽
    좋은정보 얻고갑니다~

Set DBrec = CreateObject("ADODB.RecordSet")
lsSql = " SELECT 어쩌구 저쩍 "

DBRec.Open lsSql, DBcon

(중략)

pBar.Min = 0
pBar.Max = DBrec.RecordCount

(하략)


ㅇㅋ.. F5 를 눌러서 실행....



잉??? 오류???

ProgressBar 컨트롤에 Max값 지정이 잘 못됐단다...


디버깅..


잉??? RecordCount 값이 -1나온다...

아하.

DBRec.Open lsSql, DBcon, 1

다시..


똑같다.

DBRec.Open lsSql, DBcon, 2

다사..

또 똑같다.


젠장..


다시..

DBRec.Open lsSql, DBcon, 3

얼레..


장난치나....



MSDN에도 제대로 왜 그런지 안나온다.

이상하다.

젠장...




네이버 검색...



헐...

Dbrec.CursorLocation = adUseClient
Dbrec.CursorType = adOpenKeyset
Dbrec.Open lsSql, DBCon

이런식으로 해주어야 한단다.

예전에도 그랬었나??? 훔..

기억이 가물가물...

웹언어에 너무 젖어 있었나 보다. 쩝...



반성 반성..



+ Recent posts