'Linux/일반'에 해당되는 글 8건
- 2011/10/10 C기반의 Echoserver
- 2011/09/30 TCP 커넥션 콘솔에서 닫기
- 2011/09/21 CURL 을 이용한 POST 전송
- 2009/03/22 Openssl AES library 사용하기
- 2009/02/14 쪽팔려;; 리눅스 - 모두다 Y \
- 2008/09/29 커널 2.6의 모듈 제작
- 2008/09/28 리눅스 커널 컴파일 하기, FC6 - 커널 소스 설치하기
- 2008/01/06 버퍼오버 플로우 - 고광선 교수님
Linux/일반2011/10/10 10:26
Linux/일반2011/09/30 10:34
tcpkill commandUse tcpkill command to kill specified in-progress TCP connections. It is useful for libnids-based applications which require a full TCP 3-whs for TCB creation. Syntax:tcpkill -i eth0 { expression } Examples:(a) Kill all outgoing ftp (port 21) connection:tcpkill -i eth0 port 21 (b) Kill all all packets arriving at or departing from host 192.168.1.2 (host12.nixcraft.com)tcpkill host 192.168.1.2 ORtcpkill host host12.nixcraft.com (c) To kill all IP packets between 192.168.1.2 and any host except 192.168.1.111, type the following: tcpkill ip host 192.168.1.2 and not 192.168.1.111 |
참고:http://www.cyberciti.biz/howto/question/linux/kill-tcp-connection-using-linux-netstat.php
Linux/일반2011/09/21 16:11
Linux/일반2009/03/22 22:30
이 글은 Openssl에 AES에 대한 예제파일이 없어서 작성 하였다.
Openssl에서 AES코드를 가져와 사용하는 방법에 대해서 알아 보자
C언어로 작성된 보안 알고리즘이 필요하다, 당신은 어떻게 하겠는가?
난 주저 없이 Openssl에서 필요한 알고리즘 구현을 뜯어온다.
1. Openssl에서 AES뜯어내기
http://www.openssl.org 에서 압축된 것을 받아서 압축을 풀면 아래와 같은 화면을 볼 수 있다.
암호화 알고리즘과 해쉬는 crypto 디렉토리에 있다.
해당 폴더에 들어가면 우리가 일반적으로 알고있는 주요 알고리즘 외에 많은 알고리즘을 볼 수 있다.
aes디렉토리에 들어가면 AES알고리즘의 구현을 볼 수 있다.
보통 다른 알고리즘은 이 디렉토리에 예제 파일이 있고 여기서 make를 하면 해당 알고리즘만 컴파일이 된다.
하지만 AES는 예제 파일이 없다... 다른 알고리즘은 해당 디렉토리 혹은 <Openssl디렉토리>/test에 테스트파일이 있다.
이 소스를 수정하기 위해서 aes디렉토리를 원하는 곳으로 복사를 한다.
이제 해야할 것은 컴파일을 해보는 것이다.
하지만 당연히 컴파일은 되지 않는다. 몇가지 문제가 있는데
메이크 파일 작성
일단 Makefile을 수정해야 합니다. 원하시는대로 수정 하시면 될꺼 같구요 저는 아래와 같이 하였습니다.
openssl 종속성 줄이기
이제 파일들을 모두 열어서 include 종속성들을 제거 해야합니다.
#include <openssl/~~~> 형식들을 #include "~~~~"로 바꾸어야 합니다.
사실 임베디드 환경에서 사용하거나 최적화를 한다면 이런식으로 대충 하면 안되겠죠?
필요한 파일들은 e_os.h, e_os2.h, opensslv.h opensslconf.h
또한 aes_wrap.c 를 삭제 해야 합니다. 이 파일은 aes를 이용해서 키를 wrapping하는 알고리즘을 구현 하고 있습니다. 알고리즘의 rfc는 3394( http://www.ietf.org/rfc/rfc3394.txt )입니다.
만약 이 알고리즘을 사용하면서 openssl에서 떼어내기를 원한다면 crypto.h cryptolib.c cryptolib.h mem.c mem_clr.c과 연결되어 있는 종속을 해결 하면 됩니다.
Openssl에서 AES코드를 가져와 사용하는 방법에 대해서 알아 보자
C언어로 작성된 보안 알고리즘이 필요하다, 당신은 어떻게 하겠는가?
난 주저 없이 Openssl에서 필요한 알고리즘 구현을 뜯어온다.
1. Openssl에서 AES뜯어내기
http://www.openssl.org 에서 압축된 것을 받아서 압축을 풀면 아래와 같은 화면을 볼 수 있다.
암호화 알고리즘과 해쉬는 crypto 디렉토리에 있다.
해당 폴더에 들어가면 우리가 일반적으로 알고있는 주요 알고리즘 외에 많은 알고리즘을 볼 수 있다.
aes디렉토리에 들어가면 AES알고리즘의 구현을 볼 수 있다.
보통 다른 알고리즘은 이 디렉토리에 예제 파일이 있고 여기서 make를 하면 해당 알고리즘만 컴파일이 된다.
하지만 AES는 예제 파일이 없다... 다른 알고리즘은 해당 디렉토리 혹은 <Openssl디렉토리>/test에 테스트파일이 있다.
이 소스를 수정하기 위해서 aes디렉토리를 원하는 곳으로 복사를 한다.
이제 해야할 것은 컴파일을 해보는 것이다.
하지만 당연히 컴파일은 되지 않는다. 몇가지 문제가 있는데
- Makefile이 우리가 원하는 대로 실행파일을 만드는 것이 아닌 정적라이브 러리를 만든다.
- aes_cfb.c파일에서 e_os.h파일을 필요로 한다.
- aes_wrap.c 파일은 openssl에서 알고리즘들의 일반화를 위해서 aes를 랩핑하는데 쓴다. 구지 필요는 없다.
- 거의 모든 파일이 <openssl/aes.h>를 참조한다.
- 테스트 파일이 없어 된건지 안된건지 알 길이 없다.
메이크 파일 작성
일단 Makefile을 수정해야 합니다. 원하시는대로 수정 하시면 될꺼 같구요 저는 아래와 같이 하였습니다.
openssl 종속성 줄이기
이제 파일들을 모두 열어서 include 종속성들을 제거 해야합니다.
#include <openssl/~~~> 형식들을 #include "~~~~"로 바꾸어야 합니다.
사실 임베디드 환경에서 사용하거나 최적화를 한다면 이런식으로 대충 하면 안되겠죠?
필요한 파일들은 e_os.h, e_os2.h, opensslv.h opensslconf.h
또한 aes_wrap.c 를 삭제 해야 합니다. 이 파일은 aes를 이용해서 키를 wrapping하는 알고리즘을 구현 하고 있습니다. 알고리즘의 rfc는 3394( http://www.ietf.org/rfc/rfc3394.txt )입니다.
만약 이 알고리즘을 사용하면서 openssl에서 떼어내기를 원한다면 crypto.h cryptolib.c cryptolib.h mem.c mem_clr.c과 연결되어 있는 종속을 해결 하면 됩니다.
Linux/일반2009/02/14 19:11
Linux/일반2008/09/29 06:09
커널 2.6 버전의 Makefile
KERNELDIR = /lib/modules/$(shell uname -r)/build
obj-m = hellomodule.o
KDIR :=/lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
obj-m = hellomodule.o
KDIR :=/lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
clean:
rm -rf *.ko
rm -rf *.mod.*
rm -rf .*.cmd
rm -rf *.o
커널 2.6 버전의 module파일
hellomodule.c
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
static int __init init_hello(void);
static void __exit exit_hello(void);
static int __init init_hello(void){
printk("Module init\n");
printk("Hello Linux Module! \n");
return 0;
}
static void __exit exit_hello(void){
printk("Module Cleand up!\n");
}
module_init( init_hello );
module_exit( exit_hello );
MODULE_LICENSE("GPL");
#include <linux/kernel.h>
#include <linux/module.h>
static int __init init_hello(void);
static void __exit exit_hello(void);
static int __init init_hello(void){
printk("Module init\n");
printk("Hello Linux Module! \n");
return 0;
}
static void __exit exit_hello(void){
printk("Module Cleand up!\n");
}
module_init( init_hello );
module_exit( exit_hello );
MODULE_LICENSE("GPL");
Linux/일반2008/09/28 13:08
페도라 코어6 에서 yum을 이용하여 소스를 설치 할 수 있다.
yum 을 이용하여 소스 설치 하기
#yum install elfutils-libelf-devel rpmdevtools yum-utils
#yumdownloader -e core-source -e updates-source --source kernel
#rpm -ivh kernel-KERNEL_VERSION.FCx.src.rpm
#yumdownloader -e core-source -e updates-source --source kernel
#rpm -ivh kernel-KERNEL_VERSION.FCx.src.rpm
커널 개발 디렉토리 만들기
#rpmbuild -bp --target $(uname -m) /usr/src/redhat/SPECS/kernel-2.6.spec
위 명령은 위에서받은 커널 소스를 압축 풀어서 target이 가리키는 폴더에 넣는 것 뿐이다.
uname -m 이 명령어는 시스템의 하드웨어를 출력한다. 64비트런이 가능한 하드웨어는 현제 운영체제가 32비트라고 해도 i686이 뜬다.
uname -i를 사용하면 현재 시스템이 사용하고 있는 시스템 arch가 나온다.
편의를 위해 심볼릭 링크 걸기
#ln -s /usr/src/redhat/BUILD/kernel-2.6.23/linux-2.6.23.x86_64 /usr/src/linux
위에서 진한 부분은 target이 어떻게 되느냐에 따라서 달라지므로 수정해서 쓰자.
커널 설정 맞추기!!! .config
위에서 target이 i386이 라고 해서 i386 arch로 컴파일 되는 것이 아니다.
커널 소스가 위치한 폴더에, 위의 경우 /usr/src/linux
.config라는 파일이 있다. 그리고 confs라는 폴더에 보면 여러가지 arch마다의 설정이 들어있다.
make menuconfig를 하면 .config가 만들어 지는 것인데 confs 디렉토리에 있는 파일들을 각 arch별로 미리 조금씩 설정된 것이라고 보면 된다.
그런데 크로스 컴파일등의 경우를 제외하고 일반의 경우에 현제 컴퓨터의 커널을 업데이트 하고 싶은 것이라면 현재 시스템의 설정과 동일한 설정을 가지고 시작해야 할것이다.
이 설정 파일은 다행히도 /boot/ 디렉토리에 있다.
(물론 페도라가 그렇다는 것이다. 다른 배포판은 모르겠다.)
/boot/config-커널 버전
형태를 띄고 있다. 이 파일을 작업 디렉토리인 /usr/src/linux/.config 로 복사를 하자, 덮어 쓰는 것이다.
# cp /boot/config-커널 버전 /usr/src/linux/.config
컴파일
make mrproper
make menuconfig
make
make modules_install
Linux/일반2008/01/06 03:26
echoserv.tar.gz
ref-buffer_overflow-rilla91.pdf