김보안의 블로깅
  • 🏠 Home
  • 📚 Project
    • Blockchain
      • 🎦 PickMe
      • 🎦 IoTC
      • 🎦 Blackchain
      • 📃 Gemology
      • 🎦 PickMe
      • 🎦 PickMe
    • AI
      • 👋 A.I. Dream Reader
      • 🎦 A.I. Dream Reader
    • Security
      • 🎦 SNAC
    • Education
      • 🎦 Smart Lecture
  • 🤸‍♂ Hobby
    • Music
      • Violin
      • Guitar
      • Piano
      • Drum
    • Flower
      • Flower Certificate
    • Sport
      • Ski
      • Skateboard
      • Golf
      • Boxing

2017년 9월 18일 월요일

Cloud Sec 2016 관람 후기

 SecureKim     오전 10:07     Cloud, CloudSec, Conference, Security     No comments   


너무 늦은 감이 있지만 당시 정리 했던 걸 기록하기 위해 올림.

1.       개요

Cloud 현황, 시장 상황, 관련 솔루션들 소개

-일시 및 장소
2016/9/8, 서울 리츠 칼튼 호텔 그랜드 볼룸

2.       요약

Cloud Provider가 되려면 다양하고 복잡한 규정을 다 준수해야 함.
관련한 규정들은 전 세계 각국에서 2010년 이전부터 계속 심화되고 추가되었기 때문에
AWS, Azure, Google Cloud 정도만 이러한 규정을 모두 준수 가능한 상황.
즉 Cloud Provider 시장은 위 3 회사가 거의 독점하고 있으며, AWS가 주창한
보안 책임 공유 모델에 따라 Cloud Provider가 직접 해주지 않지만 반드시 해야하는 보안 (방화벽, 각종 설정, 암호화, 업데이트 등)과 전통적인 Private Cloud 과 Public Cloud 의 브릿지 역할을 해주는 보안 솔루션 시장만이 남아있는 상태로 보임.
금일 발표 대부분이 이러한 솔루션들 이었다는 것이 그 사실을 대변함.

3.       주요 행사 내용

기조 연설 1 : Take Control – Trend Micro, Bill McGee
불합리한 두려움에 대하여 : 비행기보다 자동차가 더 위험하듯, 당신의 데이터 센터보다 클라우드가 더 보안성이 좋다.
기조 연설 2 : Security and Compliance in AWS Cloud – AWS, Stanley Chan / Richard Busby
AWS 발전 가능성 : 우리 로드맵의 90%는 고객에 의해 제안된 것이다. 또한 AWS는 당신의 데이터가 어떤 하드에 저장 되어 있는지 모른다.
기조 연설 3 : 클라우드 환경에서의 보안 위협과 대응 방안 – 더존비즈온, 송호철
솔루션 소개 : QR코드로 로그인 하고, 지도에 간편히 찍어서 해당 위치를 벗어나면 접근이 불가하도록 가능하게 하는 특허가 있다. 서버는 프로그램 실행 화면만 보내주고, 클라이언트는 입력 값만 전송하는 방식으로 보안 시스템을 구성 가능하다.
기조 연설 4 : The Journey to the Cloud Security – CSA Korea, Thomas Park
Cloud 역사 및 시장 현황 : 2012년, 관공서에서 클라우드 쓰지 말라는 공문이 내려왔었으나 작년엔 클라우드 발전법을 한국에서 세계 최초로 제정하여 가산점까지 준다.
Track 1–1 : Cloud 관제서비스 고려 사항 – SK 인포섹, 박정현
솔루션 소개 : 방화벽 이벤트는 너무 많아서 소화 하기 매우 어려운데, 우리는 빅데이터 활용 방식으로 소화한다. 보호 해야할 자산이 얼마나 있는지 확인하고, 해커도 RIO 를 따진다는 사실을 기억하라. 즉 완벽한 보안 보다는 다른 서비스 보다 더 뚫기 어렵다는 상대적인 사실이 해커에게는 크게 작용한다. 이 때 서비스 근간을 흔들 보안은 AWS/Azure 가 관리하고 우리는 접근제어, 암호화, 무결성, 네트워크, 방화벽 등을 관리 한다.
로그가 많아지면 과금 비용도 우리가 내주고, GW / Host 방식 모두 지원한다.
Track 1-2 : 아마존 클라우드에서의 보안 적용 방안 – TrendMicro, 양희선

         솔루션 소개 : 서버, 스토리지, DB, 네트워크, 지역, 가용성 등은 AWS가 책임
나머지 로그, 콘텐츠, 미들웨어, 어플리케이션 등은 모두 고객이 관리해야 하는데, 우리가 책임져 주겠다. Auto scaling에 대응 가능하고, GW / Host 방식 모두 지원한다.

Track 1-3 : 클라우드 시대의 네트워크와 보안 – VMware, 윤준호
트렌드 : Private Cloud + Public Cloud = Hybrid Cloud. 시장은 이미 이러한 방향으로 나아가고 있는데, 솔루션 도입에 있어서 자동화가 얼마나 잘 되는가가 큰 요소이다.

Track 1-4 : 클라우드 인프라 자원 및 DBMS 관리 사례 – 굿모닝아이텍, 권중술
패스워드 관리 방안 : 보안이 취약해서 뚫리는게 아니라 기본 계정/패스워드가 문제이다.
우리는 비밀번호를 OTP 형식으로 관리해주고, 어플리케이션의, 하드 코딩 된 비밀번호도 전부 지원해 준다. 이런 방식의 관리는 규모가 커질 수록 수동으로는 절대 할 수 없으니, 우리의 솔루션을 이용해 보라.

Track 1-5 : 하이브리드 클라우드의 효율적인 보안 적용 – 제뉴버, 이상조
Host / GW : 오늘 계속 나온 이야기로, 클라우드 보안에는 Host 방식과 GW 방식이 있다. Host 방식이 리소스를 잡아먹고 설치가 필요하다는 이슈가 있으나 장애가 발생하면 그 서버 한대에만 영향을 미치고, Auto Scaling에 대응 가능하고, VM간 공격에 대해 차단이 가능하므로 더 좋다.



4.       사진

시작 전 기대되는 오늘 행사. 행사에 한시간 반 전에 갔지만 얼리버드 상품은 못 받음.
Trend Micro, Bill McGee. 클라우드에 대한 불합리한 두려움에 대하여
이외에도 여러가지 아이디어가 좋았던 더존의 보안 솔루션.


부스 사진
Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg

2017년 9월 13일 수요일

블루본 (BlueBorne) - Bluetooth 취약점과 탐지(Detector) 앱 분석

 SecureKim     오후 3:50     리눅스, 블루본, 안드로이드, 애플, 앱, 윈도우, 취약점, 타이젠, blueborne, bluetooth, cve, detector, iOS, Security, vulnerability     2 comments   



이 글이 국내에서는 BlueBorne 에 대한 최초의 포스팅이 될 것 같다.


먼저 BlueBorne 에 대해서 알아보고,


Armis 社의 BlueBorne Detector 앱을 열어서 


어떤식으로 Detect 하는지 확인해 본다.






BlueBorne 이란?

Armis security 에서 17년 9월 12일 
8가지 Bluetooth 취약점 Collection 인 BlueBorne 을 발표 했다.

Bluetooth 관련 프로세스는 모든 OS에서 높은 권한을 갖고 있기 때문에
해당 프로세스를 exploit 하는데 성공한다면 자연히 디바이스의 통제권을 얻을 수 있다고 볼 수 있다.

Blueborne 은 악의적인 기기와 연결되어 있지 않아도 되고, 검색 가능 모드가 아니어도 상관 없는데다 Android, Linux, Windows, iOS 등 거의 모든 컴퓨터, 모바일기기, IoT 제품에 적용된다.

즉, Blueborne는 블루투스 기능을 갖고있는 약 80억개의 Device 에 적용되어 스펙트럼이 매우 넓으면서도 공격 성공시 막강한 권한을 갖게 되는 것이다.


BlueBorne Collection의 CVE 목록은 다음과 같다.


ㆍAndroid
 CVE-2017-0781 : Remote Code Execution Vulnerability #1
 CVE-2017-0782 : Remote Code Execution Vulnerability #2
 CVE-2017-0783 : The Bluetooth Pineapple in Android Man in The Middle attack
 CVE-2017-0785 : Information Leak Vulnerability

ㆍLinux
 CVE-2017-1000250 : Information leak vulnerability
 CVE-2017-1000251 : Linux kernel RCE vulnerability

ㆍWindows
 CVE-2017-8628 : The Bluetooth Pineapple in Windows – Man in The Middle attack

ㆍiOS
 CVE-2017-14315 : Apple Low Energy Audio Protocol RCE vulnerability



위의 CVE-2017-8628(Windows) 과 CVE-2017-0783(Android) 내용을 보면 같은 취약점인걸 알 수 있다.

왜 그럴까?

사실상 블루투스 프로토콜은 구현 하기가 어렵기 때문에,
벤더들은 대부분 프로토콜 가이드라인 대로 하나씩 구현 하게 된다.
(Wifi 스펙은 450p 인데 블루투스 스펙은 무려 2822p)
즉, 대부분 취약점이 발견되었을 때 다른 플랫폼에서도 동일하게 발견 되는 것이다.

더 자세한 정보는 armis 공식 홈페이지의 blueborne 소개 자료를 확인해 보면 된다.

아직까지 관련 보안 패치는 올라오지 않았는데 무시무시한 영상들이 올라와있다.


Demo : Android 





Demo : Windows






Demo : Linux







패치가 나오기 전까지는 bluetooth 를 꺼놓는게 좋을 것으로 보이며, 

리눅스인 경우 CONFIG_CC_STACKPROTECTOR 를 적용해 빌드하면 그나마 CVE-2017-1000251 를 DoS 정도로 완화 할 수 있다.



BlueBorne Detector


또한 pastebin 에 blueborne detector 로 추정되는 소스코드의 일부가 올라와 있어서 찾아보았는데 이미 detector 앱이 나와있었다.

코드 일부 :  https://pastebin.com/RhN6mkqd
앱 : 

https://play.google.com/store/apps/details?id=com.armis.blueborne_detector


Detector 는 확인 결과 두가지 기능으로 이루어져 있다.

1. 자신의 모바일 기기가 BlueBorne 에 안전한지 본다.


해당 함수는 isVulnerable 인데, 내용이 별로 없다.

Smali Code - VulnerabilityUtils.smali


.method public static isVulnerable()Z
.locals 4

.prologue

...... 생략 .......

.line 34
.end local v0 # "securityPatchDate":Ljava/util/Date;
:cond_1
invoke-static {}, Lcom/armis/blueborne_detector/VulnerabilityUtils;->getSecurityPatchDate()Ljava/util/Date;

move-result-object v0

.line 35
.restart local v0 # "securityPatchDate":Ljava/util/Date;
if-eqz v0, :cond_2

sget-object v2, Lcom/armis/blueborne_detector/VulnerabilityUtils;->SAFE_DATE:Ljava/util/Date;

invoke-virtual {v0, v2}, Ljava/util/Date;->before(Ljava/util/Date;)Z

...... 생략 ......


위와 같이 직접 공격을 해보고 취약한지 보는건 아니고
단순히 패치 날짜를 보고 판단하게 된다.


2. 내 주변 Bluetooth 기기들이 안전한지 확인




이 기능은 매우 실망 스러웠다.

Mac 주소를 엄청나게 하드코딩 해둔 뒤
제조사를 파악하고
그 제조사의 이름에 따라 Risk 한지 아닌지를 파악한다.

그림에 High Risk 라고 나오는건 MAC 주소가
24:4B:03 으로 시작되므로 아래 하드코딩된 정보에 따라
취약하다고 판단하게 된다.

Smali Code - Manuf.smali

const-string v3, "24:4B:03"

aput-object v3, v1, v2

const/16 v2, 0x77



Armis가 취약하다고 판단하는 제조사는 Apple 부터 시작해서 ZTE 까지 거의 모든 제조사이다. 

즉, 이름이나 MAC 주소로 제조사가 판단되면 무조건 취약하다고 하는 건데

이딴식(?)으로 만든 이유에 대해

1. 구체적인 POC 를 공개하기 싫어서 (공개되면 큰일이긴 함)
2. 만들기 귀찮아서... 

등의 추측을 하고 있다.



결론적으로, 추후 패치가 나올지는 모르겠지만
현재는 Vulnerability Detector 가 아니라 그냥 Manufacturer Detector 라고 볼 수 있겠다.




Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg

2017년 5월 4일 목요일

노트북에 칼리 리눅스 설치하기

 SecureKim     오전 12:26     깔기, 노트북, 리눅스, 설치, 칼리, 한글, 한글 깨짐, install, Kali, linux, OS, secure boot     7 comments   



드디어 저만의 리눅스 PC를 갖게 되었네요.

한성컴퓨터... 예전에 기계식 키보드를 하나 샀었는데 가성비가 좋길래

이번에 OS 없는 리퍼비시로 노트북 하나 장만 했습니다.



설치 순서는 다음과 같습니다.

1. 칼리 리눅스 다운로드
https://www.kali.org/downloads/

2. USB에 이미지 굽기
https://sourceforge.net/projects/win32diskimager/
또는
https://www.pendrivelinux.com/universal-usb-installer-easy-as-1-2-3/
다운 받으셔서 이미지를 write 하세요. 캡쳐한 사진이 없는데
UI 가 직관적이라 바로 아실겁니다.

3. secure-boot disable
부팅하면 BIOS(파란화면) 나오는데 boot 부분에서
USB 부팅을 Enable 하도록 선택하시면 됩니다.

그런데 USB 부팅시 secure-boot 가 어쩌고 하면서 진행이 안되는 문제가 있으실텐데
그건 노트북에 secure-boot 가 적용되어 있기 때문입니다.

secure-boot 는 부팅이미지의 서명을 확인하는데,
저희가 깔려고 하는 칼리 리눅스를 거부합니다. secure-boot 를 끄면 됩니다.

4. 칼리 리눅스 설치
설치 안내 나오는 대로 잘 따라하시면 됩니다.
잘 모르겠으면 Default 값 선택하세요.

4. 설치 끝나고 재부팅 해도 칼리로 시작이 안될 때
BIOS 설정에서 f3 인가 f6인가 ... 누르면 기본 세팅으로 시작이 됩니다. 
화면 우하단쪽에 설명 잘 보시고 기본 세팅으로 시작하시면 됩니다.

5. 한글 깨짐 현상
이 글을 보고 계시는 분들은 대부분 칼리를 한글로 설치하셨을 겁니다.
그러면 시작하자마자 굉장히 당황하시게 됩니다.

왜냐하면 글자가 다 깨지기 때문이죠...
일단 저는 네트워크를 연결하지 않은 상태에서 설치했기 때문에

cat /etc/apt/sources.list 해서 수정 했습니다.




그리고
apt-get update
apt-get install fonts-nanum*
apt-get install fcitx-hangul
apt-get install fcitx-lib*
reboot

하시면 한글이 잘 나오고 한영 변환도 잘 될겁니다.

이제 재밌는거 많이 해 볼 생각이에요 후후후


+추가
도저히 한영 변환이 안될때는
im-config 에서 ibus를선택하고
ibus-hangul 을 설치
ibus-setup 에서 input-method -> Add 에서 한글 선택
 그리고 설정 -> 지역 및 언어 -> 입력소스에서 한국어 (Hangul) 을 선택해준다.

이후 화면 최상단 우측에 언어모양 클릭하고
한글상태 On -> 설정에서 단축키 변경


Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg

2016년 10월 27일 목요일

미라이 봇넷(MIRAI BOTNET) Attack 분석

 SecureKim     오후 11:08     공격, 미라이, 봇넷, 취약, Attack, botnet, IoT, Mirai, Security, Virus     7 comments   


MIRAI BOTNET 


요새 MIRAI BOTNET이 한창 말이 많아서

과연 내 IoT 제품은 안전할까? 걱정되시는 분들이 많으실 것 같습니다.


그런데 벌써 MIRAI 소스코드가 다 공개되었기 때문에

MIRAI가 실제로 IoT 기기 공격을 어떻게 하는건지 분석했고

주요 부분만 간추려서 정리하였습니다.




일단 바쁘신 분들을 위해 결론만 적어보자면



MIRAI BOTNET에 취약한가?


1. 23번 포트(Telnet)를 쓰고 있다

2. ID/PW가 추측하기 쉽다.


이러면 기본적으로 MIRAI BOTNET 에 취약하다 볼 수 있습니다.

반대로 1, 2 둘 중 하나만 만족하지 않아도 MIRAI BOTNET에 취약하지 않습니다.



그러나 금방 변형이 등장할 것 이므로.....


해결책은?


1. 최대한 (특히 쉘을 제공하는) 포트를 열지 않는다.

2. 아이디 / 패스워드를 어렵고 길게 만든다.



정도가 되겠네요.


MIRAI -> IoT 기기 공격 분석입니다.



1. Injection

공격 방식은 아이디/패스워드 테이블에서 랜덤하게 뽑아서 대입해 보는 것으로,

Burpsuite 의 Intruder로 따지자면 Pitchfork 형태가 되겠습니다.


이 Parameter는 add_auth_entry("아이디", "패스워드", "가중치") 로 설정하는데,

가중치가 높을수록 공격시 랜덤으로 뽑힐 가능성이 높아집니다.



가장 가중치를 높게( 10 ) 설정 한 부분의 난독화를 풀면 

add_auth_entry("root", "xc3511", 10)  입니다.

아이디가 root이면서 패스워드가 xc3511 인 IoT 기기가 특히 많나 보네요.



2. Port



보시면 Packet Header 를 설정하는데, dest 는 23번 (Telnet) 포트로 고정하고,

src는 1024 이하에서 랜덤으로 설정합니다.

이 부분이 중요합니다. MIRAI BOTNET은 23번 포트만 스캐닝 합니다. 



1, 2 번이 끝나고 3번부터는 계속 루프를 돌면서 스캐닝을 합니다.



3. IP

IP는 랜덤하게 가져옵니다.

다만 정말 마구잡이로 랜덤하게 설정하는 것은 아닙니다.

아래처럼, 



Class별로 IP처럼 생긴 숫자만 뽑아서 랜덤하게 만듭니다.



4. Scan

이제 Syn Raw Packet을 만들어 쏘고, Syn +Ack 패킷 받는 걸 계속합니다.

방식은 하나씩 시도 해보는게 아니라

커넥션을 128개까지 만들어서 syn 패킷을 보내놓고,

한꺼번에 처리하는 방식입니다.



5. Attack

Connection이 성립하면 공격을 하는데,

이 부분을 BruteForce라고 부르기가... 좀 애매합니다.

왜냐하면 62개 정도 밖에 안되는 ID / PW 셋을 

모두 다 시도 해보는 것도 아니고 

아래처럼 가중치에 따라 랜덤하게 뽑아서 시도 해보기 때문입니다.






다만 Connection 이 살아있다면, 10번 정도 더 시도 해보긴 합니다.....







마치며...


일단 오늘 MIRAI Botnet 공격( MIRAI -> IoT )의 실체를 파헤쳐 보았는데요.

소스 코드를 보면 복잡하고 어려운 공격이라기 보다

최대한 빠르게 취약한 기기들을 장악하려는 제작자의 의도를 알 수 있습니다.






성공 후 감염은 어떻게 시키는 건지 

CNC 서버와 통신은 어떻게 하는건지 등등


더 볼만한 부분이 많습니다.

MIRAI의 소스는 다음 GitHub주소 에서 보실 수 있습니다.

https://github.com/jgamblin/Mirai-Source-Code



감사합니다.






Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg

2016년 10월 4일 화요일

[Android] Frida 사용해보기

 SecureKim     오후 11:14     android, Frida, Security     No comments   


입소문으로만 들었던 Frida. 직접 사용해 보기로 했다.
(프리더 아니고 프라다 아니다.)

이상하게도 한국에는 소개된 블로그가 없었다..


기본적으로 DBus 를 타고 PC쪽이 client, 앱쪽이 server인 구조를 갖고 있다.

PC에서 스크립트를 작성해서 실행하면 된다.



다른 것보다 빌드가 제일 힘들었다... 프록시에.. VS2015에... Python Path에 공백 없어야 되고..
잘되던 nodejs 용 npm 도 안되서 Python 등등 그냥 집에서 다 빌드 해서 가져 왔다.

바로 frida-ps 를 치면 에러가 나올텐데 chcp 65001 등으로 콘솔 코드 페이지 바꿔 줘야 한다.

-안드로이드-
인터넷에 영어로 찾아보면 다 있는 내용인데 정리해 본다.

원하는 앱을 실행시키고, {경로}/frida-server (예) /data/local/tmp/frida-server를 실행하면 된다.
윈도에서는 frida-trace -U -i open "원하는 패키지명" 하면 바인딩 된다. 

일단 프로세스에 Attach 하는 방법은, frida-ps 으로 pid를 찾고,
frida -U -p {pid} 로 Attach 하면 된다.
또는 app 이름 알면 앱으로 바로 Attatch 가능하다.
frida -U com.example.seccon2015.rock-paper-scissors

(실제 내가 해본 예제는 블로그에 올릴 수 없는 내용이라서...
글로만 서술했다. 죄송..)

아래는 인터넷에 돌아다니는 예제들인데,

작성 -> Attach 후 -> %load Examples.js 하면 앱 실행하면서 같이 돌아간다.




Examples.js

//http://blog.mdsec.co.uk/2015/04/instrumenting-android-applications-with.htmlD
alvik.perform(function () {
   
    var LockManager = Dalvik.use("com.github.orangegangsters.lollipin.lib.managers.LockManager");
    var LockManagerInstance = LockManager.getInstance();
    var AppLock = LockManagerInstance.getAppLock();
 
    for(var i=1230; i<1235 64="" a="" accessing="" activity.hookme.overload="" activity="Dalvik.use(" after="" alvik="" and="" android.content.context="" application="Dalvik.use(" are="" arg="" args="" ava.available="" ava="" available="" button="" c.a.implementation="function" c.tostring="" c621f5aee06dad53e37c="" c="" call="" called="" cedricvb.be="" check="" class="" classes="" classname="" clicked="" client="" com.example.myapp.myactivity="" com.example.seccon2015.rock_paper_scissors.mainactivity="" com.onlycoin.android.secure.sslpinning="" com.test.test="" comment="" console.log="" console="" context="" crash="" currentapplication="" dalvik.perform="" defeating-ssl-pinning-in-coin-for-android="" defined="" do="" done="" else="" enumerate="" enumerating="" flag="" flankerhqd="" foo="" found="" frida="" function="" gist.github.com="" github.com="" got="" handler="" have="" here="" hook="" hookme="" how="" http:="" https:="" i="" if="" immediate="" implementation="function" in="" inning="" instrumentando-apps-android-frida="" is="" issues="" it="" java.enumerateloadedclasses="" java.lang.string="" java.perform="" java="" json.stringify="" know="" kr.repo.h2spice.yekehtmai.c="" la-es="" like="" line="" loaded="" log="" mainactivity.onclick.implementation="function" mainactivity="Java.use(" message="" not="" onclick="" oncomplete:="" one:="" onmatch:="" original="" our="" out="" package_info="" package_name="" post="" pre="" prettyphoto="" process="" question:="" refer="" result="" return="" rotlogix.com="" running="" s.tostring="" s="" seccon-2015-reverse-engineering-android-apk-2-400-writeup="" send="" set="" should="" show="" sign="package_info.signatures[0];" signs="" ss.tostring="" ss="" sslpinning.a.overload="" sslpinning="Dalvik.use(" str1="" str2="" t="" that="" the="" this.a.overload="" this.cnt.value="999;" this.cnt="" this.m.value="0;" this.n.value="1;" this.onclick="" this="" to="" tring1:="" tring2:="" v="" values="" var="" vm="" we="" when="" whenever="" won="" www.welivesecurity.com="">
Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg

2016년 8월 19일 금요일

[Batch] SO 파일에서 OpenSSL 버전 확인

 SecureKim     오후 2:20     배치, 버전 확인, 윈도우, Batch, OpenSSL, Version, windows     No comments   


안녕하세요.

So 파일에서 OpenSSL 버전을 확인해주는 배치 스크립트입니다.

버전은 0.9.8a ~ 1.0.2z 까지만 찾아줍니다.

검사가 끝나면 OpenSSL_result.txt 파일이 나옵니다.

제가 만들었고 라이센스 없습니다. 마음껏 쓰세요.


@echo off
rem VERSION SET
Title byOpenSSL 1.0.1
set MIN=98
set MAX=102
color 30
del /F /Q OpenSSL_result.txt >nul
del /F /Q OpenSSL_list.txt >nul
cls
echo --START-------------------------------------------------
findstr /SNM /C:"OpenSSL 0" *.so > OpenSSL_list.txt
findstr /SNM /C:"OpenSSL 1" *.so >> OpenSSL_list.txt
echo --DETECTED----------------------------------------------
echo.
type OpenSSL_list.txt
echo.
echo --DETECT Version----------------------------------------
for /f "delims=" %%i in (OpenSSL_list.txt) do call :GO_FOR %%i
:GO_FOR
 echo OpenSSL detected - %1
 set PRE=%MAX%
 set tmp=%1
 if NOT DEFINED tmp (
  color 70
  del /F /Q OpenSSL_list.txt
  echo.
  echo --RESULT------------------------------------------------
  echo.
  type OpenSSL_result.txt
  echo.
  echo --END---------------------------------------------------
  echo.
  pause >nul
  color
  exit
 )
 :NEXT

 if %PRE% LSS %MIN% (
  echo But There is no OpenSSL - Version 0.9.8a ~ 1.0.2z
  exit/b
 )

 if %PRE% LSS 100 (
  set FIRST=0
  set SECOND=%PRE:~0,1%
  set THIRD=%PRE:~1,1%
 ) ELSE (
  set FIRST=%PRE:~0,1%
  set SECOND=%PRE:~1,1%
  set THIRD=%PRE:~2,1%
 )

 findstr /SNM /C:"OpenSSL %FIRST%.%SECOND%.%THIRD%a" %1>nul
 if %ERRORLEVEL% EQU 0 (
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%a
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%a>>OpenSSL_result.txt
  exit/b
 )
 findstr /SNM /C:"OpenSSL %FIRST%.%SECOND%.%THIRD%b" %1>nul
 if %ERRORLEVEL% EQU 0 (
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%b
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%b>>OpenSSL_result.txt
  exit/b
 )
 findstr /SNM /C:"OpenSSL %FIRST%.%SECOND%.%THIRD%c" %1>nul
 if %ERRORLEVEL% EQU 0 (
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%c
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%c>>OpenSSL_result.txt
  exit/b
 )
 findstr /SNM /C:"OpenSSL %FIRST%.%SECOND%.%THIRD%d" %1>nul
 if %ERRORLEVEL% EQU 0 (
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%d
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%d>>OpenSSL_result.txt
  exit/b
 )
 findstr /SNM /C:"OpenSSL %FIRST%.%SECOND%.%THIRD%e" %1>nul
 if %ERRORLEVEL% EQU 0 (
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%e
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%e>>OpenSSL_result.txt
  exit/b
 )
 findstr /SNM /C:"OpenSSL %FIRST%.%SECOND%.%THIRD%f" %1>nul
 if %ERRORLEVEL% EQU 0 (
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%f
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%f>>OpenSSL_result.txt
  exit/b
 )
 findstr /SNM /C:"OpenSSL %FIRST%.%SECOND%.%THIRD%g" %1>nul
 if %ERRORLEVEL% EQU 0 (
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%g
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%g>>OpenSSL_result.txt
  exit/b
 )
 findstr /SNM /C:"OpenSSL %FIRST%.%SECOND%.%THIRD%h" %1>nul
 if %ERRORLEVEL% EQU 0 (
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%h
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%h>>OpenSSL_result.txt
  exit/b
 )
 findstr /SNM /C:"OpenSSL %FIRST%.%SECOND%.%THIRD%i" %1>nul
 if %ERRORLEVEL% EQU 0 (
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%i
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%i>>OpenSSL_result.txt
  exit/b
 )
 findstr /SNM /C:"OpenSSL %FIRST%.%SECOND%.%THIRD%j" %1>nul
 if %ERRORLEVEL% EQU 0 (
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%j
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%j>>OpenSSL_result.txt
  exit/b
 )
 findstr /SNM /C:"OpenSSL %FIRST%.%SECOND%.%THIRD%k" %1>nul
 if %ERRORLEVEL% EQU 0 (
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%k
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%k>>OpenSSL_result.txt
  exit/b
 )
 findstr /SNM /C:"OpenSSL %FIRST%.%SECOND%.%THIRD%l" %1>nul
 if %ERRORLEVEL% EQU 0 (
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%l
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%l>>OpenSSL_result.txt
  exit/b
 )
 findstr /SNM /C:"OpenSSL %FIRST%.%SECOND%.%THIRD%m" %1>nul
 if %ERRORLEVEL% EQU 0 (
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%m
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%m>>OpenSSL_result.txt
  exit/b
 )
 findstr /SNM /C:"OpenSSL %FIRST%.%SECOND%.%THIRD%n" %1>nul
 if %ERRORLEVEL% EQU 0 (
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%n
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%n>>OpenSSL_result.txt
  exit/b
 )
 findstr /SNM /C:"OpenSSL %FIRST%.%SECOND%.%THIRD%o" %1>nul
 if %ERRORLEVEL% EQU 0 (
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%o
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%o>>OpenSSL_result.txt
  exit/b
 )
 findstr /SNM /C:"OpenSSL %FIRST%.%SECOND%.%THIRD%p" %1>nul
 if %ERRORLEVEL% EQU 0 (
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%p
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%p>>OpenSSL_result.txt
  exit/b
 )
 findstr /SNM /C:"OpenSSL %FIRST%.%SECOND%.%THIRD%q" %1>nul
 if %ERRORLEVEL% EQU 0 (
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%q
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%q>>OpenSSL_result.txt
  exit/b
 )
 findstr /SNM /C:"OpenSSL %FIRST%.%SECOND%.%THIRD%r" %1>nul
 if %ERRORLEVEL% EQU 0 (
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%r
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%r>>OpenSSL_result.txt
  exit/b
 )
 findstr /SNM /C:"OpenSSL %FIRST%.%SECOND%.%THIRD%s" %1>nul
 if %ERRORLEVEL% EQU 0 (
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%s
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%s>>OpenSSL_result.txt
  exit/b
 )
 findstr /SNM /C:"OpenSSL %FIRST%.%SECOND%.%THIRD%t" %1>nul
 if %ERRORLEVEL% EQU 0 (
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%t
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%t>>OpenSSL_result.txt
  exit/b
 )
 findstr /SNM /C:"OpenSSL %FIRST%.%SECOND%.%THIRD%u" %1>nul
 if %ERRORLEVEL% EQU 0 (
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%u
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%u>>OpenSSL_result.txt
  exit/b
 )
 findstr /SNM /C:"OpenSSL %FIRST%.%SECOND%.%THIRD%v" %1>nul
 if %ERRORLEVEL% EQU 0 (
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%v
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%v>>OpenSSL_result.txt
  exit/b
 )
 findstr /SNM /C:"OpenSSL %FIRST%.%SECOND%.%THIRD%w" %1>nul
 if %ERRORLEVEL% EQU 0 (
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%w
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%w>>OpenSSL_result.txt
  exit/b
 )
 findstr /SNM /C:"OpenSSL %FIRST%.%SECOND%.%THIRD%x" %1>nul
 if %ERRORLEVEL% EQU 0 (
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%x
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%x>>OpenSSL_result.txt
  exit/b
 )
 findstr /SNM /C:"OpenSSL %FIRST%.%SECOND%.%THIRD%y" %1>nul
 if %ERRORLEVEL% EQU 0 (
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%y
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%y>>OpenSSL_result.txt
  exit/b
 )
 findstr /SNM /C:"OpenSSL %FIRST%.%SECOND%.%THIRD%z" %1>nul
 if %ERRORLEVEL% EQU 0 (
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%z
  echo %1 - OpenSSL %FIRST%.%SECOND%.%THIRD%z>>OpenSSL_result.txt
  exit/b
 )

 set /a PRE-=1
 goto NEXT

exit/b

Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
최근 게시물 이전 게시물 홈

페이지

  • 홈
  • Hobby

Categories

  • AI
  • AWS
  • Blockchain
  • Hardware
  • Javascript
  • Node.js
  • Plasma
  • Security
  • Study
  • Video
  • android
  • mysql
  • review
  • windows

Popular Posts

  • 블랙보드 강의 녹화 영상 다운로드 가능한 방법 (노설치)
    별도의 설치도 필요 없고 아주 쉽습니다. 구글 크롬브라우저 에서 블랙보드 녹화 영상에  다운로드 가능한 메뉴가 나오게 하는 코드입니다.  먼저 블랙보드 강의자료에 입장하고, 재생 버튼을 클릭 하지 않은 상태로 F12 를 입력합니다. 재생을 클릭하지 마...
  • 회사 프록시와 인증서에 고통받는 그대를 위한 글 (Bash, Gradle, Python, wget, nodejs(npm), apt-get, cURL, git, yarn, androidStudio)
    대기업에 입사하면 장단점이 있는데, 단점 중에 하나가 회사에서 프록시를 사용하여 트래픽 감시를 하므로 프록시 설정을 해주어야 한다는 점 입니다. 특히, 회사에서는 https 트래픽도 감시를 하므로 인증서도 설정해 주어야 합니다. 그런데 문...
  • Termux 로 안드로이드에 우분투(GUI)와 VSCode설치하기
      많은 글들이 있지만 뭔가 대부분 잘 안됐다. 이번 기회에 정리한다. 0. 먼저 Termux와 Remote Desktop Manager를 설치한다. Remote Desktop Manager 대신 아래도 나쁘지 않다. 화면이 작지만 마우스 스크롤이나 ...

Blog Archive

  • ▼  2026 (2)
    • ▼  2월 (2)
      • 태블릿에서 양자내성암호(격자암호) 돌려보기
      • 양자컴퓨터와 보안 위협 (쇼어 알고리즘)
  • ►  2025 (3)
    • ►  9월 (1)
    • ►  8월 (1)
    • ►  7월 (1)
  • ►  2024 (2)
    • ►  11월 (2)
  • ►  2023 (2)
    • ►  10월 (1)
    • ►  1월 (1)
  • ►  2022 (10)
    • ►  12월 (1)
    • ►  11월 (3)
    • ►  9월 (1)
    • ►  8월 (1)
    • ►  6월 (2)
    • ►  3월 (2)
  • ►  2021 (9)
    • ►  12월 (3)
    • ►  11월 (1)
    • ►  6월 (1)
    • ►  5월 (2)
    • ►  4월 (2)
  • ►  2020 (12)
    • ►  10월 (1)
    • ►  9월 (2)
    • ►  7월 (1)
    • ►  6월 (1)
    • ►  5월 (5)
    • ►  4월 (1)
    • ►  2월 (1)
  • ►  2019 (14)
    • ►  10월 (2)
    • ►  7월 (1)
    • ►  3월 (4)
    • ►  2월 (2)
    • ►  1월 (5)
  • ►  2018 (14)
    • ►  12월 (2)
    • ►  11월 (4)
    • ►  10월 (1)
    • ►  8월 (2)
    • ►  5월 (4)
    • ►  1월 (1)
  • ►  2017 (12)
    • ►  10월 (2)
    • ►  9월 (9)
    • ►  5월 (1)
  • ►  2016 (8)
    • ►  10월 (2)
    • ►  8월 (1)
    • ►  6월 (1)
    • ►  1월 (4)
  • ►  2015 (6)
    • ►  12월 (3)
    • ►  10월 (1)
    • ►  6월 (1)
    • ►  5월 (1)
  • ►  2014 (10)
    • ►  11월 (1)
    • ►  9월 (1)
    • ►  7월 (1)
    • ►  6월 (1)
    • ►  5월 (3)
    • ►  4월 (1)
    • ►  3월 (2)
  • ►  2013 (28)
    • ►  12월 (3)
    • ►  11월 (6)
    • ►  10월 (6)
    • ►  9월 (6)
    • ►  8월 (1)
    • ►  7월 (3)
    • ►  6월 (3)

구독

글
Atom
글
전체 댓글
Atom
전체 댓글

로드 중입니다...

각오

직접 해보지 않은 것은 포스팅 하지 않겠습니다.

Copyright © 김보안의 블로깅 | Powered by Blogger
Design by Hardeep Asrani | Blogger Theme by NewBloggerThemes.com | Distributed By Gooyaabi Templates