git의 경우에는 svn과 다르게 삭제된 파일의 복구가 간단하지 않습니다.(물론 svn과 비교한다면 말이죠..) svn은 삭제된 파일도 아래 명령어로 간단하게 되살릴 수 있습니다.svn up (update) 하지만 git의 경우에는 아래와 같은 절차가 필요합니다.[oops@ ]$ git ls-files -d // 삭제된 파일 리스트 확인README[oops@ ]$ [oops@ ]$ git checkout README[oops@ ]$ [oops@ ]$ git ls-files -d [oops@ ]$ 파일이 여러개인 경우 아래와 같이 사용할 수도 있습니다.[oops@ ]$ git ls-files -d | xargsREADMEMakefile[oops@ ]$[oops@ ]$ git ls-files -d | xar..
kernel에 개발을 하던 중 아래와 같은 error가 발생했습니다.error: invalid use of undefined type ‘struct address_space’ /proc/meminfo 의 정보 중 Cached 필드 값을 얻는 모듈을 가져다 쓰는 과정에서 발생을 했는데요,Cached는 아래와 같이 구해집니다. cached = global_page_state(NR_FILE_PAGES) - total_swapcache_pages - i.bufferram; 이 cached를 구하는 연산을 가져다 쓰려는데, total_swapcache_pages가 문제가 됐습니다.해당 define은 include/linux/swap.h 에 되어 있었고, 해당 파일은 정상적으로 include 되어있었는데 말이죠, ..
configure를 생성하기 위해서는 우선 autoscan을 활용해서 configure.ac를 생성하도록 합니다. autoscan은 configure.ac를 생성할 수 있도록 어느정도 자동화 되어 있는 툴입니다. configure.ac의 문법을 잘 모를때는 참 다행이 아닐 수 없겠네요, 기본 틀을 제공 받고 필요한 내용은 별도로 추가를 하면 되니까요. 우선 아래와 같이 autoscan을 활용해 봅니다. $ ls hello.c $ autoscan $ $ ls autoscan.log configure.scan hello.c autoscan을 하고 나면 configure.scan이라는 파일과 관련 log파일이 생성이 됩니다. configure.scan은 configure.ac와 동일한 파일입니다. autosc..
autotools란 autoconf나 automake와 같은 유틸리티들을 지칭한다고 하는데, wikipedia 에서 상세 정보를 볼 수 있습니다. wikepedia에서 아래 그림을 발췌하였고, 앞으로 그림에 있는 각 파일에 대해서 살펴보도록 합니다. (.ac는 autoconf의 약자고, .am은 automake의 약자로 보입니다.) 우선 테스트 할 수 있는 간단한 hello.c를 작성합니다. #include int main(void) { printf("Hello World \n"); return 0; } 앞으로 해당 코드를 autotools의 일환인 autoconf와 automake등을 적절히 사용해서 컴파일 하도록 합니다.
OpenSource를 받아서 보면 종종 볼 수 있는 파일 리스트가 있습니다.바로 아래와 같은 파일들인데요, $ ls AUTHORS Makefile.am SConstruct compile config.log configure.ac doc m4 tests COPYING Makefile.in aclocal.m4 config.guess config.status depcomp install-sh missing INSTALL NEWS autogen.sh config.h config.sub distribute.sh libtool src Makefile README config.h.in configure distribute.sh.in ltmain.sh stamp-h1 (웹 데몬인 lighttpd 의 소스 입니다.) 뭔..
윈도우7을 사용하면서 "사용 안 함"으로 설정 해 놓은 무선랜이 "사용"으로 변경되는 경우를 종종 보았습니다. (단축키가 존재하는 것인가요?) 윈도우+x 단축키를 이용해서 켰다면 해당 창이 떠있을텐데 말이에요. 그런데 무선네트워크가 "사용 안 함"으로 되어 있는 경우에는 윈도우+x 키에 보이는 모바일 센터에 무선랜 관련 설정이 보이지 않습니다. 아래 처럼 말이죠, 다시 무선네트워크를 활성화 시킵니다. 이제는 모바일 센터에서 무선 네트워크 설정이 정상적으로 보입니다. 이제 본격적인 이야기를 하면 [네트워크 연결]에서 Alt 키를 누르면 탭이 새로 보입니다. (파일, 편집, 보기, 도구, 고급, 도움말) 여기서 고급을 선택하고, 고급설정으로 들어갑니다. 그럼 연결 순서를 정할 수 있는 화면이 나오는데요, 기..
shell에서 awk의 내장함수인 substr은 문자열 전체가 아닌 일부를 비교할때 사용합니다.아래 예제를 살펴봅니다. #!/bin/sh echo | awk '{ print substr("my name is oops",12,4)}' 입력 받은 "my name is oops"에서 12번째 자리인 o 부터 4개를 출력합니다.응용하면 아래와 같은 코드도 구현할 수 있습니다. #!/bin/sh NAME=`echo | awk '{name=substr("my name is oops",12,4);print name}'` echo -n "name?" echo $NAME 실행 결과는 다음과 같습니다. $ ./oops name?oops 이렇게 되면 NAME 변수를 코드 내에서 활용할 수 있게 되겠지요? 이외에도 내장함수는..
mail()함수 사용시에 수신측 body에 !(느낌표)가 중간중간 삽입되는 경우가 발생합니다. 이때는 여기를 참고해서 처리하도록 합니다.(혹시 링크가 열리지 않을 경우..)// 1000자 이상에서 ! 생기는것 방지 (아래 2줄) $add_mailheader="Content-Transfer-Encoding: base64 \r\n"; $body = chunk_split(base64_encode($body)); mail($to,$subject,$body,"Content-Type: ".$content_type."; charset=euc-kr\r\n".$add_mailheader.$shopname."\r\n"); 반나절간의 삽질이.. 삽질로 끝나지 않아서 다행입니다...ㅠㅠ
php 실행 시에 입력 받은 인자의 종류가 다양할때 옵션 처리가 필요합니다. argc와 argv[]로도 가능하지만 코드가 지저분해질 염려가 있으니까요. 이럴때 필요한 함수가 getopt 입니다. 우선 아래 코드를 봅니다. char는 "-"로 구분되는 옵션이고, string은 "--"로 구분되는 옵션입니다. 뒤에 ":"는 옵션 뒤에 인자를 필수로 입력 받는다는 의미 입니다. 아래와 같은 결과를 얻을 수 있습니다.oops$ php getopt.php --i386 --compile=busybox array(2) { ["i386"]=> bool(false) ["compile"]=> string(4) "busybox" } compile true i386 true oops$ php 버전에 따라 $longopts 는..
기본적으로 ssh접속시에 key 교환 알고리즘은 아래와 같습니다. 내용은 wireshark로 server key init 의 내용입니다. 하지만 때로는 보안상의 이유로 key교환 알고리즘의 종류를 변경해야 합니다. 요즘은 모든 통신이 sha2 이상이어야 한다지요? 그래서 OpenSSH 6.3p1 의 key.c 내용을 수정해서 sha2에 해당하는 "diffie-hellman-group14-sha1"만 사용하도록 수정한 wireshark내용 입니다. 통신에 사용되는 알고리즘의 경우에는 sshd_config 를 수정해서 가능했는데, 기본적으로 key교환 알고리즘은 config를 통해서는 제어 할 수 없나 봅니다..
특정 폴더에 있는 script를 실행하는 shell을 작성해야 할 일이 생겼습니다. 해당 경로에 있는 script를 하드코딩으로 실행해도 되겠지만, 나중에 리스트가 많아지는 경우를 생각해서 확장성에 초점을 맞춘 코드 입니다.#!/bin/sh APPS_SCRIPT=/test/apps/ if [ -e "$APPS_SCRIPT" ]; then SCRIPT_LIST=`ls $APPS_SCRIPT` for SCRIPT in $SCRIPT_LIST; do $APPS_SCRIPT/$SCRIPT done fi shell의 if 문법과 for, 말고는 특별한 내용은 없습니다.
lighttpd와 php를 웹서버로 사용할 때 취약성 부분입니다. 웹사이트 주소를 아래와 같이 입력 했을때 phpinfo()의 내용이 출력되는데요. https://192.168.0.10/test.php/?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000 (test.php 는 php형태를 갖추는 파일만 존재하는 상태입니다. 내용물에는 실제 코드가 없습니다.) 해당 취약성은 php.ini의 수정을 통해 감출 수 있습니다. php.ini에 아래 내용을 추가하고 php를 재시작하도록 합니다. expose_php = off 그리고 웹서버에 접속해보면 내용이 더이상 출력 되지 않습니다. 이런 사소한 부분도 CC에서는 취약성에 걸린다고 하네요~ [ expose_php = off ] 외에도 ph..
아래와 같은 데이터가 있습니다. mysql> select sipv4,timestamp,bytes from oops; +-----------+-----------+---------+ | sipv4 | timestamp | bytes | +-----------+-----------+---------+ | 171115273 | 9 | 40 | | 169152406 | 10 | 2772021 | | 169152406 | 10 | 142312 | | 174325910 | 10 | 51029 | | 169152406 | 11 | 1254172 | | 171115273 | 15 | 3192 | | 169152406 | 14 | 132 | | 169152406 | 15 | 11516 | | 171115273 | 16 ..
http://www.slideshare.net/einsub/svn-git-17386752
AhnLab ISF2013에 왔습니다. 기회가 되면 매년 오려고 하는데 2년만이네요, 오랜만에 찾은것에 비하면 새제품이나 새로운 기술에 대한 이야기가 적어서 약간 아쉬웠는데요, 그래도 역시 규모면에서는 상당합니다. 코엑스에 각섹션을 설치해서 운영했는데요 APT는 언제 들어도 유익하고 디지털 포렌식에 대한 섹션이 꽤 인상적이었습니다 통역기를 받지 못해서 오프닝 섹션은 약간 힘들었습니다;; 내년에는 더 많고 유익한 내용을 기대해봅니다^^ (이건.. 인증용 명찰 ^^;;)
mysql 에서 결과 컬럼을 합쳐야 할 필요가 있을때가 종종 있습니다.예를들어 아래와 같은 테이블이 있습니다. mysql> select * from new_table; +------+------+-------+-------+-------+ | num | name | descr | sipv4 | dipv4 | +------+------+-------+-------+-------+ | 1 | oops | test | 111 | 222 | | 2 | oops | test | 111 | 333 | | 2 | oops | test | 123 | 122 | | 2 | oops | test | 148 | 843 | +------+------+-------+-------+-------+ 4 rows in set (0...
기본적으로 linux 터미널은 검은색 바탕에 흰색 글씨인데요, 아래와 같은 방법으로 콘솔에 출력되는 글씨의 색상을 지정할 수 있습니다. 우선 글씨 색상을 해제하는 방법부터 확인을 합니다. $ echo -e "\x1b[0m" 그리고 글씨 색상 지정을 알아봅시다.$ echo -e "\x1b[31mTEST (RED)" 빨강으로 표시된 곳이 글씨 색상을 좌우하는 필드입니다. 색상 종류는 아래와 같이 31~37까지 지원합니다. (해제하지 않으면 계속 설정한 색상으로 출력되기 때문에 꼭 해제하도록 합니다) 글씨색 뿐만아니라 배경 색도 아래처럼 지정할 수 있습니다. 이때는 41~47 까지 색상을 지원합니다. 작은 팁이기는 하지만, print 로 디버그 메시지를 출력할때 강조 할 수 있기 때문에 참 좋습니다 :)ex)..
Application 에서 call trace 를 출력하고, 해당 주소를 코드상에서 찾으려면 애플리케이션 compile시에 gcc 옵션으로 -g 를 사용해야 합니다. 그리고 코드상에 call trace를 출력할 수 있도록 __builtin_return_address() 를 사용합니다. openlog("oops", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1); syslog(LOG_DEBUG,"oops : Signal happened (%d)\n", nSignal); syslog(LOG_DEBUG, "01 - 0x%08x \n", (int)__builtin_return_address(0)); syslog(LOG_DEBUG, "02 - 0x%08x \n", (int)__bu..
- Total
- Today
- Yesterday