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

báo cáo cá nhân xây dựng chương trình quản lí thư viện

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 (8.43 MB, 47 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI </b>

<b>VIỆN TOÁN ỨNG DỤNG VÀ TIN HỌC </b>

<small> </small>

<b>BÁO CÁO CÁ NHÂN MƠN KỸ THUẬT LẬP TRÌNH Chủ đề: Xây dựng chương trình quản lí thư viện </b>

Giảng viên hướng dẫn: Nguyễn Thành Nam

Sinh viên thực hiện: Dương Quang Quý 20216956

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>Hà Nội 8/2023</b>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>Lời mở đầu </b>

Trong học phần Kỹ thuật lập trình được thầy Nguyễn Thành Nam dạy trong kì này, bọn em đã được tiếp thu rất nhiều những kiến thức liên quan tới các ngun tắc cần có trong lập trình, các nền tảng cơ bản trong các các thức lập trình,vv… Và đây sẽ là thành quả cuối khóa của bọn em trong môn học này bằng bài tập lớn cuối kỳ. Mong rằng với những gì bọn em học được có thể truyền tải đầy đủ trong báo cáo của mình và các thầy cơ có thể thấy rõ những nỗ lực ấy.

Em cũng xin gửi lời cảm ơn đến thầy Nguyễn Thành Nam đã giúp em và các nhóm khác trong quá trình làm bài tập lớn này.

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<b>MỤC LỤC </b>

PHẦN I: MÔ TẢ CẤU TRÚC CHƯƠNG TRÌNH ... 0

1.1. Giới thiệu về chương trình ... 1

1.2. Chi tiết về cấu trúc chương trình ... 1

PHẦN II: CÁC KỸ THUẬT LẬP TRÌNH ĐÃ ỨNG DỤNG ... 3

PHẦN III: CÁC TÌNH HUỐNG KIỂM THỬ VÀ KẾT QUẢ CHẠY ... 5

3.1. Phương pháp lây nhiễm qua tập tin và chương trình ... 5

3.2.2 Truy cập các trang web độc hại ... 8

3.2.3 Sử dụng các kết nối mạng không an toàn ... 9

3.3. Phương pháp lây nhiễm qua email và tin nhắn ... 10

3.3.1 Gửi email độc hại ... 11

3.3.2 Tin nhắn xâm nhập ... 11

3.3.3 Sử dụng các liên kết độc hại ... 11

PHẦN IV: CƠ CHẾ HOẠT ĐỘNG CỦA VIRUS PHẦN MỀM ... 13

4.1. Quá trình xâm nhập và thiết lập của virus phần mềm ... 13

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

4.1.2. Thiết lập ... 16

4.2. Các chức năng và hoạt động của virus phần mềm ... 17

4.2.1. Sao chép và lây lan. ... 17

4.2.2. Ẩn giấu và tự bảo vệ. ... 18

4.2.3. Kiểm soát từ xa ... 19

4.2.4. Gây hại và tấn công ... 20

4.3. Cơ chế tự nhân bản và tấn công ... 20

4.3.1. Sao chép tệp tin ... 20

4.3.2. Sử dụng mạng và kết nối ... 20

4.3.3. Sử dụng các phương tiện truyền thông ... 22

4.4. Cách thức tấn công và gây hại của virus phần mềm ... 23

4.4.1. Xóa hoặc hủy dữ liệu ... 23

4.4.2. Mã hóa tệp tin ... 23

4.4.3. Đánh cắp thơng tin ... 24

4.4.4. Tấn công từ chối dịch vụ (DoS) ... 25

PHẦN V: PHƯƠNG PHÁP PHÒNG CHỐNG VÀ TIÊU DIỆT VIRUS PHẦN MỀM . 26 5.1. Biện pháp phòng ngừa và bảo vệ hệ thống ... 26

5.2. Công cụ và phần mềm chống virus phổ biến ... 27

5.3. Quy trình quản lý và xử lý khi bị tấn công virus phần mềm... 29

PHẦN VI: KẾT LUẬN ... 31

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

<b>PHẦN I: MÔ TẢ CẤU TRÚC CHƯƠNG TRÌNH </b>

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

<b>1.1 GIỚI THIỆU VỀ CHƯƠNG TRÌNH </b>

Chương trình mà cá nhân em được giao nhiệm vụ xây dựng là chương trình quản lí thư viện cơ bản với một số yêu cầu sau:

- Nhập thông tin về sách (số đăng ký, tên sách, tên các tác giả, nhà xuất bản, năm xuất bản, số ISBN, …)

- Cập nhật được thơng tin sách

- Tìm thơng tin sách (theo số đăng ký hoặc tên sách hoặc số ISBN) - Sắp xếp: theo số đăng ký, theo nhà xuất bản

- Lưu ra file, đọc từ file

Và sau khi cân nhắc thì em đã thực hiện chương trình bằng ngơn ngữ lập trình Python với có sử dụng thư viện đồ họa Pyqt5 nhằm mục đích để tạo ra màn hình menu để thực hiện các thao tác.

Chương trình có thể thực hiện một số các cơng việc đơn giản như:

Thêm sách mới vào thư viện với thông tin về số đăng ký, tên sách, tác giả, nhà xuất bản, năm xuất bản và số ISBN.

Cập nhật thơng tin của sách hiện có bằng cách chọn sách trong danh sách và sửa thơng tin.

Xóa sách khỏi thư viện bằng cách chọn sách trong danh sách và nhấn nút xóa. Tìm kiếm sách trong danh sách dựa trên số đăng ký hoặc tên sách.

Lưu danh sách sách vào file CSV để lưu trữ dữ liệu. Đọc danh sách sách từ file CSV để khôi phục dữ liệu.

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

<b>1.2 CHI TIẾT VỀ CẤU TRÚC CHƯƠNG TRÌNH </b>

Cấu trúc của chương trình được chia thành 3 lớp chính, với mỗi lớp đảm nhiệm 1 nhiệm vụ:

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<b>1. Lớp `LibraryBook`: Đây là lớp đại diện cho một cuốn sách trong thư viện, với các </b>

thuộc tính quan trọng như số đăng ký, tên sách, tác giả, nhà xuất bản, năm xuất bản và số ISBN. Lớp này giúp chương trình dễ dàng lưu trữ và quản lý thơng tin về sách.

<b>2. Lớp `BookEditDialog`: Đây là một cửa sổ con được sử dụng để cập nhật thông tin </b>

sách. Khi người dùng chọn cập nhật cho một cuốn sách cụ thể, cửa sổ này xuất hiện với các trường nhập liệu đã được điền sẵn thông tin của cuốn sách. Nếu người dùng nhấn nút "Cập nhật", chương trình sẽ lấy thông tin từ các trường nhập liệu và trả về thông tin sách sau khi cập nhật.

<b>3. Lớp `LibraryManager`: Đây là lớp chính của chương trình, biểu diễn cửa sổ chính </b>

của ứng dụng. Nó chứa giao diện người dùng để hiển thị danh sách sách trong thư viện và các chức năng quản lý sách. Lớp này quản lý danh sách các cuốn sách thông qua thuộc tính `self.books`, nơi mà các đối tượng `LibraryBook` được lưu trữ. Chương trình cung cấp các phương thức như `add_book`, `edit_selected_book`, `delete_book`,

`load_from_file`, `save_to_file`, `sort_by_book_number`, `sort_by_publisher` để thực hiện các chức năng quản lý sách.

<b>Hàm add_book: </b>

Cấu trúc của hàm `add_book` như sau:

1. Đầu tiên, hàm lấy thông tin từ các trường nhập liệu gồm `book_number`, `book_title`, `authors`, `publisher`, `publication_year`, `isbn`.

2. Tiếp theo, hàm kiểm tra xem người dùng đã nhập đầy đủ thông tin của sách hay chưa. Nếu có bất kỳ trường nào trống, hàm hiển thị một cửa sổ cảnh báo với thơng báo "Vui lịng nhập đầy đủ thơng tin sách."

3. Sau đó, hàm kiểm tra tính hợp lệ của năm xuất bản bằng cách kiểm tra xem `publication_year` có phải là một số nguyên không. Nếu không phải, hàm hiển thị một cửa sổ cảnh báo với thông báo "Năm xuất bản không hợp lệ."

4. Tiếp theo, hàm kiểm tra tính hợp lệ của số đăng ký bằng cách kiểm tra xem `book_number` có phải là một số nguyên không. Nếu không phải, hàm hiển thị một cửa sổ cảnh báo với thông báo "Số đăng ký không hợp lệ. Vui lòng nhập số đăng ký là một số nguyên."

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

5. Hàm tiếp tục kiểm tra xem số ISBN đã tồn tại trong danh sách sách chưa. Nếu số ISBN đã tồn tại, hàm hiển thị một cửa sổ cảnh báo với thông báo "Số ISBN đã tồn tại. Vui lòng nhập số ISBN khác."

6. Cuối cùng, hàm kiểm tra xem số đăng ký đã tồn tại trong danh sách sách chưa. Nếu số đăng ký đã tồn tại, hàm hiển thị một cửa sổ cảnh báo với thông báo "Số đăng ký đã tồn tại. Vui lòng nhập số đăng ký khác."

7. Nếu thông tin nhập vào hợp lệ, hàm tạo một đối tượng `LibraryBook` mới với các thông tin của cuốn sách và thêm vào danh sách sách của thư viện.

8. Sau khi thêm sách thành công, hàm gọi phương thức `update_table` để cập nhật hiển thị bảng sách.

9. Cuối cùng, hàm gọi phương thức `clear_input_fields` để làm sạch trường nhập liệu để người dùng có thể thêm sách mới.

Tóm lại, hàm `add_book` thực hiện việc kiểm tra tính hợp lệ của thơng tin sách nhập vào từ người dùng, sau đó thêm sách vào danh sách và cập nhật hiển thị bảng sách.

<b>Hàm edit_selected_book: </b>

Nhiệm vụ của hàm này là cho phép người dùng cập nhật thông tin của một cuốn sách đã tồn tại trong danh sách sách của thư viện.

Cấu trúc của hàm `edit_selected_book` như sau:

1. Hàm lấy chỉ mục của dòng đang được chọn trên bảng sách bằng cách sử dụng `self.table_widget.currentRow()`. Nếu khơng có dịng nào được chọn (`selected_row < 0`), hàm hiển thị một cửa sổ cảnh báo với thơng báo "Vui lịng chọn sách cần cập nhật." 2. Nếu có dịng được chọn (`selected_row >= 0`), hàm lấy thông tin của cuốn sách từ các ơ trong dịng đó trên bảng sách. Thơng tin này bao gồm số đăng ký, tên sách, tác giả, nhà xuất bản, năm xuất bản và số ISBN.

3. Tiếp theo, hàm tạo một đối tượng `UpdateBookDialog`, là một hộp thoại đặc biệt để người dùng có thể cập nhật thông tin sách. Hộp thoại này được kết nối với cửa sổ chính `self` thơng qua tham số `self` trong khai báo `UpdateBookDialog(self)`.

4. Sau khi tạo đối tượng `UpdateBookDialog`, hàm gọi phương thức `set_book_info` của `UpdateBookDialog` để thiết lập thông tin sách đã lấy từ bước 2.

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

5. Hàm mở hộp thoại `UpdateBookDialog` bằng cách gọi `dialog.exec_()`. Nếu người dùng chấp nhận cập nhật thông tin sách (nhấn nút "Cập nhật" trong hộp thoại), hàm tiếp tục bước 6.

6. Hàm lấy thông tin sách đã được cập nhật từ hộp thoại `UpdateBookDialog` bằng cách gọi phương thức `get_book_info` của `UpdateBookDialog`.

7. Sau đó, hàm tạo một đối tượng `LibraryBook` mới với thông tin sách đã cập nhật và gán lại vào vị trí tương ứng trong danh sách sách `self.books`.

8. Cuối cùng, hàm gọi phương thức `update_table` để cập nhật hiển thị bảng sách với thơng tin sách mới.

Tóm lại, hàm `edit_selected_book` cho phép người dùng chọn một cuốn sách trong bảng sách để cập nhật thông tin của cuốn sách đó thơng qua hộp thoại `UpdateBookDialog`. Sau khi người dùng cập nhật thông tin và xác nhận, hàm cập nhật lại danh sách sách và hiển thị lại bảng sách.

<b>Hàm delete_book: </b>

Nhiệm vụ của hàm này là cho phép người dùng xóa một cuốn sách khỏi danh sách sách của thư viện.

Cấu trúc của hàm `delete_book` như sau:

1. Hàm lấy chỉ mục của dòng đang được chọn trên bảng sách bằng cách sử dụng `self.table_widget.currentRow()`. Nếu khơng có dịng nào được chọn (`selected_row < 0`), hàm hiển thị một cửa sổ cảnh báo với thơng báo "Vui lịng chọn sách cần xóa." 2. Nếu có dịng được chọn (`selected_row >= 0`), hàm xóa cuốn sách tương ứng khỏi danh sách sách `self.books` bằng cách sử dụng lệnh `del self.books[selected_row]`. 3. Sau khi xóa, hàm gọi phương thức `update_table` để cập nhật hiển thị bảng sách sau khi cuốn sách đã được xóa.

4. Hàm gọi phương thức `clear_input_fields` để xóa dữ liệu trong các trường nhập liệu sau khi cuốn sách đã được xóa.

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

Tóm lại, hàm `delete_book` cho phép người dùng chọn một cuốn sách trong bảng sách để xóa khỏi danh sách sách của thư viện. Sau khi xóa, hàm cập nhật lại danh sách sách và hiển thị lại bảng sách.

<b>Hàm `search_book` </b>

Nhiệm vụ của hàm này là cho phép người dùng tìm kiếm sách theo một từ khóa hoặc chuỗi con trong trường số đăng ký, tên sách hoặc số ISBN. Hàm `search_book` thực hiện việc tìm kiếm trong danh sách sách của thư viện và hiển thị kết quả tìm kiếm trên bảng sách.

Cấu trúc của hàm `search_book` như sau:

1. Hàm lấy từ khóa tìm kiếm từ trường nhập liệu `self.book_number_input.text()` và lưu vào biến `search_text`.

2. Kiểm tra nếu `search_text` không rỗng (`search_text` khác `''`), tức là người dùng đã nhập từ khóa tìm kiếm, thì tiến hành tìm kiếm trong danh sách sách.

3. Khởi tạo một danh sách rỗng `result_books` để lưu kết quả tìm kiếm.

4. Sử dụng vòng lặp `for` để duyệt qua từng cuốn sách trong danh sách sách `self.books`. 5. Kiểm tra xem `search_text` có xuất hiện trong trường số đăng ký, tên sách hoặc số ISBN của cuốn sách đang xét không. Nếu có, thêm cuốn sách vào danh sách `result_books`.

6. Gọi phương thức `display_search_results(result_books)` để hiển thị kết quả tìm kiếm trên bảng sách.

7. Nếu `search_text` rỗng (`search_text` bằng `''`), tức là khơng có từ khóa tìm kiếm, hàm gọi phương thức `update_table()` để cập nhật hiển thị bảng sách với toàn bộ danh sách sách.

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

Thêm sách thành cơng!

Khi thêm sách có trùng số ISBN thì hệ thống báo lỗi

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

Khi thêm sách có trùng số đăng ký hệ thống cũng báo lỗi

<b>3.2 Cập nhật sách </b>

Chọn sách cần cập nhật

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

Giao diện khi cập nhật sách

Sau khi thay đổi thì sách đã được cập nhật trên hệ thống

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

<b>3.3 Xố sách </b>

Chọn sách cần xóa

Sau khi xóa

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

<b>3.4 Sắp xếp theo số đăng ký </b>

Trước khi sắp xếp

Sau khi sắp xếp theo số đăng ký

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

<b>3.5 Sắp xếp theo nhà xuất bản </b>

Sau khi sắp xếp theo nhà xuất bản sẽ ưu tiên thứ tự trong bảng chữ cái

<b>3.6 Lưu danh sách </b>

Màn hình lưu danh sách

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

Thông báo khi lưu sách thành công

<b>3.7 Đọc danh sách </b>

Đọc danh sách từ file CSV mình đã lưu

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

Kết quả sau khi thực hiện

<b>3.8 Tìm kiếm sách </b>

<b>Tìm kiếm sách sẽ dựa trên nhập 1 số keyword của sách để tìm kiếm </b>

Màn hình hiện thị thơng tin sách sau khi nhập chữ “Đắc”

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

Màn hình sẽ tìm những gợi ý – keyword có số 23

<b>3.9 MỘT SỐ NHỮNG KHUYẾT ĐIỂM CỦA CHƯƠNG TRÌNH </b>

Tuy chương trình đã tương đối hồn thiện tuy nhiên vẫn cịn gặp phải 1 số vấn đề chưa thể khắc phúc. Dưới đây là những thiếu sót điển hình của chương trình quản lí thư viện mà em đã xây dựng:

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

<b> Khi cập nhật sách thì có thể nhập được những định dạng khơng đúng của </b>

<b>chương trình </b>

Ta thay thế số đăng ký 5 thành ký tự “md”

Chương trình sẽ lưu giá trị md vào số đăng ký

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

<b> File CSV không thể mã hóa được ký tự có dấu. </b>

Việc file CSV khơng thể lưu được ký tự có dấu dẫn tới có 2 tình huống xảy ra:

- Tình huống 1: Người dùng nhập các ký tự có dấu và lưu dữ liệu vào file CSV thì hệ thống vẫn sẽ chấp nhận và khi mở file CSV đó trên ứng dụng thì vẫn sẽ truy xuất dữ liệu như cũ. Tuy nhiên khi chúng ta mở file CSV đó thì sẽ khơng được định dạng như chúng ta muốn bởi đã bị mã hóa. Dưới đây là ví dụ:

Dữ liệu hiện thị trên hệ thống

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

Dữ liệu đã bị mã hóa trên file CSV

- Tình huống 2 : Trong thực tế, nếu dữ liệu lớn thì người dùng ít sử dụng các thao tác từng bước trên ứng dụng mà sẽ thực hiện nhập hoặc thao tác trên file CSV rồi sẽ truy xuất lên hệ thống. Chính vì điều đó nếu người dùng nhập bất cứ thơng tin nào có dấu trên danh sách thì sẽ khơng thể đọc được danh sách trên hệ thống và sẽ bị báo lỗi => Chỉ có thể giới hạn thơng tin ở các tác phẩm có thơng tin nước ngồi sử dụng thuần chữ cái latin hoặc thơng tin sách có thể bị mất dấu. Dưới đây là ví dụ:

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">

Thơng tin nhập trên file CSV có chứa ký tự có dấu (dịng 17)

Chính vì vậy hệ thống đã báo lỗi khi không thể decode được

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">

<b>PHẦN IV: KẾT LUẬN </b>

Bài báo cáo này đã thực hiện xây dựng chương trình quản lý thư viện sử dụng các kỹ thuật lập trình và thư viện của Python và PyQt5. Em đã sử dụng lập trình hướng đối tượng để xây dựng các lớp và đối tượng cho sách và quản lý thư viện, từ đó giúp cấu trúc chương trình trở nên rõ ràng và dễ quản lý.

Bên cạnh đó, việc sử dụng PyQt5 - một bộ thư viện GUI dựa trên Qt - để xây dựng giao diện người dùng cho ứng dụng đã cung cấp các công cụ và chức năng mạnh mẽ giúp tạo ra một giao diện người dùng tương tác và trực quan.

Để lưu trữ và truy xuất thông tin sách, ek đã sử dụng các thao tác đọc và ghi file. File I/O giúp lưu trữ dữ liệu dễ dàng và duyệt thông tin trong chương trình.

Chương trình cũng được thiết kế để kiểm tra tính hợp lệ của dữ liệu nhập vào như năm xuất bản, số đăng ký và số ISBN. Điều này giúp đảm bảo dữ liệu được lưu trữ chính xác và đúng định dạng.

Chức năng tìm kiếm sách dựa trên số đăng ký, tên sách và số ISBN đã được tích hợp vào chương trình để hỗ trợ người dùng tìm thấy thơng tin sách nhanh chóng. Sắp xếp sách theo số đăng ký và nhà xuất bản cũng là một tính năng quan trọng giúp hiển thị thơng tin sách một cách có tổ chức và dễ nhìn.

Cuối cùng, giao diện người dùng của chương trình được tối ưu hóa với các thành phần như bảng hiển thị thông tin sách, các trường nhập liệu và nút chức năng, giúp tạo ra một giao diện người dùng đơn giản và dễ sử dụng.

Tóm lại, sự kết hợp các kỹ thuật lập trình và thư viện trong Python và PyQt5 đã giúp tạo ra một chương trình quản lý thư viện đơn giản, hiệu quả và hữu ích, giúp người dùng quản lý thơng tin sách một cách thuận tiện và hiệu quả.

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">

<b>PHẦN IV: CƠ CHẾ HOẠT ĐỘNG CỦA VIRUS PHẦN MỀM </b>

</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">

<b>4.1. Quá trình xâm nhập và thiết lập của virus phần mềm </b>

Quá trình xâm nhập và thiết lập của virus phần mềm là giai đoạn quan trọng mà virus sử dụng để xâm nhập vào hệ thống và chuẩn bị môi trường cho hoạt động tiếp theo. Để có thể lây nhiễm vào hệ thống, virus phần mềm cần tìm và tận dụng các điểm yếu, lỗ hổng hoặc lỗi trong hệ thống. Để có thể hoạt động một cách hiệu quả, virus phần mềm cần thiết lập các tệp tin, mã độc, kết nối mạng hoặc hạt nhân tấn cơng để có thể giao tiếp, sao chép, lan truyền hoặc tấn công hệ thống.

<b> 4.1.1. Xâm nhập </b>

Virus phần mềm thường sử dụng các lỗ hổng bảo mật, lỗi phần mềm, hoặc các kỹ thuật xâm nhập để tiếp cận hệ thống. Các lỗ hổng bảo mật là những điểm yếu trong thiết kế, cài đặt hoặc cấu hình của hệ điều hành, các ứng dụng phổ biến hoặc các dịch vụ mạng, cho phép virus phần mềm có thể khai thác để xâm nhập vào hệ thống.

Ví dụ, Virus Stuxnet là một loại worm máy tính được thiết kế và triển khai để tấn công các cơ sở hạt nhân của Iran. Virus này đã khai thác bốn lỗ hổng bảo mật chưa được biết đến trong Windows để lây nhiễm vào các máy tính điều khiển các thiết bị cơng nghiệp, đặc biệt là các máy ly tâm làm giàu urani. Virus này đã gây ra nhiều thiệt hại và gián đoạn cho chương trình hạt nhân của Iran.

Quá trình xâm nhập của virus Stuxnet có thể được mơ tả như sau:

Virus Stuxnet được mang vào cơ sở hạt nhân của Iran thông qua các ổ đĩa USB bị nhiễm virus. Khi người dùng mở các tập tin đính kèm trong email hoặc kết nối các ổ đĩa USB, virus sẽ khai thác lỗ hổng MS10-046 trong Windows để chạy mã độc

</div>

×