所以基本上,我想用subprocess模塊創建行程,我也想控制資料包。
我的意思是 ?
考慮這個代碼。
import socket
client = socket.socket()
client.connect((..., ...))
client.send("e".encode())
client.close()
(假裝檔案名是client.py)
我想在這里做的是,我想制作另一個python檔案,client.py用subprocess模塊運行,我想在父行程中監聽它正在發送的資料包,我想修改它們,基本上如果可能的話,篡改子行程套接字的資料包。
uj5u.com熱心網友回復:
是的,這是可能的。這本質上是除錯器所做的。
在系統/二進制級別,有一個系統呼叫ptrace(2)允許一個行程控制另一個行程。這包括在受控程序中設定斷點、停止它、繼續它、修改其中的資料等等。要從 python 程式操作它,有這個模塊:https : //python-ptrace.readthedocs.io/en/latest/usage.html
您還可以在 python 陳述句級別進行除錯。這就是 python 除錯器模塊 ( pdb) 所做的。我不知道以可以以編程方式運行它的方式呼叫它的最佳方法,但我確信這是可能的。(最壞的情況是,您可以簡單地將互動式除錯器和管道命令運行到其中。)
然而,這兩種選擇都具有顯著的學習曲線。在高層次上,您可以在子行程中設定斷點,以便程式在send執行系統呼叫之前的某個點停止。當斷點被觸發時,您可以檢查緩沖區內容和/或用您自己的內容替換它們,然后允許程式繼續。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/387204.html
