웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
해시로부터 주민등록번호 복호화
2008.03.12 22:38
이 스크립트를 사용하려면 다음과 같은 정보를 알고있어야 합니다.
- 생년월일
- 성별
- md5등으로 해시화 된 주민등록번호
미리보기
어디까지나 학습용 소스입니다... 악용하면 개인정보보호법에 걸리니 조심하세요 ~
Coded by Kay(fallstoofast), flixey.com
- 생년월일
- 성별
- md5등으로 해시화 된 주민등록번호
<?php
$b_year = $_POST['b_year'];
$b_month = $_POST['b_month'];
$b_day = $_POST['b_day'];
$gender = $_POST['gender'];
$s_no_hash_str = $_POST['s_no_hash_str'];
$hash_type = $_POST['hash_type'];
// error messages
if(!$b_year){
echo "* 생년을 입력하세요<br />";
}
if(!$b_month){
echo "* 생월을 입력하세요<br />";
}
if(!$b_day){
echo "* 생일을 입력하세요<br />";
}
if(!$gender){
echo "* 성별을 선택하세요<br />";
}
if(!$s_no_hash_str){
echo "* 해시화 된 주민등록 번호를 입력하세요.<br />";
}
if(!$hash_type){
echo "* 해시 함수의 종류를 선택하세요<br />";
}
// 모든 값이 입력되었으면 처리 시작
if($b_year && $b_month && $b_day && $gender && $hash_type && $s_no_hash_str){
// 0로 패딩하기
$b_year = str_pad($b_year, 4, '19', STR_PAD_LEFT);
$b_month = str_pad($b_month, 2, '0', STR_PAD_LEFT);
$b_day = str_pad($b_day, 2, '0', STR_PAD_LEFT);
$b_year_det = substr($b_year,0,2);
$b_year = substr($b_year,2,2);
if($b_year_det == "18"){
if($gender == "1"){
$gender = "9";
}
else{
$gender = "0";
}
}
else if($b_year_det == "19"){
if($gender == "1"){
$gender = "1";
}
else{
$gender = "2";
}
}
else if($b_year_det == "20"){
if($gender == "1"){
$gender = "3";
}
else{
$gender = "4";
}
}
// 주번 2 처리
for($misc=0;$misc<=99999;$misc++){
// 주번 2 0으로 패딩
$misc = str_pad($misc, 5, '0', STR_PAD_LEFT); // pad left with 0's
// 주번 1 이랑 주번 2이랑 잇기
$s_no_1 = $b_year.$b_month.$b_day;
$s_no_2 = $gender.$misc;
// 주번 전체 처리
$s_no_string = $s_no_1.$s_no_2.get_check_no($s_no_1.$s_no_2);
// 해시화
if($hash_type == "md5"){
$s_no_hash = md5($s_no_string);
}
else if($hash_type == "sha1"){
$s_no_hash = sha1($s_no_string);
}
// 해시 추가하실 수 있습니다 ~
// 해시가 일치하면 루프를 브레이크처리하고 결과 출력
if($s_no_hash == $s_no_hash_str){
echo "
결과: ".$s_no_string."(".$s_no_hash.")";
break;
}
// 해시가 일치하지 않으면 현재 값 출력하고 컨티뉴 ~
else{
echo "처리중: ".$s_no_string."(".$s_no_hash.")<br />";
}
}
}
// 주번 확인번호 처리 함수
function get_check_no($s_no){
unset($total);
for($i=0; $i<13; $i++){
$s_no[$i] = intval($s_no[$i]); // convert to integer
}
// 주민등록번호 계산
$total = $s_no[0]*2 + $s_no[1]*3 + $s_no[2]*4 + $s_no[3]*5 + $s_no[4]*6 + $s_no[5]*7 + $s_no[6]*8 + $s_no[7]*9 + $s_no[8]*2 + $s_no[9]*3 + $s_no[10]*4 + $s_no[11]*5;
$total = $total%11;
$check_no = 11-$total;
// 확인 번호 계산
if($check_no>9){
$check_no = $check_no % 10;
}
return $check_no; // 결과 출력
}
?>미리보기
어디까지나 학습용 소스입니다... 악용하면 개인정보보호법에 걸리니 조심하세요 ~
Coded by Kay(fallstoofast), flixey.com
댓글 2
| 제목 | 글쓴이 | 날짜 |
|---|---|---|
| 이미지 삽입후 이미지 위에 노란색 박스 사라지게하는 법 [5] | dhseo | 2008.05.28 |
| 웹페이지에 마우스 따라다니는 예쁜 시계를 넣자 [5] | gosoo99 | 2008.04.08 |
| 메뉴에서 채팅방 띄우기 용도로 쓰는 스크립트 | 코아 코스튬 | 2011.01.30 |
| XE 검색 속도 향상 팁(확장 변수 검색시) [5] | 명드래곤 | 2011.02.26 |
| [권한이 없습니다] 권한에 따른 다른 메시지 출력하기 [10] [1] | 반도체맨 | 2008.10.03 |
| 상담/신청 (쓰기만 가능한 게시판) 만들기 [10] | mmx900 | 2008.03.20 |
| 디자인 하시는 분에게 ~ 신기한 팁 (from IE) [2] | 999 | 2011.02.23 |
|
관리자 아이디로 작성한 비밀글을 특정인이 볼수있도록 해주는 팁
[13]
| Dreami | 2009.04.03 |
| [중복일수도...] Srl 생성의 비밀???;;? [1] | RainDrop+ | 2011.02.22 |
| 관리권한 가져도 댓글이 수정/삭제 안 되는 경우.. [4] | sejin7940 | 2011.02.14 |
| 게시판모듈 글목록에서 분류명(카테고리)를 이미지로 표현하기 [4] | nalireco | 2011.01.06 |
| 해시로부터 주민등록번호 복호화 [2] | fallstoofast | 2008.03.12 |
| IIS 7용 Rewrite | fsfsdas | 2011.02.20 |
| nginx에서 대역폭 제한하기 | fsfsdas | 2011.02.20 |
| MySQL db를 InnoDB로 바꾸기 (MyISAM to InnoDB) | fsfsdas | 2011.02.20 |
| 리눅스에서 디렉토리, 파일 용량 확인하기 | fsfsdas | 2011.02.20 |
| 우분투 charset을 euc-kr로 변경하기 | fsfsdas | 2011.02.20 |
| 우분투 10.04 LTS, 시스템 정보 보기 | fsfsdas | 2011.02.20 |
| 우분투 10.04 LTS, sendmail 설치 및 설정 | fsfsdas | 2011.02.20 |
| 우분투 10.04 LTS, SSH 사용자 접속 제한 | fsfsdas | 2011.02.20 |
흠좀무.. 하기사 브루트포싱이니까 안될게 어딨나여.. --;