2008년 5월 25일 일요일

IEEE1394로 파일 공유.

1394a포트가 있는 두 컴퓨터를
IEEE1394 6-6핀 케이블로 연결해서
파일 공유를 해보았습니다..


두 컴퓨터의 운영체제 : XP home SP3

[컴퓨터A] 1394포트 <------ [컴퓨터B] 1394포트 [단방향 공유.]
ip : 192.168.12.2                                                            192.168.12.1



1. 공유폴더를 설정할 컴퓨터A의 1394넷 어뎁터 설정[컴퓨터A]

1394연결의 연결 속성에 들어가서...

"Micorosft 네트워크용 클라이언트"
"Micorsoft 네트워크용 파일 및 프린터 공유"

서비스를 사용해야하므로 체크합니다.

ip : 192.168.12.2
서브넷마스크 : 255.255.255.252
으로 설정하고 게이트웨이나
DNS서버 주소 등은 입력하지 않았습니다.

고급 TCP/IP설정에서는
"TCP/IP에서 NetBIOS 사용 안 함"에 체크..


2. 윈도우 방화벽 설정.[컴퓨터A]

윈도우 방화벽의 예외 탭에 들어가면 이미 "파일 및 프린터 공유"에
체크되어있는 것을 볼 수 있는데,

1394 넷 연결만 공유 설정이 필요하기 때문에,
"파일 및 프린터 공유"체크를 해제하고,
고급 탭으로 가서..
"1394 연결"이 선택된 상태에서 옆의 [설정] 버튼을 누르면

"1394 연결"에만 적용할 고급 설정 창이 나옵니다.


[추가]버튼을 눌러서.


위와 같이 규칙을 설정해줍니다.


그리고 옆의 ICMP탭으로 가서
"수신에코 요청 허용"에 체크 합니다.

확인을 누르고..

마지막으로 확인해봐야 할 부분이 있는데..


앞에서 "파일 및 프린터 공유" 규칙이 자동으로 적용되면서,

ICMP공통 항목의 "수신 에코 요청 허용"도 규칙도 자동으로 적용하게 됩니다.,

이 규칙은 컴퓨터에 설치된 다른 네트워크 카드까지 적용하게 되므로,

아래 그림의

ICMP항목 부분, 설정 버튼을 눌러서 "수신 에코 요청 허용" 부분의 체크를 해제하면 됩니다.



3. 공유폴더 접속을 허용할 계정설정. [컴퓨터A]


[xp pro라면 일반계정도 공유폴더에 접근할 수 있지만,
home버전은 Guest 계정으로만 접근 가능합니다.]

1)Guest 계정을 활성화합니다.
   C:\>net user Guest active:yes


2)Guest 계정에 접속 암호를 지정합니다.
   C:\>net user Guest passwd
암호를 'passwd'라고 지정했습니다.

"암호를 이렇게 직접 명령프롬프트에 보이게하면 보안상 문제가 있을 수도 있습니다.


   C:\>net user Guest *

위와 같이 입력한다면, 암호를 묻는
메세지가나오며 입력하는 암호가 보이지 않기 때문에 보다 안전하게 암호를 입력할 수 있습니다."




3)C드라이브 루트에다 Share라는 공유폴더를 만들고
네트워크 사용자가 파일을 변경할 수 있도록 설정했습니다.



4. 공유폴더에 접속할 컴퓨터B의 1394넷 어뎁터 설정 [컴퓨터B]

연결속성에서
이 컴퓨터에는 공유폴더를 생성하지 않을 것이므로..
"Micorosft 네트워크용 클라이언트"만 체크 확인하고,

IP : 192.168.12.1
서브넷마스크 : 255.255.255.252

TCP/IP에서 NetBIOS사용안함에 체크하였습니다.

그리고 방화벽은 따로 설정할 부분이 없습니다.


탐색기를 통해 공유 폴더에 접근 하기위해서는..

명령프롬프트 창에서

c:\>net use n: \\192.168.12.2\Share

192.168.12.2경로에 있는 Share란 공유폴더를 로컬 컴퓨터의 n:드라이브로 인식해서
사용합니다.


c:\>net use n: \\192.168.12.2\Share /user:Guest /persistent:YES

명령 뒷 부분에 persistent:yes옵션을 주면
컴퓨터가 재부팅 되더라도 공유폴더 경로를 기억하여...

접속을 시도하지만, 암호는 저장이 되지않습니다.


그렇기 때문에 재부팅 후 n드라이브는 연결이 끊긴 네트워크 드라이브라고 나오며

탐색기에서 드라이브 클릭해서 접근할 때, 암호를 물어봅니다.

그때 암호를 입력해야지만 공유폴더 접근이 가능합니다.


/Savecred옵션이 사용자 이름, 암호를 저장하는 옵션인데..

C:\>net use n: \\192.168.12.2\Share /savecred /persistent:yes

위 명령 실행 후, 유저, 암호 넣고.. 네트워크 드라이브 활성화 후에,

다시 재부팅하더라도 유저이름과 암호가 저장이 안되네요.
HomeEdition에서는 이 옵션이 적용되지 않나봅니다.

네트워크 드라이브에 접속하려니.. 경로는 저장되었지만,
유저이름과 암호는 다시 묻는군요...


그리고..

/persistent:yes옵션으로 공유폴더 연결 설정이 저장된 것을 해제 하려면,

명령프롬프트에서

C:\>net use /persistent:no

형식으로 해주면 됩니다.





연결 매체만 IEEE1394케이블이지...

랜카드나 마찬가지 같습니다.


연결은 400Mbps로 되었지만,

실제로 파일 복사하면서 핸드폰 스톱와치로 시간 재보니... 20MB/sec 정도 나왔구요.


한번도 써보지 않았던 메인보드 내장 IEEE1394 써본 것으로 만족합니다...



그리고 공유폴더를 네트워크 드라이브 만들어서 접속할 때..

명령프롬프트에서 net명령어 사용하지않고


탐색기의 [도구]-->[네트워크 드라이브 연결] 메뉴에서 쉽게 할 수 있습니다.

다른사용자 이름으로 연결 클릭해서 Guest와 설정한 암호 넣어주고,

"로그온 할때 다시 연결"에 체크해주면, 재부팅하더라도 공유폴더의 ID, 암호 잘 기억하네요..
                                                                                                                                                        └잘못된 부분



방화벽설정 부분을 다시 생각해보니..

기본 예외 설정의 [파일 및 프린터 공유] 규칙에서는

특정 IP만 포트로 들어오도록 설정이 가능했는데, 1394연결만 선택한 후, 추가했을 때는

범위 설정 메뉴가 없네요. 그런데 .. 뭐~~

범위설정이 있었더라도 그렇게까지 할 필요는 없을 것 같습니다.



** 잘못된 부분 수정....

탐색기의 네트워크 드라이브 추가 메뉴에서 아이디와 암호를 넣고

"로그온 할때 다시 연결"을 체크 하더라도

암호는 저장이 안되네요..


net 명령어에서 /savecred 옵션 무시되는 것처럼.

재부팅 후 다시 접근 하려면 암호 묻는 창이 나납니다.

유저명 Guest는 저장되어있지만, 암호는 저장이 안되네요..


홈에디션의 제한된 부분 같습니다..

2008년 5월 15일 목요일

만화 - 기니피그의 코...

예전Kbench에서 진행한 Wacom 타블렛 이벤트 제출용 그림.




2008년 5월 12일 월요일

USB프린터에서 prn파일 인쇄하기

USB포트로는 prn파일 인쇄 명령을 쓸 수 없는 줄 알고 있었는데...

다시 웹검색을 하다가 알아낸 것이...


"포트"탭의 "프린터 풀링" 옵션을 이용해서 간단히 해결되었습니다.

1. 프린터가 연결되어있는 컴퓨터의 해당 프린터 등록정보로가서...





2. 프린터 풀링을 설정을 합니다.





3. 인쇄명령은...

프린터가 연결되어있는 컴퓨터의 명령프롬프트에서(만든 prn파일이름이 test라고 할때)

?:\>copy test.prn prn /b

다른 명령으로

?:\>print /d:LPT1 test.prn

print명령도 인쇄는 잘 되었지만, 빈 페이지 한장이 더 출력되는 문제가 있었습니다.

포트명을 지정해주어 확실하고 잘 작동되는 명령은

?:\>copy test.prn LPT1 /b

위와 같이 하는 것이 좋을 것 같습니다.




*** 중요 ***

예전 프린트 서버에 내장된 FTP서버에 prn파일업로드 방식으로 인쇄한 적이 있는데,

txt파일같은 간단한 문서의 경우는 아무 조건 없이 인쇄가 되었지만,
그림이나, 복잡한 서식의 문서의 경우는 반드시 해당 프린터 드라이버를
이용해서 prn파일을 만들어야 출력이 잘 되었습니다.

(다른 기종 프린터 드라이버를 이용해서 만든 prn파일로 인쇄 명령을 내렸을 때는
출력물이 깨져서 나옴.)


이 방식에서도 그런지 시험은 해보진 않았지만,

같은 기종의 프린터 드라이버 설치 후, 그것을 이용해서 prn 파일을 만들어야 할 것 같네요.


출처 :
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=188935&SiteID=1




이것을 배치파일로 만들어
탐색기에서 prn파일을 클릭할때 인쇄를 할지, 말지 Yes, No로 선택하는 파일을
작성해보기로 했습니다.

배치파일 관련 명령어를
아는게 거의 없어서 검색을 해보니
어떤 분이 잘 정리해서 작성해 주셨네요..

제목 : 배치파일] Yes / No 선택 묻기, 도스의 CHOICE 명령 대용, 사용자 입력 받기 - DOS-Windows Batch File

http://mwultong.blogspot.com/2006/09/yes-no-choice-dos-windows-batch-file.html

완전히 이해가 가진 않았지만(본인 실력 별볼일 없음..ㅠㅠ),

위의 블로그 글 소스에

copy %1 prn /b 하고 조금 더 내용 추가해서 만든 것을
탐색기에 적용해서 사용해 봤는데, 잘 작동하네요..^^;


Copy명령으로도 포트를 직접 지정해서 인쇄할 수 없을까? 하다가 찾아내었는데...

copy test.prn LPT1 /b

copy test.prn COM1 /b

위와 같은 명령으로도 인쇄가 되었습니다.

프린터 풀링포트 설정할 때,

USB외의 다른 포트를 LPT1말고도 COM1이나 COM2로 맞추고
포트를 직접 지정해서 인쇄가 가능했습니다..

그런데 포트를 직접 지정하는 것이 제대로 작동되는 경우가 있었는데,

장치 관리자의
포트 항목에서 존재하는 포트만이, (메인보드 하드웨어상으로 포트가 존재해야함.)
인쇄가 가능했습니다.

[예를 들어 풀링설정창에는 LPT2~3, COM3~4, 포트 등이 있고, LPT2등을 선택해서 풀링 설정을 한 후

copy test.prn LPT2 /b

명령을 내렸을 때, 인쇄명령이 제대로 작동하지 않음.
포트가 실제로 존재해야하고 그에 맞는 드라이버가 미리 설치되어 있어야 하는 것 같음.]

만약 LPT1포트에 [프린터01]이 연결되어있고,
USB프린터에도 [프린터02]가 연결되어있는 환경에서,

COM1과 USB프린터에 풀링설정이 되어있을 때,

copy test.prn prn /b 명령을 내린다면,

사용가능한 첫번째 포트(LPT1) 우선으로 인쇄할 것이란 생각이 들어서...
prn 파일이 [프린터01]에만 인쇄될 가능 성이 있어보입니다.

위와같은 상태에서 prn파일을 [프린터02]로 인쇄하기 위해서는

copy test.prn COM1 /b

위와같은 식으로 명령을 내려주면 USB프린터로 잘 인쇄 될 것이란 생각이 듭니다.


@echo off
setlocal

if "%1"=="" goto NOINPUT

echo %1을 인쇄하시겠습니까?
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:LOOP

set /p YN=(Y/N)

if /i "%YN%" == "y" goto YES
if /i "%YN%" == "n" goto NO

goto LOOP
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:YES
echo %1을 인쇄합니다.
copy %1 prn /b
goto QUIT

:NO
echo %1의 인쇄를 취소합니다.
goto QUIT

:NOINPUT
echo prn파일을 입력하지 않았습니다.
goto QUIT

:QUIT
pause

그냥 위에 배치파일 YESNO 작성하신 분의 글에다 몇가지 끼워넣었는데....

잘되긴 하네요. ㅜㅜ



2008년 5월 4일 일요일

XP 안전모드로 못 들어가게 설정.

XP 안전모드로 못 들어가게 설정.

[Windows XP SP3에서 해봤습니다.]

레지스트리의 아래 경로에 가서,

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot

위 경로 하단의 Minimal, Network 이 두개의 키이름을

Minimal.bak, Network.bak로 변경


위와 같이 설정을 했을때.
부팅시 F8키 눌러서 안전모드 선택 커멘드가 나오지만,
*안전모드,

*안전모드(네트워킹 사용),

*안전모드(명령프롬프트사용)들을 실행하면

안전모드 윈도우로 진입하지않고 재부팅하게 됩니다.


출처: http://www.msfn.org/board/lofivers.......



아래 방법은...

시스템 루트디렉토리의 ntldr 파일을 HEX편집이가능한 프로그램으로 편집합니다.

ntldr은 시스탬파일 특성을 가지기 때문에, 이 상태로는 수정을 할 수 없습니다.

그래서 수정하기 전에 읽기전용, 시스탬파일, 숨김파일 특성을 해제 시켜 줘야합니다.

명령: attrib -r -h -s c:\ntldr
[-r 읽기전용 파일 특성 해제, -h 숨김 파일 특성 해제, -s 시스탬 파일 특성해제]

명령: copy c:\ntldr c:\ntldr_bak
[ntldr을 변경하기전에 ntldr_bak란 파일로 복사해둡니다.]

ntldr을 HEX편집가능한 프로그램으로 불러옵니다.

(Notepad++에 HEX Editor플러그인 적용<----"무료"프로그램이라 좋은 것 같네요.)


위 그림처럼 CD 16 0F 85 09 부분을 찾아내서,

그것을 CD 16 90 90 90 으로 바꿉니다.


[Find 목록에서 검색 후, Replace목록으로 전환하여 Replace 버튼을 1번 누르면

변경하려는 값이 바뀌지만,

모르고 또 한번 눌렀을때 앞에서 변경된 값의 뒷 부분에 변경할 값이 덧붙혀집니다.
In selection체크하고 Replace All버튼을 누르는 것이 안전한 것 같습니다.
]

위의 작업 후에 재부팅해보면 F8을 눌러도 키입력을 무시하고 정상모드로만
부팅 됩니다.

잘 작동한다면,

ntldr과 그외 백업해둔 ntldr_bak파일을 시스템, 읽기전용, 숨김 파일 특성을 적용합니다.


출처: http://groups.google.com/group/microsoft.public.windowsxp.security_admin....





복구는...

첫번째 방법은 해당 레지스트리키 부분을 찾아서

키이름을 원상태로 해주면 되고,

두번째 방법은 변경한 ntldr을 지우고 백업한 ntldr_bak의 이름을 ntldr로 바꿔서 복원하면

될 것 같습니다.

그런데,

알 수 없는 문제 발생 가능성이 있는지,

출처의 답변해준 분들도 문제 발생에 대해선 책임 못진다고 하는것 같은데,

아직까지 사용에 문제는 없네요. 이상태로 몇 달 써봐야 알겠습니다.

2008년 5월 1일 목요일

FCIV.exe와 MD5, SHA1


FCIV같은 프로그램을 찾은 목적은 실행파일의 SHA1값을 알려주는 프로그램을
찾다가 검색한 것인데,

FCIV는 아래 사이트에서 받을 수 있었다.
http://support.microsoft.com/kb/841290

프로그램 설명사이트가

영어 기본표시에, 일본어나, 중국어로는 번역을 지원하는데
한글을 지원하지 않았다. (나 영어 모르는데 orz...)


다운로드 파일명은 Windows-KB841290-x86-ENU.exe이고

실행시키면 사용자가 지정한 폴더에 FCIV.exe와 Readme.txt
를 설치하는데,

나는 C:\FCIV>에 설치하였다.


실행파일의 MD5나 SHA1 값을 알아보기 위해서는
명령프롬프트에서..(fciv.exe는 명령 프롬프트에서만 작동되는 프로그램)

"fciv 경로\파일명"을 입력해주면 결과가 나왔다.(기본설정 MD5)

위의 그림은 kbench에서 받은 윈도우 서비스팩3 설치파일의 md5 값을 알아 보았다

위와같이 별다른 옵션이없을때는 MD5값이 출력되지만,
별도로 -sha1 옵션을 주면 sha1으로도 출력되었다.

명령 : fciv -sha1 c:\fciv\WindowsXP-KB936929-SP3-KOR.EXE

-both명령을 입력했을때는 md5, sha1값 모두 출력되었다.

명령 : fciv -both c:\fciv\WindowsXP-KB936929-SP3-KOR.EXE

그외에도 FCIV에 대한 몇가지 옵션이과 설명이 더있어서...
아래와 같은 것을 하고 싶어졌다.

* WindowsXP-KB936929-SP3-KOR.EXE의 압축을 임시폴더(C:\temp)에 푼다음

하위폴더의 파일을 포함한 모든 파일 각각의 MD5, SHA1값을 xml파일로 저장한다.

* 위에서 압축을 푼 파일을 그대로 C:\temp2에 복사한다.

* temp2에 복사된 일부파일들을 수정, 삭제해본다.

* fciv가 저장한 xml 파일을 읽어서 temp2의 변경되거나, 삭제된 파일을
찾아 낼수 있는지 알아본다.

1) 명령프롬프트에서

WindowsXP-KB936929-SP3-KOR.EXE /x

명령을 실행한 후 압축을 풀어놓을 폴더를 c:\temp로 지정해서 풀었다.

Temp폴더 하단에 i386폴더가 만들어졌고. 그안에도 많은 파일과 폴더가 있다.

2) temp에 풀은 파일들의 MD5, SHA1 정보를 xml파일로 저장하기 위해

명령 : fciv -add c:\temp -r -both -bp c:\temp -xml C:\xp_sp3.xml

-r 옵션을 줘야 하위폴더의 파일까지 적용.

-bp

(이 옵션 없이 실행하면 항상 각 파일의 전체 경로가 xml에 저장됩니다.

-bp c:\temp의 의미는,

c:\temp\test1\a.exe라는 파일 경로가 있을 때, 이 경로 그대로 저장하지 않고,

c:\temp를 기준으로 해서. test\1\a.exe로 경로를 저장하라는 의미 입니다.)

-xml c:\xp_xp3.xml 옵션으로 c:\xp_sp3.xml이란 파일로 저장하였다.

처리된 파일수는 위의 i386등록정보 파일 수와 같지만, 폴더는 2개가 추가되어있는데,

Temp입장에서 볼때 i386도 포함하고 Temp자신도 포함되었기 때문인듯하다.

그러나 bp옵션으로 Temp경로를 제거 했기떄문에 문제는 없었다.

↓ c:\xp_sp3.xml 파일의 내용 ↓

폴더구조 포함해서 모든 파일들의 MD5와 SHA1 정보가 저장되었다.

[xml 파일에 hash값이 그대로 저장되는 줄 알았는데,

그 hash값을 이끌어내기위한 다른 값이 저장되는 것 같다.]

3) Temp 폴더 안의 i386폴더를 Temp2로 그대로 복사하고, 몇가지 파일을 변경시켰다.

변경시킨 파일 :

C:\Temp2\i386의 _networkingperfcounters.ini

C:\Temp2\i386\asms\10\msft\windows\gdiplus의 gdiplus.cat

삭제한 파일 :

C:\Temp2\i386\drw의 dwwin.exe

C:\Temp2\i386\lang의 chajei.im_

4) 변경되거나 삭제된파일이 무엇인지 FCIV를 통해 알아보기 위해.

명령 : fciv -v -bp c:\temp2\ -r -xml c:\xp_sp3.xml

xp_sp3.xml을 불러와서

temp2폴더 경로를 기준으로 잡아 (-bp c:\temp2\)

temp2 하위 폴더의 모든 파일들을 (-v)옵션으로 검증했다.

["-bp 경로"옵션이 없는 상태에서 검증을 실행하면

FCIV를 실행한 경로에서 검증할 파일을 찾습니다.

검증할때는 -r옵션없이도 하위폴더의 파일들을 검증 할 수 있습니다.

아마도.. 이미 xml에 하위 폴더 파일의 경로정보가 저장되서 사용할 필요가 없는 것 같네요.]

예상대로 미리 변경하거나 삭제한 파일들을 잘 찾아냈다.

[만약 xml을 저장할 때 -sha1옵션을 써서 저장을 했다면,

검증할때도 -sha1옵션을 붙혀 주어야 합니다.

아무 옵션이 없을때 md5값만 검사하므로.. sha1만저장되어있는 xml파일을 읽으면,

그냥 처리하지도 않고 성공했다고 나오네요..]


그냥 두서없이 적은 것 같습니다.

저는 md5값이나, sha1값이 그대로 xml에 저장되는 줄 잘못 알고 있었습니다.

It shoud be 값을 복사해서 Xml파일 열어서 검색 했을때 왜 안나오지?하며 삽질한 것 같은..ㅠㅠ

(xml에 저장된 값은 뭘의미하는지 모르겠네요...

명령프롬프트에 출력되는 값은 hash값인데, xml에 기록된 값은 무엇인지?)

md5나 sha1에대해서, 잘 모르고

그냥 무작정 해시값만 같게 나오면 파일 변경이 없었다는 것만 알고 있었거든요..^^

변화되어선 안될 파일들이 있을때 xml에다 해시값을 비교해낼 정보?를 저장해두고,

어떤 파일이 변화 되었는지 감지할 때, 유용할 것 같습니다.