2009년 7월 23일 목요일

Unix: telnet, ftp, ssh 서비스 실행 및 종료

* 서비스 확인
# svcs -xv (서비스명)
# svcs -xv ftp
# svcs -xv ssh
# svcs -xv telnet
svc:/network/telnet:default (Telnet server)
 상태: disabled(2009년 1월  1일 월요일 오전 01시 02분 03초 이후)
이유: 관리자가 비활성화했습니다.
   참조: http://sun.com/msg/SMF-8000-05
   참조: man -M /usr/share/man -s 1M in.telnetd
   참조: man -M /usr/share/man -s 1M telnetd
영향: 이 서비스가 실행되지 않습니다.


* 서비스 활성화
# svcadm enable (서비스명)

* 서비스 비활성화
# svcadm disable (서비스명)

* 서비스 재시작
# svcadm restart (서비스명)

* ssh 에서 root 로그인 설정
# vi /etc/ssh/sshd_config
PermitRootLogin yes


* telnet 에서 root 로그인 설정
# vi /etc/default/login
#CONSOLE=/dev/console



2009년 7월 17일 금요일

Firefox 3.5.1

* 패치원문정보 : http://www.mozilla.com/en-US/firefox/3.5.1/releasenotes/
* 패치변역정보 : http://translate.google.com/translate?hl=ko&u=http%3A%2F%2Fwww.mozilla.com%2Fen-US%2Ffirefox%2F3.5.1%2Freleasenotes%2F

아.. 내가 생각해도 성의 없는 링크;;;

FF에서도 자동 업그래이드를 지원한다..

어쨋던 업글하자..

tag cloud 에서 IE 문제?

* IE 에서 tag cloud 사용시 깨짐 현상 발견
참조 블로그 : http://ok-dj.com/45

- FF 와 IE 에서 tag cloud 를 클릭 후 다음 페이지로 넘어갈 때 다음 페이지 및 각각 요소들의 HTTP로 요청시에 Referer: 값이 서로 다르다는걸 확인 할 수 있음.
- IE 의 Referer: http://rinuxer.byus.net/textcube/tagcloud.swf
- FF 의 Referer: http://rinuxer.textcube.com/(기존페이지URL)
- IE 의 기존 페이지 정보값때문에 403 Forbidden 오류가 발생;; (왠 권한 문제 -_-)

- Referer 정보가 없다면 제대로 출력이 된다....

** 그런데!! 각종 지식을 동원해서 해결하는 과정에서 textcube.com 의 서버 설정이 바뀐모양이다-_-; 즉 해결이 되어버린것이다.. textcube.com 에서 내가 고생하는걸 알고 고쳐준 모양이다 -_-;;

2009년 7월 11일 토요일

public free proxy server (공짜 proxy 설정하기)

* 피시방에서 FF3.5 를 설치하고 adobe flash player 를 설치할려하는데 도저히 접속이 되지 않았다.. 이번 DDOS 인터넷 대란때문에 네트웍이 막힌건지 adobe 사이트가 공격당한건지.. 사이트를 닫은건지..

* 그래서 사이트가 죽었는지 확인할 방법이 필요했다

펼쳐두기..


* proxy server 란?
위키백과 : http://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9D%EC%8B%9C_%EC%84%9C%EB%B2%84
본인의 PC에서 해당 웹서버로 직접 접속이 아닌 중간 서버를 이용하여 대신 웹서버로 접속하여 데이터를 얻어오는 중계서버이다

* proxy server 리스트 확인
LINK1 : http://www.proxy4free.com/
LINK1-1 : http://www.proxy4free.com/page1.html
- IP, Port 를 확인
- Type anonymous 란: 사용자 인증을 받지 않고 사용가능하다는 말

* FF3.5 에서 proxy server 설정
- 도구 -> 설정 -> 고급 -> 네트워크 -> 연결 -> 설정 (Firefox가 인터넷에 연결하는 방법을 선택합니다.)

- proxy 설정
- 프록시 수동 설정
- HTTP 프록시 : proxy server IP 입력
- 포트 : proxy server Port 입력

* 설정이 완료 되었다. 시간이 조금 걸리겠지만 접속이 될것이다.

* 만약 proxy server 가 죽어있을 수 있다. 어떻게 확인할 것인가?
command 창에서 telnet 219.101.35.83 3128 하였을 경우 접속이 된다면 성공한 것이다.
'연결 대상 219.101.35.83...호스트에 연결할 수 없습니다. 포트 312: 연결하지 못했습니다.' 라는 메시지가 뜬다면 아쉽게도 그 proxy server 는 문을 닫은 것이다 다른 서버를 찾아 봐야한다

* IE 에서도 proxy server 설정이 있다. 도구 -> 옵션 -> 연결 -> LAN 설정

CCL 달기

* 한글 홈페이지 : http://www.cckorea.org/

1. 우측 상단의 다음 이미지 링크로 이동

2. 자기 정보를 간단히 입력

3. 원하는 라이센스 표시 이미지를 선택

4. 바로 하단의 소스코드를 모두 복사

5. 꾸미기 -> 스킨편집에서 다음 위치에 삽입
* 저같이 CCL 표시 부위에 배경색을 넣고 싶다면

펼쳐두기..




2009년 7월 9일 목요일

7.7 DDOS 공격

7.7일부터 말이 많던 문제가 7.9일까지 문제가 발생하고 있다

처음엔 많은 피시들이 여러 사이트들을 다양하게 공격을 하다가

지금은 더 많은 피시들이 정해진 홈페이지 서버들을 공격하고 있다

지금 대표적으로 '국민은행', '옥션'등이 많은 공격을

받았다가 다시 풀리는 분위기다


그런데 이상한 말들이 흘러 나온다. 배후가 북한이니 어쩌고....

무슨 근거로 배후가 누구라고 딱집어서 말할 수 있는가? 증거는 있는가?

만약 배후가 국내 또는 외국에 있는 특정 누구라고 증거 없이 지목했을 때 명예회손으로 고소한다면?


흠.. 지금과 같은 DDOS 공격에 대한 배포 및 공격 명령자를 찾는건 불가능에 가깝다.

시간과 노력을 들인다면 범위는 좁힐 수 있을지도 모른다.

우선 배포의 흐름을 감염 PC를 기준으로 감염 경로를 찾고 감염경로가 된

중간 서버들에게서 감염시키는 코드를 심은 경로를 찾는 등 작업이 많이든다

그리고 감염된 코드소스에서 여러가지 정보를 기초로 특정 해커그룹등을 유추해서

찾는 수 밖에 없을 듯하다.


지금 국내의 보안에 대한 지식이 너무 부족하다 전문기업에서부터 개인까지

특히나 기업등에서의 사장님부터 보안에 대한 투자가 거의 없다.

남들 하는 정도의 방화벽등등의 기본 솔루션만 가져다 쓰고 있다.

물론 은행권이나 민감한 곳은 많은 투자를 하고 있지만 대부분이 그렇다.

만약 문제가 생겼다면 해당 문제를 덮기 바쁘다.. 그리고 더 중요한건 문제가 생긴줄도 모른다는거다..


Firefox screen shot Addons - fireshot

* Firefox Addons
https://addons.mozilla.org/ko/firefox/

* FireShot Addons
https://addons.mozilla.org/ko/firefox/addon/5648
https://addons.mozilla.org/ko/firefox/downloads/latest/5648/platform:5/addon-5648-latest.xpi

* 사용 후기







- 설치가 완료가 되면 주소표시줄 오른쪽 끝에 아이콘이 생기며 (한글화가 잘되어 있습니다. 100%는 아니지만..)
- 간편 클릭 또는 팝업메뉴를 통해서 원하는 기능을 수행 할 수 있습니다

- 복잡하게 보일지 몰라도 화면 중앙에는 스크린샷을 찍은 이미지 상단에는 메뉴 버튼 우측에는 세부 메뉴가 나옵니다.
- 간단하게 편집도 가능합니다.

- 결론적으로 Firefox 사용하면서 웹페이지를 빠르게 스샷을 찍어야할 경우 굉장히 편합니다.^^

tag cloud 를 달자

제 블로그 우측에 구현된 tag 위젯을 다는 방법


1. 내 블로그 관리 -> 꾸미기 -> 스킨편집


2. 스킨 편집

2-1. 파일 업로드
(압축을 풀어서 업로드)
(textcube에 첨부물로 올려 링크걸려하니 swf가 정상동작 하지 않더군요;;;;)

2-2. 소스코드 삽입

 ** swfobject.js, tagcloud.swf 위치 지정에서 (Server) 부분을 업로드 한 위치로 바꿀것

소스



3. 저장 후 내 블로그 관리 -> 꾸미기 -> 위젯에 가면 '태그 클라우드' 위젯을 원하는 위치에 삽입하면 됨

* 위 swfobject.js, tagcloud.swf 의 소스 코드 제작은 제가 하지 않았으며 언제... 받은지 어디서 받았는지 조차 기억이 나지 않내요 ㅠㅠ
* 혹시 저작권 문제가 된다면 따로 연락 주시면 조치하겠습니다

2009년 7월 7일 화요일

텍스트큐브에 둥지를 틀다

여러번의 홈페이지, 여러번의 블로그를 시대의 흐름에 맞게 잠깐씩 써봤습니다

별볼일 없는 일상과 바쁜일로 일과 게임으로 인해 잊혀진 홈페이지와 블로그를

접게 되었지요

하지만 여기에서만큼은 지나온 기억과 앞으로 있을 기억을 하나씩 남겼으면

좋겠내요^^


기억에서 지워지더라도 블로그는 영원하기를...

저에게 하고 싶은 말이 있으신가염?

여기에 립플을 달아주세요~

FireFox 3.5

firefox 3.0 부터 써왔지만 3.5 무지 빠름... 왠만한 사이트들은 100% 호환이 되고 너무 좋은듯

http://www.mozilla.or.kr/ko/

File 쓰기

wf_filewrite ( string as_filepath, blob ablb_file ) return (none)

int li_FileNum, li_x, li_loops
long ll_FileSize, ll_rtn, ll_pos, ll_len, ll_bytes_write
Blob lb_data, lb_dw
String ls_filename

IF FileExists(as_filepath) THEN
    FileDelete(as_filepath)
END IF

ll_FileSize = Len(ablb_file)

IF ll_FileSize > 32765 THEN
    IF Mod(ll_FileSize,32765) = 0 THEN
        li_loops = ll_FileSize/32765
    ELSE
        li_loops = (ll_FileSize/32765) + 1
    END IF
ELSE
    li_loops = 1
END IF

li_FileNum = FileOpen( as_filepath, StreamMode!, Write!, LockWrite!, Replace!)

ll_bytes_write = 0
FOR li_x = 1 to li_loops
    ll_pos = ( li_x - 1 ) * 32765 + 1
    ll_len = ll_FileSize - ll_pos + 1
    ll_bytes_write += FileWrite(li_FileNum, blobmid( ablb_file, ll_pos, ll_len ) )
NEXT

IF ll_FileSize <> ll_bytes_write THEN
    MessageBox( "Error", "Write Error, comp len:" + string( ll_FileSize ) + ", write:" + string( ll_bytes_write ) )
END IF

FileClose(li_FileNum)


File 읽기

wf_fileread ( string filepath ) return blob

int li_FileNum
blob lb_Body
long ll_FileLength

li_FileNum = FileOpen( filepath, StreamMode!, Read!, LockRead!)

FileReadEx (li_FileNum, lb_Body)

FileClose (li_FileNum)

return lb_Body


String Null Check

* nul ( string s ) return string

if IsNull (s) = true then
   return ""
end if

return s


BLOB 에 저장된 OLE Type BMP 저장 2

function long oletobmp (blob filename) library "xw_lib.dll"

int rtn
string ls_filename

ls_filename = "c:\log\image.bmp"
rtn = oletobmp (blob (ls_filename, EncodingANSI!))

if rtn = 0 then
    FileDelete (ls_filename)
    FileMove (ls_filename + ".out", ls_filename)
end if

* 외부 DLL 파일을 이용하여 OLE BMP 파일을 BMP 이미지를 얻어내는 소스


BLOB 에 저장된 OLE Type BMP 저장 1

ole2img ( blob lb_ole_data ) returns blob

long ll_len, ll_index
blob lb_bm

ll_len = Len(lb_ole_data)
ll_index = 1
   
lb_bm = blob("BM", EncodingANSI!)
   
do while ll_index <= ll_len
      if BlobMid(lb_ole_data, ll_index, 2) = lb_bm then exit
      ll_index++;
loop
   
return BlobMid(lb_ole_data, ll_index, ll_len - ll_index)


* PB 에서 위와 같이 검색 알고리즘을 이용하여 BMP Image 파일을 얻어 낼 수 있지만 너~무 느려서 위의 알고리즘과 같은 역할을 하는 DLL 파일을 만들어 외부 호출을 통해 해결하는 것이 좋음

BLOB 데이터 가져와 저장

get_file ( double keyseq ) return blob

int        li_cnt
blob      lb_file

select count(1) into :li_cnt
    from datafile
    where keyseq = :keyseq
    using SQLCA;

if li_cnt = 1 then

    selectblob imgfile into :lb_file
        from datafile
        where keyseq = :keyseq
        using SQLCA;
end if

return lb_file


DataWindow 사용시 SetTransObject, SetTrans

* DW 를 사용하여 데이터를 얻어 올시에 사용하는 명령어로는 SetTransObject, SetTrans 둘중에 하나를 사용합니다. 그럼 이 2가지의 특징은?
SetTransObject : "connect using SQLCA" 의 명령어를 이용하여 직접 DB 에 연결하고 사용

장점 : PB 에서 DB 연결을 하나의 connection pool 을 이용하여 DB 의 connection 부하를 최대한 줄이고 connection에 대한 약간의 속도 향상
단점 : connection TimeOut 으로 끊어지는등 connection 이 끊어진다면 다시 DB connect 를 다시 해주어야함. PB 하나당 하나의 DB connection 을 유지하고 있으므로 아주 많은 사용자가 사용시 많은 connection 으로인한 메모리 누적으로 DB Server 의 부하를 발생시킬 수 있으며 자주 사용하지 않는 사용자가 많을 시에 더욱더 DB Server 에 필요없는 자원을 차지하는 문제가 발생

SetTrans : 따로 DB 연결을 해놓을 필요 없으며 SetTrans 명령이 실행될때 SQLCA 의 정보를 기준으로 접속하여 query 실행 후 연결을 끊습니다.
장점 : 잠깐씩 DB 에 접속하여 query 할 경우 심플한 코딩을 할 수 있으며 DB 에 connection 을 유지 할 필요가 없음.
단점 : 아주 많은 회수의 query 를 할경우 DB connection 이 너무 많이 자주 일어나 DB Server 에 많은 부하가 생길 수 있음


FullPath 에서 File 이름만 얻기

get_filename ( string filepath ) returns string

int i1
int i2

i2 = len (filepath)
for i1 = i2 to 1 step -1
    if mid (filepath, i1, 1) = "/" or mid (filepath, i1, 1) = "\" then
        return mid (filepath, i1 + 1)
    end if
next

return filepath


File 확장자명 얻기

get_ext ( string filename ) returns string

int i1
int i2

i2 = len (filename)
for i1 = i2 to 1 step -1
    if mid (filename, i1, 1) = "." then
        return mid (filename, i1 + 1)
        exit
    end if
next

return filename


특수문자 교체

func_specialcharacter ( string str ) returns string

str = func_replace (str, "&", "&amp;")
str = func_replace (str, "<", "&lt;")
str = func_replace (str, ">", "&gt;")
str = func_replace (str, "'", "&apos;")
str = func_replace (str, "~"", "&quot;")

return str


string 특정 문자열 전부 교체

func_replace ( string str, string old_str, string new_str ) returns string

long start_pos = 1

start_pos = Pos(str, old_str, start_pos)

DO WHILE start_pos > 0

str = Replace(str, start_pos, Len(old_str), new_str)

start_pos = Pos(str, old_str, start_pos+Len(new_str))

LOOP

return str

DB 접속

* SQLCA 설정 (DB 마다 설정이 다를 수 있습니다)
// Oracle 8.x 접속
SQLCA.DBMS = "O84 Oracle8/8i (8.x.4+)"
SQLCA.LogPass = "PassWorld"
SQLCA.ServerName = "tnsname"
SQLCA.LogId = "Login ID"
SQLCA.DBParm = "DisableUnicode=1"


* DB 접속
counnect using SQLCA

if SQLCA.sqlcode <> 0 then
   return -1
end if

return 0


* DB 접속 끊기
disconnect using SQLCA


Folder 생성

createdir ( string dir_name ) returns integer

long ll_pos
long ll_len
long ll_rtn
string ls_dir
string ls_a

ll_len = len (dir_name)

ls_dir = ""
for ll_pos = 1 to ll_len
    ls_a = mid (dir_name, ll_pos, 1)
   
    if ls_a = "\" or ls_a = "/" or ll_pos = ll_len then
        ls_dir += ls_a
       
        if DirectoryExists (ls_dir) = false then
            if CreateDirectory (ls_dir) <> 1 then
                return -1
            end if
        end if
    else
        ls_dir += ls_a
    end if
next

return 0


Folder

* 현재 path 확인
String = GetCurrentDirectory ()
string ls_path
ls_path = GetCurrentDirectory ()

* 폴더 확인
DirectoryExists (<path>)
if DirectoryExists ("c:\log") = false then
   return
end if

* 폴더 만들기
CreateDirectory (<path>)

* 폴더 삭제
RemoveDirectory (<path)


File

* File 존애 여부 확인
FileExists (<파일 위치>)
if FileExists ("c:\test.txt") = false then
   return
end if

* File 복사
FileCopy (<원본 파일 위치>, <복사할 파일 위치>)
FileCopy ("c:\test.txt", "d:\log\test_090101.txt")

* File 이동
FileMove (<원본 파일 위치>, <이동할 파일 위치>)
FileMove ("c:\test.txt", "d:\log\test_090101.txt")

* File 삭제
FileDelete (<파일 위치>)
FileDelete ("c:\test.txt")

가변 배열형 변수의 사용

* 가변 배열형 변수란?
배열형 변수 생성시 배열의 길이를 지정하지 않고 구동중에 자유롭게 길이가 늘어나는 배열을 말합니다.

* 가변 배열의 선언
string ls_id[]
int li_user[]

* 가변 배열에 값 넣기
string ls_id[]
ls_id[1] = "aaa"
ls_id[2] = "bbb"

* 가변 배열의 길이 알아 내기
string ls_id[]
int li_len

ls_id[1] = "aaa"
ls_id[2] = "bbb"
li_len = UpperBound (ls_id)
// ls_len = 2

* 기변 배열 초기화
string ls_Null[]
string ls_id[]

ls_id[1] = "aaa"
ls_id[2] = "bbb"
ls_id = ls_Null

* 가변 배열의 내용을 차례대로 얻기
string ls_id[]
int li_len
int i

ls_id[1] = "aaa"
ls_id[2] = "bbb"
li_len = UpperBound (ls_id)

for i = 1 to li_len
   MessageBox ("", ls_id[i])
next

*가변배열의 인자값을 처음부터 사용하지 않을 경우?
string ls_id[]

ls_id[1] = "aaa"
ls_id[4] = "bbb"

// 다음과 같이 변수가 설정 됩니다
// ls_id[1] = "aaa"
// ls_id[2] = ""
// ls_id[3] = ""
// ls_id[4] = "aaa"
// UpperBound (ls_id) = 4

* 주의점
가변 배열의 전체 길이보다 높은 인자값을 줄경우 오류가 발생

HTML Objests 정보

LINK :MSDN Library
http://msdn.microsoft.com/en-us/library/default.aspx

LINK : DHTML Objects
MSDN Library ▶ Web Development ▶ HTML and CSS ▶ HTML and DHTML Reference ▶ Objects
http://msdn.microsoft.com/en-us/library/ms533054%28VS.85%29.aspx

while

* sh
#!/bin/sh

while [ 1 ]
do
   clear
   date
   ls -al
   sleep 1
done

* csh
#!/bin/csh

while 1
   clear
   date
   ls -al
   sleep 1
end

backspace 적용이 안될때

* 터미널에서 백스페이스(backspace) 를 눌렀을 경우 이상한 문자가 나와 앞 글자가 지워 지지 않을 경우

# stty erase <backspace key>

csh 에서 prompt 에 path 보이기

* .cshrc
set history=100

alias cd 'cd \!*; set prompt="[`/usr/ucb/whoami`:`pwd`] "'

cd


awk

* sh
#/bin/csh
ps -ef | grep httpd | grep -v grep | awk '{print $1 " " $2 " " $9}'

* Link
Daum - AWK [AWK (프로그래밍 언어), AWK 프로그래밍 언어]

OS bit

* AIX
# bootinfo -K
# getconf WORD_BIT
# getconf KERNEL_BITMODE

* solaris
# isainfo -b

* HP
# getconf KERNEL_BITS

Linux: 실행 파일 경로 찾기

* 찾고자 하는 파일의 위치를 알 수 있다 (단 path 에 설정된 기준으로 찾는다)

# which <filename>

Linux: LANG (언어설정)

* bash 의 경우 설정
# set LANG=ko_KR.eucKR
# export LANG

Linux: cd mount

* CD 와 연결할 폴더 만들기
# mkdir -p /mnt/cdrom

* CD 연결
# mount /dev/cdrom /mnt/cdrom

Linux: cd2iso

* 이미지 만들기
# dd if=/dev/cdrom of=/stage/Disk1.iso

* 이미지 연결
# mount -oloop /stage/Disk1.iso /mnt/cdrom

* 이미지 연결 끊기
# umount /mnt/cdrom