python簡易遠(yuǎn)程控制單線程版
本文實(shí)例為大家分享了python簡易遠(yuǎn)程控制的具體代碼,供大家參考,具體內(nèi)容如下
1. 技術(shù):管道通信,流文件處理,socket基礎(chǔ)
2. Tips:
默認(rèn)IP:127.0.0.1
默認(rèn)端口:7676
3. 代碼樣例:
服務(wù)端:
#!/usr/bin/env python
# encoding: utf-8
import socket
import sys
from os import *
reload(sys)
sys.setdefaultencoding("utf-8")
def socketInit():
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
return s
def socketDeal(s,HOST,PORT):
s.bind((HOST,PORT))
s.listen(1)
def ControlModule(sS,addr):
recv_buffer = sS.recv(20048)
if recv_buffer == "[-]Error:Server is OFF" or recv_buffer == "[*]Server is OFF":
print recv_buffer
sys.exit(0)
else:
print recv_buffer
send_buf = raw_input(addr[0]+">")
sS.send(send_buf)
def main():
HOST = "127.0.0.1"
PORT = 7676
s = socketInit()
socketDeal(s, HOST, PORT)
sS,addr = s.accept()
print "Connect from " + addr[0] + ":" + repr(addr[1])
try:
while True:
ControlModule(sS,addr)
except Exception as e:
print "[-]Connect Error"
sS.close()
s.close()
sys.exit(-1)
except KeyboardInterrupt:
sS.close()
s.close()
sys.exit(0)
if __name__ == '__main__':
main()
受控端:
#!/usr/bin/env python
# encoding: utf-8
import socket
import sys
import re
import traceback
import tempfile
from os import *
from subprocess import *
reload(sys)
sys.setdefaultencoding("utf-8")
def socketInit():
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
return s
def socketConn(s,HOST,PORT):
while True:
try:
s.connect((HOST,PORT))
except Exception as e:
continue
else:
s.send("Welcome Sir ~")
break
def String_Deal(recv,send):
P_str = re.findall("cd(.*)|(\w):", recv)
if P_str!=[] and send == "":
if P_str[0][0]!="":
try:
chdir(P_str[0][0].strip())
except Exception as e:
flag = -1
else:
flag = 1
else:
try:
chdir(recv)
except Exception as e:
#traceback.print_exc()
flag = -1
else:
flag = 1
else:
if send == "":
flag = 1
else:
flag = 0
return flag
def OpenProcess(s):
try:
while True:
recv_buf = s.recv(2048)
#流文件技術(shù),防止管道阻塞
out_temp = tempfile.SpooledTemporaryFile(bufsize=10*1000)
fileNo = out_temp.fileno()
cmd = Popen(recv_buf, shell=True,stdin=PIPE, stdout=fileNo, stderr=STDOUT)
cmd.wait()
out_temp.seek(0)
send_buf = out_temp.read()
#print len(send_buf)
#輸入命令字符串處理識(shí)別
flag = String_Deal(recv_buf,send_buf)
if flag == 1:
s.send("OK")
elif flag == -1:
s.send("Error!!")
else:
s.send(send_buf)
send_buf = ""
except Exception as e:
try:
s.send("[-]Error:Server is OFF")
except Exception as e:
pass
s.close()
sys.exit(-1)
except KeyboardInterrupt:
try:
s.send("[*]Server is OFF")
except Exception as e:
pass
s.close()
sys.exit(0)
def main():
flag = 0
HOST = "127.0.0.1"
PORT = 7676
s = socketInit()
socketConn(s, HOST, PORT)
OpenProcess(s)
if __name__ == '__main__':
main()
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Python控制線程和函數(shù)超時(shí)處理
- python如何控制進(jìn)程或者線程的個(gè)數(shù)
- python多線程semaphore實(shí)現(xiàn)線程數(shù)控制的示例
- Python多線程的退出控制實(shí)現(xiàn)
- python基于event實(shí)現(xiàn)線程間通信控制
- python子線程退出及線程退出控制的代碼
- python多線程同步之文件讀寫控制
- python自定義線程池控制線程數(shù)量的示例
- Python多線程同步---文件讀寫控制方法
- Python控制多進(jìn)程與多線程并發(fā)數(shù)總結(jié)
- Python多線程中線程數(shù)量如何控制
相關(guān)文章
手把手帶你打造一個(gè)Pytest數(shù)據(jù)分離測(cè)試框架
數(shù)據(jù)分離測(cè)試框架是一種測(cè)試框架設(shè)計(jì)模式,旨在將測(cè)試數(shù)據(jù)與測(cè)試邏輯分離,以提高測(cè)試用例的可維護(hù)性、可讀性和復(fù)用性,本文就來實(shí)現(xiàn)一下,感興趣的可以了解一下2024-03-03
Python pandas讀取CSV文件的注意事項(xiàng)(適合新手)
這篇文章主要給大家介紹了關(guān)于Python pandas讀取CSV文件的注意事項(xiàng),非常適合新手,csv是我接觸的比較早的一種文件,比較好的是這種文件既能夠以電子表格的形式查看又能夠以文本的形式查看,需要的朋友可以參考下2021-06-06
Python利用Matplotlib庫實(shí)現(xiàn)繪制餅形圖
這篇文章主要為大家分享了基于python+matplotlib庫的餅形圖繪制,具體內(nèi)容涉及一般的餅圖、分裂餅圖、以及環(huán)形圖,感興趣的小伙伴可以了解一下2022-04-04
Python2與Python3的區(qū)別點(diǎn)整理
在本篇文章里小編給大家整理的是關(guān)于Python2與Python3的區(qū)別點(diǎn)整理內(nèi)容,需要的朋友們可以參考下。2019-12-12
Python實(shí)現(xiàn)識(shí)別XSS漏洞的方法詳解
XSS(跨站腳本攻擊)作為一種常見的網(wǎng)絡(luò)安全漏洞,經(jīng)常被黑客用來攻擊網(wǎng)站。這篇文章主要介紹了如何利用Python 識(shí)別 XSS 漏洞,需要的可以參考一下2023-02-02
python 基于selectors庫實(shí)現(xiàn)文件上傳與下載
這篇文章主要介紹了python 基于selectors庫實(shí)現(xiàn)文件上傳與下載的示例代碼,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2020-12-12
python編輯用戶登入界面的實(shí)現(xiàn)代碼
這篇文章主要介紹了python編輯用戶登入界面的實(shí)現(xiàn)代碼,非常不錯(cuò),代碼簡單易懂,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-07-07
Django實(shí)現(xiàn)的自定義訪問日志模塊示例
這篇文章主要介紹了Django實(shí)現(xiàn)的自定義訪問日志模塊,結(jié)合具體實(shí)例形式分析了Django針對(duì)日志的相關(guān)操作技巧,需要的朋友可以參考下2017-06-06

