Làm thế nào để đánh sập máy tính với Python?

Mặc dù đã có rất nhiều nỗ lực khiến trình thông dịch Python gặp khó khăn hoặc không thể làm hỏng trình thông dịch trong cách sử dụng thông thường, nhưng có rất nhiều cách khá dễ dàng để làm hỏng trình thông dịch. BDFL được phát âm gần đây trên danh sách gửi thư python-dev

    I'm not saying it's uncrashable. I'm saying that if you crash it, it's a
    bug unless proven harebrained.

Tôi nghĩ rằng có thể đáng để ghi lại một số cách trình thông dịch có thể bị lỗi - mặc dù hầu hết những cách này rất khó xảy ra trong mã thực

Ngoài ra còn có một thư mục trong kho lưu trữ SVN trình bày các cách đã biết để đánh sập Python

ctypes

def crash():
        '''\
        crash the Python interpreter...
        '''
        i = ctypes.c_char('a')
        j = ctypes.pointer(i)
        c = 0
        while True:
                j[c] = 'a'
                c += 1
        j

từ pyl

đầu vào không có thật

Thông qua Python 2. 4, bạn có thể làm hỏng trình thông dịch bằng cách chuyển hướng stdin từ một thư mục

    % python2.4 -c 'import sys ; print sys.version'
    2.4.1 (#3, Jul 28 2005, 22:08:40) 
    [GCC 3.3 20030304 (Apple Computer, Inc. build 1671)]
    % python2.4 < .
    Bus error

Bắt đầu với 2. 5 thông dịch viên thông báo và hủy bỏ

    % python2.5 -c 'import sys ; print sys.version'
    2.5a0 (41847M, Dec 29 2005, 22:21:03) 
    [GCC 3.3 20030304 (Apple Computer, Inc. build 1671)]
    % python2.5 < .
    Fatal Python error:  is a directory
    Abort trap

Một số mô-đun cũng không thực hiện kiểm tra nghiêm ngặt dữ liệu mà chúng hoạt động trên đó. Mô-đun soái ca có thể khiến nó làm hỏng trình thông dịch khi được cung cấp một số chuỗi nhất định

    $ python
    Python 2.4.2 (#2, Sep 30 2005, 21:19:01) 
    [GCC 4.0.2 20050808 (prerelease) (Ubuntu 4.0.1-4ubuntu8)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import os, marshal
    >>> while True:
    ..     try:
    ..         marshal.loads(os.urandom(16))
    ..     except:
    ..         pass
    .. 
    Segmentation fault

Thực thi mã ngẫu nhiên, do trình thông dịch không xác minh tính đúng định dạng của đối tượng mã (opcodes không hợp lệ, kích thước ngăn xếp sai, v.v. ). Đoạn mã sau được biết là làm sập python 2. 4. 3 trên Windows XP cũng như trên Linux

    from types import CodeType as code
    exec code(0, 5, 8, 0, "hello moshe", (), (), (), "", "", 0, "") 

Cạn kiệt tài nguyên

Có một số lĩnh vực cạn kiệt tài nguyên có thể làm hỏng trình thông dịch. Đây là một cách khá dễ dàng để chứng minh để làm điều đó mặc dù

    % python
    Python 2.5a0 (41847M, Dec 29 2005, 22:21:03) 
    [GCC 3.3 20030304 (Apple Computer, Inc. build 1671)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import sys
    >>> sys.setrecursionlimit(1<<30)
    >>> f = lambda f:f(f)
    >>> f(f)
    Segmentation fault

Một ví dụ phức tạp hơn một chút liên quan đến việc yêu cầu trình thông dịch sử dụng hết một số tài nguyên bên trong khi thực hiện một thao tác đơn lẻ

    $ python
    Python 2.4.2 (#2, Sep 30 2005, 21:19:01) 
    [GCC 4.0.2 20050808 (prerelease) (Ubuntu 4.0.1-4ubuntu8)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> f = lambda: None
    >>> for i in xrange(1000000):
    ..     f = f.__call__
    .. 
    >>> del f
    Segmentation fault

Tương tác GC/weakref

Tương tác giữa hai hệ thống này trong lịch sử là một điểm khó đối với CPython. Vẫn còn ít nhất một vấn đề trong Python 2. 4. 2

________số 8_______

Mô-đun nguy hiểm

Một số mô-đun được thiết kế để cho phép các lập trình viên truy cập vào ruột của mọi thứ. Đương nhiên, chúng cũng tạo cơ hội cho các lập trình viên tự bắn vào chân mình. Ở đây có một ít

  • Mô-đun mới cho phép bạn xây dựng nhiều loại đối tượng khác nhau mà thông thường không thể tạo rõ ràng từ trình thông dịch. Ví dụ: bạn có thể tạo các đối tượng mã và cung cấp cho chúng các chuỗi tùy ý làm "mã byte" của chúng. Không biết thông dịch viên sẽ xử lý những hành vi lạm dụng như vậy thành công như thế nào

  • Mô-đun dl có sẵn trên nhiều hệ thống Unix. Nó cung cấp một giao diện mức thông dịch viên cho hàm dlopen(), cho phép bạn truy cập động vào các hàm trong các thư viện chia sẻ tùy ý. Không có kiểm tra nào được thực hiện đối với các đối số đối với các hàm bạn gọi. Do đó, sự vui nhộn có thể xảy ra. (Mô-đun ctypes, đang được xem xét để đưa vào Python 2. 5, cung cấp chức năng tương tự. )

  • Nội dung bộ đệm cũng có thể nguy hiểm, vì theo lý thuyết, nó tuyên bố một tham chiếu đến một phạm vi bộ nhớ, nhưng làm như vậy mà không thông qua một đối tượng Python hoặc sử dụng hệ thống đếm ngược Python tiêu chuẩn. Điều này có thể nhìn thấy khi, ví dụ, xây dựng một bộ đệm từ một mảng. mảng, sau đó thay đổi kích thước mảng sao cho nó thực sự cấp phát () bên trong bộ nhớ của nó, di chuyển bộ nhớ trong quá trình. Bộ đệm bây giờ sẽ đề cập đến một con trỏ không hợp lệ

  • Mô-đun gc có thể được thao tác để cấp quyền truy cập vào đối tượng được xây dựng một phần, việc truy cập vào các trường có thể gây ra sự cố

đa luồng

Một số mô-đun (hay đúng hơn là các đối tượng trong chúng) có thể gây ra sự cố nếu chúng được sử dụng không đúng cách trong nhiều luồng;

* Đề cập đến cùng một kết nối MySQLdb, có thể gây ra lỗi Phân đoạn

Khác

Tôi có cách khác

Tôi đã viết trình soạn thảo Tkinter GUI [được gọi là "GWiz"] để giúp tôi tạo và duy trì Tk GUI cho các dự án của riêng mình. [Bản thân trình soạn thảo cũng là một dự án GWiz. ] Trong một số trường hợp, tôi đã quên đóng GUI do GWiz tạo trước khi thoát. D. L. E. và Python [always?] gặp sự cố khi thoát với trình yêu cầu lỗi "ứng dụng đã yêu cầu chấm dứt bất thường". Khi tôi nhớ đóng ứng dụng của mình trước khi đóng, tôi. D. L. E. , mọi thứ biến mất sạch sẽ. Tôi nên thêm mã vào GWiz để làm sys. atexit() dọn dẹp, nhưng tôi không biết cách hủy đăng ký các cuộc gọi lại của atexit; . Tôi có thể đăng các sửa đổi cho mô-đun thư viện, nếu ai đó sẽ cho tôi biết nơi đăng chúng

Làm cách nào để đánh sập PC bằng Python?

Để tắt máy tính/PC/máy tính xách tay bằng tập lệnh Python, bạn phải sử dụng hệ điều hành. hàm system() với mã “ shutdown /s /t 1 ” . Ghi chú. Để làm việc này, bạn phải nhập thư viện os trong ide. Nếu bạn không có nó, thì ' pip install os ' thông qua Dấu nhắc Lệnh.

Sự cố trong Python là gì?

crash-python là trình gỡ lỗi ngữ nghĩa cho nhân Linux . Nó có nghĩa là tạo cảm giác quen thuộc cho người dùng trình gỡ lỗi sự cố cổ điển nhưng cho phép truy cập tượng trưng mạnh mẽ hơn nhiều vào các kết xuất sự cố cũng như bật API để viết các tiện ích mở rộng, lệnh và tập lệnh phân tích đặc biệt.

Làm cách nào để làm hỏng máy tính với tệp hàng loạt?

Mở sổ tay. Hầu hết các máy tính đều có sẵn chương trình này
Nhập @echo Tắt. Bạn cần nhấn enter sau mỗi dòng mã
Bước 3. 3. Nhập vào dòng thứ hai. tai nạn. Điều này tạo ra một điểm vòng lặp cho mã
Nhập Bắt đầu trên Dòng thứ ba. .
Nhập Goto Crash. .
Lưu tệp văn bản của bạn dưới dạng tệp hàng loạt. .
Đặt tên cho tệp của bạn. .
lưu nó

Bạn có thể viết phần mềm độc hại bằng Python không?

Xét cho cùng, phần mềm độc hại được viết bằng Python phổ biến trong thế giới hoang dã này và nhiều phần mềm chống vi-rút không phát hiện ra nó. Python thường được sử dụng để tạo các cửa hậu cho phép kẻ tấn công tải lên và thực thi mã tùy ý trên máy bị nhiễm.