簡體   English   中英

使用時如何檢查python模塊是否正在發送數據?

[英]How to check if a python module is sending my data when i use it?

標題幾乎說明了這一點。
我需要確保在使用python模塊時,模塊中沒有任何類型的惡意代碼,特別是從機器上抓取數據並將代碼發送到其他地方的類型?
我有使用python做到這一點的方法嗎?
我可以肯定,這是即使做了,當我使用像模塊requests用於發送和接收HTTP GET \\ POST請求?
我的意思是有一種方法可以在不讀取模塊中每一行代碼的情況下進行檢查嗎?

您質疑的是與python確實沒有連接,這更是一種安全隱患。 Python是一種動態語言,因此幾乎不可能檢查任何模塊的行為。 但是,您可以做什么來設置虛擬機沙箱,使用一些虛假數據運行程序,並檢查來賓計算機是否嘗試建立某些奇怪的連接。 然后,您可以檢查以何種格式將數據發送到哪里,然后將其追溯到模塊之一中的惡意代碼片段。

編輯

唯一的其他選擇是,如果您確定惡意代碼將使用哪種方法/功能。 例如,如果是request庫,則可以打補丁post()方法,以檢查目標或正在發送的包。 但是,惡意代碼可以使用其自己的實現,因此您不能百分百確定。

有關如何修補post()方法的鏈接

如何在python中對POST方法進行單元測試?

最好使用諸如Wireshark之​​類的工具采用全局方法,以使您可以嗅探計算機發送/接收的數據包。

如此說來,在python中,您可以覆蓋一些可疑的方法。 這是主意

import requests


def write_to_logs(message):
    print(message)  # Or you could store in a log file

original_get = requests.get

def mocked_get(*args, **kwargs):
    write_to_logs('get method triggered with args = {}, kwargs= {}'.format(args,kwargs))
    original_get(*args, **kwargs)

requests.get = mocked_get

response = requests.get('http://google.com')

輸出:

get method triggered with args = ('http://google.com',), kwargs= {}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM