티스토리 툴바

블로그 이미지
나이데브의 디지털릭 판타지. 나이데브

카테고리

분류 전체보기 (361)
Linux (120)
Win32/64 (7)
ProgPost (16)
내 이야기 (179)
LiveUSB Dev (17)
Game (7)
허튼 짓 (6)
Zaurus (8)
Total326,057
Today8
Yesterday46
비상입니다.

root 쉘이 바로 곧장 떨어지는거 보고 저 잠시 숨을 쉴수 없었습니다.

커널 2.6.17버전부터 2.6.24-r1까지. (vmsplice exploit 방지 패치가 먹히기 이전의.)

모두 먹히는 익스플로잇이더군요.

실행과 동시에 바로 일반유저에서 root 로 바뀌는게 정말 멋있더군요.

어떤 사람들이 이런걸 찾아낼 수 있을까요? 아직 커널의 'ㅋ'도 제대로 알지 못하는 저로서는 그저

신기할 따름입니다.

일반 데스크탑 유저들에게는 크게 지장이 없겠지만서도, 찜찜하니 모두 2.6.24-r2 소스로 버전업을

하셔서 vmsplice 익스플로잇으로 부터 안전해 질 수 있도록 합시다.

보너스로, 제 데스크탑에서는 익스플로잇이 간헐적으로 세그폴트를 일으킵니다. 스샷 올립니다.




사용자 삽입 이미지

아주 쉽게 먹히는군요.

사용자 삽입 이미지

가끔씩! 일어나는 세그폴트. 원인을 모르겠다.

사용자 삽입 이미지

제대로 캡처 성공.



제 경우에는, 이번에 커널 업그레이드 안하고 저 익스플로잇을 'su' 대용으로 쓸 생각을 했습니다.

여러분의 생각은 어떠십니까?

'Linux > Core' 카테고리의 다른 글

Linux vmsplice Local Root Exploit!!  (4) 2008/02/12
glibc 2.7 업데이트  (4) 2007/11/10
리눅스 커널 소스 2.6.23-mm1 에 있는 실수  (0) 2007/10/14
HAL daemon vs /etc/fstab  (4) 2007/06/28
Posted by 나이데브

오늘 한 것.

ProgPost/Python / 2007/09/05 23:59
코드는 매우 짧습니다.

>>> for x in xrange(65000):
>>>     print unichr(x),
흐흐.

unichr(integer) 는 integer로 입력된 값에 상응하는 유니코드 글자를 반환하는 내장함수입니다.

요즘 유니코드쪽에 손을 대고 있어서 여러부분을 공부해 보게 되었습니다.

저 코드의 결과물은....

 

보고싶어요!


이후로도 많습니다. 그나마 65000까지로 한정을 했기때문에 망정이지;

게다가 터미널 스크롤 줄 수를 제한해 두어서 별로 재미가 없더군요.

나중에 심심하면 해보세요. :)
Posted by 나이데브

Crazy Beryl!

Linux/Journal / 2007/07/26 22:17
사용자 삽입 이미지


....

고의로 미치게 해보았습니다.

설정 몇개 건드니 바로 저렇게 되는군요 ;-)

다시 되돌리면 금방 풀리게 됩니다.
Posted by 나이데브
하아 -_-; 라이브USB의 파일들을 최종적으로 정리하도록 스크립트를 짜서 작업을 걸었는데

그게 실수로 '/etc' 폴더부터 지우기 시작하더군요 -_-;

그래서 시스템 전체가 맛이나갔습니다. 복구도 불가능해요 -_-;

/usr/bin 도 날렸거든요
......

지금 임시로 ArchLinux 설치해서 라이브USB 0.2 작업중입니다.
(다행히도 카르나도는 다른 파티션에 두었기때문에 크게 지장이 없습니다.)

지금 빌드중입니다. 잘되었으면 좋겠네요.

잘되면 설연휴 기념으로 카르나도 0.2를 릴리즈 하겠습니다 :)
Posted by 나이데브
음. 오늘 프리노드에서 할 일 없이 가만히 있는데, 갑자기 이런 대화가 오갔습니다.

* ####### (n=chatzill@ip.foo.bar.com) 님께서 대화방 #gentoo에 참여하셨습니다.
<#######> Is Linux free to download and install
<####> LOL
<#####> #######: you have to pay me
<####> ;-)
<######> #######: sure, you can download linux from kernel.org
순간 피식 했습니다.

이해가 안가시면....

도움글


음.

저도 ㅂㅌ가 다 된듯. -_-;

Posted by 나이데브
어흐흐흑 ㅠㅠ;

감동입니다. 일단 첫 부팅에는 성공했습니다. 시작한지 거의 8시간만이군요.

비록 디스크 이미지의 남은 공간에 기록을 할 수없도록 해두어서 다른 프로그램을 제대로 써보지 못했지만, 일단 부팅은 정상적으로 잘 됩니다.

도중에 잠시 멈추는 구간이 있습니다. 약 5초정도 기다리면 됩니다.

IRQ관련 구간인데, 그냥 좀 기다리면 됩니다.

부팅시 vga=793옵션을 주면 1280x1024콘솔을 사용하실수 있습니다.

아직 스플래시 이미지는 못넣었군요;

아직 내놓기에는 너무 부끄럽네요 (*^^*)

사용자 삽입 이미지

스크린샷이 이상하게 나온것은, fbgrab때문입니다. 본래 저렇게 괴악하진 않아요 :)

Posted by 나이데브
뭐 만들게된 이유는 별거없습니다.

1. 어디서나 컴퓨터가 USB부팅만 지원하면 리눅스를 쓸 수 있는게 필요해서.
2. 라이브CD의 CD돌아가는 소리가 시끄러워서.
2. 요즘 심심해서 ㅂㅌ짓이 하고 싶어서.

음. 일단 젠투리눅스를 기반으로 해서 빌드할 생각입니다.

지원사항
1. Vesafb + fbsplash 지원으로 미려한 콘솔화면 지원
지원 해상도 : 1600x1200, 1280x1024, 1024x768, 800x600, 640x480.
지원하지 않는 해상도를 위해서, 로더(loader)에서 F3을 누르면 괴이한 해상도를 위한
해상도값을 제공할 생각입니다. splashutils가 자동으로 이미지 크기를 바꾸어 스플래시를
출력하지 않는 이상은, 위의 저 해상도가 아니면 스플래시를 사용하실 수 없습니다.

2.  ALSA지원(5.1채널 그런거 설정안합니다.)
전 음악을 들어야 하기때문에 반드시 해야할 듯합니다.

3. JFBTerm-uxp 0.2.0 포함
한글 입출력 콘솔을 위한 jfbterm-uxp입니다. fbsplash가 적용되지 않기때문에, 별도로
배경이미지가 제공됩니다.

4. DirectFB 제공(fusion 지원)
DirectFB라이브러리를 이용하여, 저용량으로 그래픽환경을 출력합니다.

* fusion은 DFB어플을 동시에 여러개 실행하기 위해서 필수적으로 필요한 기능입니다.

DFB-GTK+를 사용해 xchat(IRC클라이언트), gtkterm2(순수 gtk로 만든 터미널) 정도를 지원할 생각이고,
links(웹브라우져, DFB를 사용하면 그래픽으로 사용이 가능합니다.)와 mplayer(역시 DFB를 사용해서 비디오를 출력합니다.)를 사용할 수 있도록 제작합니다.

Base패키지를 제외한, usb리눅스에 포함될 예상 패키지들

DirectFB(+ fusion), irssi, links, xchat, vim(7), ncftp, jfbterm-uxp, splashutils, scim(혹은 imhangul), alsa-utils, moon-buggy(심심풀이 게임), python,


이외에도 제 USB리눅스는 ntfs-3g지원이 추가될 것입니다. 비상시에 복구나 백업용으로도 충분히 이용할 가치가 있습니다. USB리눅스는 500MB이하의 공간을 활용할 생각이며, 그 나머지 공간은 /mnt/usb를 통해 읽고 쓸수 있도록 지원합니다. 1GB정도의 usb메모리 저장장치만 있다면, 넉넉히 활용하실 수 있을겁니다. :)

이 프로젝트는 오늘부터 시작하여 2월말에 완료됩니다. 차후에 업데이트는 없습니다. ;)

나중에 정말 업데이트가 필요하다고 생각될때, 다시 빌드해서 릴리즈하겠습니다.


추가 :

1차 usb리눅스의 코드명은 '카르나도' 입니다. 만약 프로젝트가 커진다면, KLDP에도 등록할 것이고

윈도우 인스톨러를 이용하여 윈도우에서도 쉽게 usb메모리에 리눅스를 설치 할 수 있도록 지원할 생각입니다.

'Linux > Journal' 카테고리의 다른 글

KDE + Yakuake.  (2) 2007/01/29
E17 스크린샷~  (2) 2007/01/21
오늘부터 usb리눅스를 빌드해 볼 생각입니다.  (8) 2007/01/20
E17 삽질 끝. ~~  (6) 2007/01/06
Happy New Year!  (4) 2007/01/01
Marry Khristmas (제목 태클 사절) 기념 Beryl 스크린샷  (5) 2006/12/24
Posted by 나이데브
하아. 삽질의 결과물입니다.

xchat에서 명령어를 등록할때는 xchat.hook_command를 사용해야 하는데,

그걸 좀더 편하게 해볼까 하는 생각에서 만들어보았습니다.

def sys_autoreg(word, word_eol, userdata):
    register = ['test', 'scrshot']
    print "%d개 함수를 등록중입니다. 기다려주세요..." %len(register)
    for x in register:
        a = globals()['x_' + x].__doc__
        hlp = re.findall('HELP](.+?)END]', a)
        tpe = re.findall('DATA](.+?)END]', a)
        try: tpe = tpe[0]
        except:
            print "[%s] DATA] 가 없습니다."
            tpe = 'no_hook'
        if tpe.startswith('slash:') is True:
            tmp = tpe.replace('slash:', '').split('|')
            print "[%s] 명령어 %s개 등록" %(x, str(len(tmp)))
            if hlp == []:
                print "[%s] 도움말 없음." %x
                hlp = ''
            else:
                hlp = hlp[0]
            map(lambda c:xchat.hook_command(c, globals()['x_' + x], help=hlp), tmp)
            print "[%s] 작업완료" %x
        elif tpe.startswith('proto:') is True:
            tmp = tpe.replace('proto:', '')
            if len(tmp) > 8:
                print "[%s] 알 수 없는 프로토콜 : %s" %(x, tmp)
                print "[%s] 등록하지 않습니다." %x
            else:
                xchat.hook_server(tmp, globals()['x_', + x])
                print "[%s] %s가 서버로 부터 올 경우, %s를 실행하도록 하였습니다." %(tmp, x)
        elif tpe.startswith('no_hook') is True:
            print "[%s] 이 함수는 등록되지 않습니다." %x
        elif tpe.startswith('periodic') is True:
            tmp = tpe.replace('periodic')
            xchat.hook_timer(int(tmp), globals()['x_', _x])
            print "[%s] 이 함수는 %s초 마다 실행되게 됩니다." %(x, tmp)
            print "[%s] /unhook %s 으로 끄실 수 있습니다." %(x, x)
        else:
            print "[%s] 알 수 없는 데이터입니다. 어떠한 작업도 수행되지 않습니다." %x

    print "[sys_autoreg] 모두 등록하였습니다."
    return xchat.EAT_ALL

예를 들어 설명하는게 빠를 것 같습니다.

xchat스크립트에 'test'라는 함수를 이렇게 정의해 봅시다.

def test(word, word_eol, userdata):
    '''HELP]테스트를 위해 작성한 함수입니다.END]
    DATA]slash:테스트|텟사|스트END]'''
    print "Hello World!"
    return xchat.EAT_ALL

sys_autoreg는 일단 ''' ~ ''' 로 감싸진 부분을 읽게됩니다.

안에서 필요한 데이터를 얻습니다. HELP] ~ END] 에서는 도움말 정보를 담습니다.

DATA] ~ END] 부분은 좀 복잡합니다.

slash:(명령어)
=> /명령어 등록(여러개의 경우 '|'로 구분합니다.)
proto:(프로토콜)
=> IRC프로토콜을 처리하는데, JOIN/PART/PRIVMSG/NOTICE 등이 왔을때 처리하게 됩니다.
no_hook
=> 로드하지 않습니다.
periodic:(시간)
=> 일정주기로 실행할 명령입니다. 시간을 초단위로 입력합니다.
결국, test 함수인 경우에는,
 도움말은 '테스트를 위해 작성한 함수입니다'이고, 앞에 '/'가 붙은 명령어로 xchat에 추가되는데,
 테스트, 텟사, 스트 로 등록한다.
가 되겠습니다.

실제 /텟사, /테스트, /스트 모두 저 함수를 실행하면 'Hello World'를 출력하게 됩니다.

오히려 일을 복잡하게 꼬았는지도 모르겠네요. 아무튼 뭔가 되니 뿌듯한;

앞으로 스크립트 작업할때 좀더 편리하지 않을까 싶습니다.

ps. globals() 함수를 알려주신 토끼군님께 감사의 말씀을 남깁니다;

현재 완벽히 저 기능이 동작하는 스크립트가 필요하신 분은 말씀해 주시면 됩니다.

문의사항은 IRC/블로그 댓글 로 다 받습니다.

'ProgPost' 카테고리의 다른 글

xchat 스크립트의 신기술(?)을 만들었습니다.  (0) 2007/01/15
나이데브의 황철석 이야기  (6) 2007/01/12
rss.py 를 만들었습니다.  (4) 2007/01/12
Posted by 나이데브
몇 년전에 읽었던, '화학이 화끈화끈(?)'이라는 도서에서 본 것이 생각나 적어봅니다.

'금'에 관해서 나온 부분이었는데, 어떤 바보같은 사람이 황철석에서 금빛이 난다고 생고생해가며

황철석을 듬뿍 배에 실어갔는데, 사실 금이 아니었다는 이야기가 있었습니다.

오늘 'ㅂㅌ알고리즘 1 : 덧셈으로만 제곱구하기'는 정말 그런게 아닐까 싶습니다.

전 뭔가 대단한 알고리즘을 발견한 줄 알았습니다.


문제의 코드 :
print a
while a <= 10000:
    b=a+a;print b;a = b
(요즘 codegolf 이야기가 자주 나와서, 좀 줄여봤습니다.)

왜 2는 성립하는데 3부터는 성립이 안하는지 의문이었습니다.

결국 손으로 계산해 보니, 다음과 같더군요.

a = 2 라고 했을때, a + a = 2a = a^2 과 동일하다.
그렇습니다. 전 2한테 농락당했습니다. (ㄲㄲ)

이쯤되면 더이상 설명은 필요하지 않겠군요. 그저 도망가는 수밖에 =3=3

ps. 추가로 몇몇 숫자의 계산 결과를 넣어볼까 합니다.

nidev@kaleido ~ $ python bt.py 4
4 8  16  32  64  128  256  512  1024  2048  4096  8192  16384

nidev@kaleido ~ $ python bt.py 8
8  16  32  64  128  256  512  1024  2048  4096  8192  16384


입력된 숫자가 2^n (n은 양의 정수) 일때, n씩 건너뛰어가며 숫자를 보시면 정상적으로 보이는 제곱수가 나옵니다.

뭔가 쓸모가 있을거 같은데, 정말 쓰잘데기 없어보이는군요;

'ProgPost' 카테고리의 다른 글

xchat 스크립트의 신기술(?)을 만들었습니다.  (0) 2007/01/15
나이데브의 황철석 이야기  (6) 2007/01/12
rss.py 를 만들었습니다.  (4) 2007/01/12
Posted by 나이데브
..........

봇만들기는 귀찮고

OS작업을 하자니 머리아프고

..... 이참에 래드햇 7.2나 깔아볼까 ..........

..... Got Dam!
Posted by 나이데브

최근에 달린 댓글

최근에 받은 트랙백

글 보관함