반응형

파이썬 웹 크롤링 / 네이버 첫화면 HTML 가져오기 
- beautifulsoup Parser와 비교

 

HTML 가져오기 위한 라이브러리, Beautifulsoup를 가져오기 위한 라이브러리

HTML을 가져오기 위한 라이브러리는 urllib 이며, request 모듈을 이용한다. urllib은 내장 라이브러리로 별도 설치할 필요가 없습니다.

 

HTML을 가져와서 보기는 어려워 Parser를 이용해 HTML을 쉽게 파악할 수 있도록 파싱합니다.

Parser에는 여러 종류가 있겠지만, 잘 알려진 bs4 라이브러리의 Beautifulsoup 모듈을 이용해 봅니다.

"pip install bs4" 명령어로 설치할 수 있고, Pycharm을 사용한다면 아래와 같은 방법으로 설치합니다.

 

File > Settings > Project Interpreter > [+] > bs4 설치

 

네이버 첫화면 HTML 가져오기를 위한 코드

 

request 모듈을 이용해 naver의 url의 html을 가져옵니다.

그리고 가져온 html을 보기 편하도록 BeautifulSoup 모듈로 파싱합니다.

from bs4 import BeautifulSoup
import urllib.request as req

url = "https://naver.com"
res = req.urlopen(url).read()
soup = BeautifulSoup(res, 'html.parser') 

print(res) #native html 출력
print(soup) #파싱된 html 출력

 

 

가져온 html과 파싱한 결과 비교

아래 결과를 보았을 때, html은 파싱하여 이용해야 하고, 다음엔 이 파싱된 부분을 가지고 이용하는 방법에 대해 다루어 보겠습니다. 

 

파싱되지 않은 html

파싱한 html

반응형
반응형

정보보안기사 필기 독학 / 시스템 보안 / 2. 랜섬웨어, 멜트다운

 

랜섬웨어(Ransomware)

컴퓨터 시스템에 저장된 사용자 문서 파일을 암호화하거나 컴퓨터 시스템을 잠그고 돈을 요구하는 악성 프로그램으로 전자메일이나 웹사이트 등 다양한 경로를 통해 감염된다.

 

멜트다운(Meltdown)

인텔 x86 마이크로프로세서, IBM 파워 마이크로프로세서 및 일부 ARM 기반 마이크로프로세서에 영향을 주는 하드웨어 취약점이다. (CPU 취약점)

 

스펙터(Spectre)

분기 예측이 적용된 모든 현대 마이크로프로세서에 영향을 주는 하드웨어 보안 취약점이다. (CPU 취약점)

 

관련 문제

14회 랜섬웨어의 특징으로 옳지 않은 것은? 3
①CryptoLocker는 중요 파일을 암호화하고 돈을 요구한다.
②Browlock은 경찰로 위장하여 불법사이트 접속에 대한 벌금 납부를 유도한다.
③주로 파일 암호화 알고리즘인 RSA를 이용한다.
④돈을 지급하더라도 복구가 제대로 이루어지지 않는 경우가 많다.

8회 악성코듸의 종류는 무엇인가? 4
[보기]
이 악성코드는 컴퓨터 시스템에 저장된 사용자 문서 파일을 암호화하거나 컴퓨터 시스템을 잠그고 돈을 요구하는 악성 프로그램으로 전자메일이나 웹사이트 등 다양한 경로를 통해 감염된다. 이러한 악성코드로는 크립토월, 크립토락커, CoinVault 등이 대표적으로 알려져 있다.
① 바이러스
② 루트킷
③ 웜
④ 랜섬웨어

 

25. 암호가 걸려 해당 자료들을 열지 못하게 하는공격을 의미하는 것은? 1
① Ransomware
② DRDos
③ Stuxnet
④ APT

14회 멜트다운 취약점의 특징으로 잘못된 것은? 2
①CPU 성능을 높이기 위한 메커니즘을 악용하는 취약점이다.
②메모리보다 하드디스크 영역에 접근하는 것이 빠른 점을 이용했다
③사용자가 커널에서 관리하는 메모리영역에 접근할 수 있다
④부채널 공격의 일종이다

 

14회 다음 중 하드웨어에 기반한 보안 취약점 및 공격은? 4
①shellshock
②heartbleed
③WannaCry
④spectre

반응형
반응형

정보보안기사 필기 독학 / 시스템 보안 / 1. 트로이 목마, 백도어

 

트로이 목마(Trojan horse)

일반 프로그램에 악의적인 루틴을 추가하여 그 프로그램을 사용할 때 본래의 기능 이외에 악의적인 기능까지 은밀히 수 행하도록 하는 공격을 말한다. 자기복제 능력이 없고, 악성코드 전파하지 않는다. 

 

백도어(Backdoor)

인증되지 않은 사용자에 의해 컴퓨터의 기능이 무단으로 사용될 수 있도록 컴퓨터에 몰래 설치된 통신 연결 기능을 말한다.

 

관련 문제 풀기

7회, 14회  다음 중 트로이 목마(Trojan)의 일반적인 특징 및 기능으로 옳지 않은 것은? 2
①패스워드 가로채기
②악성코드 전파
③파일 파괴
④원격 조정

 

11회 트로이목마의 특징이 아닌 것은? 2
① 백도어(Back Door)로 사용할 수 있다.
② 자기복제 능력이 있다.
③ 유용한 프로그램에 내장되어 배포될 수 있다.
④ 정보유출이나 자료파괴 같은 피해를 입힐 수 있다.

 

11회 다음 지문은 무엇을 설명한 것인가? 1
[보기]
일반 프로그램에 악의적인 루틴을 추가하여 그 프로그램을 사용할 때 본래의 기능 이외에 악의적인 기능까지 은밀히 수 행하도록 하는 공격을 말한다. 예를 들어 사용자 암호를 도출 하기 위해서 합법적인 로그인(login) 프로그램으로 가장하고 정상적인 로그인 순서와 대화를 모방하여 작성될 수 있다.
① 트로이목마(Netbus)
② 매크로 바이러스(Macro virus)
③ 웜(I-Worm/Hybris)
④ 악성 스크립트(mIRC)

 

7회 9. 트로이목마 프로그램으로 사용자의 키보드 입력을 가로채는 목적으로 사용되기 때문에 이 프로그램이 동작하는 컴퓨터에서 입력되는 모든 것이 기록되어 개인정보 등이 도용당하게 되는 해킹기법은 무엇인가? 4
① 포트스캔
② 쿠키
③ DoS
④ 키로그

 

14회 46. 해커가 리눅스 시스템을 해킹하여 백도어 프로그램을 설치하였다. 만약 시스템이 재시작되어도 본인이 설치한 프로그램이 실행되도록 하고 싶다면 다음중 어떤 파일에 접근해야 하는가? 4
①resolv
②hosts
③crontab

④rc.d/rc.local

 

* crontab : 작업을 고정된 시간, 날짜, 간격에 주기적으로 실행할 수 있도록 스케줄링하기 위한 프로그램

* rc.d/rc.local : 부팅 시 자동실행 명령어 스크립트를 수행한다. 

 

10회 크래커들이 자주 사용하는 방법 중에는 한번 들어온 서버에 다시 쉽게 침입할 수 있도록 suid가 설정된 root 소유의 프로그램을 백도어로 설치하여 다음에는 손쉽게 root 권한을 획득 할 수 있도록 하는 방법이 있다. 아래으 명령어를 사용하여 시스템관리자는 주기적으로 suid로 설정된 파일을 모니터링 하여 시스템을 안전하게 보호할 필요가 있다. 괄호 ( ) 안에 들어갈 옵션을 순서대로 바르게 나타낸 것은 어느 것인가? 4

[보기]
#find / -( ) root -( ) 4000 -( ) ls -l { } \,

① user, exec, perm
② exec, user, perm
③ perm, user, exec
④ user, perm, exec

 

8회 다음은 크래커 A가 남긴 C소스 코드와 바이너리 파일이다. 이에 대한 설명으로 적합한 것은? 3

[보기]

[user@localhost test]$ Is -I
total 20
-rwsr-xr-x 1 root 13923 Oct 7 21:13 test
-rw-rw-r- 1 root root 88 Oct 7 21:12 test. C
[user@localhost test]$ cat test.c
#include
void main()
{
setuid(0);
setgid(0);
system("/bin/bash");
}

① setgid 시스템 콜의 인자를 0으로 준 것으로 보아 Race Condition 기법의 공격이다.
② /bin/sh를 실행시키는 거승로 보아 Sniffing 기법이다.
③ setuid 시스템 콜의 인자가 0이고 컴파일된 바이너리 파일의 퍼미션이 4755인 것으로 보아 루트 권한을 탈취하는 백도어이다.
④ main 함수의 리턴형태가 void 이므로 Format String Attack으로 보인다.

반응형
반응형

QT qml의 popup 표시하고 timer를 이용해 팝업 닫기

 

open 버튼을 누르면 팝업이 표시되고, 팝업이 표시되고 3초 이후 팝업이 자동적으로 닫히도록 만들어 보겠습니다. 또한 팝업에 문구 출력하고, 버튼도 추가하여, 팝업에 있는 버튼을 누르면 바로 팝업이 닫히도록 만들어 보겠습니다.

 

버튼(Button) 정의

버튼을 생성하였습니다. 

버튼을 클릭하면 팝업이 표시되고, 타이머를 시작하도록 하였습니다. 

    Button {
       id: mainButton
       text: "Open"
       onClicked:{
           popup.open()
           timer.start()
       }
    }

 

타이머(Timer) 정의

타이머를 생성하였습니다. 

타이머는 3000ms(3초) 뒤에 트리거가 발생되어 팝업이 닫히도록 하였습니다.

mainButton을 눌렀을 때, 타이머 시작되어 3초 이후 트리거가 발생됩니다. 

    Timer {
        id: timer
        interval: 3000; running: false; repeat: false
        onTriggered: popup.close()
    }

 

팝업(Popup) 정의

팝업을 생성하였는데, Label이 표시되도록 하였고, Button을 생성해 button을 누르면 팝업이 바로 닫히도록 하였습니다.

팝업이 닫힐 때에는 타이머를 정지 시킵니다. 

closePoli

팝업 표시된 부분 밖에를 눌러도 팝업이 닫히지 않게 하려면, 아래 코드를 넣습니다. 

Popup.CloseOnPressOutsideParentclosePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutsideParent

Popup {
       id: popup
       x: 100
       y: 100
       width: 200
       height: 300
       modal: true
       focus: true
       onClosed: timer.stop()
       Label {
            text:qsTr("This is popup")
       }

       Button {
          text: "Close"
          y: 200
          onClicked:{
              popup.close()
          }
       }
   }

전체 코드

import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.12

Window {
    width: 640
    height: 480
    visible: true

    Button {
       id: mainButton
       text: "Open"
       onClicked:{
           popup.open()
           timer.start()
       }
    }

    Timer {
        id: timer
        interval: 3000; running: false; repeat: false
        onTriggered: popup.close()
    }

   Popup {
       id: popup
       x: 100
       y: 100
       width: 200
       height: 300
       modal: true
       focus: true
       onClosed: timer.stop()
       Label {
            text:qsTr("This is popup")
       }

       Button {
          text: "Close"
          y: 200
          onClicked:{
              popup.close()
          }
       }
   }
}
반응형

+ Recent posts