[펌]MYSQL PASSWORD() 함수의 복호화! 팁!

출처 : http://www.jojik.com/viewtopic.php?p=62

첨 글을 올리네요..
원래 MS 진영의 막강파워로 물을 흐리려 했건만..-_-;;
오늘은 MYSQL 에 대한 TIP(?) 을 올려봅니다..

기본적으로.. PASSWORD 를 이용해서 암호화하는 방식은..
최초 또는 수정 입력후 그 다음에 해당 값을 확인할 때에도 복호화 하는 방식이 아니고 PASSWORD 를 이용해서 대입한 문자가 같은지만.. 확인합니다..
한마디로..복호화 자체를 고려하지 않은 암호와 방법이기 때문에 복호화를 하는 방법은 없습니다.
그래서.. 이번 글은.. 이넘을 풀어보자는.. 것이죠..ㅎㅎ

암호화를 하게되면.. 036da2f51d8b4605 이런 16자리의 숫자+문자가 생성이 되죠.. 이건 절대적입니다..
자.. 이제 한번 풀어보도록 하지요..
php 스크립트가 아닌 sql 을 이용해서 해보죠..
일단.. 아래의 테이블을 생성합니다..

create table crack ( c char(1) );
insert into crack values (‘a’);
insert into crack values (‘b’);
insert into crack values (‘c’);
insert into crack values (‘d’);
insert into crack values (‘e’);
insert into crack values (‘f’);
insert into crack values (‘g’);
insert into crack values (‘h’);
insert into crack values (‘i’);
insert into crack values (‘j’);
insert into crack values (‘k’);
insert into crack values (‘l’);
insert into crack values (‘m’);
insert into crack values (‘n’);
insert into crack values (‘o’);
insert into crack values (‘p’);
insert into crack values (‘q’);
insert into crack values (‘r’);
insert into crack values (‘s’);
insert into crack values (‘t’);
insert into crack values (‘u’);
insert into crack values (‘v’);
insert into crack values (‘w’);
insert into crack values (‘x’);
insert into crack values (‘y’);
insert into crack values (‘z’);
insert into crack values (‘0’);
insert into crack values (‘1’);
insert into crack values (‘2’);
insert into crack values (‘3’);
insert into crack values (‘4’);
insert into crack values (‘5’);
insert into crack values (‘6’);
insert into crack values (‘7’);
insert into crack values (‘8’);
insert into crack values (‘9’);

이것은 abcdefghijklmnopqrstuvwxyz1234567890 의 문자를 입력하는 것이죠..
PASSWORD() 함수의 내용은 위의 문자를 절대 벗어나지 않습니다..
일단 1b3680032448ce45 라는 것을 풀어봅니다..
아래처럼 쿼리를 날리세요..

select
concat(t1.c, t2.c, t3.c, t4.c),
password(concat(t1.c, t2.c, t3.c, t4.c))
from
crack t1, crack t2, crack t3, crack t4
where
password(concat(t1.c, t2.c, t3.c, t4.c)) = “1b3680032448ce45”;

이것은 4자리의 문자코드 입니다..
그래서 위에 보시는 바와 같이 t4 까지만 했죠..
4자리 이상/이하는 t 값을 조정하시면 됩니다..
암튼.. 쿼리를 날려보시고 무슨 문자가 나왔는지 보시길 바랍니다..
또한.. 이 글을 읽는 여러분들도 임의의 문자를 암호화해서 풀어보시기 바랍니다..

참고로 5자리의 문자를 푸는데 팬4 1.7Ghz 에서 여러가지를 같이 돌리면서 실행했더니.. 약 8분 11초가 걸리더군요..
근데.. 4자리는 약.. 6초 정도가 나옵니다..
6자리 이상은 저도 테스트 안해봤습니다.. (이것은 분명 삽질이기 때문에..)

이상 위의 글은 PASSWORD() 함수에 대한 복호화를 다루어 보았습니다.
예전에 XX 사이트에서 누군가의 질문에 답변한 내용이기도 하죠..
실제 사용하는 일은 거의 없겠지만.. 꼭 써야 하겠다… 라는 일도 생길수 있기에..^^;
그리고 전제조건이 암호화된 문자코드를 알고 있어야 한다는 것입니다..(만약 모른다면 역으로 쿼리를 날려도 되겠지만.. 그건 더욱 엄청난 모험입니다..-_-;;)

그럼 수고하세요~

출처 : 네이버 블로그  http://www.jojik.com/viewtopic.php?p=62

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다