Tải bản đầy đủ (.pdf) (41 trang)

Bài tập lớn môn an toàn mạng (66)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.11 MB, 41 trang )

HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG
KHOA CƠNG NGHỆ THƠNG TIN I

BÁO CÁO BÀI TẬP LỚN
Học phần: AN TỒN MẠNG
Chủ đề: TÌM HIỂU CUTYCAPT
Nhóm mơn học:

Nhóm 02

Giảng viên hướng dẫn:

TS.Đặng Minh Tuấn

Sinh viên thực hiện:

Lương Hoàng Long

Mã sinh viên:

B18DCAT143

Hà Nội - 2021


Mục Lục
LỜI MỞ ĐẦU

3

DANH SÁCH TỪ VIẾT TẮT



4

DANH MỤC CÁC HÌNH VẼ

5

CHƯƠNG 1: GIỚI THIỆU CƠNG CỤ

6

1. Giới thiệu về cơng cụ Cutycapt

6

2. Mục đích sử dụng

7

3. Các phiên bản CutyCapt

7

4. Các phương thức sử dụng có trong gói cutycapt

10

5 . Cơ chế hoạt động của ứng dụng

12


6 . Phân tích mã nguồn của Cutycapt

13

6.1 Phân tích source code file .hpp

13

6.2 Phân tích source code file .cpp

17

7. Module Cutycapt dùng trong SPARTA

28

CHƯƠNG 2: CÀI ĐẶT VÀ SỬ DỤNG CÔNG CỤ

29

1. Cách sử dụng

29

2. Các ví dụ

29

3. Cài đặt và sử dụng Cutycapt


31

CHƯƠNG 3: DEMO Bài lab thu thập hình ảnh với Cutycapt với các định dạng lưu trữ khác nhau

34

1. Định dạng JPG,PNG

34

2 .Định dạng PDF

35

3. Định dạng SVG

36

4. Định dạng PS

37

5. Yếu điểm của Cutycapt khi sử dụng thực tế

38

TÀI LIỆU THAM KHẢO..………………………………………………………………………………..39
LỜI CẢM ƠN……………………………………………………………………………………………..40


2


LỜI MỞ ĐẦU
Hiện nay , với sự phát triển của nền tảng mạng đi cùng với đó là những website ,
ứng dụng web ngày càng được quan tâm và là nơi lưu trữ một lượng lớn tài nguyên về
hình ảnh có thể mang lại giá trị trong việc . Chúng ta luôn muốn thu thập tái sử dụng
những nguồn dữ liệu hình ảnh này trong các lĩnh vực mà mình thực sự quan tâm . Nền
tảng web là nơi tri thức số được biểu diễn dưới dạng hình ảnh được người đọc quan tâm
nhất . Với sự quan tâm đó , rất nhiều công cụ lưu trữ , biểu diễn số hóa ảnh từ những nền
tảng web đã được tạo ra dưới dạng mã nguồn mở . Trong số đó nổi bật hơn cả là
CutyCapt, wkhtmltoimage, Firefox, PhantomJS và Pageres-CL . Mỗi một phương pháp
biểu diễn hình ảnh bằng cách chụp lại màn hỉnh luôn tồn tại những ưu điểm và nhược
điểm nhưng đối với cộng đồng người sử dụng nhưng Cutycapt là một nền tảng dưới dạng
chương trình cũng như module ứng dụng mà được mọi người sử dụng phổ biến và rộng
rãi nhất . Trong bài báo cáo này , em mong muốn phân tích những đặc điểm , cơ chế sử
dụng của Cutycapt bằng việc khai thác thực tế cũng như phân tích mã nguồn của module
, từ đó ta có thể tùy biến dưới dạng mã nguồn mở của hệ thống như mong muốn phát
triển của tác giả.

3


DANH SÁCH TỪ VIẾT TẮT
Từ viết tắt
SVG
PDF
PS
PNG


Thuật ngữ tiếng Anh/ giải thích
Scalable Vector Graphics
Portable Document Format
Vector Image Files - PostScript
File
Portable Network Graphics

JPEG
GIF
BMP
X11

Joint Photographic Experts Group
Graphics Interchange Format
Windows bitmap
X11

X Window
System
GUI
Unix

X windown
Graphical User Interface
Unix

4

Thuật ngữ tiếng Việt/ giải thích
định dạng ảnh vector 

định dạng tài liệu di động
Tập tin dưới định dạng Binary được
phát triển bởi Adobe Systems.
Dạng hình ảnh sử dụng phương
pháp nén dữ liệu mới khơng làm
mất đi dữ liệu gốc
Phương pháp nén ảnh phổ biến
Định dạng Trao đổi Hình ảnh
 tập tin đồ họa lưu dưới dạng BMP 
Hệ thống cửa sổ dùng để hiển thị
đồ họa bitmap
X Window là một hệ thống cửa sổ
dùng để hiển thị đồ họa bitmap
Giao diện đồ họa người dùng
Unix là một họ hệ điều hành máy
tính đa nhiệm, đa người dùng


DANH MỤC CÁC HÌNH VẼ
Hình 1 Hình ảnh hệ thống cutycapt
Hình 2 Các phiên bản cutycapt
Hình 3 Giao diện hiển thị chức năng cutycapt
Hình 4 Hình ảnh github cutycapt
Hình 5 Code khai báo file .hpp
Hình 6 Code khởi tạo giá trị file .hpp
Hình 7 Code định dạng dữ liệu file hình ảnh
Hình 8 Các hàm xử lý hệ thống
Hình 9 Code khởi tạo file .cpp
Hình 10 Code khởi tạo định dạng file .cpp
Hình 11 Code xử lý Javascript của Cutycapt

Hình 12 Code hàm tạo Contructor file .cpp
Hình 13 Hàm xử lý của Cutycapt
Hình 14 Lưu file Snapshot
Hình 15 Code chọn định dạng file
Hình 16 Code duyệt Frame với CssSelector
Hình 17 Giao diện hướng dẫn khởi tạo
Hình 18 Hàm main xử lý hệ thống
Hình 19 Hàm main xử lý hệ thống 2
Hình 20 Cấu hình trong Sparta
Hình 21 Hình ảnh ví dụ thực hiện
Hình 22 Giao diện cài đặt
Hình 23 Thực thi lệnh
Hình 24 Hình ảnh sau khi chụp
Hình 25 Lệnh thực thi hình ảnh PNG
Hình 26 Hình ảnh chụp định dạng JPG
Hình 27 Lệnh thực thi hình ảnh PDF
Hình 28 Hình ảnh chụp định dạng PDF
Hình 29 Lệnh thực thi với định dạng SVG
Hình 30 Hình ảnh chụp định dạng SVG
Hình 31 Lệnh thực thi với định dạng PS
Hình 32 Hình ảnh chụp định dạng PS

5

7
10
11
14
15
15

16
17
18
19
20
21
22
23
24
25
26
27
28
29
31
32
33
34
35
35
36
36
37
37
38
38


CHƯƠNG 1: GIỚI THIỆU CƠNG CỤ
1. Giới thiệu về cơng cụ Cutycapt

Cách dễ nhất để chụp [1]một trang cụ thể dưới dạng hình ảnh png là sử dụng
CutyCapt, một cơng cụ dòng lệnh dễ dàng chuyển đổi các trang HTML sang đồ họa
vector và định dạng hình ảnh bitmap trong Linux (ví dụ: SVG, PDF, PS, PNG, JPEG,
TIFF, GIF). CutyCapt sử dụng nội bộ công cụ kết xuất WebKit để xuất kết xuất trang web
thành tệp hình ảnh. Nó sử dụng Qt để xây dựng, CutyCapt thực sự là một ứng dụng đa
nền tảng cũng có thể được sử dụng trên Windows. (Chú thích: Cũng có một IECapt dựa
trên lõi IEC có thể được sử dụng cho mục đích này).
CutyCapt được viết bởi Bjorn Hohrmann.Là một tiện ích cộng đồng open source
đã được Public lần đầu vào năm 2009 dưới dạng file biên dịch và được lập trình trên nền
tảng ngơn ngữ C++.
 CutyCapt chỉ định user agent, có thể cung cấp cho một số quyền kiểm soát
đối với cách trang sẽ được hiển thị. Ở đây , ta có thể nhận được một danh sách rất dài
các user agentchuỗi khác nhau ở đây .
Quá trình cài đặt diễn ra khá dễ dàng . Cần máy chủ X11 chạy trên máy của mình
để sử dụng CutyCapt. Ngồi ra, chúng ta sẽ cần phải chạy nó qua xvfb-run, điều này
cũng khơng khó.
[2]Một vấn đề ta có thể nhận thấy với CutyCapt là thiếu một số nội dung động sẽ
chỉ hiển thị nếu cuộn xuống trang. Tiện ích này có khá nhiều tính năng, nhưng cuộn
khơng phải là một trong số đó.

Hình 1 Hình ảnh hệ thống cutycapt
6


2. Mục đích sử dụng
CutyCapt là một tiện ích dịng lệnh đa nền tảng để ghi lại cách hiển thị trang web
của WebKit thành nhiều định dạng vector và bitmap, bao gồm SVG, PDF, PS, PNG,
JPEG, TIFF, GIF và BMP.
Để ghi lại cách hiển thị trang web của WebKit thành nhiều định dạng vector và
bitmap, bao gồm SVG, PDF, PS, PNG, JPEG, TIFF, GIF và BMP.


3. Các phiên bản CutyCapt
Từ khi được công bố vào năm 2010 dưới dạng mã nguồn mở lưu trên source
github Cutycapt được thêm vào nhiều module của các công cụ phát triển khác , được tùy
biến thành nhiều phiên bản khi hoạt động riêng rẻ tại các module nhưng phần code lõi
của phiên bản đầu tiên thì vẫn được duy trì từ năm 2010 .
dep: libatomic1 (> = 4,8) [armel, m68k, sh4]
Hỗ trợ thư viện cung cấp các hàm tích hợp __atomic
dep: libc6 (> = 2.11) [hppa]
Thư viện GNU C: Thư viện được chia sẻ
cũng là một gói ảo được cung cấp bởi libc6-udeb
dep: libc6 (> = 2.16) [x32]
dep: libc6 (> = 2.17) [arm64, ppc64el]
dep: libc6 (> = 2,27) [riscv64]
dep: libc6 (> = 2,29) [sh4]
dep: libc6 (> = 2,4) [không phải alpha, arm64, hppa, ppc64el, riscv64, sh4, x32]
dep: libc6.1 (> = 2.1.3) [alpha]
Thư viện GNU C: Thư viện được chia sẻ
cũng là một gói ảo được cung cấp bởi libc6.1-udeb
dep: libgcc-s4 (> = 4.1.1) [hppa]
Thư viện hỗ trợ GCC
dep: libgcc1 (> = 1: 3.0) [không phải armel, armhf, hppa, m68k]
Gói khơng có sẵn
dep: libgcc1 (> = 1: 3.5) [armel, armhf]
dep: libgcc2 (> = 4.2.1) [m68k]
Gói khơng có sẵn
7


dep: libgl1 [hppa, m68k, sh4]

Thư viện điều phối GL trung lập của nhà cung cấp - hỗ trợ GL kế thừa
dep: libgl1-mesa-glx [sparc64]
gói giả chuyển tiếp
hoặc libgl1
Thư viện điều phối GL trung lập của nhà cung cấp - hỗ trợ GL kế thừa
dep: libgles2 [armel, armhf]
Thư viện điều phối GL trung lập của nhà cung cấp - Hỗ trợ GLESv2
cũng là một gói ảo được cung cấp
bởi mali-t62x-fbdev-driver , mali-t62x-wayland-driver , mali-t62x-x11-driver , ma
li-t76x-fbdev-driver , mali-t76x-wayland-driver , mali-t76x-x11-driver
dep: libqt5core5a (> = 5.12.2) [amd64, i386, x32]
Mô-đun lõi Qt 5
dep: libqt5core5a (> = 5.5.0) [không phải amd64, i386, x32]
dep: libqt5gui5 (> = 5.0.2) [armel, armhf, sparc64]
Mô-đun GUI Qt 5
dep: libqt5gui5 (> = 5.0.2) [not armel, armhf, sparc64]
Mô-đun GUI Qt 5
hoặc libqt5gui5-gles (> = 5.0.2)
Mô-đun GUI Qt 5 - Biến thể OpenGL ES
dep: libqt5network5 (> = 5.0.2)
Mô-đun mạng Qt 5
dep: libqt5printsupport5 (> = 5.0.2)
Mô-đun hỗ trợ in Qt 5
dep: libqt5svg5 (> = 5.6.0 ~ beta)
Mô-đun SVG Qt 5
dep: libqt5webkit5 (> = 5.212.0 ~ alpha3) [not armel, armhf, sparc64]
Thư viện công cụ nội dung web cho Qt
dep: libqt5webkit5 (> = 5.6.0 ~ rc) [armel, armhf, sparc64]
dep: libqt5widgets5 (> = 5.0.2)
Mô-đun vật dụng Qt 5

8


dep: libstdc ++ 6 (> = 5)
Thư viện C ++ chuẩn GNU v3
sug: xvfb
Virtual Framebuffer 'giả mạo' máy chủ X

Hình 2 Các phiên bản cutycapt

9


4.Các phương thức sử dụng có trong gói cutycapt

Hình 3 Giao diện hiển thị chức năng cutycapt

root @ kali: ~ # cutycapt --help
 ---------------------------------------- ------------------------------------ Cách sử dụng: CutyCapt --url = http: // www. example.org/ --out = localfile.png            
 --------------------------------------- -------------------------------------  --help
Trang trợ giúp này và thoát                
  --url = <url>
URL cần lấy (http: ... | file: ... | ...)  
  --out = <đường dẫn>
Tệp đích (.png | pdf | ps | svg | jpeg | ... )  
  --out-format = <f>
Giống như phần mở rộng trong --out, ghi đè
heuristic
  --min-width = <int>
Chiều rộng tối thiểu cho hình ảnh (mặc định:

10


800)  
  --min-height = <int>
600)  
  --max-wait = <ms>
  --delay = <ms>
  --user-style-path =
  
  --user-style-string = <css>
bản          
  --header = <name>: <value>
thể được đặt
  --method = <get | post | put>
  --body-string = <string>
khơng có)      
  --body-base64 = < base64>  
định: khơng có)
  --app-name = <name>
định là khơng có  
  --app-version = <version>
User-Agent; default is none  
  --user-agent = <string>
  --javascript = <bật | tắt>
  --java = <bật | tắt>
  --plugins = <bật | tắt>
  
  - duyệt riêng tư = <bật | tắt>
     

  --auto-load-images = <bật | tắt>
  --js-can-open-windows = <on | off>
  --js-can-access-clipboard = <on | off>
định)
  --print-backgrounds = <on | off>
  --zoom-factor = <float>
phóng)      
  --zoom-text-only = <bật | tắt>
tắt)
  --http-proxy = <url>
khơng có)    --insecure

Chiều cao tối thiểu cho hình ảnh (mặc định:
Thời gian đợi (mặc định: 90000, inf: 0)
Sau khi tải thành công, hãy đợi (mặc định: 0)    
Vị trí của tệp biểu định kiểu người dùng, nếu có
Quy tắc kiểu người dùng được chỉ định là văn
Tiêu đề u cầu; có thể lặp lại; một số khơng
Chỉ định phương thức yêu cầu (mặc định: get)  
Nội dung yêu cầu chưa được mã hóa (mặc định:
Nội dung yêu cầu được mã hóa Base64 (mặc
appName được sử dụng trong User-Agent; mặc
Phiên bản app được sử dụng trong
Ghi đè tiêu đề User-Agent Qt sẽ đặt  
Thực thi JavaScript (mặc định: bật)          
Thực thi Java (mặc định : chưa biết)            
Thực thi plugin (mặc định: không xác định)      
Duyệt web riêng tư (mặc định: khơng xác định)
Tải hình ảnh tự động (mặc định: bật)        
Tập lệnh có thể mở cửa sổ không? (mặc định:  

Script clipboard privs (mặc định: không xác
Nền trong đầu ra PDF / PS (mặc định: tắt)  
Hệ số thu phóng trang (mặc định: khơng thu
Có chỉ thu phóng văn bản hay khơng (mặc định:
Địa chỉ cho proxy HTTP máy chủ (mặc định:
Bỏ qua lỗi chứng chỉ SSL / TLS            
11


 ----------------------------------------- -----------------------------------  <f> là các định dạng nội dung svg, ps, pdf, itext, html, rtree, png, jpeg, mng, tiff, gif,
bmp, ppm, xbm, xpm.    

5 . Cơ chế hoạt động của ứng dụng
Nếu hệ thống của được thiết lập để biên dịch các ứng dụng Qt, thì việc xây dựng
CutyCapt chỉ nên đơn giản là kiểm tra mã nguồn và cách chạy qmakecũng như phiên bản
của. Ví dụ: nếu đang chạy Ubuntu Hardy Heron và đã định cấu hình hệ thống để sử dụng
các gói từ đó hardy-backports, chúng ta nên làm như sau:
sudo apt-get install subversion libqt4-webkit libqt4-dev g ++
svn co svn: //svn.code.sf.net/p/cutycapt/code/ cutycapt
cd cutycapt / CutyCapt
qmake
make
./CutyCapt - -url = http: //www.example.org --out = example.png
Sử dụng CutyCapt mà không cần máy chủ
Chúng ta khơng thể sử dụng CutyCapt mà khơng có máy chủ X, nhưng có thể sử
dụng ví dụ: Xvfb làm máy chủ nhẹ nếu khơng chạy mơi trường máy tính để bàn đồ họa
tương tác. Ví dụ, có thể sử dụng:
xvfb-run --server-args = "- màn hình 0, 1024x768x24" ./CutyCapt --url = ... --out = ...

6 . Phân tích mã nguồn của Cutycapt

Mã nguồn mở Cutycapt
Link Github :
/>ERxtwQ7XIMyVHIVbm5O-XrQ

12


Hình 4 Hình ảnh github cutycapt
6.1 Phân tích source code file .hpp
File CutyCapt.hpp là tập tin viết bằng ngôn ngữ lập trình C++. Nó chứa tệp tiêu đề của
mã nguồn CutyCapt nằm trong một chương trình nào đó. Ngồi ra, tập tin . hpp còn lưu
trữ các kiểu dữ liệu và các tham số.

Khai báo thư viện

13


Hình 5 Code khai báo file .hpp

Hàm thiết lập giá trị đầu vào cho phương thức

Hình 6 Code khởi tạo giá trị file .hpp

Định dạng kiểu file trong hệ thống
14


Hình 7 Code định dạng dữ liệu file hình ảnh


Các hàm xử lý và các biến sử dụng:

15


Hình 8 Các hàm xử lý hệ thống

16


6.2 Phân tích source code file .cpp
Trong q trình xử lý hệ thống file .cpp sẽ chứa đoạn mã thực thi của chương trình
cutycapt.

Cutycapt cần thiết lập thư viện đầu vào cũng như phương thức xử lý của Network , SVG ,
WEBKIT , GUI , CORE system.
Ngồi ra nó cịn import những Plugin sử dụng cho quá trình sử lý của hệ thống file như
JPEG , GIF , SVG , MNG , ICO.

Hình 9 Code khởi tạo file .cpp

17


Từ những QString ban đầu được xử lý , hệ thống sẽ biết được file sẽ chứa định dạng
format được lưu trong 1 mảng chứa định dạng file .

Hình 10 Code khởi tạo định dạng file .cpp

18



Từ dữ liệu đầu vào của QWebFrame là QString CutyPage sẽ gán dữ liệu cho QString và
gán dữ liệu trả về là Null.
Trong file cịn có hàm JS Confirm , JSPrompt ,JSConsoleMessage , JSAlert đây là những
phương thức xử lý JS phía UI frontend .

Hình 11 Code xử lý Javascript của Cutycapt

19


Hàm tạo phương thức và hàm tạo instant contructor dữ liệu của Cutycapt:

Hình 12 Code hàm tạo Contructor file .cpp

20


Hàm xử lý chính của Cutycapt:

Hình 13 Hàm xử lý của Cutycapt

21


Cutycapt sử dụng cơ chế lưu Snapshot lưu một “hình ảnh” tức thời về hệ thống file của
máy chủ tại một khoảng thời gian nhất định.
Snapshot được thiết kế cho mục đích lưu trữ ngắn hạn. Do đó, snapshot mới nhất sẽ ghi
đè lên image cũ hơn.


Hình 14 Lưu file Snapshot

22


Từ mformat đầu vào là kiểu định dạng từ lời gọi file , switch để chọn định dạng theo kiểu
định dạng từ file hệ thống.

23


Hình 15 Code chọn định dạng file

24


AssertElement sẽ thực thi theo CssSelector , gán từ thành phần đầu tiên đến thành phần
cuối của xử lý.

Hình 16 Code duyệt Frame với CssSelector

Khởi tạo mặc định sẽ in ra giao diện sử dụng của Cutycapt:

25


×