본문 바로가기

Programming

srand 마이크로 시간대로 뽑아내기 본 글은 퍼온 글입니다. 아래 소스는 리눅스에서만 작동하니 그 점을 숙지해야 합니다. srand(time())가 1초마다 값이 바뀌다 보니 랜덤 값이 항상 일정한데 그 점을 보안하기 위한 함수 입니다. 아래 글은 퍼온 글이고 윈도우 모드에서 랜덤값을 주는 방법은 더 아래에 있습니다. 요즘 동아리에서 C 스터디를 하고 있습니다. 리눅스 프로그래밍, 윈도우즈 프로그래밍, 루트킷 탐지 프로그램 프로젝트를 하기 위한 선행학습이지요. 복습도 되구요. 우선, 로또 게임 시뮬레이션을 만들었는데, 주석을 포함하여 217줄이 나오더군요. 그 코드 중에서 번호를 무작위로 섞는 함수 부분에 대해 얘기하고자 합니다. 자, 그러면 코드부터 볼까요? /* === FUNCTION ============================.. 더보기
restrict 한정자(qualifier) in C Type Qualifiers C언어에서 C89 표준에서는 한정자가 contst, volatile 이 두가지가 있었다. C99에서는 세 번째 타임으로 restrict가 추가 되었다. 이 한정자들은 lvalue를 통해 객체를 접근할 때 컴파일러가 전제 조건을 결정한다. Const 예약어는 문법은 C++에도 이미 적용되어 있다. 이 개념은 다른 언어에도 나타나있다. volatile과 restrict는 C언어에서 발견되었다. 그리고 이 둘 다 const 와 같은 문장 구성법을 같는다. 한정자의 형(type)은 최적화를 통해 더 많은 제어적 요소를 제공하기 위해 소개 되었다. 몇몇 중요 최적화 기술들은 cacheing을 토대로 한다. 특정 상황에서 컴파일러는 그 지역으로 부터 가장 마지막에 엑세스된 값을 기억하고.. 더보기
Ubuntu(우분투) 9.10 존더리퍼 사용하기 출처: http://pka.engr.ccny.cuny.edu/~jmao/node/26 This section describes how to probe weak user passwords on your system. If the passwords are weak, hackers may guess user names and password and login to your system "legally". Even worse, in many cases user account names are publicly available, such as through email addresses. An interesting article can be found here: "Hacking Into Your Account is.. 더보기
[펌글] dirent.h 재밌는 C 프로그래밍에 대한 여행 오늘은 디렉토리 관련 함수에 대해 알아보도록 하겠다.. 출처 : http://blog.naver.com/beyondlegend?Redirect=Log&logNo=110029848992 오늘은 디렉토리 관련 함수를 다루어 볼까 합니다. 디렉토리 안에는 일반적으로 파일이 보관되어 있습니다. 이미 알고 계시듯이 유닉스계열에서는 모든것을 파일로 취급합니다. 일반파일은 물론이고 하드디스크나 USB 같은 디바이스, 그리고 네트웍 인터페이스도 파일로 취급할 수 있습니다. (자세한 내용은 제 블로그의 리눅스이야기 부분을 참고하시기 바랍니다 ^^) 이렇듯 모든것을 파일로 취급할때 얻을수 있는 장점은 일관된 프로그래밍 인터페이스를 가지고 접근할 수 있다는것입니다. 즉, 리눅스에서는 일반파.. 더보기
utmp, wtmp 이용한 시스템 프로그래밍 1. 시스템의 기본로그파일에 대하여 시스템에 접속을 하거나 하고있는 정보를 기록하는 파일이 있습니다. 해커가 침입을 하고난 후에는 자신의 접속정보를 삭제하는 작업을 하게되는데 아래의 파일에서 자신의 접속로그를 삭제하게된다. /var/run/utmp 또는 /var/adm/utmp /var/log/wtmp 또는 /var/adm/wtmp /var/log/lastlog 또는 /var/adm/lastlog 2. utmp 파일 먼저 utmp에 대해서 알아보겠습니다. 이 파일은 현재시스템에 접속해 있는 사용자의 정보를 가지고 있습니다. 시스템은 사용자가 remote로 접속을 하면 먼저 이 파일에 기록을 하고 로그아웃을 할 때에 기록해둔 정보를 삭제합니다. 그리고 이 파일의 구성요소를 결정하는 파일은 /usr/incl.. 더보기
ulimit 펌…. http://www.bumworld.pe.kr/?m=200611&paged=3 여기서 펐는데 이분도 퍼운 글이네요 솔라리스10에서는 /etc/system 에서 확인이 됐지만 우분투에서는 아래 명령어로 확인 해야 하네요. 변경 법도 좀 다릅니다. mdb -k 명령어를 우분투에서 대처할 방법은 아직 모르겠네요. #ulimit -a time(second) –> the amount of time that process could use cpu 프로세스가 cpu를 사용할 수 있는 최대시간 file(block) –> the maximum size of file that process could create it 해당 프로세스가 만들 수 있는 파일의 최대 크기 data –> the maximum amount .. 더보기
우분투 8.04 커널 만들기 & 시스템콜 추가하기 http://mojolog.com/tcb/385 http://techjun.com/504 아래쪽께 더 잘 정리 되어 있습니다. 둘 다 확인 해보시면 될 듯. 더보기
Ubuntu c함수 설명 man page 설치하기 현재 사용 ubuntu ver: 9.20 man 명령어를 통해서 C 언어에 사용되는 함수의 설명도 볼 수 있습니다. 근데 기본적으로 설치되어 있지는 않기 때문에 다운을 받아야 합니다. sudo apt-get install manpages-dev 로 해주면 영문판을 받을 수 있고 한글 메뉴얼 페이지는 http://sp0ngee.tistory.com/tag/manpages-ko 에서 받을 수 있습니다. C언어 함수 사용 예제: man access for 유닉스시스템프로그래밍, 한빛미디어 더보기
hybus hyper255b tku3 bootp관련 bootp녀석이 운영체제 마다 버전이 달라 그런지 우분투 같은데서는 잘 되지 않는다. 그래서 하이버스사 홈페이지를 가보니 bootp를 안써도 되는 부트로더가 새로 올라왔다!! ㅋㅋ http://www.hybus.net/board.htm?offset=1&table=skill_Data&o_no=2273 이거 쓰면 만사 좋겠구나~아~ 근데 다음과 같은 문제가 있다. libstdc++.so.5 libstdc++5버전 라이브러리가 있어야 한다. 우분투에 9.10 에는 없는데...ㅠㅠ 또 어디서 찾나...이녀석을.. 다시 실험실로 가서 레드핫에다 깔 때 xinetd.d를 재시작해도 bootpd랑 tftp 데몬이 실행이 안되서 운영체제가 꾸져서 얘가 깨진건지 하여간 말을 안 듣네...로그파일 검색결과 거쳐간 인원이 .. 더보기
우분투(ubuntu) 9.10 pxa255에서 nfs 사용기 하이버스사의 x-hyper255 evm 보드인데 부트로더 버전이 낮아서 중간에 mac주소도 못 바꾸고 이래저래 불편한다 일단 nfs를 설치해야 한다. 호스트의 일반폴더를 타킷 보드에서 하나의 폴더처럼 인식하기 때문에 대량의 파일을 전송하지 않아도 실험해 볼 수 있는 아주 쓸만한 녀석이다. apt-get으로 설치해도 되지만 시냅틱 꾸러미 관리자 이용 시스템>>관리>>시냅틱 꾸러미 관리자 메뉴를 클릭합니다. 좌축에서 "네트워킹"을 선택한 후에 패키지 목록에서 nfs-kernel-server 를 선택합니다. 이후에 자동으로 관련된 패키지도 함께 선택됩니다. 이렇게 일단 깔고 sudo vim /etc/exports 해서 exports파일을 생성해야 한다. 그거서 타깃 보드의 주소를 넣어준다 다음과 같이~ /mn.. 더보기