diff --git a/web/app/components/memshell/results/multi-packer.tsx b/web/app/components/memshell/results/multi-packer.tsx deleted file mode 100644 index fe441bf0..00000000 --- a/web/app/components/memshell/results/multi-packer.tsx +++ /dev/null @@ -1,118 +0,0 @@ -import { DownloadIcon } from "lucide-react"; -import { useCallback, useEffect, useMemo, useState } from "react"; -import { useTranslation } from "react-i18next"; - -import CodeViewer from "@/components/code-viewer"; -import { Button } from "@/components/ui/button"; -import { - Select, - SelectContent, - SelectItem, - SelectTrigger, - SelectValue, -} from "@/components/ui/select"; -import { base64ToBytes, downloadBytes, downloadContent } from "@/lib/utils"; - -export function MultiPackResult({ - allPackResults, - packMethod, - shellClassName, - height = 350, -}: Readonly<{ - allPackResults: object | undefined; - packMethod: string; - shellClassName?: string; - height?: number; -}>) { - const showCode = packMethod === "JSP"; - const { t } = useTranslation(); - const packResults = allPackResults as Record | undefined; - const packMethods = useMemo(() => Object.keys(packResults ?? {}), [packResults]); - - const [selectedMethod, setSelectedMethod] = useState(() => packMethods[0] ?? ""); - - const packResult = useMemo(() => { - if (!selectedMethod) { - return ""; - } - return packResults?.[selectedMethod] ?? ""; - }, [packResults, selectedMethod]); - - useEffect(() => { - if (packMethods.length === 0) { - if (selectedMethod !== "") { - setSelectedMethod(""); - } - return; - } - if (!packMethods.includes(selectedMethod)) { - setSelectedMethod(packMethods[0]); - } - }, [packMethods, selectedMethod]); - - const handleDownload = useCallback(() => { - const fileName = shellClassName?.substring(shellClassName?.lastIndexOf(".") ?? 0) ?? ""; - if (packMethod === "JSP") { - const fileExtension = selectedMethod.includes("JSPX") ? ".jspx" : ".jsp"; - const content = new Blob([packResult], { type: "text/plain" }); - return downloadContent(content, fileName, fileExtension); - } else if (packMethod === "JavaDeserialize" || packMethod.includes("Hessian")) { - const content = new Blob([base64ToBytes(packResult)], { - type: "application/octet-stream", - }); - return downloadContent(content, fileName, ".data"); - } else if (packMethod === "Base64") { - const base64Content = packResults?.[packMethods[0]] ?? ""; - return downloadBytes(base64Content, shellClassName); - } - }, [packMethod, packMethods, packResult, packResults, selectedMethod, shellClassName]); - - return ( - - - ({packResult?.length}) - - } - button={ - packMethod === "JSP" || - packMethod === "Base64" || - packMethod === "JavaDeserialize" || - packMethod.includes("Hessian") ? ( - - ) : null - } - wrapLongLines={!showCode} - showLineNumbers={showCode} - language={showCode ? "java" : "text"} - height={height} - /> - ); -} diff --git a/web/app/components/memshell/results/result-component.tsx b/web/app/components/memshell/results/result-component.tsx index e7cf7de3..e5eb30b8 100644 --- a/web/app/components/memshell/results/result-component.tsx +++ b/web/app/components/memshell/results/result-component.tsx @@ -10,16 +10,13 @@ import { base64ToBytes, downloadBytes, downloadContent } from "@/lib/utils"; import { AgentResult } from "./agent"; import { JarResult } from "./jar-result"; -import { MultiPackResult } from "./multi-packer"; export function ResultComponent({ packResult, - allPackResults, packMethod, generateResult, }: Readonly<{ packResult: string | undefined; - allPackResults: Map | undefined; packMethod: string; generateResult?: MemShellResult; }>) { @@ -45,15 +42,6 @@ export function ResultComponent({ } }, [packMethod, packResult, shellClassName]); - if (allPackResults) { - return ( - - ); - } if (isAgent) { return ( | undefined; packMethod: string; generateResult?: MemShellResult; }>) { @@ -40,7 +38,6 @@ export default function ShellResult({ diff --git a/web/app/components/probeshell/shell-result.tsx b/web/app/components/probeshell/shell-result.tsx index a27fb4f3..b614c9fb 100644 --- a/web/app/components/probeshell/shell-result.tsx +++ b/web/app/components/probeshell/shell-result.tsx @@ -6,17 +6,14 @@ import { QuickUsage } from "@/components/probeshell/quick-usage"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import CodeViewer from "../code-viewer"; -import { MultiPackResult } from "../memshell/results/multi-packer"; import { BasicInfo } from "./basic-info"; export default function ShellResult({ packResult, - allPackResults, packMethod, generateResult, }: Readonly<{ packResult: string | undefined; - allPackResults: Map | undefined; packMethod: string; generateResult?: ProbeShellResult; }>) { @@ -33,14 +30,6 @@ export default function ShellResult({ - {allPackResults && ( - - )} {packResult && ( (); - const [allPackResults, setAllPackResults] = useState | undefined>(); const [generateResult, setGenerateResult] = useState(); const [packMethod, setPackMethod] = useState(""); const submitLockRef = useRef(false); @@ -118,7 +117,6 @@ export default function MemShellPage() { const result = (await response.json()) as MemShellGenerateResponse; setGenerateResult(result.memShellResult); setPackResult(result.packResult); - setAllPackResults(result.allPackResults); setPackMethod(data.packingMethod); toast.success(t("toast.generateSuccess")); } catch (error) { @@ -163,7 +161,6 @@ export default function MemShellPage() { packMethod={packMethod} generateResult={generateResult} packResult={packResult} - allPackResults={allPackResults} /> diff --git a/web/app/routes/probeshell.tsx b/web/app/routes/probeshell.tsx index 2d837326..62ae7101 100644 --- a/web/app/routes/probeshell.tsx +++ b/web/app/routes/probeshell.tsx @@ -62,7 +62,6 @@ export default function ProbeShellGenerator() { }); const [packResult, setPackResult] = useState(); - const [allPackResults, setAllPackResults] = useState | undefined>(); const [generateResult, setGenerateResult] = useState(); const [packMethod, setPackMethod] = useState(""); const submitLockRef = useRef(false); @@ -90,7 +89,6 @@ export default function ProbeShellGenerator() { const result = (await response.json()) as ProbeShellGenerateResponse; setGenerateResult(result.probeShellResult); setPackResult(result.packResult); - setAllPackResults(result.allPackResults); setPackMethod(data.packingMethod); toast.success(t("toast.generateSuccess")); } catch (error) { @@ -120,7 +118,6 @@ export default function ProbeShellGenerator() { packMethod={packMethod} generateResult={generateResult} packResult={packResult} - allPackResults={allPackResults} /> diff --git a/web/app/types/memshell.ts b/web/app/types/memshell.ts index 37f415d5..e5c36323 100644 --- a/web/app/types/memshell.ts +++ b/web/app/types/memshell.ts @@ -108,7 +108,6 @@ export type PackerConfig = Array; export interface MemShellGenerateResponse { memShellResult: MemShellResult; packResult?: string; - allPackResults?: Map; } export interface APIErrorResponse { diff --git a/web/app/types/probeshell.ts b/web/app/types/probeshell.ts index 44e94b28..d22da931 100644 --- a/web/app/types/probeshell.ts +++ b/web/app/types/probeshell.ts @@ -55,7 +55,6 @@ export interface PayloadFormValues { export interface ProbeShellGenerateResponse { probeShellResult: ProbeShellResult; packResult?: string; - allPackResults?: Map; } export interface ProbeShellResult {