i n v i t a t i o n

티스토리 초대장

+ 남은 초대장 수 : 01

안녕하세요!

티스토리에 보금자리를 마련하시려는 여러분께 초대장을 배포해 드리려고 합니다.

나만의, 내 생각을, 내 기억을 담는 소중한 블로그를 만들고 싶다면 티스토리로 시작해보세요!

티스토리 블로그는 초대에 의해서만 가입이 가능합니다. 원하시는 분은 댓글에 E-mail 주소를 남겨주시면 초대장을 보내드립니다. 남겨주실 때에는 꼭 비밀댓글로 남겨주세요!

초대장을 보내드리고 바로 개설하시지 않으신 분들은 초대장을 회수할 수도 있으니 바로 개설해주세요!

Yes
이런 분들께 드립니다!
1. 다른 블로그를 사용해보셨던 분
2. 이메일 주소가 정상적인 분
3. 블로그를 시작하려는 이유를 남겨주신 분!
No
이런 분들께 드리지 않아요!
1. 이메일 주소가 의심되는 분!
2. 이메일 주소를 남기지 않으신 분
3. 이유도 없이 달라고 하시는 분!
티스토리 이래서 좋아요!
1. 이미지, 동영상, 오디오, 파일까지! 무한 용량과 강력한 멀티미디어를 올릴 수 있어요!
2. 스킨위자드로 스킨을 내맘대로~ 거기에 기능 확장 플러그인까지!
3. 내가 원하는대로 myID.com으로 블로그 주소를 만들 수 있어요!

초대장 수신이 불가능한 이메일 주소를 적어주신 분들이 많네요. 초대장 수신이 불가능하신 분들은 건너뛰고 선착순으로 보내드리겠습니다. 


'else* > 만두!' 카테고리의 다른 글

티스토리 초대장 배포  (22) 2018.07.15
티스토리 초대장 배포  (36) 2018.03.23
티스토리 초대장 배포  (33) 2018.02.07
2017 티스토리 결산  (2) 2018.01.10
  1. 2018.07.15 02:03

    비밀댓글입니다

  2. 2018.07.15 02:03

    비밀댓글입니다

  3. 2018.07.15 02:03

    비밀댓글입니다

  4. 2018.07.15 02:05

    비밀댓글입니다

  5. 2018.07.15 02:05

    비밀댓글입니다

  6. 2018.07.15 02:06

    비밀댓글입니다

  7. 2018.07.15 02:06

    비밀댓글입니다

  8. 2018.07.15 02:08

    비밀댓글입니다

  9. 2018.07.15 02:08

    비밀댓글입니다

  10. 2018.07.15 12:52

    비밀댓글입니다

  11. 2018.07.16 18:50

    비밀댓글입니다

  12. 2018.07.17 02:10

    비밀댓글입니다

  13. 2018.07.17 13:45

    비밀댓글입니다

#page 85

대상파일 : gen-googlemaps.pcap
파일 개요 : www.google.com에 대한 간단한 웹 브라우징 세션. 클라이언트는 DNS 서버의 하드웨어 주소를 얻기위해 ARP request를 보낸 후, www.google.com의 ip 주소를 찾기위해 DNS 서버에 request를 전송한다. 성공적인 response를 받은 후 클라이언트는 서버의 80번 포트로 TCP connection을 생성하고, GET으로 메인페이지를 요청한다. 


ARP 부분. 위 두 패킷을 통해, DNS 서버의 하드웨어 주소를 얻는다. 아래 그림과 같이,
클라이언트의 경우, ip 주소가 192.168.0.106, 하드웨어 주소(MAC 주소)가 AsustekC_b0:30:23 이고,
DNS 서버는 ip 주소가 192.168.0.1, 하드웨어 주소가 D-Link_cc:a3:ea 이다.




3번 패킷에서 클라이언트는 maps.google.com의 ip 주소를 얻기 위해 DNS Query를 Arp를 통해 알아낸 DNS 서버에게 보낸다.


위 그림과 같이 4번 패킷은 DNS 서버가 클라이언트에게 클라이언트가 요청한 maps.google.com의 실제 이름(CNAME)이 maps.l.google.com이라는 것을 나타내고, 복수개의 ip 주소를 제공한다. 이후의 패킷들을 봤을 때, 첫 번째 주소인 74.125.19.147로 계속 통신하는 것을 알 수 있다.



5번 패킷부터 7번 패킷까지 이제 클라이언트는 maps.google.com에 대한 TCP connection을 맺기위한 3-way handshake 과정이다. 
5번 패킷을 보면, 클라이언트는 패킷이 라우터를 거쳐 maps.google.com(maps.l.google.com)으로 전달되게 하기위해서, 이더넷 헤더에서는 destination을 라우터의 MAC 주소, ip 헤더에서는 destination을 maps.google.com의 ip 주소인 74.125.19.147으로 설정한다. Flag를 보면 이 패킷이 SYN, SYN-ACK, ACK 과정에서 SYN 부분에 해당하는 영역인 것을 알 수 있다.


마찬가지로 FLAGs영역을 통해 6번 패킷은 SYN-ACK이고 7번 패킷은 ACK라는 것을 알 수 있다. Port 3012는 클라이언트가 연결을 위해 동적 소스 포트 번호로 사용한 것이다.


이제 클라이언트-서버 간의 TCP connection이 완료되어 established 되었다. 


이제 위의 그림처럼 8번 패킷에서 클라이언트는 서버에게 HTTP 프로토콜을 사용하여 메인 페이지를 요청한다.(GET / HTTP/1.1)


9번 패킷에서 서버는 클라이언트가 8번 패킷에서 보낸 메인 페이지 요청에 대한 수신으로 ACK(확인응답)을 전송한다.


10번 패킷부터 서버는 클라이언트에 메인 페이지 전송을 시작한다.




'Studing^ > Network' 카테고리의 다른 글

네트워크 공부  (0) 2018.07.15
WPA2 무선랜 해킹  (0) 2018.05.24
PCAPNG 파일  (0) 2017.10.30
패킷과 프레임의 차이  (0) 2017.10.17
Mac 이란?  (0) 2017.09.26
OSI 7 Layer (Network part)  (0) 2017.09.26

이번 글에서는 프로그램의 각 영역을 분할하여 각 각에 다른 위젯을 할당함으로써, 

기존에 설계했던 방식인 pe 구조 | hex view | 설명 창 구조로 만들기 위한 기반 작업을 수행하도록 하겠습니다. 

해당 작업을 하기 위해, pyqt4 의 QSplitter 라는 클래스를 이용하여 프로그램 창의 각 부분을 나누도록 하였습니다.

MainWindow와 독립적으로 구현하기 위해서, subWindow라는 하위 클래스를 만들어 이 클래스를 QSplitter로 3등분 분할한 뒤, MainWindow의 CentralWidget으로 등록함으로써 구현했습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
from PyQt4.QtGui import *
from PyQt4.QtCore import*
import sys
 
 
class MyWindow(QMainWindow):
   def __init__(self):
      QMainWindow.__init__(self)
 
      ### 윈도우 특성 설정 ###
      self.setWindowTitle('PEDU')
      self.setGeometry(400,200,1500,600)
      #self.setWindowIcon(QIcon(''))
      self.statusBar().showMessage('ready')
      self.creat_menubar_child()
      self.creat_menubar()
      subWin = subWindow()
      self.setCentralWidget(subWin)
      self.show()
 
 
   def creat_menubar_child(self):
      ### 메뉴바 설정 ###
      #load file
      self.fileAction1 = QAction("load file",self)
      self.fileAction1.setShortcut("Ctrl+O")
      self.fileAction1.setStatusTip("Load the file in local place")# 밑에서 상태를 알려줌
      self.fileAction1.triggered.connect(self.open_file)
 
      #exit 
      self.fileAction2 = QAction("Exit",self)
      self.fileAction2.setShortcut("Ctrl+C")
      self.fileAction2.setStatusTip("Exit the App")
      self.fileAction2.triggered.connect(self.close_window)
 
      #change font
      self.fileAction3 = QAction("Change Font",self)
      self.fileAction3.setShortcut("Ctrl+T")
      self.fileAction3.setStatusTip("Change the string font in application")
      self.fileAction3.triggered.connect(self.change_font)
 
 
   def creat_menubar(self):
      ### MenuBar ###
      mainMenu = self.menuBar()
      
      #File      
      fileMenu1 = mainMenu.addMenu('File')
      fileMenu1.addAction(self.fileAction1)
      fileMenu1.addAction(self.fileAction2)
 
      #Option
      fileMenu2 = mainMenu.addMenu('Options')
      fileMenu2.addAction(self.fileAction3)
 
      #Tool
      fileMenu3 = mainMenu.addMenu('Tools')
 
 
      ### toolbar 설정 ###
      #open_file
      # openIcon = QIcon()
      # openIcon.addFile('openFileImage2.png', QSize(16,16))
      # openAction = QAction(toolIcon, 'open_file', self)
      openAction = QAction(QIcon('file_open.png'), 'Open', self)
      openAction.triggered.connect(self.open_file)
 
      #exit_file
      exitAction = QAction(QIcon('exit.png'), 'Exit', self)
      exitAction.triggered.connect(self.close_window)
 
      #change_font
      setFontAction = QAction(QIcon('option.png'), 'Setting', self)
      setFontAction.triggered.connect(self.change_font)
 
 
      #open_file2
      self.openToolBar = self.addToolBar("Open")
      self.openToolBar.addAction(openAction)
 
      #exit_file2
      self.exitToolBar = self.addToolBar("Exit")
      self.exitToolBar.addAction(exitAction) 
 
      #change_font2
      self.setToolBar = self.addToolBar("Setting")
      self.setToolBar.addAction(setFontAction)
 
 
   def open_file(self):
      global filename
      filename = QFileDialog.getOpenFileName(self, "Select file")
      global Pfile
      Pfile = pefile.PE(filename)
 
 
   def close_window(self):
      result = QMessageBox.question(self, 'Message',"Are you sure you leave?", QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
 
      if result == QMessageBox.Yes:
         sys.exit()
      else:
         pass
      
 
   def change_font(self):
      font, valid = QFontDialog.getFont()
      if valid:
         self.styleChoice.setFont(font)
 
 
class subWindow(QWidget):
 
   def __init__(self):
      QWidget.__init__(self)
      self.creat_split_window()
      self.show()
 
 
   def creat_split_window(self):   
 
      hbox = QHBoxLayout()
      
      splitter1 = QSplitter(Qt.Horizontal)
 
      firstSection = QTextEdit()
      secondSection = QTextEdit()
      thirdSection = QTextEdit()
      
      splitter1.addWidget(firstSection)
      splitter1.addWidget(secondSection)
 
      #splitter1.addWidget(hexview)
      splitter1.setSizes([300,800])
 
      splitter2 = QSplitter(Qt.Horizontal)
      splitter2.addWidget(splitter1)
      splitter2.addWidget(thirdSection)
      splitter2.setSizes([1500,500])
 
      hbox.addWidget(splitter2)
      #QApplication.setStyle(QStyleFactory.create('Cleanlooks'))
      self.setLayout(hbox)
 
 
if __name__ == '__main__':
   app = QApplication(sys.argv)
   ex = MyWindow()
   sys.exit(app.exec_())
cs


완성된 프로그램은 다음과 같습니다.


보시다시피 splitter로 구현함으로써, 각 각의 영역의 크기를 자유자재로 조절할 수 있도록 하였습니다. 다음 포스팅에서는 저 splitter로 나눈 영역들을 하나 하나씩 채워나가며, 최종적으로는 각 영역들이 서로 통신할 수 있도록 하는 작업을 수행하도록 하겠습니다.


'Development > python' 카테고리의 다른 글

Develop PEDU with pyqt4 -5  (0) 2018.06.27
Develop PEDU with pyqt4 -4  (0) 2018.06.27
Develop PEDU with pyqt4 -3  (0) 2018.06.27
Develop PEDU with pyqt4 -2  (0) 2018.06.27
Develop PEDU with pyqt4 -1  (0) 2018.06.26

+ Recent posts

티스토리 툴바