안녕하세요 사사미 사용잡니다.
버그를 완전 해결해서 쓰는것은 아니지만..
좀 쉽게 가기 위한 제가 쓰는 방법을 말씀드리겠습니다.

먼저 무한로딩때문에 고생 많으시죠..
그건 모두 아시다 싶이
--> Tool --> Load Program on startup 을 채크 풀어 주시면 됩니다.
위에것이 소프트 리쎗시에 구동되게하는 버튼인데요..

저것을 풀고 리셋을 하면 포콘(포토콘텍트 줄여말하겠습니다.)은 작동을 안하죠

그래서 포콘을 실행시키고 나면 메모리에 떠있게 되는데 문제는 CloseAll이나 Exit를 선택하면
다시 포콘이 정상작동을 안하는것이 문제 입니다.

해결방법은 포콘 Tool 화면에서 Load Program on Startup에 채크를 하고 하단의 Save를 눌러 줍니다.

그리고 잽싸게 탐색기를 열어 장치 --> Window --> 시작 으로 가보시게 되면
PhotoContacts.lnk 이라는 파일이 생성된것을 알 수 있습니다.

그파일을 복사하셔서 장치 -->Window --> 프로그램 안에 붙여 넣기를 하십니다.

그리고 다시 포콘에 Tool로 가셔서 Load Program on Startup 의 채크를 풀어 주시고 Save를 해주싶니다.

그렇게 되면 프로그램 안에 포콘의 바로가기 아이콘이 두개가 남게 됩니다.

두개다 쓸일은 없으니까 방금 복사한 파일이 아닌 뒤에 Pro 붙은 포콘의 바로가기는 삭제하셔두 되구 안하셔두 되구요..

자 ~~ 그렇게 하시고 일단 똥침을 함 놓아주세요..

그러면 아무 무리없이 재부팅이 되는 것을 볼수 있습니다.

그러면 포콘이 작동 안하고 있는 상태인데.. 아까 프로그램에 복사해놓으신 PhotoContacts 바로가기를 클릭하시면 포콘 실행 화면이 뜨다가 사라지는 것을 보실수 있습니다.

그것이 포콘이 작동하는 것입니다.

메모리에 상주하지 않고 부팅시에 실행되는 것과 똑같이 실행되기 때문에 CloseAll을 하여도 벨과 사진은 정상적으로 작동이 됩니다.

그리고 셋팅을 바꾸시려면 아까 PhotoContacts 바로가기를 함더 실행을 시켜 주세요 그러면
설정메뉴가 뜹니다.

한번실행시키면 구동 두번 실행시키면 셋메뉴로 이동 이렇게 됩니다.

중요한것은 셋팅을 바꾸시고 사진두 모하구 모하구 하면 전에 똥침누셧져 이제 그러지말고
Tools에 Exit를 실행시켜 포콘을 종료 시켜 버리세요.

그리고 PhotoContacts 바로가기를 다시 한번 실행시켜 구동만 시키시면 정상 작동됩니다.

저같은 경우는 더블런쳐를 이용하여 버튼에 아까 그 PhotoContacts 바로가기를 연결 시켜 놓았습니다. 한번씩 눌러 줄때 편하더라구요.

주저리주저리 첨 오릴는 것이라 참 정리 안되게 말씀드렸네요

다른 좋은 팁이 생기면 다시 시도 하겠습니다.

PS : 혹시 좋은 알람 프로그램 좀 추천 부탁드립니다. 전엔 포켓알람을 썻는데 이거원 끄는게 넘 힘들어서 CloseAll버튼 넣어서 종료시켰더니 담날 안울려 버리더라구요 ㅡㅡ



옆에가 잘 안보이시는 분은 아래를 클릭하세요.

본 링크 : http://pic.iround.co.kr/psychic.swf






[MySQL] MySQL 기본 명령어 정리



MySQL의 기본 명령어와 SQL문 정리. 내가 RDBMS에 완전 문외한이기 때문에 기본 SQL쿼리까지...

Redhat Linux 7.3, MySQL 3.23.58 에서 테스트함.

설치는 Redhat 기본 제공 RPM으로 했다.



데이터베이스 접속

$ mysql -u 사용자명 -p dbname



설치 직후에는 root 사용자에 비밀번호가 없으므로 다음과 같이 접속하여 MySQL을 관리할 수 있다.



$ mysql -u root mysql





비밀번호 변경

MySQL을 설치한 직후에는 root 계정에 암호가 지정되어 있지 않다.

다음 세가지 방법으로 비밀번호를 변경 할 수 있다.



  • mysqladmin이용

    $ mysqladmin -u root password 새비밀번호



  • update문 이용

    $ mysql -u root mysql



    mysql> UPDATE user SET password=password('새비밀번호') WHERE user='root';

    mysql> FLUSH PRIVILEGES;





  • Set Password 이용

    SET PASSWORD FOR root=password('새비밀번호');





일단 root 비밀번호가 설정된 상태에서는 mysql이나 mysqladmin 명령을 실행할 때 -p 옵션을 붙여주고 기존 비밀번호를 입력해야만 한다.



사용자 추가/삭제

mysql> GRANT ALL PRIVILEGES ON dbname.* TO username@localhost IDENTIFIED BY 'password';



username 이라는 사용자를 password라는 비밀번호를 갖도록 하여 추가한다. username은 dbname이라는

데이타베이스에 대해 모든 권한을 가지고 있다.

username 사용자는 로칼 호스트에서만 접속할 수 있다. 다른 호스트에서 접속하려면

GRANT ALL PRIVILEGES ON dbname.* TO username@'%' IDENTIFIED BY 'password';



위를 또한 번 실행한다. '%'에서 홑따옴표를 주의한다.

추가 : '%'를 호스트네임으로 지정해도 모든 호스트에서 접속할 수 없었다. 각 호스트별로 다 지정해야 했다.



불필요한 사용자 삭제는

mysql> DLETE FROM user WHERE user='username';

mysql> FLUSH PRIVILEGES;





데이터베이스 생성/보기



  • 데이터베이스를 생성하고,

    mysql> CREATE DATABASE dbname;



  • 현재 존재하는 데이터베이스 목록을 보여준다.

    mysql> SHOW DATABASES;



  • 특정 데이타베이스를 사용하겠다고 선언한다.

    mysql> USE dbname;



  • 쓸모 없으면 과감히 삭제한다.

    mysql> DROP DATABASE [IF EXISTS] dbname;



    IF EXISTS 옵션은 비록 데이타베이스가 없더라도 오류를 발생시키지 말라는 의미이다.





테이블 생성/보기



  • 테이블을 생성하고,

    mysql> CREATE TABLE tablename (

    column_name1 INT,

    column_name2 VARCHAR(15),

    column_name3 INT );



  • 현재 데이타베이스의 테이블 목록을 보고

    mysql> SHOW TABLES;



  • 테이블 구조를 살펴본다.

    mysql> EXPLAIN tablesname;

    혹은

    mysql> DESCRIBE tablename;



  • 이름을 잘못 지정했으면 이름을 변경할 수도 있다.

    mysql> RENAME TABLE tablename1 TO tablename2[, tablename3 TO tablename4];



  • 필요 없으면 삭제한다.

    mysql> DROP TABLE [IF EXISTS] tablename;







현재 상태 보기



mysql> status



--------------

mysql Ver 11.18 Distrib 3.23.58, for pc-linux (i686)



Connection id: 26

Current database: study

Current user: study@localhost

Current pager: stdout

Using outfile: ''

Server version: 3.23.58

Protocol version: 10

Connection: Localhost via UNIX socket

Client characterset: latin1

Server characterset: euc_kr

UNIX socket: /var/lib/mysql/mysql.sock

Uptime: 2 hours 9 min 59 sec



Threads: 1 Questions: 160 Slow queries: 0 Opens: 28 Flush tables: 1

Open tables: 1 Queries per second avg: 0.021

--------------







INSERT

mysql> INSERT INTO tablename VALUES(값1, 값2, ...);



혹은



mysql> INSERT INTO tablename (col1, col2, ...) VALUES(값1, 값2, ...);





SELECT

mysql> SELECT col1, col2, ... FROM tablename;



컬럼명을 *로 하면 모든 컬럼 의미.



mysql> SELECT col1 AS '성명', col2 AS '국어점수' FROM grade;



컬럼의 이름을 바꿔서 출력.



mysql> SELECT * FROM tablename ORDER BY col1 DESC;

mysql> SELECT col1, korean + math english AS '총점' FROM tablename ORDER BY '총점' ASC;



DESC는 내림차순 ASC는 오름차순.



mysql> SELECT * FROM grade WHERE korean < 90;



조건줘서 SELECT.



mysql> SELECT * FROM grade LIMIT 10;



결과중 처음부터 10개만 가져오기



mysql> SELECT * FROM grade LIMIT 100, 10;



결과중 100번째부터 10개만 가져오기. 첫번째 레코드는 0번 부터 시작한다.



UPDATE

mysql> UPDATE tablename SET col1=새값 WEHER 조건





DELETE

mysql> DELETE FROM tablename WEHRE 조건





mysql에서 쿼리 결과 세로로 보기

-E 옵션을 줘서 실행한다.

$ mysql -E -u root -p mysql




■ Requirements






■ Functions



▶ size_t strlen (const char *string)

Parameters

string

Null이 아닌 문자열.

Return Value

string문자열 중에 Null 문자를 제외한 문자의 개수를 반환한다.

Error에 대한 반환값은 정의 되어 있지 않다.

Remarks

이 함수는 string문자열 중에 Null 값을 제외한 문자의 개수를 반환한다.

Security Note

이 함수는 잠재적으로 buffer overrun 문제가 발생할 수 있다.

Buffer overrun은 적절하지 않은 수준의 권한이 되는, System 공격 방법중 하나이다.

더 자세한 사항은 Avoiding Buffer Overruns 을 참조하라.

추가 참조

char string[32] = "hello, world";



int size1 = sizeof (string);

int size2 = strlen (string);



printf("sizeof(string) = %d ,strlen(string) = %d\n");

result:

sizeof(string) = 32,strlen(string) = 12





▶ char* strcpy (char *strDestination, const char *strSource)

Parameters

strDestination

문자열이 복사될 목적 문자열 포인터

strSource

Null로 끝나는 원본 문자열


이 함수는 복사된 문자열 포인터를 반환한다.

Error에 대한 반환값은 정의 되어 있지 않다.

Remarks

strcpy 함수는 Null 문자로 끝나는 strSource 문자열을 strDestination로 복사한다.

원본과 목적 문자열이 겹쳐진다면 strcpy는 오작동 할 수도 있다.

Security Note

strcpy함수는 strSource를 복사하기 전에 strDestination의 공간을 확인하지 않아

잠재적으로 Buffer overrun을 발생시킬 수 있다. 대신 strncpy을 사용하라.



▶ char* strncpy (char *strDest, const char *strSource, size_t count )

Parameters

strDest

문자열이 복사될 목적 문자열 포인터

strSource

원본 문자열

count

복사될 문자 개수

Return Value

strDest을 반환한다. Error를 위한 반환값은 정의 되지 않았다.



strncpy 함수는 strSource의 처음부터 count개의 문자를 strDest로 복사하고,

strDest를 반환한다.

만약 count가 strSource의 길이보다 작거나 같다면,

복사된 문자열에 자동으로 Null문자를 붙여주지 않는다.

만약 count가 strSource의 길이보다 크다면,

목적 문자열은 count길이 뒤에 null문자를 붙여준다.

원본과 목적 문자열이 겹쳐진다면 strncpy는 오작동 할 수도 있다.


Security Note

strncpy는 strDest에 충분한 공간이 남아있는지 검사하지 않는다.

그럼으로 buffer overrun 발생의 잠재적 가능성이 있다.

count가 복사될 문자의 개수를 제한한다는 것을 잊지 마라.

그것은 strDest의 크기를 제한하는 것이 아니다.



▶ char* strdup (const char *strSource)

Parameter

strSource

Null로 끝나는 원본 문자열

Libraries

C run-time libraries의 모든 버전.

Return Value

이 함수는 복사된 문자열의 저장공간을 리턴하거나,

새로 할당할 수 없을땐 Null을 반환한다.

Remarks

strdup함수는 strSource의 복사를 위해 저장공간을 할당하려고 malloc함수를

호출한다. 그리고 strSource를 할당한 저장공간에 복사한다.


▶ char* strcat (char *strDestination, const char *strSource)

Parameters

strDestination

Null로 끝나는 목적 문자열

strSource

Null로 끝나는 원본 문자열

Libraries

C run-time libraries의 모든 버전.

Return Value

이 함수는 strDestination 를 반환한다. Error에 대한 반환값은 정의 되어 있지 않다.

Remarks

strcat 함수는 strDestination 문자열에 strSource 문자열을 붙여주고,

Null 문자로 목적 문자열을 종료 시켜준다.

목적 문자열의 Null 종료문자는 원본 문자열의 첫 문자에 의해 덮어 써진다.

문자열을 복사하거나 붙일때에는 overflow를 검사하지 않는다.

원본 문자열과 목적 문자열이 겹칠때에는 strcat 함수는 오작동 할 수 있다.

Security Remarks

첫번째 인자인 strDestination 은 반드시 strDestination 와 strSource 문자열,

그리고 Null 문자인 '\0'를 합친 크기보다 충분히 커야만 한다.

그렇지 않다면, buffer overrun이 발생할 수 있다.

만약 접근영역을 침범하면 서비스거부공격이 일어날 수 있고,

최악의 상황에서는 공격자가 당신의 프로세스에 실행가능한 코드를 삽입할 수 있다.

만약 strDestination 이 stack-based buffer였다면 특히 그렇다.

strncat 나 wcsncat 함수를 사용하여라.



▶ char* strncat (char *strDest, const char *strSource, size_t count)

Parameters

strDest

Null로 끝나는 목적 문자열

strSource

Null로 끝나는 원본 문자열

count

붙여질 문자 개수

Libraries

C run-time libraries의 모든 버전.

Return Value

이 함수는 strDestination 를 반환한다. Error에 대한 반환값은 정의 되어 있지 않다.

Remarks

strncat 함수는 기껏해야 strSource 문자열의 처음부터 count 개수만큼의 문자를

strDest 문자열에 붙인다.

목적 문자열의 Null 종료문자는 원본 문자열의 첫 문자에 의해 덮어 써진다.

만약 count 개수만큼 붙이기 전에 strSource 안에 Null 문자가 있다면,

strncat 함수는 Null 문자를 포함해 strSource 의 모든 문자를 붙인다.

만약 count 가 strSource문자열의 길이보다 크다면, strSource 문자열의 길이가

count 대신 쓰여진다. 결과 문자열은 Null문자로 끝나게 된다.

원본 문자열과 목적 문자열이 겹칠때에는 strncat 함수는 오작동 할 수 있다.

Security Remarks

첫번째 인자인 strDest은 반드시 strDest와 strSource 문자열,

그리고 Null 문자인 '\0'를 합친 크기보다 충분히 커야만 한다.

그렇지 않다면, buffer overrun이 발생할 수 있다.

만약 접근영역을 침범하면 서비스거부공격이 일어날 수 있고,

최악의 상황에서는 공격자가 당신의 프로세스에 실행가능한 코드를 삽입할 수 있다.

만약 strDestination 이 stack-based buffer였다면 특히 그렇다.

마지막 인자인 count는 strDest의 크기가 이나라

strDest중에 복사될 문자 개수임을 명심해라.




특정 site들에서 참고하여 보기 좋게 정리하며 제 생각을 추가한 것입니다

오래전 자료라서 어느 site인지는 기억이 나질 않네요.

드디어 나만의 Blog를 만들게 되었다~

작고 별 특별할 것도 없는 Blog이지만...

이번엔 잘 쓰고 싶다...

자주 이용하면 언젠가는 남부럽지 않은 Blog가 되지 않을까 싶다~

화이팅!~
방법 1

# vi /etc/passwd

기술된 유저 목록에서 목표 유저를 찾은뒤 /bin/sh 를 /sbin/nologin 으로 바꿔줌.

방법 2

usermod 명령어 사용

usermod -s /sbin/nologin account


man 에 기술된 정보

-s shell
The name of the user's new login shell. Setting this field to blank causes the system to select the default login shell.

-L Lock a user's password.
This puts a '!' in front of the encrypted password, effectively disabling the password. You can't use this option with -p or -U.


-U Unlock a user's password. This removes the '!' in front of the encrypted password. You can't use this option with -p or -L.

-L 과 -U 옵션을 활용해 보는 방법도 있다.
# vi /etc/network/interface

** DHCP **
auto eth0
iface eth0 inet dhcp

** static ip **
auto eth0
iface eth0 inet static
address xxx.xxx.xxx.xxx
netmask xxx.xxx.xxx.xxx
network xxx.xxx.xxx.xxx
broadcast xxx.xxx.xxx.xxx
gateway xxx.xxx.xxx.xxx
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers xxx.xxx.xxx.xxx
중국 해커들의 8월 15일 해킹 공격을 대비한 자료.


서버의 기본적인 보안 정책을 강화함으로써 리눅스 서버가 악용당할 여지를 줄여 줄 수 있다.


실제로 그동안 테스트하고 있던 서버들의 로그파일에 최근 중국 및 홍콩 발 악의적인 해킹 시도횟수가 큰폭으로 늘어나고 있음을 볼 수 있었기 때문에 이 자료가 많은 도움이 되었다.


http://www.securityproof.net/serversecurity.pdf


- 이 전자 문서의 모든 저작권은 securityproof 에 있습니다. -

+ Recent posts