diff --git a/addOns/automacrobuilder/CHANGELOG.md b/addOns/automacrobuilder/CHANGELOG.md index 588b780..755e25f 100644 --- a/addOns/automacrobuilder/CHANGELOG.md +++ b/addOns/automacrobuilder/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this add-on will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). +## [v1.2.0] - 2024-07-27 +### Added +- new feature: Added [DecodeVectorInjector](https://github.com/gdgd009xcd/AutoMacroBuilderForZAP/wiki/1.8.-encoded-parameter-injector) which enabled to decode URLencoded/base64ed parameter value for scanning or pentesting. +### Changed +- bugfix: Fixed an issue with JTextPane-like text areas where visual components such as the CR icon were lost after editing the content. + ## [v1.1.20] - 2024-04-17 ### Changed - maintenance: Removed unused classes (related to "Tamper" GUI) diff --git a/addOns/automacrobuilder/automacrobuilder.gradle.kts b/addOns/automacrobuilder/automacrobuilder.gradle.kts index b1a14e9..489afc9 100644 --- a/addOns/automacrobuilder/automacrobuilder.gradle.kts +++ b/addOns/automacrobuilder/automacrobuilder.gradle.kts @@ -1,6 +1,6 @@ import org.zaproxy.gradle.addon.AddOnStatus -version = "1.1.20" +version = "1.2.0" description = "AutoMacroBuilder for ZAP" tasks.withType { @@ -64,9 +64,43 @@ zapAddOn { author.set("gdgd009xcd") url.set("https://gdgd009xcd.github.io/AutoMacroBuilderForZAP/") repo.set("https://github.com/gdgd009xcd/AutoMacroBuilderForZAP") + + helpSet { - baseName.set("help%LC%.helpset") + // ${zapAddOn.addOnId.get()} is the subproject folder name "automacrobuilder" in addOns project folder. + val resourcesPath = "org.zaproxy.zap.extension.${zapAddOn.addOnId.get()}.zap.resources." + println("resourcesPath:" + resourcesPath) + // helpset root src path is "src/main/javahelp". you must put helpsets under this directory. + // + // baseName and localToken are used for determinating javahelp helpset(.hs) file path + // In English (default) locale, %LC% token is convert to "" + // ${resourcesPath}help.helpset.hs + // In ja_JP locale, %LC% token is convert to "_ja_JP" then helpset file path is: + // ${resourcesPath}help_ja_JP.helpset_ja_JP.hs + // * if you use %LC% locale token, then you must provide "all" locale specific helpset files for ZAP. + // otherwise you may remove %LC% to support any locale helpset in English only. + // * if you comment out this helpSet function entirely, + // zaproxy expects the help directory to be in the following path: + // + // ${resourcesPath}/help + // help_ja_JP + // ... + // ${resourcesPath} == org.zaproxy.zap.extension.automacrobuilder.zap.resources. + // == [this addon's Extension package name].resources. + // ** Extension package name is the package name of this addon's Extension class file inherit from ExtensionAdaptor + // e.g. The package name of ExtensionAutoMacroBuilder class. + // + // + // ** this help directory hierarchy will be used for providing localization help by crowdin in the future. + // + // ----locale supported helpset configurations.--- + baseName.set("${resourcesPath}help%LC%.helpset") localeToken.set("%LC%") + // ---- no locale supported(English only) configurations.--- + //baseName.set("${resourcesPath}help.helpset") + //localeToken.set("") } + + } } diff --git a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/PRequest.java b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/PRequest.java index cee896f..ad1e1a0 100644 --- a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/PRequest.java +++ b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/PRequest.java @@ -33,84 +33,16 @@ public class PRequest extends ParseHTTPHeaders { private static org.apache.logging.log4j.Logger LOGGER4J = org.apache.logging.log4j.LogManager.getLogger(); - // @Deprecated(since = "1.2", forRemoval = true) 20240229 since no need hold chunks in this PRequest. - private List chunks = null; - // @Deprecated(since = "1.2", forRemoval = true) 20240229 since no need hold doctext in this PRequest. - private String doctext = null; - public PRequest(String h, int p, boolean ssl, byte[] _binmessage, Encode _pageenc) { super(h, p, ssl, _binmessage, _pageenc); } - /** - * create instance - * pass argument chunkdoc, extract doctext from chunkdoc - * - * @Deprecated 20240229 since no need hold chunks/doctext in this PRequest. - * - * @param h - * @param p - * @param ssl - * @param _binmessage - * @param _pageenc - * @param chunkdoc - */ - @Deprecated(since = "1.2", forRemoval = true) - PRequest( - String h, - int p, - boolean ssl, - byte[] _binmessage, - Encode _pageenc, - StyledDocumentWithChunk chunkdoc) { - super(h, p, ssl, _binmessage, _pageenc); - if (chunkdoc != null) { - chunks = chunkdoc.getRequestChunks(); - doctext = chunkdoc.getPlaceHolderStyleText(); - } - } - - public PRequest newRequestWithRemoveSpecialChars(String regex) { // remove section chars - byte[] binmessage = getByteMessage(); - String isomessage = new String(binmessage, StandardCharsets.ISO_8859_1); - String defaultregex = "[§]"; - if (regex != null && !regex.isEmpty()) { - defaultregex = regex; - } - String rawmessage = isomessage.replaceAll(defaultregex, ""); - String host = getHost(); - int port = getPort(); - boolean isSSL = isSSL(); - Encode penc = getPageEnc(); - return new PRequest( - host, port, isSSL, rawmessage.getBytes(StandardCharsets.ISO_8859_1), penc); - } - @Override public PRequest clone() { PRequest nobj = (PRequest) super.clone(); - nobj.chunks = ListDeepCopy.listDeepCopyRequestChunk(this.chunks); return nobj; } - /** - * Get List which is parsed request contents representation - * - * @Deprecated 20240229 since no need hold chunks/doctext in this PRequest. - * - * @return - */ - @Deprecated(since = "1.2", forRemoval = true) - public List getRequestChunks() { - if (this.chunks == null) { - String theaders = getHeaderOnly(); - byte[] tbodies = getBodyBytes(); - String tcontent_type = getHeader("Content-Type"); - this.chunks = getRequestChunks(theaders, tbodies, tcontent_type); - } - return this.chunks; - } - /** * generate List which is parsed request contents representation * @return @@ -124,28 +56,6 @@ public List generateRequestChunks() { return chunks; } - /** - * set doc text from StyledDocumentWithChunks(representating for PRequest) - * - * @Deprecated 20240229 since no need hold chunks/doctext in this PRequest. - * - * @param doc - */ - @Deprecated(since = "1.2", forRemoval = true) - public void setDocText(StyledDocumentWithChunk doc) { - this.doctext = doc.getPlaceHolderStyleText(); - } - - /** - * @Deprecated 20240229 since no need hold chunks/doctext in this PRequest. - * - * @return - */ - @Deprecated(since = "1.2", forRemoval = true) - public String getDocText() { - return this.doctext; - } - /** * get PrimeHeader except tailing CRLF */ @@ -315,118 +225,4 @@ private List getRequestChunks( return reqchunks; } - - /** - * update DocText and Chunks with specified chunks - * - * @Deprecated 20240229 since no need hold chunks/doctext in this PRequest. - * - * @param orgchunks - */ - @Deprecated(since = "1.2", forRemoval = true) - void updateDocAndChunks(List orgchunks) { - - if (orgchunks == null) return; - // recreate this doctext and chunks from prequest.getBytes(); - this.chunks = null; - this.doctext = null; - StyledDocumentWithChunk nouseddoc = new StyledDocumentWithChunk(this); - - Charset charset = getPageEnc().getIANACharset(); - int npos = -1; - int cpos = 0; - int placebegin = 0; - while ((npos = - this.doctext.indexOf( - StyledDocumentWithChunk.CONTENTS_PLACEHOLDER_PREFIX, cpos)) - != -1) { - placebegin = npos; - cpos = npos + StyledDocumentWithChunk.CONTENTS_PLACEHOLDER_PREFIX.length(); - int beginpos = cpos; - if ((npos = - this.doctext.indexOf( - StyledDocumentWithChunk.CONTENTS_PLACEHOLDER_SUFFIX, cpos)) - != -1) { - cpos = npos + StyledDocumentWithChunk.CONTENTS_PLACEHOLDER_SUFFIX.length(); - int endpos = npos; - if (endpos - beginpos <= StyledDocumentWithChunk.PARTNO_MAXLEN) { - String partno = this.doctext.substring(beginpos, endpos).trim(); - if (partno != null && partno.length() > 0) { - int pno = Integer.parseInt(partno); - if (pno > -1) { - Optional optorgchunk = - orgchunks.stream() - .filter( - c -> - c.getPartNo() == pno - && (c.getChunkType() - == RequestChunk - .CHUNKTYPE - .CONTENTS - || c.getChunkType() - == RequestChunk - .CHUNKTYPE - .CONTENTSIMG)) - .findFirst(); - RequestChunk orgchunk = optorgchunk.orElse(null); - Optional optnewchunk = - this.chunks.stream() - .filter( - c -> - c.getPartNo() == pno - && (c.getChunkType() - == RequestChunk - .CHUNKTYPE - .CONTENTS - || c.getChunkType() - == RequestChunk - .CHUNKTYPE - .CONTENTSIMG)) - .findFirst(); - RequestChunk newchunk = optnewchunk.orElse(null); - if (orgchunk != null && newchunk != null) { - ParmGenBinUtil newarray = new ParmGenBinUtil(newchunk.getBytes()); - byte[] orgdata = orgchunk.getBytes(); - int stp = -1; - int etp = 0; - if ((stp = newarray.indexOf(orgdata)) != -1) { - byte[] newdata = newarray.getBytes(); - int newdatalen = newdata.length; - etp = stp + orgdata.length; - String prefix = ""; - String suffix = ""; - if (stp > 0) { - prefix = new String(newarray.subBytes(0, stp), charset); - } - if (etp < newdatalen) { - suffix = - new String( - newarray.subBytes(etp, newdatalen), - charset); - } - this.doctext = - this.doctext.substring(0, placebegin) - + prefix - + this.doctext.substring(placebegin, cpos) - + suffix - + this.doctext.substring(cpos); - cpos += prefix.length() + suffix.length(); - LOGGER4J.debug( - "prefix[" - + prefix - + "] chunk.len:" - + orgchunk.getBytes().length - + " suffix[" - + suffix - + "]"); - newchunk.setByte(orgchunk.getBytes()); - newchunk.setChunkType(orgchunk.getChunkType()); - } - } - } - } - } - } - } - } } diff --git a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/ParmGenMacroTrace.java b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/ParmGenMacroTrace.java index 7d1ebc9..75af144 100644 --- a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/ParmGenMacroTrace.java +++ b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/ParmGenMacroTrace.java @@ -961,7 +961,7 @@ public void sendToRepeater(int currentSelectedPos, int tabIndex) { if ((pqr = getRequestResponseCurrentList(currentSelectedPos)) != null) { StyledDocumentWithChunk doc = ui.getStyledDocumentOfSelectedMessageRequest(); if (doc != null) { - PRequest prequest = doc.reBuildPRequestFromDocTextAndChunks(); + PRequest prequest = doc.reBuildPRequestFromDocTextAndChunksWithEncodeCustomTag(); if (prequest != null) { pqr.updateRequest( prequest.clone()); // update rlist with ui.MacroRequest contents. @@ -990,7 +990,7 @@ public void sendToScanner(int currentSelectedPos, int tabIndex) { if ((pqr = getRequestResponseCurrentList(currentSelectedPos)) != null) { StyledDocumentWithChunk doc = ui.getStyledDocumentOfSelectedMessageRequest(); if (doc != null) { - PRequest prequest = doc.reBuildPRequestFromDocTextAndChunks(); + PRequest prequest = doc.reBuildPRequestFromDocTextAndChunksWithEncodeCustomTag(); if (prequest != null) { pqr.updateRequest( prequest.clone()); // update rlist with ui.MacroRequest contents. @@ -1015,7 +1015,7 @@ public void sendToIntruder(int currentSelectedPos, int tabIndex) { if ((pqr = getRequestResponseCurrentList(currentSelectedPos)) != null) { StyledDocumentWithChunk doc = ui.getStyledDocumentOfSelectedMessageRequest(); if (doc != null) { - PRequest prequest = doc.reBuildPRequestFromDocTextAndChunks(); + PRequest prequest = doc.reBuildPRequestFromDocTextAndChunksWithEncodeCustomTag(); if (prequest != null) { pqr.updateRequest( prequest.clone()); // update rlist with ui.MacroRequest contents. @@ -1364,6 +1364,10 @@ public int getRunningStepNo() { return this.runningStepNo; } + public void restoreOrigialToRequestList() { + this.rlist = ListDeepCopy.listDeepCopyPRequestResponse(this.originalrlist); + } + diff --git a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/ParmGenUtil.java b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/ParmGenUtil.java index 4efc612..5267e19 100644 --- a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/ParmGenUtil.java +++ b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/ParmGenUtil.java @@ -95,7 +95,7 @@ public static int parseMinInt(String i) { } public static String escapeRegexChars(String _d) { - _d = _d.replaceAll("([\\+\\{\\}\\[\\]\\(\\)\\*\\.\\<\\>\\?\\^\\$])", "\\\\$1"); + _d = _d.replaceAll("([\\\\\\+\\{\\}\\[\\]\\(\\)\\*\\.\\<\\>\\?\\^\\$])", "\\\\$1"); return _d; } diff --git a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/StartEndPosition.java b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/StartEndPosition.java new file mode 100644 index 0000000..8141641 --- /dev/null +++ b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/StartEndPosition.java @@ -0,0 +1,17 @@ +package org.zaproxy.zap.extension.automacrobuilder; + +public class StartEndPosition { + public int start; + public int end; + public String styleName = null; + public String value = null; + public StartEndPosition(int start, int end) { + this.start = start; + this.end = end; + } + public StartEndPosition(int start, int end, String value) { + this.start = start; + this.end = end; + this.value = value; + } +} diff --git a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/generated/MacroBuilderUI.java b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/generated/MacroBuilderUI.java index 1f01a80..07a8242 100644 --- a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/generated/MacroBuilderUI.java +++ b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/generated/MacroBuilderUI.java @@ -12,6 +12,7 @@ import java.io.BufferedReader; import java.io.FileReader; import java.io.UnsupportedEncodingException; +import java.net.URL; import java.net.URLEncoder; import java.util.ArrayList; import java.util.HashMap; @@ -24,11 +25,13 @@ import java.util.regex.Pattern; import javax.swing.*; import javax.swing.border.LineBorder; +import javax.swing.text.DefaultEditorKit; import javax.swing.text.JTextComponent; import javax.swing.text.StyledDocument; import com.google.gson.JsonElement; -import org.parosproxy.paros.network.HttpMessage; +import org.parosproxy.paros.Constant; import org.parosproxy.paros.view.View; +import org.zaproxy.zap.control.AddOn; import org.zaproxy.zap.extension.automacrobuilder.*; import org.zaproxy.zap.extension.automacrobuilder.view.CloseXbtnTabPanel; import org.zaproxy.zap.extension.automacrobuilder.view.JTextPaneContents; @@ -36,7 +39,9 @@ import org.zaproxy.zap.extension.automacrobuilder.view.StyledDocumentWithChunk; import org.zaproxy.zap.extension.automacrobuilder.zap.ExtensionAutoMacroBuilder; import org.zaproxy.zap.extension.automacrobuilder.zap.ZapUtil; +import org.zaproxy.zap.extension.automacrobuilder.zap.view.DecoderSelector; import org.zaproxy.zap.extension.help.ExtensionHelp; +import org.zaproxy.zap.utils.LocaleUtils; import static org.zaproxy.zap.extension.automacrobuilder.EnvironmentVariables.JSONFileIANACharsetName; import static org.zaproxy.zap.extension.automacrobuilder.EnvironmentVariables.ZAP_ICONS; @@ -372,7 +377,7 @@ public void valueChanged(javax.swing.event.ListSelectionEvent evt) { } } - displayInfo.clear(); + displayInfo.clearAll(); return pmt; } @@ -387,13 +392,27 @@ public void updateCurrentSelectedRequestListDisplayContents() { int cpos = requestJList.getSelectedIndex(); if (cpos != -1) { // current cpos request is displayed in MacroRequest. int selectedTabIndex = getSelectedTabIndexOfMacroRequestList(); - displayInfo.clear(); + displayInfo.clearAll(); displayInfo.selected_request_idx = cpos; messageViewTabbedPaneSelectedContentsLoad(selectedTabIndex); } } } + public void updateCurrentSelectedRequestListDisplayContentsSpecific(boolean isRemainRequest, boolean isRemainResponse, boolean isRemainComment) { + JList requestJList = getSelectedRequestJList(); + if (requestJList != null) { + int cpos = requestJList.getSelectedIndex(); + if (cpos != -1) { // current cpos request is displayed in MacroRequest. + int selectedTabIndex = getSelectedTabIndexOfMacroRequestList(); + displayInfo.clearSpecific(isRemainRequest, isRemainResponse, isRemainComment); + displayInfo.selected_request_idx = cpos; + messageViewTabbedPaneSelectedContentsLoad(selectedTabIndex); + } + } + } + + private void Redraw() { //ListModel cmodel = RequestList.getModel(); //RequestList.setModel(cmodel); @@ -423,11 +442,14 @@ private void initComponents() { deleteRequest = new javax.swing.JMenuItem(); showMessageView = new javax.swing.JMenuItem(); RequestEdit = new javax.swing.JPopupMenu(); - edit = new javax.swing.JMenuItem(); - restore = new javax.swing.JMenuItem(); - update = new javax.swing.JMenuItem(); + editMenuItem = new javax.swing.JMenuItem(); + restoreMenuItem = new javax.swing.JMenuItem(); + updateMenuItem = new javax.swing.JMenuItem(); + decodeMenuItem = new javax.swing.JMenuItem(); + copyMenuItem = new javax.swing.JMenuItem(new DefaultEditorKit.CopyAction()); + pasteMenuItem = new javax.swing.JMenuItem(new DefaultEditorKit.PasteAction()); ResponseShow = new javax.swing.JPopupMenu(); - show = new javax.swing.JMenuItem(); + showMenuItem = new javax.swing.JMenuItem(); jScrollPane2 = new javax.swing.JScrollPane(); jPanel4 = new javax.swing.JPanel(); messageView = new javax.swing.JTabbedPane(); @@ -479,6 +501,31 @@ private void initComponents() { @Override public void actionPerformed(ActionEvent e) { ExtensionHelp.showHelp("addon.automacrobuilder"); + AddOn addon = ZapUtil.getAddOnWithinExtension("ExtensionAutoMacroBuilder"); + if (addon != null) { + AddOn.HelpSetData helpSetData = addon.getHelpSetData(); + if (helpSetData != null) { + if( !helpSetData.isEmpty() ){ + LOGGER4J.info("baseName:" + helpSetData.getBaseName() + + " locale:" + helpSetData.getLocaleToken() ); + } else { + LOGGER4J.info("helpSetData is Empty"); + } + ClassLoader classLoader = addon.getClassLoader(); + URL helpSetUrl = + LocaleUtils.findResource( + helpSetData.getBaseName(), + "hs", + helpSetData.getLocaleToken(), + Constant.getLocale(), + classLoader::getResource); + if (helpSetUrl == null) { + LOGGER4J.error("helpSetUrl is null"); + } else { + LOGGER4J.info("helpSetUrl:" + helpSetUrl.toString()); + } + } + } } }); @@ -549,39 +596,54 @@ public void actionPerformed(ActionEvent e) { PopupMenuForRequestList.add(showMessageView); - edit.setText(bundle.getString("MacroBuilderUI.REQUESTEDIT.text")); // NOI18N - edit.addActionListener(new java.awt.event.ActionListener() { + editMenuItem.setText(bundle.getString("MacroBuilderUI.REQUESTEDIT.text")); // NOI18N + editMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { editActionPerformed(evt); } }); - RequestEdit.add(edit); + RequestEdit.add(editMenuItem); - restore.setText(bundle.getString("MacroBuilderUI.restore.text")); // NOI18N - restore.setToolTipText(bundle.getString("MacroBuilderUI.restore.tooltip.text")); - restore.addActionListener(new java.awt.event.ActionListener() { + restoreMenuItem.setText(bundle.getString("MacroBuilderUI.restore.text")); // NOI18N + restoreMenuItem.setToolTipText(bundle.getString("MacroBuilderUI.restore.tooltip.text")); + restoreMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { restoreActionPerformed(evt); } }); - RequestEdit.add(restore); + RequestEdit.add(restoreMenuItem); - update.setText(bundle.getString("MacroBuilderUI.update.text")); // NOI18N - update.setToolTipText(bundle.getString("MacroBuilderUI.update.tooltip.text")); - update.addActionListener(new java.awt.event.ActionListener() { + updateMenuItem.setText(bundle.getString("MacroBuilderUI.update.text")); // NOI18N + updateMenuItem.setToolTipText(bundle.getString("MacroBuilderUI.update.tooltip.text")); + updateMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { updateActionPerformed(evt); } }); - RequestEdit.add(update); + RequestEdit.add(updateMenuItem); - show.setText(bundle.getString("MacroBuilderUI.RESPONSESHOW.text")); // NOI18N - show.addActionListener(new java.awt.event.ActionListener() { + decodeMenuItem.setText(bundle.getString("MacroBuilderUI.decode.text")); + decodeMenuItem.setToolTipText(bundle.getString("MacroBuilderUI.decode.tooltip.text")); + decodeMenuItem.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + DecodeMenuItemActionPerformed(e); + } + }); + RequestEdit.add(decodeMenuItem); + + copyMenuItem.setText(bundle.getString("MacroBuilderUI.copy.text")); + RequestEdit.add(copyMenuItem); + pasteMenuItem.setText(bundle.getString("MacroBuilderUI.paste.text")); + RequestEdit.add(pasteMenuItem); + + showMenuItem.setText(bundle.getString("MacroBuilderUI.RESPONSESHOW.text")); // NOI18N + showMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { showActionPerformed(evt); } }); - ResponseShow.add(show); + ResponseShow.add(showMenuItem); setPreferredSize(new java.awt.Dimension(873, 850)); @@ -602,6 +664,7 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); + messageRequest.addMouseListener(new java.awt.event.MouseAdapter() { public void mousePressed(java.awt.event.MouseEvent evt) { messageRequestMousePressed(evt); @@ -1120,7 +1183,13 @@ private void customActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST: }//GEN-LAST:event_customActionPerformed - private void messageRequestLoadContents(int selectedTabIndexOfRequestList){ + /** + * load content to messageRequest TextPane if it is needed. + * + * @param selectedTabIndexOfRequestList + * @return true - content is Newly loaded
false - content is NOT loaded. the messageRequest remains with its current content. + */ + private boolean messageRequestLoadContents(int selectedTabIndexOfRequestList){ if (displayInfo != null && displayInfo.selected_request_idx!=-1&&!displayInfo.isLoadedMessageRequestContents) { List prequestResponseList = getPRequestResponseListAtTabIndex(selectedTabIndexOfRequestList); @@ -1128,24 +1197,15 @@ private void messageRequestLoadContents(int selectedTabIndexOfRequestList){ JTextPaneContents reqdoc = new JTextPaneContents(messageRequest); - reqdoc.setRequestChunks(pqr.request); + reqdoc.setRequestChunksWithDecodedCustomTag(pqr.request); displayInfo.isLoadedMessageRequestContents = true; + return true; } + return false; } - public void setHttpMessage2messageRequest(HttpMessage message){ - ParmGenMacroTrace pmt = getSelectedParmGenMacroTrace(); - if (pmt == null) return; - PRequestResponse pRequestResponse = ZapUtil.getPRequestResponse(message, pmt.getSequenceEncode()); - JTextPaneContents reqdoc = new JTextPaneContents(messageRequest); - reqdoc.setRequestChunks(pRequestResponse.request); - messageResponse.setText(""); - - displayInfo.isLoadedMessageRequestContents = true; - displayInfo.isLoadedmessageResponseContents = true; - } private void messageResponseLoadContents(int selectedTabIndexOfRequestList){ if (displayInfo != null && displayInfo.selected_request_idx!=-1&&!displayInfo.isLoadedmessageResponseContents) { @@ -1209,7 +1269,7 @@ private void RequestListValueChanged(javax.swing.event.ListSelectionEvent evt) { LOGGER4J.debug("RequestListValueChanged selected pos:" + pos); // int selectedTabIndex = getSelectedTabIndexOfMacroRequestList(); - displayInfo.clear(); + displayInfo.clearAll(); displayInfo.selected_request_idx = pos; messageViewTabbedPaneSelectedContentsLoad(selectedTabIndex); } else { @@ -1780,7 +1840,8 @@ private void editActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:ev // TODO add your handling code here: String reg = ""; //String orig = MacroRequest.getText(); - + + int tabIndex = getSelectedTabIndexOfMacroRequestList(); JList requestJList = getRequestJListAtTabIndex(tabIndex); @@ -1790,12 +1851,17 @@ private void editActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:ev ParmGenMacroTrace pmt = getParmGenMacroTraceAtTabIndex(tabIndex); if(pmt!=null){ + if (!isMessageRequestEditable()) { + pmt.restoreOrigialToRequestList(); + setMessageRequestEditMode(true); + updateCurrentSelectedRequestListDisplayContents(); + } PRequestResponse pqr = pmt.getRequestResponseCurrentList(pos); if (pqr != null) { StyledDocumentWithChunk chunkdoc = this.getStyledDocumentOfSelectedMessageRequest(); if (chunkdoc != null) { StyledDocumentWithChunk newchunkdoc = new StyledDocumentWithChunk(chunkdoc); // newchunkdoc is newly created and independent from chunkdoc. - new ParmGenRegex(this, reg, newchunkdoc).setVisible(true); + new ParmGenRegex(bundle.getString("MacroBuilderUI.requestEditorTitle.text"),this, reg, newchunkdoc).setVisible(true); } } } @@ -1815,7 +1881,7 @@ private void showActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:ev StyledDocument doc = messageResponse.getStyledDocument(); if (doc instanceof StyledDocumentWithChunk) { StyledDocumentWithChunk newchunkdoc = new StyledDocumentWithChunk((StyledDocumentWithChunk) doc); - new ParmGenRegex(this, reg, newchunkdoc).setVisible(true); + new ParmGenRegex("Response", this, reg, newchunkdoc).setVisible(true); } } } @@ -2015,6 +2081,28 @@ private void messageRequestMousePressed(java.awt.event.MouseEvent evt) {//GEN-FI messageViewTabbedPaneSelectedContentsLoad(MacroRequestListTabsCurrentIndex); // must content load before RequestEdit.show if (evt.isPopupTrigger()) { LOGGER4J.debug("messageRequestMousePressed PopupTriggered."); + int startPos = this.messageRequest.getSelectionStart(); + int endPos = this.messageRequest.getSelectionEnd(); + + if (startPos >= 0 && startPos < endPos) { + StyledDocumentWithChunk requestChunkDoc = getStyledDocumentOfSelectedMessageRequest(); + if (requestChunkDoc != null + && requestChunkDoc.isExistPlaceHolderBetweenStartEndPos(startPos, endPos)) { + decodeMenuItem.setEnabled(false); + } else { + decodeMenuItem.setEnabled(true); + } + copyMenuItem.setEnabled(true); + } else { + decodeMenuItem.setEnabled(false); + copyMenuItem.setEnabled(false); + } + if (ZapUtil.hasSystemClipBoardString()){ + pasteMenuItem.setEnabled(true); + } else { + pasteMenuItem.setEnabled(false); + } + LOGGER4J.debug("selection start=" + startPos + " end=" + endPos); RequestEdit.show(evt.getComponent(), evt.getX(), evt.getY()); } LOGGER4J.debug("messageRequestMousePressed...end"); @@ -2075,11 +2163,11 @@ private void restoreActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST PRequestResponse current = pmt.getRequestResponseCurrentList(idx); current.updateRequestResponse(prr.request.clone(), prr.response.clone());// clone original PRequestResponse to CurrentList(rlist) JTextPaneContents reqdoc = new JTextPaneContents(messageRequest); - reqdoc.setRequestChunks(prr.request); + reqdoc.setRequestChunksWithDecodedCustomTag(prr.request); JTextPaneContents resdoc = new JTextPaneContents(messageResponse); resdoc.setResponseChunks(prr.response); if (pmt != null) { - pmt.nullfetchResValAndCookieMan(); + //pmt.nullfetchResValAndCookieMan(); } } } @@ -2101,7 +2189,7 @@ private void updateActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST: PRequestResponse current = pmt.getRequestResponseCurrentList(idx); StyledDocumentWithChunk doc = this.getStyledDocumentOfSelectedMessageRequest(); if (doc != null) { - PRequest newrequest = doc.reBuildPRequestFromDocTextAndChunks(); // request newly created from DocText and Chunks + PRequest newrequest = doc.reBuildPRequestFromDocTextAndChunksWithEncodeCustomTag(); // request newly created from DocText and Chunks current.request = newrequest; PRequestResponse original = pmt.getOriginalPRequestResponse(idx); @@ -2175,17 +2263,17 @@ public StyledDocumentWithChunk getStyledDocumentOfSelectedMessageRequest() { + displayInfo.selected_request_idx + "]"); return null; } + StyledDocumentWithChunk doc = CastUtils.castToType(messageRequest.getStyledDocument()); + messageRequestLoadContents(selectedTabIndex); - StyledDocument doc = messageRequest.getStyledDocument(); - if ( doc instanceof StyledDocumentWithChunk) { - return CastUtils.castToType(doc); - } + + return doc; } return null; } - public String getMessageRequest() { - return messageRequest.getText(); + public JTextPane getMessageRequest() { + return this.messageRequest; } /** @@ -2465,18 +2553,28 @@ static class DisplayInfoOfRequestListTab { public boolean isLoadedmessageResponseContents = false; DisplayInfoOfRequestListTab() { - clear(); + clearAll(); } - public void clear() { + public void clearAll() { selected_request_idx = -1; - clearViewFlags(); + clearViewFlags(false, false, false); } - public void clearViewFlags() { - isLoadedMacroCommentContents = false; - isLoadedMessageRequestContents = false; - isLoadedmessageResponseContents = false; + public void clearSpecific(boolean isRemainRequest, + boolean isRemainResponse, + boolean isRemainComment){ + + selected_request_idx = -1; + clearViewFlags(isRemainRequest, isRemainResponse, isRemainComment); + } + + public void clearViewFlags(boolean isRemainRequest, + boolean isRemainResponse, + boolean isRemainComment) { + isLoadedMacroCommentContents = isRemainComment; + isLoadedMessageRequestContents = isRemainRequest; + isLoadedmessageResponseContents = isRemainResponse; } } @@ -2593,8 +2691,25 @@ private void MacroCommentsMouseReleased(java.awt.event.MouseEvent evt) { } } + private void DecodeMenuItemActionPerformed(java.awt.event.ActionEvent evt) { + int startPos = this.messageRequest.getSelectionStart(); + int endPos = this.messageRequest.getSelectionEnd(); + if (startPos >= 0 && startPos < endPos) { + + String selectedText = this.messageRequest.getSelectedText(); + StyledDocumentWithChunk doc = CastUtils.castToType(this.messageRequest.getStyledDocument()); + Encode enc = doc.getEnc(); + if (selectedText.indexOf("\n") == -1) { + StartEndPosition startEndPosition = new StartEndPosition(startPos, endPos, selectedText); + DecoderSelector decoderSelector = new DecoderSelector(this, startEndPosition, enc); + decoderSelector.setVisible(true); + } + + } + } + public void clearDisplayInfoViewFlags() { - displayInfo.clearViewFlags(); + displayInfo.clearViewFlags(false, false, false); } public JPanel getMessageViewPanel() { @@ -2636,7 +2751,7 @@ public void restoreAllCurrentSelectedMacroRequestFromOriginal() { if (selectedIndex == index) { JTextPaneContents reqdoc = new JTextPaneContents(messageRequest); - reqdoc.setRequestChunks(prr.request); + reqdoc.setRequestChunksWithDecodedCustomTag(prr.request); JTextPaneContents resdoc = new JTextPaneContents(messageResponse); resdoc.setResponseChunks(prr.response); if (pmt != null) { @@ -2711,10 +2826,18 @@ public void updateJlistForRepaint(int tabIndexVal, ParmGenMacroTrace basePmt, in } } - public void clearMessageResponse() { this.messageResponse.setText(""); } + + public void setMessageRequestEditMode(boolean b) { + this.messageRequest.setEditable(b); + } + + public boolean isMessageRequestEditable() { + return this.messageRequest.isEditable(); + } + // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JCheckBox CBinheritFromCache; private javax.swing.JButton ClearMacro; @@ -2745,7 +2868,7 @@ public void clearMessageResponse() { private javax.swing.JMenuItem deleteRequest; private javax.swing.JMenuItem showMessageView; private javax.swing.JMenuItem disableRequest; - private javax.swing.JMenuItem edit; + private javax.swing.JMenuItem editMenuItem; private javax.swing.JMenuItem enableRequest; private javax.swing.JButton jButton1; private javax.swing.JCheckBox jCheckBox1; @@ -2773,10 +2896,13 @@ public void clearMessageResponse() { private javax.swing.JPanel descriptionVacantArea; private javax.swing.JLabel dummyLabel; private javax.swing.JLabel requestListNum; - private javax.swing.JMenuItem restore; - private javax.swing.JMenuItem show; + private javax.swing.JMenuItem restoreMenuItem; + private javax.swing.JMenuItem showMenuItem; private javax.swing.JTextField subSequenceScanLimit; - private javax.swing.JMenuItem update; + private javax.swing.JMenuItem updateMenuItem; + private javax.swing.JMenuItem decodeMenuItem; + private javax.swing.JMenuItem copyMenuItem; + private javax.swing.JMenuItem pasteMenuItem; private javax.swing.JTextField waitsec; // End of variables declaration//GEN-END:variables diff --git a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/generated/ParmGenRegex.java b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/generated/ParmGenRegex.java index e07ba07..c195923 100644 --- a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/generated/ParmGenRegex.java +++ b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/generated/ParmGenRegex.java @@ -5,6 +5,8 @@ */ package org.zaproxy.zap.extension.automacrobuilder.generated; +import java.awt.event.FocusEvent; +import java.awt.event.FocusListener; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.swing.*; @@ -44,8 +46,6 @@ public class ParmGenRegex extends javax.swing.JDialog { UndoManager um; UndoManager original_um; - int fidx; - ArrayList findplist; String curr_regex; String curr_orig; InterfaceRegex parentwin =null; @@ -64,13 +64,11 @@ public class ParmGenRegex extends javax.swing.JDialog { private static DefaultComboBoxModel comboModel_columnpolicy = null; private void init(String regex, String orig){ - findplist.clear(); - fidx = -1; curr_regex = regex; curr_orig = orig; } - // new される前に初期化。 + // initialize before calling constructor static{ if(comboModel_regextype==null){ comboModel_regextype = new javax.swing.DefaultComboBoxModel(new String[] { @@ -134,7 +132,7 @@ private void removeStyles(StyledDocument doc) { } } /** - * Creates new form sampleFrame + * Regex Dialog for configuring tracking parameter manually */ public ParmGenRegex(InterfaceRegex _parentwin, boolean showrequest) { initComponents(); @@ -143,7 +141,6 @@ public ParmGenRegex(InterfaceRegex _parentwin, boolean showrequest) { To.setEnabled(false); parentwin = _parentwin; regexactionwin = null; - findplist = new ArrayList(); init(null, null); this.setModal(true); RegexText.setText(parentwin.getRegex()); @@ -161,7 +158,9 @@ public ParmGenRegex(InterfaceRegex _parentwin, boolean showrequest) { Document rexdoc = RegexText.getDocument(); foundTextAttrPos = new ArrayList<>(); - + + addFocusListerToOriginalText(); + //RegexTextのUndo/Redo rexdoc.addUndoableEditListener(new UndoableEditListener() { public void undoableEditHappened(UndoableEditEvent e) { @@ -169,10 +168,10 @@ public void undoableEditHappened(UndoableEditEvent e) { um.addEdit(e.getEdit()); } }); - StyledDocument origdoc = OriginalText.getStyledDocument(); + ManagedStyledDocument origdoc = CastUtils.castToType(OriginalText.getStyledDocument()); createStyles(origdoc); - clearAllCharacterAttributesExceptPlaceHolderStyles(origdoc); + SwingStyle.clearAllCharacterAttributes(origdoc, OriginalText); //RegexTextのUndo/Redo origdoc.addUndoableEditListener(new UndoableEditListener() { @@ -182,9 +181,21 @@ public void undoableEditHappened(UndoableEditEvent e) { } }); } - - public ParmGenRegex(InterfaceParmGenRegexSaveCancelAction _actionwin, String _reg, StyledDocumentWithChunk chunkDoc){ + + /** + * Regex dialog for messageView + * + * @param dialogTitle + * @param _actionwin + * @param _reg + * @param chunkDoc + */ + public ParmGenRegex(String dialogTitle, + InterfaceParmGenRegexSaveCancelAction _actionwin, + String _reg, + StyledDocumentWithChunk chunkDoc){ initComponents(); + setTitle(dialogTitle); this.chunkDoc = chunkDoc; um = new UndoManager(); @@ -192,7 +203,6 @@ public ParmGenRegex(InterfaceParmGenRegexSaveCancelAction _actionwin, String _re To.setEnabled(false); parentwin = null; regexactionwin = _actionwin; - findplist = new ArrayList(); init(null, null); this.setModal(true); RegexText.setText(_reg); @@ -200,7 +210,7 @@ public ParmGenRegex(InterfaceParmGenRegexSaveCancelAction _actionwin, String _re OriginalText.setStyledDocument(this.chunkDoc); createStyles(this.chunkDoc ); - clearAllCharacterAttributesExceptPlaceHolderStyles(this.chunkDoc); + SwingStyle.clearAllCharacterAttributes(this.chunkDoc, OriginalText); OriginalText.setCaretPosition(0); @@ -223,19 +233,23 @@ public ParmGenRegex(InterfaceParmGenRegexSaveCancelAction _actionwin, String _re }); } + JScrollPane hexDataScroller = addHexView(isLabelSaveBtn); + if(hasBinaryContents) { - RegexTest.setEnabled(false); + //RegexTest.setEnabled(false); + //RegexText.setEnabled(false); + TextTab.setSelectedComponent(hexDataScroller); } - addHexView(isLabelSaveBtn); - if (this.chunkDoc != null) { byte[] hexdata = this.chunkDoc.getBytes(); if (hexdata != null) { hexModel.setData(hexdata); } } - + + addFocusListerToOriginalText(); + foundTextAttrPos = new ArrayList<>(); if(regexactionwin!=null){ Save.setText(regexactionwin.getParmGenRegexSaveBtnText(isLabelSaveBtn)); @@ -260,6 +274,27 @@ public void undoableEditHappened(UndoableEditEvent e) { }); } + private void addFocusListerToOriginalText() { + OriginalText.addFocusListener(new FocusListener() { + @Override + public void focusGained(FocusEvent e) { + if (foundTextAttrPos != null && !foundTextAttrPos.isEmpty()) { + SwingStyle.clearAllCharacterAttributes(chunkDoc, OriginalText); + RegexSelectedTextPos lastSelectedPos = foundTextAttrPos.get(foundTextAttrPos.size() - 1); + LOGGER4J.debug("last=" + lastSelectedPos.getStartPos() + "," + lastSelectedPos.getEndPos()); + OriginalText.setSelectionStart(lastSelectedPos.getStartPos()); + OriginalText.setSelectionEnd(lastSelectedPos.getEndPos()); + foundTextAttrPos.clear(); + } + } + + @Override + public void focusLost(FocusEvent e) { + + } + }); + } + public static String EscapeSpecials(String _d){ _d = _d.replaceAll(Escaperegex, "\\\\$1"); _d = _d.replaceAll("(\r|\n)+", "(?:\\\\r|\\\\n)+?"); @@ -335,9 +370,9 @@ private void NewSearch(){ String regex = RegexText.getText(); //String original = OriginalText.getText(); - StyledDocument doc = OriginalText.getStyledDocument(); + ManagedStyledDocument doc = CastUtils.castToType(OriginalText.getStyledDocument()); - clearAllCharacterAttributesExceptPlaceHolderStyles(doc); + SwingStyle.clearAllCharacterAttributes(doc, OriginalText); foundTextAttrPos.clear(); @@ -388,6 +423,7 @@ private void NewSearch(){ int cpt = 0; int fcount=0; + int lastSearchedTextCaretPosition = -1; while (m.find()) { found = true; fcount++; @@ -429,34 +465,31 @@ private void NewSearch(){ if (ept0 > spt0) { Style outerStyle = doc.getStyle(GROUP_OUTER_STYLENAME); - doc.setCharacterAttributes(spt0, ept0-spt0, outerStyle, false); + doc.setCharacterAttributeExceptComponents(spt0, ept0-spt0, outerStyle, false); RegexSelectedTextPos rpos = new RegexSelectedTextPos(spt0, ept0); foundTextAttrPos.add(rpos); } if (ept > spt) { Style innerStyle = doc.getStyle(GROUP_INNER_STYLENAME); - doc.setCharacterAttributes(spt, ept-spt, innerStyle, false); + doc.setCharacterAttributeExceptComponents(spt, ept-spt, innerStyle, false); RegexSelectedTextPos rpos = new RegexSelectedTextPos(spt, ept); foundTextAttrPos.add(rpos); } //int pos = OriginalText.getCaretPosition(); int pos = doc.getLength(); - findplist.add(ept0); - if ( fidx == -1){ - fidx = 0; - } + lastSearchedTextCaretPosition = ept0; } catch (Exception ex) { LOGGER4J.error(ex.getMessage(), ex); } } } - if ( fidx != -1){ - OriginalText.setCaretPosition(findplist.get(fidx)); - fidx++; + if ( lastSearchedTextCaretPosition != -1){ + OriginalText.setCaretPosition(lastSearchedTextCaretPosition); JOptionPane.showMessageDialog(this, Integer.toString(fcount)+bundle.getString("ParmGenRegex.SearchResultMessage.text"), bundle.getString("ParmGenRegex.SearchResultTitle.text"), JOptionPane.INFORMATION_MESSAGE); + }else{ java.awt.Toolkit.getDefaultToolkit().beep(); @@ -464,7 +497,7 @@ private void NewSearch(){ } } - void addHexView(boolean editable) { + private JScrollPane addHexView(boolean editable) { hexModel = new CustomHttpPanelHexModel(); hexModel.setEditable(editable); JTable hextable = new JTable(); @@ -492,10 +525,14 @@ void addHexView(boolean editable) { if (this.chunkDoc != null){ switch(selIndex) { case 1: + RegexTest.setEnabled(false); + RegexText.setEnabled(false); hexdata = this.chunkDoc.getBytes(); hexModel.setData(hexdata); break; default: + RegexTest.setEnabled(true); + RegexText.setEnabled(true); hexdata = hexModel.getData(); this.chunkDoc.updateStyleDocAndChunkFromHex(hexdata); OriginalText.repaint(); @@ -504,6 +541,7 @@ void addHexView(boolean editable) { } }); } + return scrollPane; } /** @@ -1095,17 +1133,6 @@ private void SelectPatternActionPerformed(java.awt.event.ActionEvent evt) {//GEN } }//GEN-LAST:event_SelectPatternActionPerformed - private void clearAllCharacterAttributesExceptPlaceHolderStyles(StyledDocument doc) { - if (doc instanceof StyledDocumentWithChunk) { - StyledDocumentWithChunk docWithChunk = (StyledDocumentWithChunk) doc; - List listOfPlaceHolderStyle = docWithChunk.getListOfPlaceHolderStyle(); - SwingStyle.clearAllCharacterAttributes(docWithChunk); - docWithChunk.applyPlaceHolderStyle(listOfPlaceHolderStyle); - } else { - SwingStyle.clearAllCharacterAttributes(doc); - } - } - public static class RegexSelectedTextPos { int st; int et; diff --git a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/mdepend/ClientDependent.java b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/mdepend/ClientDependent.java index c435d12..c563836 100644 --- a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/mdepend/ClientDependent.java +++ b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/mdepend/ClientDependent.java @@ -28,6 +28,7 @@ import org.zaproxy.zap.extension.automacrobuilder.PRequest; import org.zaproxy.zap.extension.automacrobuilder.PRequestResponse; import org.zaproxy.zap.extension.automacrobuilder.UUIDGenerator; +import org.zaproxy.zap.extension.automacrobuilder.zap.ZapUtil; import org.zaproxy.zap.network.HttpRequestConfig; /** @author gdgd009xcd */ @@ -177,6 +178,10 @@ public void sendDeprecated(HttpSender sender, HttpMessage msg) throws IOExceptio } } + /** + * create null RequestConfig which has No Sender Listeners. + * @return + */ private HttpRequestConfig getHttpRequestConfig() { if (httpRequestConfig == null) { HttpRequestConfig.Builder builder = HttpRequestConfig.builder(); @@ -189,13 +194,21 @@ private HttpRequestConfig getHttpRequestConfig() { return httpRequestConfig; } + /** + * send HttpMessage Without SenderListener and Authentication. + * @param sender + * @param msg + * @throws IOException + */ public void send(HttpSender sender, HttpMessage msg) throws IOException { sender.setFollowRedirect(false);// No follow redirects msg.setRequestingUser(null);// No Authenticate sender.setUser(null);// No Authenticate + ZapUtil.updateOriginalEncodedHttpMessage(msg); sender.sendAndReceive(msg, getHttpRequestConfig()); } + public int getScanQuePercentage() { return -1; diff --git a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/mdepend/ClientRequest.java b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/mdepend/ClientRequest.java index 03a4b60..f3f3309 100644 --- a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/mdepend/ClientRequest.java +++ b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/mdepend/ClientRequest.java @@ -53,7 +53,7 @@ public PRequestResponse clientRequest(ParmGenMacroTrace pmt, PRequest request) { int port = request.getPort(); boolean isSSL = request.isSSL(); - HttpMessage htmess = ZapUtil.getHttpMessage(request); + HttpMessage htmess = ZapUtil.getHttpMessageFromPRequest(request); try { // send message @@ -142,7 +142,7 @@ public HttpMessage startZapCurrentRequest(ParmGenMacroTrace pmt, HttpMessage cur PRequest retval = pgen.RunPRequest(prequest); if (retval != null) { - HttpMessage newmessage = ZapUtil.getHttpMessage(retval); + HttpMessage newmessage = ZapUtil.getHttpMessageFromPRequest(retval); LOGGER4J.debug("ZapUtil.getHttpMessage URL[" + newmessage.getRequestHeader().getURI().toString() + "]"); // update currentmessage contents currentmessage.setRequestHeader(newmessage.getRequestHeader()); diff --git a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/view/CaridgeReturnLabel.java b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/view/CaridgeReturnLabel.java new file mode 100644 index 0000000..99fb6f8 --- /dev/null +++ b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/view/CaridgeReturnLabel.java @@ -0,0 +1,22 @@ +package org.zaproxy.zap.extension.automacrobuilder.view; + +import javax.swing.*; + +@SuppressWarnings({"unchecked", "serial"}) +public class CaridgeReturnLabel extends JLabel implements InterfaceCompoStyleName { + private String styleName; + public CaridgeReturnLabel(String styleName, String value){ + super(value); + this.styleName = styleName; + } + + @Override + public void setStyleName(String name) { + this.styleName = name; + } + + @Override + public String getStyleName() { + return this.styleName; + } +} diff --git a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/view/ChunkJbutton.java b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/view/ChunkJbutton.java index addd1e2..5b83411 100644 --- a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/view/ChunkJbutton.java +++ b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/view/ChunkJbutton.java @@ -7,11 +7,13 @@ * */ @SuppressWarnings({"unchecked", "serial"}) -public class ChunkJbutton extends JButton { +public class ChunkJbutton extends JButton implements InterfaceCompoStyleName{ private int partno; private byte[] chunk; - public ChunkJbutton(int partno, byte[] chunk) { + private String styleName; + public ChunkJbutton(String styleName, int partno, byte[] chunk) { super(); + this.styleName = styleName; this.partno = partno; this.chunk = chunk; } @@ -23,4 +25,14 @@ public int getPartNo() { public byte[] getChunk() { return this.chunk; } + + @Override + public void setStyleName(String name) { + this.styleName = name; + } + + @Override + public String getStyleName() { + return this.styleName; + } } diff --git a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/view/DisposeChildInterface.java b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/view/DisposeChildInterface.java new file mode 100644 index 0000000..92c3473 --- /dev/null +++ b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/view/DisposeChildInterface.java @@ -0,0 +1,5 @@ +package org.zaproxy.zap.extension.automacrobuilder.view; + +public interface DisposeChildInterface { + public void disposeChild(); +} diff --git a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/view/GridBagJDialog.java b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/view/GridBagJDialog.java index d639996..edfc55a 100644 --- a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/view/GridBagJDialog.java +++ b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/view/GridBagJDialog.java @@ -1,35 +1,149 @@ package org.zaproxy.zap.extension.automacrobuilder.view; -import java.awt.*; import javax.swing.*; +import java.awt.*; +/** + * create basic dialog
+ * + *
+ *  |------------------------------------------------|
+ *  |                                                |
+ *  |              mainPanelContent                  |
+ *  |                                                |
+ *  | -----------------------------------------------|
+ *  | | OK |                              |  CANCEL ||
+ *  |________________________________________________|
+ * 
+ * @param + */ @SuppressWarnings("serial") -public abstract class GridBagJDialog extends JDialog { +public abstract class GridBagJDialog extends JDialog implements DisposeChildInterface { /** - * create basic dialog
+ * convenience constructor * - *
-     *  |------------------------------------------------|
-     *  |                                                |
-     *  |              mainPanelContent                  |
-     *  |                                                |
-     *  | -----------------------------------------------|
-     *  | | OK |                              |  CANCEL ||
-     *  |________________________________________________|
-     * 
+ * @param owner + * @param title + * @param modalityType */ public GridBagJDialog(Window owner, String title, ModalityType modalityType) { super(owner, title, modalityType); - init(); + init(GridBagConstraints.BOTH, -1, createMainPanelContent(null, null)); + } + + /** + * + * @param owner You may set owner parameter by
SwingUtilities.windowForComponent(yourComponent)

+ * @param title Dialog title String

+ * @param modalityType specifies whether dialog blocks input to other windows when shown.

+ *
    + * ModalityType.DOCUMENT_MODAL : A DOCUMENT_MODAL blocks all top-level windows from the same JFrame which launched this dialog except those from its own child hierarchy.

    + * ModalityType.APPLICATION_MODAL : An APPLICATION_MODAL blocks all top-level windows from the same Java application except those from its own child hierarchy.

    + * ModalityType.MODELESS: MODELESS dialog doesn't block any top-level windows.

    + * ModalityType.TOOLKIT_MODAL : This is the same as APPLICATION_MODAL. because almost all applications do not share toolkits between applications + *

+ * + * @param optionalObject spefify optional Object to pass createMainPanelContent argument + * + * @param fill specifies whether resize mainPanelContent vertically/horizontally or both

+ *
    + * GridBagConstraints.HORIZONTAL: mainPanelContent size is expanded horizontally.

    + * GridBagConstraints.VERTICAL: mainPanelContent size is expanded vertically.

    + * GridBagConstraints.BOTH: mainPanelContent size is expanded both horizontal and vertical + *

+ * + */ + public GridBagJDialog(Window owner, String title, ModalityType modalityType, T optionalObject, int fill) { + super(owner, title, modalityType); + init(fill, -1, createMainPanelContent(null, optionalObject)); + } + + public GridBagJDialog(Dialog dialog, String title, ModalityType modalityType, T optionalObject, int fill) { + super(dialog, title, modalityType); + init(fill, -1, createMainPanelContent(null, optionalObject)); + } + + public GridBagJDialog(Frame frame, String title, ModalityType modalityType, T optionalObject, int fill) { + super(frame, title, modalityType); + init(fill, -1, createMainPanelContent(null, optionalObject)); + } + + public GridBagJDialog(Component mainPanel, String title, ModalityType modalityType, T optionalObject, int fill) { + super(SwingUtilities.windowForComponent(mainPanel), title, modalityType); + init(fill, -1, createMainPanelContent(mainPanel, optionalObject)); + } + + + public GridBagJDialog(Dialog dialog, Component mainPanel, String title, ModalityType modalityType, T optionalObject, int fill) { + super(dialog, title, modalityType); + init(fill, -1, createMainPanelContent(mainPanel, optionalObject)); + } + /** + * + * @param owner You may set owner parameter by
SwingUtilities.windowForComponent(yourComponent)

+ * @param title Dialog title String

+ * @param modalityType specifies whether dialog blocks input to other windows when shown.

+ *
    + * ModalityType.DOCUMENT_MODAL : A DOCUMENT_MODAL blocks all top-level windows from the same JFrame which launched this dialog except those from its own child hierarchy.

    + * ModalityType.APPLICATION_MODAL : An APPLICATION_MODAL blocks all top-level windows from the same Java application except those from its own child hierarchy.

    + * ModalityType.MODELESS: MODELESS dialog doesn't block any top-level windows.

    + * ModalityType.TOOLKIT_MODAL : This is the same as APPLICATION_MODAL. because almost all applications do not share toolkits between applications + *

+ * + * @param optionalObject spefify optional Object to pass createMainPanelContent argument + * + * @param fill specifies whether resize mainPanelContent vertically/horizontally or both

+ *
    + * GridBagConstraints.HORIZONTAL: mainPanelContent size is expanded horizontally.

    + * GridBagConstraints.VERTICAL: mainPanelContent size is expanded vertically.

    + * GridBagConstraints.BOTH: mainPanelContent size is expanded both horizontal and vertical + *

+ + * @param anchor This field is used when the component is smaller than its display area.

+ *
    + * GridBagConstraints.CENTER/NORTH/WEST/SOUTH/EAST
    + * GridBagConstraints.NORTHEAST/NORTHWEST
    + * GridBagConstraints.SOUTHEAST/SOUTHWEST + *
+ */ + public GridBagJDialog(Window owner, String title, ModalityType modalityType, T optionalObject, int fill, int anchor) { + super(owner, title, modalityType); + init(fill, anchor, createMainPanelContent(null, optionalObject)); + } + + public GridBagJDialog(Dialog dialog, Component component, String title, ModalityType modalityType, T optionalObject, int fill, int anchor) { + super(dialog, title, modalityType); + init(fill, anchor, createMainPanelContent(null, optionalObject)); } + /** * create this dialog contents
- * you must implement createMainPanelContent method + * you must implement createMainPanelContent method and pass this method's mainPanelContent.
+ * Caution: you MUST NOT initialize member parameter that are set in createMainPanelContent method.
+ * because createMainPanelContent is called before member parameter initialization process.
+ *
+ * class yourDialog extends GridBagJDialog<String> {
+ *  private JTextPane regexTextPane;// Ok. this parameter value is set in createMainPanelContent method.
+ *  private JTextPane regexTextPane = null;// AAUGH. NG. this value will be null after createMainPanelContent is called
+ *  private JPanel mainPanel;
+ *
+ *  public yourDialog(Component mainPanelComponent, String title, null, ModalityType modalityType) {
+ *   super(mainPanelComponent, title, modalityType, null, GridBagConstraints.BOTH);
+ *  }
+ * + *  @Override
+ *  protected Component createMainPanelContent(Component mainPanelComponent, null) {
+ *   this.mainPanel = (JPanel) mainPanelComponent;
+ *   ...
+ *   this.regexTextPane = new JTextPane();// regexTextPane is set BEFORE initialization in class parameter definition.
+ *   ...
+ *  }
+ * } */ - private void init() { - Component mainPanelContent = createMainPanelContent(); + protected void init(int fill, int anchor, Component mainPanelContent) { + setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); GridBagLayout layout = new GridBagLayout(); JPanel panel = new JPanel(); panel.setLayout(layout); @@ -44,10 +158,13 @@ private void init() { gbc.gridy = 0; gbc.gridwidth = 4; gbc.gridheight = 2; - gbc.fill = GridBagConstraints.BOTH; + gbc.fill = fill; gbc.weightx = 1.0d; - gbc.weighty = 0.8d; + gbc.weighty = 0.8d;// 0 means do not resize height mainpanel gbc.insets = new Insets(5, 5, 5, 5); + if (anchor != -1) { + gbc.anchor = anchor; + } layout.setConstraints(mainPanel, gbc); panel.add(mainPanel); @@ -59,12 +176,14 @@ private void init() { gbc.gridheight = 1; gbc.fill = GridBagConstraints.HORIZONTAL; gbc.weightx = 1.0d; - gbc.weighty = 0.1d; + gbc.weighty = 0d; + gbc.anchor = GridBagConstraints.CENTER;// restore default value. gbc.insets = new Insets(0, 5, 0, 5); + layout.setConstraints(separator, gbc); panel.add(separator); - JButton okBtn = new JButton("OK"); + JButton okBtn = new JButton(okBtnLabelString()); gbc.gridx = 0; gbc.gridy = 3; @@ -82,7 +201,7 @@ private void init() { okBtnActionPerformed(); }); - JButton cancelBtn = new JButton("CANCEL"); + JButton cancelBtn = new JButton(cancelBtnLabelString()); gbc.gridx = 3; gbc.gridy = 3; @@ -110,9 +229,14 @@ private void init() { /** * implement mainPanelContent component
* - * @return Component + * @param mainPanel - specify mainPanel component from which this dialog opens + * @param optionalObject spefify optional Object for creating optional components
+ * in createMainPanelContent + * + * @return */ - protected abstract Component createMainPanelContent(); + + protected abstract Component createMainPanelContent(Component mainPanel, T optionalObject); /** * OK button Action
@@ -120,9 +244,17 @@ private void init() { */ protected abstract void okBtnActionPerformed(); + protected String okBtnLabelString() { + return "OK"; + } + /** * CANCEL button Action
* You must specify dispose() method at last line of this method. */ protected abstract void cancelBtnActionPerformed(); + + protected String cancelBtnLabelString() { + return "CANCEL"; + } } diff --git a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/view/InterfaceCompoStyleName.java b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/view/InterfaceCompoStyleName.java new file mode 100644 index 0000000..1123301 --- /dev/null +++ b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/view/InterfaceCompoStyleName.java @@ -0,0 +1,6 @@ +package org.zaproxy.zap.extension.automacrobuilder.view; + +public interface InterfaceCompoStyleName { + public void setStyleName(String name); + public String getStyleName(); +} diff --git a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/view/JTextPaneContents.java b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/view/JTextPaneContents.java index 6fe1e7e..226a5b1 100644 --- a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/view/JTextPaneContents.java +++ b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/view/JTextPaneContents.java @@ -71,7 +71,7 @@ void setdatadoc() { // System.out.println("Read: " + readByte + " Total: " + totalByte); } } catch (IOException ex) { - // Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex); + LOGGER4J.error(ex.getMessage(), ex); } System.out.println("before LFinsert"); // filestring = filestring.substring(0, 1024); @@ -90,29 +90,10 @@ void setdatadoc() { // Editor.setText(filestring); } catch (Exception ex) { - // Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex); + LOGGER4J.error(ex.getMessage(), ex); } } - void save(byte[] bindata) { - - if (bindata == null) return; - - // ファイルオブジェクト作成 - FileOutputStream fileOutStm = null; - try { - fileOutStm = new FileOutputStream("E:\\kkk\\bindata.txt"); - } catch (FileNotFoundException e1) { - // System.out.println("ファイルが見つからなかった。"); - } - try { - fileOutStm.write(bindata); - } catch (IOException e) { - // System.out.println("入出力エラー。"); - } - // System.out.println("終了"); - } - public void setText(String text) { StyledDocument doc = null; if (tcompo != null) { @@ -129,7 +110,7 @@ public void setText(String text) { doc.remove(0, doc.getLength()); LOGGER4J.debug("done remove text"); } catch (BadLocationException ex) { - Logger.getLogger(JTextPaneContents.class.getName()).log(Level.SEVERE, null, ex); + LOGGER4J.error(ex.getMessage(), ex); } try { @@ -137,7 +118,7 @@ public void setText(String text) { doc.insertString(0, text, null); LOGGER4J.debug("insert done"); } catch (BadLocationException ex) { - Logger.getLogger(JTextPaneContents.class.getName()).log(Level.SEVERE, null, ex); + LOGGER4J.error(ex.getMessage(), ex); } LOGGER4J.debug("before setDocument"); tcompo.setDocument(doc); @@ -147,9 +128,26 @@ public void setText(String text) { /** * Set request contents. large binary data representation is image icon. + * this method apply to decode CustomTag * * @param prequest */ + public void setRequestChunksWithDecodedCustomTag(PRequest prequest) { + + if (tcompo == null) return; + StyledDocument blank = new DefaultStyledDocument(); + + // if you change or newly create Document in JEditorPane's Document, JEditorPane cannot + // display contents. this problem occur only ZAP. + // Thus you must get original Document from JEditorPane for Setting Text. + tcompo.setStyledDocument(blank); + + + StyledDocumentWithChunk requestdoc = new StyledDocumentWithChunk(prequest, true); + StyledDocument doc = requestdoc; + tcompo.setStyledDocument(doc); + } + public void setRequestChunks(PRequest prequest) { if (tcompo == null) return; @@ -161,7 +159,7 @@ public void setRequestChunks(PRequest prequest) { tcompo.setStyledDocument(blank); - StyledDocumentWithChunk requestdoc = new StyledDocumentWithChunk(prequest); + StyledDocumentWithChunk requestdoc = new StyledDocumentWithChunk(prequest, false); StyledDocument doc = requestdoc; tcompo.setStyledDocument(doc); } diff --git a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/view/ManagedStyledDocument.java b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/view/ManagedStyledDocument.java new file mode 100644 index 0000000..0951316 --- /dev/null +++ b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/view/ManagedStyledDocument.java @@ -0,0 +1,65 @@ +package org.zaproxy.zap.extension.automacrobuilder.view; + +import org.zaproxy.zap.extension.automacrobuilder.CastUtils; + +import javax.swing.text.*; +import java.awt.*; + +@SuppressWarnings({"unchecked", "serial"}) +public class ManagedStyledDocument extends DefaultStyledDocument { + private final static org.apache.logging.log4j.Logger LOGGER4J = + org.apache.logging.log4j.LogManager.getLogger(); + public ManagedStyledDocument(StyleContext styleContext) { + super(styleContext); + } + /** + * set Character attributes except component positions. + * @param startPos + * @param length + * @param style + * @param replace + */ + public void setCharacterAttributeExceptComponents(int startPos, int length, Style style, boolean replace) { + int exStartPos = startPos; + int exEndPos = startPos + length; + int curStart = exStartPos; + int curEnd = -1; + for(int pos = exStartPos; pos < exEndPos; pos++) { + Element elm = this.getCharacterElement(pos); + if (elm != null) { + AttributeSet attrSet = elm.getAttributes(); + if (attrSet != null) { + String styleName = ""; + // I can get StyleName and Component from the AttributeSet at last! + Object name = attrSet.getAttribute(AttributeSet.NameAttribute); + if (name != null) { + // character's styleName is overwrited each calling setCharacterAttributes. + // so below styleName is changed from original. + styleName = CastUtils.castToType(name); + } + Component compo = StyleConstants.getComponent(attrSet); + if (compo != null) { + if (compo instanceof InterfaceCompoStyleName) { + InterfaceCompoStyleName compoStyle = (InterfaceCompoStyleName) compo; + styleName = compoStyle.getStyleName(); + } + curEnd = pos; + int len = curEnd - curStart; + if (len > 0) { + this.setCharacterAttributes(curStart, len, style, replace); + LOGGER4J.debug("curStart,curEnd:" + curStart + "," + curEnd + " style:[" + style.getName() + "]"); + } + LOGGER4J.debug("pos=" + pos + " except component name[" + styleName + "]"); + curStart = curEnd + 1; + } + } + } + } + if (curStart < exEndPos) { + curEnd = exEndPos; + int len = curEnd - curStart; + this.setCharacterAttributes(curStart, len, style, replace); + LOGGER4J.debug("curStart,curEnd:" + curStart + "," + curEnd + " style:[" + style.getName() + "]"); + } + } +} diff --git a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/view/StyledDocumentWithChunk.java b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/view/StyledDocumentWithChunk.java index e925df5..cf5b034 100644 --- a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/view/StyledDocumentWithChunk.java +++ b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/view/StyledDocumentWithChunk.java @@ -6,6 +6,10 @@ package org.zaproxy.zap.extension.automacrobuilder.view; import org.zaproxy.zap.extension.automacrobuilder.*; +import org.zaproxy.zap.extension.automacrobuilder.zap.CustomTagConverter; +import org.zaproxy.zap.extension.automacrobuilder.zap.DecoderTag; +import org.zaproxy.zap.extension.automacrobuilder.zap.ZapUtil; +import org.zaproxy.zap.extension.automacrobuilder.zap.view.MessageRequestDocumentFilter; import static org.zaproxy.zap.extension.automacrobuilder.ParmGenUtil.ImageIconLoadStatus; @@ -16,24 +20,22 @@ import java.util.*; import java.util.List; import javax.swing.ImageIcon; -import javax.swing.JLabel; import javax.swing.border.LineBorder; import javax.swing.text.*; @SuppressWarnings({"unchecked", "serial"}) -public class StyledDocumentWithChunk extends DefaultStyledDocument { +public class StyledDocumentWithChunk extends ManagedStyledDocument { private static org.apache.logging.log4j.Logger LOGGER4J = org.apache.logging.log4j.LogManager.getLogger(); - private static final String EMBED_ISO8859_BINARY = "StyledDocumentWithChunk.EMBED_ISO8859_BINARY"; - private static final String CRIMAGE_STYLENAME = "StyledDocumentWithChunk.CRSTYLE_IMAGE"; + private static final String EMBED_ISO8859_BINARY = "EMBED_ISO8859_BINARY"; + private static final String CRIMAGE_STYLENAME_PREFIX = "CARIDGE_RETURN"; private static final ResourceBundle bundle = ResourceBundle.getBundle("burp/Bundle"); private static final String PLACE_HOLDER_SIGN = "§"; private final String[] styleNames = { - EMBED_ISO8859_BINARY, - CRIMAGE_STYLENAME + EMBED_ISO8859_BINARY }; Map styleMap = null; @@ -61,7 +63,25 @@ public class StyledDocumentWithChunk extends DefaultStyledDocument { List requestChunks = null; List responseChunks = null; - public StyledDocumentWithChunk(PRequest prequest) { + int counterCaridgeReturn = 0; + + private boolean documentFilterMasked =false; + + /** + * null constructor + */ + public StyledDocumentWithChunk() { + super(SwingStyleProvider.createSwingStyle().getStyleContext()); + createStyles(); + } + + /** + * convert Prequest to StyledDocumentWithChunk + * + * @param prequest + * @param decodeCustomTag true - decode CustomTag | false - no effect + */ + public StyledDocumentWithChunk(PRequest prequest, boolean decodeCustomTag) { super(SwingStyleProvider.createSwingStyle().getStyleContext()); createStyles(); enc = prequest.getPageEnc(); @@ -69,6 +89,17 @@ public StyledDocumentWithChunk(PRequest prequest) { port = prequest.getPort(); isSSL = prequest.isSSL(); updateRequest(prequest); + + if (decodeCustomTag) { + String placeHolderStyledText; + + placeHolderStyledText = getDecodedPlaceHolderStyledText(); + + reCreateStyledDocFromRequestTextAndChunks(placeHolderStyledText, null); + } + if(this.getDocumentFilter() == null){ + this.setDocumentFilter(new MessageRequestDocumentFilter(this)); + } } public StyledDocumentWithChunk(PResponse presponse) { @@ -97,8 +128,10 @@ public StyledDocumentWithChunk(StyledDocumentWithChunk chunkdoc) { requestChunks = ListDeepCopy.listDeepCopyRequestChunk( chunkdoc.requestChunks); // copy from source - reCreateStyledDocFromRequestTextAndChunks(chunkdoc.getPlaceHolderStyleText(), null); - + reCreateStyledDocFromRequestTextAndChunks(chunkdoc.getPlaceHolderStyledText(), null); + if(this.getDocumentFilter() == null){ + this.setDocumentFilter(new MessageRequestDocumentFilter(this)); + } } else { LOGGER4J.debug("chunkdoc is RESPONSE"); enc = chunkdoc.enc; @@ -109,7 +142,22 @@ public StyledDocumentWithChunk(StyledDocumentWithChunk chunkdoc) { } } + /** + * update this document with specified text argument.
+ * this function is effective if this document is Request. + * @param placeHolderStyleText + * @return + */ + private boolean updateRequestPlaceHolderStyleText(String placeHolderStyleText) { + if (isRequest()) { + reCreateStyledDocFromRequestTextAndChunks(placeHolderStyleText, null); + return true; + } + return false; + } + private void createStyles() { + counterCaridgeReturn = 0; styleMap = new HashMap<>(); for(String name: styleNames) { addOrGetStyle(name); @@ -191,12 +239,26 @@ public boolean hasBinaryContents() { /** * Rebuild PRequest from intenal text and chunks. - * This method no affects contents of this. + * This method apply to Encode CustomTag. * * @return */ - public PRequest reBuildPRequestFromDocTextAndChunks() { - byte[] data = reBuildPRequestFromDocTextAndChunks(null); + public PRequest reBuildPRequestFromDocTextAndChunksWithEncodeCustomTag() { + byte[] data = reBuildPRequestFromDocTextAndChunks(null, true); + if (data != null) { + return new PRequest(host, port, isSSL, data, enc); + } + return null; + } + + /** + * Rebuild PRequest from intenal text and chunks. + * This method returns original. it does NOT apply to Encode CustomTag + * + * @return + */ + private PRequest reBuildPRequestFromDocTextAndChunks(String placeHolderStyledText) { + byte[] data = reBuildPRequestFromDocTextAndChunks(placeHolderStyledText, false); if (data != null) { return new PRequest(host, port, isSSL, data, enc); } @@ -210,13 +272,27 @@ public PRequest reBuildPRequestFromDocTextAndChunks() { * @param placeHolderStyleText * @return binary of PRequest */ - private byte[] reBuildPRequestFromDocTextAndChunks(String placeHolderStyleText) { + /** + * Rebuild PRequest binary from specified(or intenal) PlaceHolderStyleText and internal this.requestChunks. + * This method apply CustomConvert if isCustomConvert == true. + * Otherwise this method no affects contents of this. + * @param placeHolderStyledText + * @param isCustomConvert true - apply CustomConvert | false - no affects contents + * @return + */ + private byte[] reBuildPRequestFromDocTextAndChunks(String placeHolderStyledText, boolean isCustomConvert) { if (requestChunks == null) return null; - if (placeHolderStyleText == null || placeHolderStyleText.isEmpty()) { - placeHolderStyleText = this.getPlaceHolderStyleText(); + + if (placeHolderStyledText == null || placeHolderStyledText.isEmpty()) { + placeHolderStyledText = this.getPlaceHolderStyledText(); + } + + if (isCustomConvert) { + placeHolderStyledText = getEncodedPlaceHolderStyledText(); } + Charset charset = enc.getIANACharset(); - byte[] docbytes = placeHolderStyleText.getBytes(charset); + byte[] docbytes = placeHolderStyledText.getBytes(charset); ParmGenBinUtil contarray = new ParmGenBinUtil(docbytes); ParmGenBinUtil resultarray = new ParmGenBinUtil(); byte[] PLS_PREFIX = CONTENTS_PLACEHOLDER_PREFIX.getBytes(); @@ -272,73 +348,78 @@ private byte[] reBuildPRequestFromDocTextAndChunks(String placeHolderStyleText) */ public void updateStyleDocAndChunkFromHex(byte[] hexBytes) { if (hexBytes == null) return; - Charset charset = enc.getIANACharset(); - String placeHolderStyleText = this.getPlaceHolderStyleText(); - - byte[] placeHolderStyleTextBytes = placeHolderStyleText.getBytes(charset); - ParmGenBinUtil currentPLaceHolderStyleArray = new ParmGenBinUtil(placeHolderStyleTextBytes); - ParmGenBinUtil hexArray = new ParmGenBinUtil(hexBytes); - ParmGenBinUtil resultPlaceHolderStyleArray = new ParmGenBinUtil();// array of PlaceHolderStyleText - byte[] PLS_PREFIX = CONTENTS_PLACEHOLDER_PREFIX.getBytes(); - byte[] PLS_SUFFIX = CONTENTS_PLACEHOLDER_SUFFIX.getBytes(); - int npos = -1; - int cpos = 0; - int hpos = 0; - while ((npos = currentPLaceHolderStyleArray.indexOf(PLS_PREFIX, cpos)) != -1) { - int siz = 0; - if (npos > cpos) { - siz = npos - cpos; - resultPlaceHolderStyleArray.concat(hexArray.subBytes(hpos, hpos + siz)); - hpos += siz; - } - cpos = npos + PLS_PREFIX.length; - resultPlaceHolderStyleArray.concat(PLS_PREFIX); - - if ((npos = currentPLaceHolderStyleArray.indexOf(PLS_SUFFIX, cpos)) != -1) { - if (npos > cpos && npos - cpos <= PARTNO_MAXLEN) { - byte[] partnobytes = currentPLaceHolderStyleArray.subBytes(cpos, npos); - String partnostr = new String(partnobytes, charset); - if (partnostr.matches("[0-9]+")) { - int partno = Integer.parseInt(partnostr); - Optional ochunk = - requestChunks.stream() - .filter( - c -> - (c.getChunkType() - == RequestChunk - .CHUNKTYPE - .CONTENTS - || c.getChunkType() - == RequestChunk - .CHUNKTYPE - .CONTENTSIMG) - && c.getPartNo() == partno) - .findFirst(); - RequestChunk resultchunk = ochunk.orElse(null); - if (resultchunk != null) { - siz = resultchunk.getBytes().length; - if (siz > 0) { - // update resultChunk.data with hexdata. - resultchunk.setByte(hexArray.subBytes(hpos, hpos + siz)); - LOGGER4J.debug( - "update chunk from hexdata partno:" - + partno - + " siz=" - + siz); - hpos += siz; + this.documentFilterMasked = true; + try { + Charset charset = enc.getIANACharset(); + String placeHolderStyleText = this.getPlaceHolderStyledText(); + + byte[] placeHolderStyleTextBytes = placeHolderStyleText.getBytes(charset); + ParmGenBinUtil currentPLaceHolderStyleArray = new ParmGenBinUtil(placeHolderStyleTextBytes); + ParmGenBinUtil hexArray = new ParmGenBinUtil(hexBytes); + ParmGenBinUtil resultPlaceHolderStyleArray = new ParmGenBinUtil();// array of PlaceHolderStyleText + byte[] PLS_PREFIX = CONTENTS_PLACEHOLDER_PREFIX.getBytes(); + byte[] PLS_SUFFIX = CONTENTS_PLACEHOLDER_SUFFIX.getBytes(); + int npos = -1; + int cpos = 0; + int hpos = 0; + while ((npos = currentPLaceHolderStyleArray.indexOf(PLS_PREFIX, cpos)) != -1) { + int siz = 0; + if (npos > cpos) { + siz = npos - cpos; + resultPlaceHolderStyleArray.concat(hexArray.subBytes(hpos, hpos + siz)); + hpos += siz; + } + cpos = npos + PLS_PREFIX.length; + resultPlaceHolderStyleArray.concat(PLS_PREFIX); + + if ((npos = currentPLaceHolderStyleArray.indexOf(PLS_SUFFIX, cpos)) != -1) { + if (npos > cpos && npos - cpos <= PARTNO_MAXLEN) { + byte[] partnobytes = currentPLaceHolderStyleArray.subBytes(cpos, npos); + String partnostr = new String(partnobytes, charset); + if (partnostr.matches("[0-9]+")) { + int partno = Integer.parseInt(partnostr); + Optional ochunk = + requestChunks.stream() + .filter( + c -> + (c.getChunkType() + == RequestChunk + .CHUNKTYPE + .CONTENTS + || c.getChunkType() + == RequestChunk + .CHUNKTYPE + .CONTENTSIMG) + && c.getPartNo() == partno) + .findFirst(); + RequestChunk resultchunk = ochunk.orElse(null); + if (resultchunk != null) { + siz = resultchunk.getBytes().length; + if (siz > 0) { + // update resultChunk.data with hexdata. + resultchunk.setByte(hexArray.subBytes(hpos, hpos + siz)); + LOGGER4J.debug( + "update chunk from hexdata partno:" + + partno + + " siz=" + + siz); + hpos += siz; + } } } } + npos += PLS_SUFFIX.length; + resultPlaceHolderStyleArray.concat(currentPLaceHolderStyleArray.subBytes(cpos, npos)); + cpos = npos; } - npos += PLS_SUFFIX.length; - resultPlaceHolderStyleArray.concat(currentPLaceHolderStyleArray.subBytes(cpos, npos)); - cpos = npos; } + if (hpos < hexBytes.length) { + resultPlaceHolderStyleArray.concat(hexArray.subBytes(hpos, hexBytes.length)); + } + reCreateStyledDocFromRequestTextAndChunks(new String(resultPlaceHolderStyleArray.getBytes(), charset), null); + } finally { + this.documentFilterMasked = false; } - if (hpos < hexBytes.length) { - resultPlaceHolderStyleArray.concat(hexArray.subBytes(hpos, hexBytes.length)); - } - reCreateStyledDocFromRequestTextAndChunks(new String(resultPlaceHolderStyleArray.getBytes(), charset), null); } /** @@ -348,7 +429,7 @@ public void updateStyleDocAndChunkFromHex(byte[] hexBytes) { */ public byte[] getBytes() { if (requestChunks != null) { - byte[] reqbin = reBuildPRequestFromDocTextAndChunks(null); + byte[] reqbin = reBuildPRequestFromDocTextAndChunks(null, false); if (reqbin != null) { return reqbin; } @@ -612,13 +693,6 @@ public void updateResponse(PResponse presponse) { } } - /** - * - * - * @param icon - * @param actioncommand - * @return - */ /** * create ChunkJButton for ImageIcon and add eventhandler. * @@ -632,7 +706,7 @@ public Style makeStyleImageButton(ImageIcon icon, String toolTip, int partno, by String styleName = "ChunkImage" + partno; Style imageStyle = addOrGetStyle(styleName); StyleConstants.setAlignment(imageStyle, StyleConstants.ALIGN_CENTER); - ChunkJbutton button = new ChunkJbutton(partno, chunk); + ChunkJbutton button = new ChunkJbutton(styleName, partno, chunk); button.setIcon(icon); button.setToolTipText(toolTip); button.setMargin(new Insets(0, 0, 0, 0)); @@ -646,9 +720,10 @@ public Style makeStyleImageButton(ImageIcon icon, String toolTip, int partno, by } public Style getCRstyle() { - Style CRstyle = this.getStyle(CRIMAGE_STYLENAME); + Style CRstyle = this.addOrGetStyle(CRIMAGE_STYLENAME_PREFIX + counterCaridgeReturn++); + //Style CRstyle = this.addOrGetStyle(CRIMAGE_STYLENAME_PREFIX); // component must always create per call setComponent. - JLabel crlabel = new JLabel("CR"); + CaridgeReturnLabel crlabel = new CaridgeReturnLabel(CRstyle.getName(), "CR"); crlabel.setOpaque(true); LineBorder border = new LineBorder(Color.GREEN, 1, true); Font labelFont = crlabel.getFont(); @@ -709,97 +784,95 @@ private void reCreateStyledDocFromRequestTextAndChunks(String placeHolderStyleTe if (placeHolderStyleText == null || placeHolderStyleText.isEmpty() || this.requestChunks == null) return; - destroyDocumentAndRecreateStyles(); + destroyDocumentAndRecreateStyles(); - int npos = -1; - int cpos = 0; - while ((npos = placeHolderStyleText.indexOf(CONTENTS_PLACEHOLDER_PREFIX, cpos)) != -1) { - LOGGER4J.debug("CONTENTS_PLACEHOLDER_PREFIX found"); - if (npos > cpos) { - insertStringCR(this.getLength(), placeHolderStyleText.substring(cpos, npos)); - } - cpos = npos; - String element = CONTENTS_PLACEHOLDER_PREFIX; - Style s = null; - int pnopos = cpos + CONTENTS_PLACEHOLDER_PREFIX.length(); // partno start position - if ((npos = placeHolderStyleText.indexOf(CONTENTS_PLACEHOLDER_SUFFIX, pnopos)) != -1) { - LOGGER4J.debug( - "CONTENTS_PLACEHOLDER_SUFFIX found npos,cpos=" - + npos - + "," - + pnopos - + " [" - + placeHolderStyleText.substring(pnopos, npos) - + "]"); - if (npos > pnopos && npos - pnopos <= PARTNO_MAXLEN) { - element = - CONTENTS_PLACEHOLDER_PREFIX + int npos = -1; + int cpos = 0; + while ((npos = placeHolderStyleText.indexOf(CONTENTS_PLACEHOLDER_PREFIX, cpos)) != -1) { + LOGGER4J.debug("CONTENTS_PLACEHOLDER_PREFIX found"); + if (npos > cpos) { + insertStringCR(this.getLength(), placeHolderStyleText.substring(cpos, npos)); + } + cpos = npos; + String element = CONTENTS_PLACEHOLDER_PREFIX; + Style s = null; + int pnopos = cpos + CONTENTS_PLACEHOLDER_PREFIX.length(); // partno start position + if ((npos = placeHolderStyleText.indexOf(CONTENTS_PLACEHOLDER_SUFFIX, pnopos)) != -1) { + LOGGER4J.debug( + "CONTENTS_PLACEHOLDER_SUFFIX found npos,cpos=" + + npos + + "," + + pnopos + + " [" + placeHolderStyleText.substring(pnopos, npos) - + CONTENTS_PLACEHOLDER_SUFFIX; - LOGGER4J.debug("element[" + element + "]"); - String nstr = placeHolderStyleText.substring(pnopos, npos).trim(); - if (nstr.matches("[0-9]+")) { - int partno = Integer.parseInt(nstr); - String partnostr = Integer.toString(partno); - Optional ochunks = - this.requestChunks.stream() - .filter( - c -> - (c.getChunkType() - == RequestChunk - .CHUNKTYPE - .CONTENTS - || c.getChunkType() - == RequestChunk - .CHUNKTYPE - .CONTENTSIMG) - && c.getPartNo() == partno) - .findFirst(); - RequestChunk content_chunk = ochunks.orElse(null); - if (content_chunk != null && content_chunk.getBytes().length > 0) { - ImageIcon icon = null; - String toolTip = "Broken Data"; - if (content_chunk.getChunkType() == RequestChunk.CHUNKTYPE.CONTENTS) { - icon = new ImageIcon(BINICONURL, partnostr); - toolTip = bundle.getString("ParmGenRegex.BinaryData.text"); - } else { // diplayable image - try { - icon = new ImageIcon(content_chunk.getBytes(), partnostr); - toolTip = "Image"; - LOGGER4J.debug("icon status:" + ImageIconLoadStatus(icon)); - } catch (Exception ex) { - LOGGER4J.error(ex.getMessage(), ex); - } - if (icon.getImageLoadStatus() != MediaTracker.COMPLETE) { - toolTip = bundle.getString("ParmGenRegex.BrokenData.text"); - icon = new ImageIcon(BRKICONURL, partnostr); + + "]"); + if (npos > pnopos && npos - pnopos <= PARTNO_MAXLEN) { + element = + CONTENTS_PLACEHOLDER_PREFIX + + placeHolderStyleText.substring(pnopos, npos) + + CONTENTS_PLACEHOLDER_SUFFIX; + LOGGER4J.debug("element[" + element + "]"); + String nstr = placeHolderStyleText.substring(pnopos, npos).trim(); + if (nstr.matches("[0-9]+")) { + int partno = Integer.parseInt(nstr); + String partnostr = Integer.toString(partno); + Optional ochunks = + this.requestChunks.stream() + .filter( + c -> + (c.getChunkType() + == RequestChunk + .CHUNKTYPE + .CONTENTS + || c.getChunkType() + == RequestChunk + .CHUNKTYPE + .CONTENTSIMG) + && c.getPartNo() == partno) + .findFirst(); + RequestChunk content_chunk = ochunks.orElse(null); + if (content_chunk != null && content_chunk.getBytes().length > 0) { + ImageIcon icon = null; + String toolTip = "Broken Data"; + if (content_chunk.getChunkType() == RequestChunk.CHUNKTYPE.CONTENTS) { + icon = new ImageIcon(BINICONURL, partnostr); + toolTip = bundle.getString("ParmGenRegex.BinaryData.text"); + } else { // diplayable image + try { + icon = new ImageIcon(content_chunk.getBytes(), partnostr); + toolTip = "Image"; + LOGGER4J.debug("icon status:" + ImageIconLoadStatus(icon)); + } catch (Exception ex) { + LOGGER4J.error(ex.getMessage(), ex); + } + if (icon.getImageLoadStatus() != MediaTracker.COMPLETE) { + toolTip = bundle.getString("ParmGenRegex.BrokenData.text"); + icon = new ImageIcon(BRKICONURL, partnostr); + } } + s = makeStyleImageButton(icon, toolTip, partno, content_chunk.getBytes()); } - s = makeStyleImageButton(icon, toolTip,partno, content_chunk.getBytes()); } } } - } - if (s != null) { - try { - LOGGER4J.debug("insert placeHolderSign s=" + (s==null?"NULL" : "not null")); - this.insertString(this.getLength(), PLACE_HOLDER_SIGN, s); - } catch (BadLocationException ex) { - LOGGER4J.error(ex.getMessage(), ex); - element = ""; + if (s != null) { + try { + LOGGER4J.debug("insert placeHolderSign s=" + (s == null ? "NULL" : "not null")); + this.insertString(this.getLength(), PLACE_HOLDER_SIGN, s); + } catch (BadLocationException ex) { + LOGGER4J.error(ex.getMessage(), ex); + element = ""; + } + } else { + insertStringCR(this.getLength(), element); } - } else { - insertStringCR(this.getLength(), element); + cpos += element.length(); + } + if (cpos < placeHolderStyleText.length()) { + insertStringCR(this.getLength(), placeHolderStyleText.substring(cpos, placeHolderStyleText.length())); } - cpos += element.length(); - } - if (cpos < placeHolderStyleText.length()) { - insertStringCR(this.getLength(), placeHolderStyleText.substring(cpos, placeHolderStyleText.length())); - } } - - public void printComponentsInThisDoc() { int pos = 0; int endPos = this.getLength(); @@ -841,20 +914,25 @@ public List getListOfPlaceHolderStyle() { AttributeSet attrSet = elm.getAttributes(); if (attrSet != null) { String styleName = ""; + // I can get StyleName and Component from the AttributeSet at last! Object name = attrSet.getAttribute(AttributeSet.NameAttribute); if (name != null) { + // character's styleName is overwrited each calling setCharacterAttributes. + // so below styleName is changed from original. styleName = CastUtils.castToType(name); } Component compo = StyleConstants.getComponent(attrSet); if (compo != null) { if (compo instanceof ChunkJbutton) { ChunkJbutton button = CastUtils.castToType(compo); + styleName = button.getStyleName();// must get original styleName LOGGER4J.debug("pos:" + pos +" style:[" + styleName + "] chunk partno:" + button.getPartNo() + " chunksize=" + button.getChunk().length); PlaceHolderStyleChunk placeHolderStyleChunk = new PlaceHolderStyleChunk(pos, styleName, button.getPartNo(), button.getChunk()); listOfPlaceHolderStyleChunk.add(placeHolderStyleChunk); - } else if (compo instanceof JLabel) { - JLabel jLabel = CastUtils.castToType(compo); + } else if (compo instanceof InterfaceCompoStyleName) { + InterfaceCompoStyleName compoStyle = (InterfaceCompoStyleName) compo; + styleName = compoStyle.getStyleName(); LOGGER4J.debug("pos:" + pos + " style:[" + styleName + "]"); PlaceHolderStyle placeHolderStyle = new PlaceHolderStyle(pos, styleName); listOfPlaceHolderStyleChunk.add(placeHolderStyle); @@ -866,12 +944,30 @@ public List getListOfPlaceHolderStyle() { return listOfPlaceHolderStyleChunk; } + /** + * is PlaceHolderComponet exist between startPos and endPos. + * + * @param startPos + * @param endPos + * @return + */ + public boolean isExistPlaceHolderBetweenStartEndPos(int startPos, int endPos) { + List placeHolderStyles = getListOfPlaceHolderStyle(); + for(InterfacePlaceHolderStyle placeHolderStyle: placeHolderStyles) { + int placeHolderPos = placeHolderStyle.getPos(); + if (startPos <= placeHolderPos && placeHolderPos < endPos) { + return true; + } + } + return false; + } + /** * get PlaceHolderStyleText from this content. * * @return PLaceHolderStyleText */ - public String getPlaceHolderStyleText() { + public String getPlaceHolderStyledText() { try { StringBuffer resultBuffer = new StringBuffer(); String originalText = this.getText(0, getLength()); @@ -902,24 +998,81 @@ public String getPlaceHolderStyleText() { return null; } + + private String applyCustomConverter(boolean encode) { + // convert decoded area to CustomEncode data + String placeHolderStyleText = ZapUtil.urlDecodePartOfCustomEncodedText(this.getPlaceHolderStyledText()); + List decodedAreaList = DecoderTag.getDecodedStringList(placeHolderStyleText); + StringBuffer encodedRequestText = new StringBuffer(); + int outRangeStart = 0; + for(StartEndPosition decodedArea: decodedAreaList) { + if (outRangeStart < decodedArea.start) { + encodedRequestText.append(placeHolderStyleText.substring(outRangeStart, decodedArea.start)); + } + String decodedString = placeHolderStyleText.substring(decodedArea.start, decodedArea.end); + String encodedString = decodedString; + if (encode) { + encodedString = CustomTagConverter.customEncode(decodedString); + } else { + encodedString = CustomTagConverter.customDecode(decodedString); + } + LOGGER4J.debug("original[" + decodedString + "] " + (encode?"encoded":"decoded") + "[" + encodedString + "]"); + encodedRequestText.append(encodedString); + outRangeStart = decodedArea.end; + } + if (outRangeStart < placeHolderStyleText.length()) { + encodedRequestText.append(placeHolderStyleText.substring(outRangeStart, placeHolderStyleText.length())); + } + return encodedRequestText.toString(); + } + + + /** + * get CustomDeocded PlaceHolderStyledText + * @return custom decoded PLaceHolderStyledText + */ + public String getDecodedPlaceHolderStyledText() { + return applyCustomConverter(false); + } + + /** + * get CustomEncoded PLaceHolderStyledText + * @return custom encoded PlaceHolderStyledText + */ + public String getEncodedPlaceHolderStyledText() { + return applyCustomConverter(true); + } + /** - * apply PLaceHolderStyle to this StyleDocument. - * usecase is to restore the PlaceHolder CharacterAttributes after clearing CharacterAttributes + * get Original Encoded PRequest * - * @param listOfPlaceHolderStyle + * @param pRequest + * @return */ - public void applyPlaceHolderStyle(List listOfPlaceHolderStyle) { - for(InterfacePlaceHolderStyle placeHolderStyle: listOfPlaceHolderStyle) { - String styleName = placeHolderStyle.getStyleName(); - int pos = placeHolderStyle.getPos(); - if (styleName != null) { - Style innerStyle = this.getStyle(styleName); - LOGGER4J.debug("apply placeHolderstyle pos:" + pos); - this.setCharacterAttributes(pos, 1, innerStyle, false); - } - } + public PRequest getOriginalEncodedPRequest(PRequest pRequest) { + + enc = pRequest.getPageEnc(); + host = pRequest.getHost(); + port = pRequest.getPort(); + isSSL = pRequest.isSSL(); + updateRequest(pRequest); + + Encode enc = pRequest.getPageEnc(); + + String placeHolderStyledText = getDecodedPlaceHolderStyledText(); + String originalEncodedPlaceHolderStyledText = DecoderTag.getOriginalEncodedString(placeHolderStyledText, enc); + + + return reBuildPRequestFromDocTextAndChunks(originalEncodedPlaceHolderStyledText); + } + + public Encode getEnc() { + return this.enc; } + public boolean getDocumentFilterMasked() { + return this.documentFilterMasked; + } } diff --git a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/view/SwingStyle.java b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/view/SwingStyle.java index 8ab3576..d397188 100644 --- a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/view/SwingStyle.java +++ b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/view/SwingStyle.java @@ -1,13 +1,16 @@ package org.zaproxy.zap.extension.automacrobuilder.view; -import javax.swing.text.DefaultStyledDocument; -import javax.swing.text.Style; -import javax.swing.text.StyleContext; -import javax.swing.text.StyledDocument; +import org.zaproxy.zap.extension.automacrobuilder.CastUtils; + +import javax.swing.*; +import javax.swing.text.*; +import java.awt.*; import java.util.Enumeration; public class SwingStyle { + private static final org.apache.logging.log4j.Logger LOGGER4J = + org.apache.logging.log4j.LogManager.getLogger(); public static String STYLE_NAME = "###UNIQUE_SWING_STYLE###"; private StyleContext styleContext = null; @@ -15,14 +18,20 @@ public class SwingStyle { SwingStyle() { styleContext = new StyleContext(); styleContext.addStyle(STYLE_NAME, styleContext.getStyle((StyleContext.DEFAULT_STYLE))); + if (LOGGER4J.isDebugEnabled()) { + for (Enumeration names = styleContext.getStyleNames(); names.hasMoreElements(); ) { + String name = (String) names.nextElement(); + LOGGER4J.debug("[" + name + "]"); + } + } } public StyleContext getStyleContext() { return styleContext; } - public StyledDocument createStyledDocument() { - return new DefaultStyledDocument(styleContext); + public DefaultStyledDocument createStyledDocument() { + return new ManagedStyledDocument(styleContext); } public static Style getDefaultStyle(StyledDocument doc) { @@ -33,17 +42,28 @@ public static Style getDefaultStyle(StyledDocument doc) { return style; } + public static String getDefaultStyleName(StyledDocument doc){ + Style style = doc.getStyle(STYLE_NAME); + if (style == null) { + return StyleContext.DEFAULT_STYLE; + } + return STYLE_NAME; + } + /** * clear All [character] attributes and set attributes as default. * existing [character] attributes is removed. * but remain other component attributes such as image component. * @param doc StyledDocument */ - public static void clearAllCharacterAttributes(StyledDocument doc) { + public static void clearAllCharacterAttributes(ManagedStyledDocument doc, JTextPane pane) { Style defaultStyle = getDefaultStyle(doc); // replace "true" means overwrite char attributes with defaultStyle. existing character attributes is deleted. - // but remain other component attributes such as image component. - doc.setCharacterAttributes(0, doc.getLength(), defaultStyle, true); + // but we must remain other component attributes such as image component. + doc.setCharacterAttributeExceptComponents(0, doc.getLength(), defaultStyle, true); + if (pane != null) { + // reset character input attribute. + pane.setCharacterAttributes(defaultStyle, true); + } } - } diff --git a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/BaseStringCollector.java b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/BaseStringCollector.java new file mode 100644 index 0000000..fbcddf9 --- /dev/null +++ b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/BaseStringCollector.java @@ -0,0 +1,70 @@ +package org.zaproxy.zap.extension.automacrobuilder.zap; + +import java.util.Set; +import java.util.function.BiConsumer; +import java.util.function.BinaryOperator; +import java.util.function.Function; +import java.util.function.Supplier; +import java.util.stream.Collector; + +/** + * Collector<T:the type of input, A:the Class of Accumrator, R: the type of Result> + * tips: lambda is functional interface's instance object. only one method can provides in interface. + * + */ +public class BaseStringCollector implements Collector { + + /** + * supplier : provides accumlator class instance for collecting inputs. + * @return labmda function + */ + @Override + public Supplier supplier() { + + // below code return lambda function with no arguments. + // this is the same as : return () -> {return new StringBuilder();}; + // StringBuilder::new is method reference. + // from Java 8, this syntax automatically convert lambda with returning specified method reference. + return StringBuilder::new; + + } + + /** + * accumlator: collect input data and store it into accumlator + * this lambda function has two arguments and has no return value. + * @return labmda function + */ + @Override + public BiConsumer accumulator() { + return (builder, string) -> { + builder.append(string); + }; + } + + /** + * combiner: In parallel stream, this combines two accumlator objects into one object. + * if you do not use parallel stream, this function is no effect. + * @return lambda function + */ + @Override + public BinaryOperator combiner() { + return (builderA, builderB) -> { + builderA.append(builderB); + return builderA; + }; + } + + /** + * finisher: returns String as result of all combined accumulator objects. + * @return lambda function + */ + @Override + public Function finisher() { + return builder -> builder.toString(); + } + + @Override + public Set characteristics() { + return Set.of(); + } +} diff --git a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/CounterMapCharWithCustomTagFunction.java b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/CounterMapCharWithCustomTagFunction.java new file mode 100644 index 0000000..0cd837f --- /dev/null +++ b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/CounterMapCharWithCustomTagFunction.java @@ -0,0 +1,44 @@ +package org.zaproxy.zap.extension.automacrobuilder.zap; + +import java.util.HashMap; +import java.util.Map; + +public class CounterMapCharWithCustomTagFunction extends DefaultMapCharWithCustomTagFunction { + private Map counterMap; + private int originalCounter = 0; + private int encodedCounter = 0; + + + public CounterMapCharWithCustomTagFunction(Map counterMap, int originalOffset, int encodedOffset) { + init(counterMap, originalOffset, encodedOffset); + } + + private void init(Map encodeMap, int originalOffset, int encodedOffset) { + this.counterMap = encodeMap; + + if (this.counterMap == null) { + this.counterMap = new HashMap<>(); + } + this.originalCounter = originalOffset; + this.encodedCounter = originalOffset + encodedOffset; + if (this.counterMap.get(this.originalCounter) != null) { + this.counterMap.put(this.originalCounter, this.encodedCounter); + } + } + + @Override + public String apply(int i) { + char c = (char)i; + String value = String.valueOf(c); + String encoded = getConverter().get(c); + originalCounter++; + if (encoded != null) { + value = encoded; + } + encodedCounter += value.length(); + if (this.counterMap.get(originalCounter) != null) { + this.counterMap.put(originalCounter, encodedCounter); + } + return value; + } +} diff --git a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/CustomScanDialogForMacroBuilder.java b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/CustomScanDialogForMacroBuilder.java index fc095af..15ce0e3 100644 --- a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/CustomScanDialogForMacroBuilder.java +++ b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/CustomScanDialogForMacroBuilder.java @@ -18,8 +18,13 @@ import java.awt.Dimension; import java.awt.Frame; import java.util.List; + +import org.parosproxy.paros.model.SiteNode; import org.zaproxy.zap.extension.ascan.CustomScanDialog; import org.zaproxy.zap.extension.ascan.CustomScanPanel; +import org.zaproxy.zap.extension.automacrobuilder.CastUtils; +import org.zaproxy.zap.extension.automacrobuilder.zap.view.CustomVectorInserter; +import org.zaproxy.zap.model.Target; /** @author gdgd009xcd */ @SuppressWarnings("serial") @@ -28,6 +33,8 @@ public class CustomScanDialogForMacroBuilder private ExtensionActiveScanWrapper extensionwrapper = null; + private List customPanels = null; + public static final String[] STD_TAB_LABELS_REF = CustomScanDialog.STD_TAB_LABELS; public CustomScanDialogForMacroBuilder( @@ -37,7 +44,10 @@ public CustomScanDialogForMacroBuilder( Frame owner, Dimension dim) { super(ext, tabLabels, customPanels, owner, dim); + // disable default CustomVector Tab. + //this.setTabsVisible(new String[] {"ascan.custom.tab.custom"}, false); this.extensionwrapper = ext; + this.customPanels = customPanels; } /** @@ -58,4 +68,16 @@ public void setComboFields(String fieldLabel, List choices, String value super.setComboFields(fieldLabel, choices, value); } } + + @Override + public void init(Target target) { + super.init(target); + for(CustomScanPanel customScanPanel: this.customPanels) { + if (customScanPanel instanceof CustomVectorInserter) { + CustomVectorInserter customVectorInserter = CastUtils.castToType(customScanPanel); + customVectorInserter.updateInit(target); + } + } + + } } diff --git a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/CustomTagConverter.java b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/CustomTagConverter.java new file mode 100644 index 0000000..0e47847 --- /dev/null +++ b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/CustomTagConverter.java @@ -0,0 +1,76 @@ +package org.zaproxy.zap.extension.automacrobuilder.zap; + +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Collectors; + +public class CustomTagConverter { + public static class ConvertMap { + char original; + String encoded; + ConvertMap(char original, String encoded) { + this.original = original; + this.encoded = encoded; + } + } + + private final ConvertMap[] convertMaps = { + new ConvertMap('\n', "<%LF>"), + new ConvertMap('\r', "<%CR>"), + new ConvertMap('\t', "<%TAB>"), + new ConvertMap(' ', "<%SP>"), + new ConvertMap('/', "<%SL>"), + new ConvertMap('\\', "<%BKSL>") + }; + + public int maxEncodedLength = 5;// String length of ConverMap.encoded + public Map convOriginal2Encoded; + public Map convEncoded2Original; + + public CustomTagConverter() { + convOriginal2Encoded = new HashMap<>(); + convEncoded2Original = new HashMap<>(); + for(ConvertMap convertMap: convertMaps) { + convOriginal2Encoded.put(convertMap.original, convertMap.encoded); + convEncoded2Original.put(convertMap.encoded, convertMap.original); + } + } + + private static CustomTagConverter customStringConverterInstance = null; + public static CustomTagConverter getCustomStringConverter() { + if (customStringConverterInstance == null) { + customStringConverterInstance = new CustomTagConverter(); + } + return customStringConverterInstance; + } + + + + public static String customEncode(String original) { + if (original==null) { + original = ""; + } + return original.chars() + .mapToObj(new DefaultMapCharWithCustomTagFunction()) + .collect(Collectors.joining()); + } + + public static String customEncode(String original, Map counterMap, int originalOffset, int encodedOffset) { + if (original==null) { + original = ""; + } + return original.chars() + .mapToObj(new CounterMapCharWithCustomTagFunction(counterMap, originalOffset, encodedOffset)) + .collect(Collectors.joining()); + } + + public static String customDecode(String customEncoded) { + if (customEncoded==null) { + customEncoded = ""; + } + return customEncoded.chars() + .mapToObj(i -> String.valueOf((char)i)) + .collect(new DefaultDecodeCustomTagStringCollector()); + } + +} diff --git a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/DecoderTag.java b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/DecoderTag.java new file mode 100644 index 0000000..f0fbfe6 --- /dev/null +++ b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/DecoderTag.java @@ -0,0 +1,216 @@ +package org.zaproxy.zap.extension.automacrobuilder.zap; + +import org.zaproxy.zap.extension.automacrobuilder.Encode; +import org.zaproxy.zap.extension.automacrobuilder.StartEndPosition; + +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class DecoderTag { + private static final String SECTION_SIGN = "§"; + private static final String PILCROW_MARK = "¶"; + + public static final String DECODE_PREFIX_URL_STRING = SECTION_SIGN + "U" + PILCROW_MARK; + public static final String DECODE_SUFFIX_URL_STRING = PILCROW_MARK + "U" + SECTION_SIGN; + public static final String DECODE_PREFIX_BASE64_STRING = SECTION_SIGN + "B" + PILCROW_MARK; + public static final String DECODE_SUFFIX_BASE64_STRING = PILCROW_MARK + "B" + SECTION_SIGN; + private static final String DECODEREGEX = "((?:§[BU]¶)+)((?:.|[\\r\\n\\t ])*?)(? getDecodeTagList(String value) { + Matcher m = pattern.matcher(value); + List results = new ArrayList<>();; + while (m.find()) { + int gcount = m.groupCount(); + if (gcount == 3) { + results.add(getStartEndPositionFromMatcherGroup(m, 1)); + results.add(getStartEndPositionFromMatcherGroup(m, 3)); + } + } + return results; + } + + public static List getDecodedStringList(String value) { + Matcher m = pattern.matcher(value); + List results = new ArrayList<>();; + while (m.find()) { + int gcount = m.groupCount(); + if (gcount == 3) { + results.add(getStartEndPositionFromMatcherGroup(m, 2)); + } + } + return results; + } + + public static List getUrledDecodedStringList(String value) { + Matcher m = UrlPattern.matcher(value); + List results = new ArrayList<>(); + while(m.find()) { + int gcount = m.groupCount(); + if (gcount == 3) { + results.add(getStartEndPositionFromMatcherGroup(m, 0)); + } + } + return results; + } + + /** + * whether is value consist of valid CustomEncoded value + * @param value + * @return true - value is valid CustomEncoded value | false - not valid value + */ + public static boolean isDecodedTaggedString(String value) { + Matcher m = pattern.matcher(value); + boolean totalResult = false; + while (m.find()) { + int gcount = m.groupCount(); + if (gcount != 3) { + return false; + } else { + String prefixTag = m.group(1); + String content = m.group(2); + String suffixTag = m.group(3); + if (prefixTag.length() != suffixTag.length()) { + return false; + } else if (prefixTag.length() % 3 != 0) { + return false; + } else { + int maxTagLabelIndex = prefixTag.length() - 2; + for (int i = 1, j = maxTagLabelIndex; i <= maxTagLabelIndex; i += 3, j -= 3) { + if (!prefixTag.substring(i, i + 1).equals(suffixTag.substring(j, j + 1))) { + return false; + } + } + totalResult = true; + } + } + } + return totalResult; + } + + public static String getOriginalEncodedString(String value, Encode enc) { + Matcher m = pattern.matcher(value); + StringBuffer resultEncodedString = new StringBuffer(); + int start = 0; + Deque stacker = new ArrayDeque<>(); + while (m.find()) { + int gcount = m.groupCount(); + boolean failed = false; + String content = ""; + stacker.clear(); + if (gcount == 3) { + String prefixTag = m.group(1); + content = m.group(2); + String suffixTag = m.group(3); + if (prefixTag.length() != suffixTag.length()) { + failed = true; + } else if (prefixTag.length() % 3 != 0) { + failed = true; + } else { + + int maxTagLabelIndex = prefixTag.length() - 2; + + for (int i = 1, j = maxTagLabelIndex; i <= maxTagLabelIndex; i += 3, j -= 3) { + if (!prefixTag.substring(i, i + 1).equals(suffixTag.substring(j, j + 1))) { + failed = true; + break; + } else { + stacker.push(prefixTag.substring(i, i + 1)); + } + } + } + } else { + failed = true; + } + if (failed) { + resultEncodedString.append(value.substring(start, m.end())); + } else { + resultEncodedString.append(value.substring(start, m.start())); + String encodeCommand; + while((encodeCommand = stacker.pollFirst())!= null) { + switch(encodeCommand) { + case "U": + content = ZapUtil.encodeURL(content, enc); + break; + case "B": + content = ZapUtil.encodeBase64(content, enc); + break; + } + } + resultEncodedString.append(content); + } + start = m.end(); + } + if (start < value.length()) { + resultEncodedString.append(value.substring(start, value.length())); + } + return resultEncodedString.toString(); + } + + public static StartEndPosition getStartEndPositionFromMatcherGroup(Matcher m, int i) { + int gStart = m.start(i); + int gEnd = m.end(i); + String groupString = m.group(i); + return new StartEndPosition(gStart, gEnd, groupString); + } + + public static String removeDecodeTag(String value) { + if (value != null) { + return value.replaceAll(DECODE_REMOVE_REGEX, ""); + } + return null; + } + + /** + * encode CustomTag in customDecodedString argument and calculate encodeMap + * @param customDecodedString + * @param encodeMap + * @return + */ + public static String encodeCustomTagWithEncodeMap(String customDecodedString, Map encodeMap) { + + List tagList = getDecodedStringList(customDecodedString); + int originalOffset = 0; + int encodedOffset = 0; + int lastEnd = 0; + int decodedLength = customDecodedString.length(); + StringBuffer encodedBuffer = new StringBuffer(); + for(StartEndPosition position: tagList) { + + originalOffset = position.start; + if (lastEnd < position.start) { + for(int pos = lastEnd; pos < position.start; pos++) { + if (encodeMap.get(pos) != null) { + encodeMap.put(pos, pos + encodedOffset); + } + } + encodedBuffer.append(customDecodedString.substring(lastEnd, position.start)); + } + String originalString = customDecodedString.substring(position.start, position.end); + + String encodedString = CustomTagConverter.customEncode(originalString, encodeMap, originalOffset, encodedOffset); + encodedOffset += encodedString.length() - originalString.length(); + encodedBuffer.append(encodedString); + lastEnd = position.end; + + } + + if (lastEnd < decodedLength) { + for(int pos = lastEnd; pos < decodedLength; pos++) { + if (encodeMap.get(pos) != null) { + encodeMap.put(pos, pos + encodedOffset); + } + } + encodedBuffer.append(customDecodedString.substring(lastEnd)); + } + + return encodedBuffer.toString(); + } +} diff --git a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/DefaultDecodeCustomTagStringCollector.java b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/DefaultDecodeCustomTagStringCollector.java new file mode 100644 index 0000000..4edfffb --- /dev/null +++ b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/DefaultDecodeCustomTagStringCollector.java @@ -0,0 +1,45 @@ +package org.zaproxy.zap.extension.automacrobuilder.zap; + +import java.util.function.BiConsumer; +import java.util.function.Function; + +public class DefaultDecodeCustomTagStringCollector extends BaseStringCollector { + + private final StringBuilder partBuilder = new StringBuilder(); + private static final CustomTagConverter converter = CustomTagConverter.getCustomStringConverter(); + + /** + * accumlator: collect input data and store it into accumlator + * this lambda function has two arguments and has no return value. + * @return labmda function + */ + @Override + public BiConsumer accumulator() { + + return (builder, string) -> { + partBuilder.append(string); + if (converter.maxEncodedLength == partBuilder.length()) { + Character c = converter.convEncoded2Original.get(partBuilder.toString()); + if (c != null) { + builder.append(c); + partBuilder.delete(0, partBuilder.length()); + } else { + builder.append(partBuilder.toString().substring(0, 1)); + partBuilder.delete(0, 1); + } + } + }; + } + + /** + * finisher: returns String as result of all combined accumulator objects. + * @return + */ + @Override + public Function finisher() { + return (builder) -> { + builder.append(partBuilder); + return builder.toString(); + }; + } +} diff --git a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/DefaultMapCharWithCustomTagFunction.java b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/DefaultMapCharWithCustomTagFunction.java new file mode 100644 index 0000000..5f5f29b --- /dev/null +++ b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/DefaultMapCharWithCustomTagFunction.java @@ -0,0 +1,22 @@ +package org.zaproxy.zap.extension.automacrobuilder.zap; + +import java.util.Map; +import java.util.function.IntFunction; + +public class DefaultMapCharWithCustomTagFunction implements IntFunction { + final Map converter = CustomTagConverter.getCustomStringConverter().convOriginal2Encoded; + @Override + public String apply(int i) { + char c = (char)i; + String value = String.valueOf(c); + String encoded = getConverter().get(c); + if (encoded != null) { + value = encoded; + } + return value; + } + + protected Map getConverter() { + return converter; + } +} diff --git a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/ExtensionActiveScanWrapper.java b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/ExtensionActiveScanWrapper.java index 1eecf93..a8f5639 100644 --- a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/ExtensionActiveScanWrapper.java +++ b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/ExtensionActiveScanWrapper.java @@ -20,15 +20,23 @@ import org.zaproxy.zap.extension.ascan.ActiveScan; import org.zaproxy.zap.extension.ascan.ExtensionActiveScan; import org.zaproxy.zap.extension.ascan.PolicyManager; +import org.zaproxy.zap.extension.automacrobuilder.CastUtils; import org.zaproxy.zap.extension.automacrobuilder.ParmGenMacroTraceParams; import org.zaproxy.zap.extension.automacrobuilder.ParmGenMacroTraceProvider; import org.zaproxy.zap.extension.automacrobuilder.generated.MacroBuilderUI; +import org.zaproxy.zap.extension.automacrobuilder.zap.view.CustomVectorInserter; import org.zaproxy.zap.model.Target; import org.zaproxy.zap.users.User; +import java.util.ArrayList; +import java.util.List; +import java.util.logging.Logger; + /** @author gdgd009xcd */ public class ExtensionActiveScanWrapper extends ExtensionActiveScan { + private static final org.apache.logging.log4j.Logger LOGGER4J = + org.apache.logging.log4j.LogManager.getLogger(); private ParmGenMacroTraceProvider pmtProvider = null; private ScannerParam scannerParam = new ScannerParam(); private ExtensionActiveScan extension = @@ -61,21 +69,50 @@ public PolicyManager getPolicyManager() { @Override public int startScan(Target target, User user, Object[] contextSpecificObjects) { + ScannerParam optionalScannerParam = null; + ScannerParam originalScannerParam = null; + List resultSpecificObjectList = new ArrayList<>(); for (Object o : contextSpecificObjects) { if (o instanceof ScannerParam) { - ((ScannerParam) o).setHandleAntiCSRFTokens(false); - break; + ScannerParam scannerParam = CastUtils.castToType(o); + if (originalScannerParam == null) { + originalScannerParam = scannerParam; + originalScannerParam.setHandleAntiCSRFTokens(false); + resultSpecificObjectList.add(o); + } else { + optionalScannerParam = scannerParam; + } + } else { + resultSpecificObjectList.add(o); } } + if (optionalScannerParam != null) { + if (optionalScannerParam.getTargetParamsInjectable() == 0) { + LOGGER4J.debug("disabled all input target except custom vectors"); + originalScannerParam.setTargetParamsInjectable(0); + originalScannerParam.setTargetParamsEnabledRPC(ScannerParam.RPC_USERDEF); + } else { + int enabledRpc = originalScannerParam.getTargetParamsEnabledRPC(); + enabledRpc |= ScannerParam.RPC_USERDEF; + originalScannerParam.setTargetParamsEnabledRPC(enabledRpc); + } + } + + final ParmGenMacroTraceParams tsno = this.targetStepNo; this.targetStepNo = null; + LOGGER4J.debug("Target URL[" + (target!=null?target + .getStartNode() + .getHistoryReference() + .getURI() + .toString():"") + "]"); // START scan. // below start method can multipre call per targetStepNo. return this.startedascan.startScan( () -> { - int id = this.extension.startScan(target, null, contextSpecificObjects); + int id = this.extension.startScan(target, null, resultSpecificObjectList.toArray()); return this.getScan(id); }, tsno); diff --git a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/MyFirstScannerHook.java b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/MyFirstScannerHook.java index d5d46dd..83eaab4 100644 --- a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/MyFirstScannerHook.java +++ b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/MyFirstScannerHook.java @@ -30,6 +30,7 @@ import org.zaproxy.zap.network.HttpRequestConfig; import org.zaproxy.zap.network.HttpRequestConfig.Builder; import org.zaproxy.zap.extension.automacrobuilder.ParmGenMacroTraceParams; +import org.zaproxy.zap.extension.automacrobuilder.generated.MacroBuilderUI; public class MyFirstScannerHook implements ScannerHook { @@ -109,6 +110,10 @@ public void scannerComplete() { if (!called) { this.startedcon.clearCustomActiveScanPmtParamsByScanner(); } + MacroBuilderUI mbui = this.startedcon.getMacroBuilderUI(); + if (mbui != null) { + mbui.setMessageRequestEditMode(false); + } } diff --git a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/MyFirstSenderListener.java b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/MyFirstSenderListener.java index 5685cca..76c6ec4 100644 --- a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/MyFirstSenderListener.java +++ b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/MyFirstSenderListener.java @@ -89,6 +89,7 @@ public void onHttpRequestSend(HttpMessage arg0, int arg1, HttpSender arg2) { ThreadManagerProvider.getThreadManager().beginProcess(beforemacroprovider); LOGGER4J.debug("beforemacro end threadid:" + Thread.currentThread().getId()); LOGGER4J.debug("Sender is originated from StartedActiveScan. senderid:" + arg2); + ZapUtil.updateOriginalEncodedHttpMessage(arg0); } else { LOGGER4J.debug("onHttpRequestSend: no action. sender is not created by ExtensionActiveScanWrapper"); } diff --git a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/PopUpItemActiveScan.java b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/PopUpItemActiveScan.java index 2a373f8..9d3eb88 100644 --- a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/PopUpItemActiveScan.java +++ b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/PopUpItemActiveScan.java @@ -16,6 +16,8 @@ package org.zaproxy.zap.extension.automacrobuilder.zap; import java.awt.Dimension; +import java.util.ArrayList; +import java.util.List; import javax.swing.JMenuItem; import org.parosproxy.paros.Constant; import org.parosproxy.paros.control.Control; @@ -25,13 +27,16 @@ import org.parosproxy.paros.model.SiteNode; import org.parosproxy.paros.network.HttpMessage; import org.parosproxy.paros.view.View; +import org.zaproxy.zap.extension.ascan.CustomScanDialog; import org.zaproxy.zap.extension.automacrobuilder.PRequest; import org.zaproxy.zap.extension.automacrobuilder.PRequestResponse; import org.zaproxy.zap.extension.automacrobuilder.ParmGenMacroTrace; import org.zaproxy.zap.extension.automacrobuilder.ParmGenMacroTraceParams; import org.zaproxy.zap.extension.automacrobuilder.generated.MacroBuilderUI; import org.zaproxy.zap.extension.automacrobuilder.mdepend.ClientDependMessageContainer; +import org.zaproxy.zap.extension.automacrobuilder.zap.view.CustomVectorInserter; import org.zaproxy.zap.extension.forceduser.ExtensionForcedUser; +import org.zaproxy.zap.extension.ascan.CustomScanPanel; import org.zaproxy.zap.model.Target; /** @author gdgd009xcd */ @@ -211,13 +216,28 @@ public void showCustomScanDialog(Target target) { // Work out the tabs String[] tabs = CustomScanDialogForMacroBuilder.STD_TAB_LABELS_REF; + List scanPanelList = new ArrayList<>(); + + CustomVectorInserter customVectorInserter = new CustomVectorInserter(target, extension); + scanPanelList.add(customVectorInserter); + + List tabList = new ArrayList<>(); + for (String str : tabs) { + tabList.add(str); + } + for (CustomScanPanel csp : scanPanelList) { + tabList.add(csp.getLabel()); + } + tabs = tabList.toArray(new String[tabList.size()]); + customScanDialog = new CustomScanDialogForMacroBuilder( extension, tabs, - null, + scanPanelList, View.getSingleton().getMainFrame(), new Dimension(700, 500)); + customVectorInserter.setCustomScanDialog(customScanDialog); } if (customScanDialog.isVisible()) { customScanDialog.requestFocus(); diff --git a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/PopUpItemSingleSend.java b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/PopUpItemSingleSend.java index 38c4b94..edb2721 100644 --- a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/PopUpItemSingleSend.java +++ b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/PopUpItemSingleSend.java @@ -76,7 +76,7 @@ private void singleSendSelectedRequest(MacroBuilderUI f_mbui, StartedActiveScanC int subSequenceScanLimit = f_mbui.getSubSequenceScanLimit(); int lastStepNo = pmt.getLastStepNo(currentSelectedPos, subSequenceScanLimit); - final HttpMessage htmess = ZapUtil.getHttpMessage(newrequest); + final HttpMessage htmess = ZapUtil.getHttpMessageFromPRequest(newrequest); final ParmGenMacroTraceParams pmtParams = new ParmGenMacroTraceParams( currentSelectedPos, lastStepNo, selectedTabIndex); @@ -91,7 +91,7 @@ public void run() { // but by result of sending messages, // it will modify request message so must be update also messageRequest contents. // so contents being edited in messageRequest may be discarded. - f_mbui.updateCurrentSelectedRequestListDisplayContents(); + f_mbui.updateCurrentSelectedRequestListDisplayContentsSpecific(true, false, false); f_mbui.showMessageViewOnWorkBench(1); } }); diff --git a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/StartedActiveScanContainer.java b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/StartedActiveScanContainer.java index 93fdfe1..38a46f7 100644 --- a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/StartedActiveScanContainer.java +++ b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/StartedActiveScanContainer.java @@ -332,4 +332,6 @@ public ParmGenMacroTraceProvider getPmtProvider() { return this.pmtProvider; } + public MacroBuilderUI getMacroBuilderUI() {return this.mbui;} + } diff --git a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/ZapUtil.java b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/ZapUtil.java index 19bc564..1a38525 100644 --- a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/ZapUtil.java +++ b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/ZapUtil.java @@ -1,7 +1,19 @@ package org.zaproxy.zap.extension.automacrobuilder.zap; + +import java.awt.Toolkit; +import java.awt.datatransfer.Clipboard; +import java.awt.datatransfer.DataFlavor; +import java.awt.datatransfer.Transferable; +import java.awt.datatransfer.UnsupportedFlavorException; +import java.io.IOException; import java.lang.reflect.Method; +import java.net.URLDecoder; +import java.net.URLEncoder; import java.nio.charset.Charset; +import java.util.Base64; +import java.util.List; +import java.util.regex.Pattern; import org.parosproxy.paros.control.Control; import org.parosproxy.paros.extension.Extension; @@ -53,43 +65,32 @@ public static HttpMessage getHttpMessage(PRequestResponse ppr) { return htmess; } - /** - * get PRequest from StyledDocumentWithChunk doc - * - * @param doc - * @return - */ - public static HttpMessage getHttpMessage(StyledDocumentWithChunk doc) { - PRequest preq = doc.reBuildPRequestFromDocTextAndChunks(); - if (preq != null) { - return getHttpMessage(preq); - } - return null; - } /** - * Get HttpMessage from PRequest + * Get HttpMessage from PRequest * - * @param preq + * @param pRequest * @return */ - public static HttpMessage getHttpMessage(PRequest preq) { + public static HttpMessage getHttpMessageFromPRequest(PRequest pRequest) { + HttpMessage htmess = null; - String reqhstr = preq.getHeaderOnly(); - byte[] reqBody = preq.getBodyBytes(); - boolean isSSL = preq.isSSL(); + + String reqhstr = pRequest.getHeaderOnly(); + byte[] reqBody = pRequest.getBodyBytes(); + boolean isSSL = pRequest.isSSL(); try { HttpRequestHeader httpReqHeader = new HttpRequestHeader(reqhstr, isSSL); HttpRequestBody mReqBody = new HttpRequestBody(); // set PRequest Encoding Charset to request Body Charset - mReqBody.setCharset(preq.getPageEnc().getIANACharsetName()); + mReqBody.setCharset(pRequest.getPageEnc().getIANACharsetName()); // setup Content-Encoding handlers(gzip,deflate). HttpMessage.setContentEncodings(httpReqHeader, mReqBody); htmess = new HttpMessage(httpReqHeader, mReqBody); // update request body and apply properly encodings(based on Content-Encoding) to it. - updateRequestContent(htmess, preq.getBodyBytes()); + updateRequestContent(htmess, pRequest.getBodyBytes()); } catch (HttpMalformedHeaderException e) { LOGGER4J.error("reqhstr:" + reqhstr, e); } @@ -97,12 +98,6 @@ public static HttpMessage getHttpMessage(PRequest preq) { return htmess; } - /** - * - * - * @param mbui - * @return null or PRequest - */ /** * Get PRequest from Contents of MacroRequest in mbui * @param mbui @@ -122,8 +117,9 @@ public static PRequest getPRequestFromMacroRequest(MacroBuilderUI mbui, boolean if (!isOriginalRequest) { StyledDocumentWithChunk doc = mbui.getStyledDocumentOfSelectedMessageRequest(); + if (doc != null) { - PRequest newrequest = doc.reBuildPRequestFromDocTextAndChunks(); + PRequest newrequest = doc.reBuildPRequestFromDocTextAndChunksWithEncodeCustomTag(); currentPRequestResponse.updateRequest(newrequest.clone()); return newrequest; } @@ -260,6 +256,13 @@ protected static Extension getExtensionAscanRules() { } return ZapUtil.extensionCustomActive; } + + public static Extension getExtensionByName(String extensionName) { + return Control.getSingleton() + .getExtensionLoader() + .getExtension(extensionName); + } + private static ClassLoader getClassLoaderCustomActiveScan() { Extension extension = getExtensionAscanRules(); if (ZapUtil.classLoaderCustomActive == null) { @@ -281,6 +284,20 @@ private static ClassLoader getClassLoaderCustomActiveScan() { return ZapUtil.classLoaderCustomActive; } + public static AddOn getAddOnWithinExtension(String extensionName) { + Extension extension = getExtensionByName(extensionName); + if (extension != null) { + Package extPackage = extension.getClass().getPackage(); + String extensionPackage = extPackage != null ? extPackage.getName() + "." : ""; + LOGGER4J.info("extensionPackage:" + extensionPackage); + AddOn addon = extension.getAddOn(); + return addon; + } else { + LOGGER4J.error("extension not found."); + } + return null; + } + public static boolean callCustomActiveScanMethod(Object object, String packageName, String methodName, Class[] clazzArray, Object[] objectArray) { String examplePackageName = "org.zaproxy.zap.extension.customactivescan.HttpMessageWithLCSResponse"; @@ -395,4 +412,94 @@ public static void updateRequestContent(HttpMessage message, byte[] bodyBytes) { } message.getRequestHeader().setContentLength(bodyLength); } + + private static final Pattern BASE64_PATTERN = Pattern.compile("^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)?$"); + public static boolean isBase64(String value) { + return (BASE64_PATTERN.matcher(value).matches() && ((value.length() % 4) == 0)); + } + + public static String decodeBase64(String value, Encode enc) { + return new String(Base64.getDecoder().decode(value), enc.getIANACharset()); + } + + public static String encodeBase64(String value, Encode enc) { + return new String(Base64.getEncoder().encode(value.getBytes(enc.getIANACharset()))); + } + + public static String decodeURL(String value, Encode enc) { + try { + String decoded = URLDecoder.decode(value, enc.getIANACharset()); + return decoded; + } catch (Exception ex) { + LOGGER4J.error(ex.getMessage(), ex); + } + return value; + } + + public static String encodeURL(String value, Encode enc) { + return URLEncoder.encode(value, enc.getIANACharset()); + } + + private static final Pattern URL_PATTERN = Pattern.compile("%[0-9a-fA-F][0-9a-fA-F]"); + public static boolean isURLencoded(String value) { + return URL_PATTERN.matcher(value).find(); + } + + public static String getSystemClipBoardString() { + Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); + Transferable object = clipboard.getContents(null); + String str = null; + try { + str = (String)object.getTransferData(DataFlavor.stringFlavor); + return str; + } catch(UnsupportedFlavorException e){ + LOGGER4J.error(e.getMessage(), e); + } catch (IOException e) { + LOGGER4J.error(e.getMessage(), e); + } + return null; + } + + public static boolean hasSystemClipBoardString() { + String clipString = getSystemClipBoardString(); + if (clipString != null && !clipString.isEmpty()) { + return true; + } + return false; + } + + public static void updateOriginalEncodedHttpMessage(HttpMessage decodedHttpMessage) { + HttpRequestBody requestBody = decodedHttpMessage.getRequestBody(); + String bodyCharsetString = requestBody.getCharset(); + Encode enc = Encode.getEnum(bodyCharsetString); + PRequest decodedPRequest = getPRequest(decodedHttpMessage, enc); + StyledDocumentWithChunk doc = new StyledDocumentWithChunk(); + PRequest originalEncodedPRequest = doc.getOriginalEncodedPRequest(decodedPRequest); + HttpMessage encodedHttpMessage = getHttpMessageFromPRequest(originalEncodedPRequest); + + decodedHttpMessage.setRequestHeader(encodedHttpMessage.getRequestHeader()); + updateRequestContent(decodedHttpMessage, encodedHttpMessage.getRequestBody().getBytes()); + } + + public static String urlDecodePartOfCustomEncodedText(String text) { + List positions = DecoderTag.getUrledDecodedStringList(text); + if (!positions.isEmpty()) { + int textLen = text != null ? text.length() : 0; + int lastEnd = 0; + StringBuffer decodedTextBuff = new StringBuffer(); + for (StartEndPosition position : positions) { + if (lastEnd < position.start) { + decodedTextBuff.append(text.substring(lastEnd, position.start)); + } + decodedTextBuff.append(ZapUtil.decodeURL(text.substring(position.start, position.end), Encode.UTF_8)); + lastEnd = position.end; + } + if (lastEnd < textLen) { + decodedTextBuff.append(text.substring(lastEnd)); + } + + return decodedTextBuff.toString(); + } + return text; + } } diff --git a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/view/BoxAndScrollerPanel.java b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/view/BoxAndScrollerPanel.java new file mode 100644 index 0000000..9402eeb --- /dev/null +++ b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/view/BoxAndScrollerPanel.java @@ -0,0 +1,64 @@ +package org.zaproxy.zap.extension.automacrobuilder.zap.view; + +import javax.swing.*; +import java.awt.*; + +@SuppressWarnings("serial") +public class BoxAndScrollerPanel extends JPanel { + // create borderlayout for adding option input components in the future + // |-------------border layout PAGE_START--------------------| + // | |---------Box layout BoxLayout.Y_AXIS-----------------| | + // | | checkBox1 ------------------| | | + // | | checkBox2 ------------------| | | + // | |-----------------------------------------------------| | + // |-------------border layout PAGE_CENTER-------------------| + // | |---------------- JScrollPane ------------------------| | + // | | | | + // | |-----------------------------------------------------| | + // |---------------------------------------------------------| + + private JPanel boxPanel; + private JScrollPane scroller; + + public BoxAndScrollerPanel() { + super(); + initialize(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); + } + + public BoxAndScrollerPanel(int horizontalPolicy, int verticalPolicy) { + super(); + initialize(horizontalPolicy, verticalPolicy); + } + + private void initialize(int horizontalPolicy, int verticalPolicy) { + // create borderlayout for total background + BorderLayout boxAndScrollerBorderLayout = new BorderLayout(); + boxAndScrollerBorderLayout.setVgap(10); + this.setLayout(boxAndScrollerBorderLayout); + + // create BoxLayout.Y=AXIS in PAGE_START + boxPanel = new JPanel(); + boxPanel.setLayout(new BoxLayout(boxPanel, BoxLayout.PAGE_AXIS)); + // add BoxLayout to PAGE_START of Borderlayout JPanel + this.add(boxPanel, BorderLayout.PAGE_START); + + // create JScrollPane in PAGE_CENTER + scroller = new JScrollPane(); + scroller.setHorizontalScrollBarPolicy(horizontalPolicy); + scroller.setVerticalScrollBarPolicy(verticalPolicy); + scroller.setPreferredSize(new Dimension(400,400)); + scroller.setAutoscrolls(true); + + + // add JScrolledPane to CENTER area of BorderLayout JPanel + this.add(scroller, BorderLayout.CENTER); + } + + public void addComponentToBoxPanelAtYaxis(Component compo) { + boxPanel.add(compo); + } + + public void setComponentToScroller(Component compo) { + scroller.setViewportView(compo); + } +} diff --git a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/view/CustomVectorInserter.java b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/view/CustomVectorInserter.java new file mode 100644 index 0000000..ed4c59e --- /dev/null +++ b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/view/CustomVectorInserter.java @@ -0,0 +1,409 @@ +package org.zaproxy.zap.extension.automacrobuilder.zap.view; + +import org.parosproxy.paros.core.scanner.ScannerParam; +import org.parosproxy.paros.core.scanner.VariantUserDefined; +import org.parosproxy.paros.db.DatabaseException; +import org.parosproxy.paros.model.SiteNode; +import org.parosproxy.paros.network.HttpMalformedHeaderException; +import org.parosproxy.paros.network.HttpMessage; +import org.parosproxy.paros.view.AbstractParamPanel; +import org.zaproxy.zap.extension.ascan.CustomScanDialog; +import org.zaproxy.zap.extension.ascan.CustomScanPanel; +import org.zaproxy.zap.extension.ascan.ExtensionActiveScan; +import org.zaproxy.zap.extension.automacrobuilder.EnvironmentVariables; +import org.zaproxy.zap.extension.automacrobuilder.zap.CustomTagConverter; +import org.zaproxy.zap.extension.automacrobuilder.zap.DecoderTag; +import org.zaproxy.zap.extension.automacrobuilder.zap.ExtensionActiveScanWrapper; +import org.zaproxy.zap.model.Target; + +import javax.swing.*; +import javax.swing.event.CaretEvent; +import javax.swing.event.CaretListener; +import javax.swing.text.BadLocationException; +import javax.swing.text.DefaultHighlighter; +import javax.swing.text.Highlighter; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@SuppressWarnings("serial") +public class CustomVectorInserter extends AbstractParamPanel implements CustomScanPanel { + private final static org.apache.logging.log4j.Logger LOGGER4J = + org.apache.logging.log4j.LogManager.getLogger(); + private GridBagLayout gridBagLayout; + private JTextArea requestPane; + private JCheckBox disableNonCustomVector; + private JButton addVectorButton; + private JButton delVectorButton; + private final DefaultListModel injectionPointModel = new DefaultListModel<>(); + private Target target = null; + private CustomScanDialog customScanDialog = null; + private ExtensionActiveScanWrapper extensionActiveScanWrapper = null; + private int headerLength = -1; + // The index of the start of the URL path e.g. after https://www.example.com:1234/ - no point + // attacking this + private int urlPathStart = -1; + public CustomVectorInserter(Target target, ExtensionActiveScanWrapper extension) { + super(); + gridBagLayout = new GridBagLayout(); + this.setLayout(gridBagLayout); + this.extensionActiveScanWrapper = extension; + this.target = target; + initialize(target); + } + + public void updateInit(Target target) { + this.headerLength = -1; + this.urlPathStart = -1; + injectionPointModel.clear(); + populateRequestField(target.getStartNode()); + } + + private void initialize(Target target) { + + this.headerLength = -1; + this.urlPathStart = -1; + // JTextArea's setText method use Document.insertString. + // so CRLF is inserted as is. + // if you use JTextPane, setText method use Editorkit. + // so CRLF is converted to LF + // so I decided to use JTextArea in here. + requestPane = new JTextArea(); + + requestPane.setEditable(true); + requestPane.setLineWrap(false); + populateRequestField(target.getStartNode()); + JList insertedVectorList = new JList<>(injectionPointModel); + insertedVectorList. + setCellRenderer( + new ListCellRenderer() { + @Override + public Component getListCellRendererComponent( + JList list, + Highlighter.Highlight hlt, + int index, + boolean isSelected, + boolean cellHasFocus) { + + String str = ""; + try { + str = + requestPane + .getText( + hlt.getStartOffset(), + hlt.getEndOffset() - hlt.getStartOffset()); + if (str.length() > 8) { + // just show first 8 chrs (arbitrary limit;) + str = str.substring(0, 8) + ".."; + } + } catch (BadLocationException e) { + // Ignore + } + + return new JLabel( + "[" + + hlt.getStartOffset() + + "," + + hlt.getEndOffset() + + "]: " + + str); + } + }); + JScrollPane requestScroller = new JScrollPane(); + requestScroller.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); + requestScroller.setViewportView(requestPane); + BoxAndScrollerPanel boxAndScrollerPanel = new BoxAndScrollerPanel( + JScrollPane.HORIZONTAL_SCROLLBAR_NEVER, + JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); + boxAndScrollerPanel.setComponentToScroller(insertedVectorList); + addVectorButton = new JButton("Add"); + addVectorButton.addActionListener( + new java.awt.event.ActionListener() { + @Override + public void actionPerformed(java.awt.event.ActionEvent e) { + // Add the selected injection point + int userDefStart = requestPane.getSelectionStart(); + if (userDefStart >= 0) { + int userDefEnd = requestPane.getSelectionEnd(); + Highlighter hl = requestPane.getHighlighter(); + Highlighter.HighlightPainter painter = + new DefaultHighlighter.DefaultHighlightPainter(Color.RED); + try { + Highlighter.Highlight hlt = + (Highlighter.Highlight) + hl.addHighlight( + userDefStart, userDefEnd, painter); + injectionPointModel.addElement(hlt); + // Unselect the text + requestPane.setSelectionStart(userDefEnd); + requestPane.setSelectionEnd(userDefEnd); + requestPane.getCaret().setVisible(true); + + } catch (BadLocationException e1) { + + } + } + } + }); + delVectorButton = new JButton("Del"); + delVectorButton.addActionListener( + new java.awt.event.ActionListener() { + @Override + public void actionPerformed(java.awt.event.ActionEvent e) { + // Remove any selected injection points + int userDefStart = requestPane.getSelectionStart(); + if (userDefStart >= 0) { + int userDefEnd = requestPane.getSelectionEnd(); + Highlighter hltr = requestPane.getHighlighter(); + Highlighter.Highlight[] hls = hltr.getHighlights(); + + if (hls != null && hls.length > 0) { + for (Highlighter.Highlight hl : hls) { + if (selectionIncludesHighlight( + userDefStart, userDefEnd, hl)) { + hltr.removeHighlight(hl); + injectionPointModel.removeElement(hl); + } + } + } + + // Unselect the text + requestPane.setSelectionStart(userDefEnd); + requestPane.setSelectionEnd(userDefEnd); + requestPane.getCaret().setVisible(true); + } + } + }); + JLabel vectorListTitle = new JLabel("Vectors:"); + boxAndScrollerPanel.addComponentToBoxPanelAtYaxis(addVectorButton); + boxAndScrollerPanel.addComponentToBoxPanelAtYaxis(delVectorButton); + boxAndScrollerPanel.addComponentToBoxPanelAtYaxis(vectorListTitle); + JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, requestScroller, boxAndScrollerPanel); + splitPane.setDividerLocation(550); + + GridBagConstraints gbc = new GridBagConstraints(); + gbc.gridx = 0; + gbc.gridy = 0; + gbc.gridwidth = 1; + gbc.gridheight = 4; + gbc.fill = GridBagConstraints.BOTH; + gbc.weightx = 0.1d; + gbc.weighty = 0.1d; + gbc.insets = new Insets(5, 5, 5, 5); + // gbc.anchor = GridBagConstraints.CENTER; // this is default. + gridBagLayout.setConstraints(splitPane, gbc); + this.add(splitPane); + + JLabel infoLabel = new JLabel(EnvironmentVariables.getZapResourceString("autoMacroBuilder.CustomVectorInserter.infoLabel.title.text")); + gbc.gridx = 0; + gbc.gridy = 4; + gbc.gridwidth = 1; + gbc.gridheight = 1; + gbc.fill = GridBagConstraints.NONE; + gbc.weightx = 0d; + gbc.weighty = 0d; + gbc.insets = new Insets(1, 1, 1, 1); + gbc.anchor = GridBagConstraints.LINE_START; + gridBagLayout.setConstraints(infoLabel, gbc); + this.add(infoLabel); + + disableNonCustomVector = new JCheckBox(EnvironmentVariables.getZapResourceString("autoMacroBuilder.CustomVectorInserter.nonCustom.title.text")); + gbc.gridx = 0; + gbc.gridy = 5; + gbc.gridwidth = 1; + gbc.gridheight = 1; + gbc.fill = GridBagConstraints.NONE; + gbc.weightx = 0d; + gbc.weighty = 0d; + gbc.insets = new Insets(1, 1, 1, 1); + gbc.anchor = GridBagConstraints.LINE_START; + gridBagLayout.setConstraints(disableNonCustomVector, gbc); + this.add(disableNonCustomVector); + disableNonCustomVector.setSelected(true); + disableNonCustomVector.setEnabled(true); + disableNonCustomVector.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + + } + }); + + // must add this caretLister after being added VectorButtons. + requestPane.addCaretListener(new CaretListener() { + @Override + public void caretUpdate(CaretEvent e) { + manageAddDelVectorButtons(); + } + }); + } + + private void populateRequestField(SiteNode node) { + try { + if (node == null + || node.getHistoryReference() == null + || node.getHistoryReference().getHttpMessage() == null) { + this.requestPane.setText(""); + + } else { + // Populate the custom vectors http pane + HttpMessage msg = node.getHistoryReference().getHttpMessage(); + String header = msg.getRequestHeader().toString(); + StringBuilder sb = new StringBuilder(); + sb.append(header); + + this.headerLength = header.length(); + this.urlPathStart = + header.indexOf("/", header.indexOf("://") + 2) + + 1; // Ignore http(s)://host:port/ + + sb.append(msg.getRequestBody().toString()); + String decodedRequestText = CustomTagConverter.customDecode(sb.toString()); + this.requestPane.setText(decodedRequestText); + + + } + + } catch (HttpMalformedHeaderException | DatabaseException e) { + // + this.requestPane.setText(""); + } + this.requestPane.setCaretPosition(0); + } + + @Override + public void initParam(Object obj) { + + } + + @Override + public void saveParam(Object obj) throws Exception { + + } + + + private boolean selectionIncludesHighlight(int start, int end, Highlighter.Highlight hl) { + if (hl.getPainter() instanceof DefaultHighlighter.DefaultHighlightPainter) { + DefaultHighlighter.DefaultHighlightPainter ptr = + (DefaultHighlighter.DefaultHighlightPainter) hl.getPainter(); + if (ptr.getColor() != null && ptr.getColor().equals(Color.RED)) { + // Test for 'RED' needed to prevent matching the users selection + return start < hl.getEndOffset() && end > hl.getStartOffset(); + } + } + return false; + } + + + @Override + public String getLabel() { + return "autoMacroBuilder.CustomVectorInserter.label.tabname.text"; + } + + @Override + public AbstractParamPanel getPanel(boolean init) { + return this; + } + + @Override + public Target getTarget() { + return null; + } + + /** + * return errormessage which displays founded errors when starting to scan. + * @return null - no errors
String - founded error message + */ + @Override + public String validateFields() { + return null; + } + + public void setCustomScanDialog(CustomScanDialog customScanDialog) { + this.customScanDialog = customScanDialog; + } + + @Override + public Object[] getContextSpecificObjects() { + List contextSpecificObjects = new ArrayList<>(); + // save insertion vector + if (injectionPointModel.getSize() > 0) { + int[][] injPoints = new int[injectionPointModel.getSize()][]; + Map encodeMap = new HashMap<>(); + for (int i = 0; i < injectionPointModel.getSize(); i++) { + + Highlighter.Highlight hl = injectionPointModel.elementAt(i); + encodeMap.put(hl.getStartOffset(), -1); + encodeMap.put(hl.getEndOffset(), -1); + LOGGER4J.debug("customVector:" + hl.getStartOffset() + "," + hl.getEndOffset()); + } + DecoderTag.encodeCustomTagWithEncodeMap(this.requestPane.getText(), encodeMap); + for (int i = 0; i < injectionPointModel.getSize(); i++) { + + Highlighter.Highlight hl = injectionPointModel.elementAt(i); + injPoints[i] = new int[2]; + injPoints[i][0] = encodeMap.get(hl.getStartOffset()); + injPoints[i][1] = encodeMap.get(hl.getEndOffset()); + + LOGGER4J.debug("customVector encoded:" + injPoints[i][0] + "," + injPoints[i][1]); + } + + try { + if (target != null && target.getStartNode() != null) { + VariantUserDefined.setInjectionPoints( + this.target + .getStartNode() + .getHistoryReference() + .getURI() + .toString(), + injPoints); + + ScannerParam scannerParam = enableVariantUserDefinedInScannerParam(); + contextSpecificObjects.add(scannerParam); + + } + + } catch (Exception e) { + LOGGER4J.error(e.getMessage(), e); + } + } + + + + return contextSpecificObjects.toArray(); + } + + private ScannerParam enableVariantUserDefinedInScannerParam() { + ScannerParam scannerParam = extensionActiveScanWrapper.getScannerParam(); + if (disableNonCustomVector.isSelected()) { + scannerParam.setTargetParamsInjectable(0); + scannerParam.setTargetParamsEnabledRPC(0); + } + int enabledRpc = scannerParam.getTargetParamsEnabledRPC(); + enabledRpc |= ScannerParam.RPC_USERDEF; + scannerParam.setTargetParamsEnabledRPC(enabledRpc); + return scannerParam; + } + + private void manageAddDelVectorButtons() { + int userDefStart = this.requestPane.getSelectionStart(); + int userDefEnd = this.requestPane.getSelectionEnd(); + if (userDefStart >= 0) { + if (userDefStart < urlPathStart) { + // No point attacking the method, hostname or port + addVectorButton.setEnabled(false); + + } else if (userDefStart < headerLength && userDefEnd > headerLength) { + // The users selection cross the header / body boundary - thats never going to + // work well + addVectorButton.setEnabled(false); + + } else { + addVectorButton.setEnabled(true); + } + } + } +} diff --git a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/view/DecoderSelector.java b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/view/DecoderSelector.java new file mode 100644 index 0000000..d35af9d --- /dev/null +++ b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/view/DecoderSelector.java @@ -0,0 +1,159 @@ +package org.zaproxy.zap.extension.automacrobuilder.zap.view; + +import org.zaproxy.zap.extension.automacrobuilder.CastUtils; +import org.zaproxy.zap.extension.automacrobuilder.Encode; +import org.zaproxy.zap.extension.automacrobuilder.StartEndPosition; +import org.zaproxy.zap.extension.automacrobuilder.generated.MacroBuilderUI; +import org.zaproxy.zap.extension.automacrobuilder.view.GridBagJDialog; +import org.zaproxy.zap.extension.automacrobuilder.view.StyledDocumentWithChunk; +import org.zaproxy.zap.extension.automacrobuilder.zap.DecoderTag; +import org.zaproxy.zap.extension.automacrobuilder.zap.ZapUtil; + +import javax.swing.*; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dialog; +import java.awt.Dimension; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.*; + +@SuppressWarnings("serial") +public class DecoderSelector extends GridBagJDialog { + + private static final org.apache.logging.log4j.Logger LOGGER4J = + org.apache.logging.log4j.LogManager.getLogger(); + private static final ResourceBundle bundle = ResourceBundle.getBundle("burp/Bundle"); + + // ### START: these parameters should not set null value from below this line + JComboBox decodeComboBox; + JTextPane textPane; + JLabel infoLabel; + // ### END: these parameters should not set null value until this line + + private StartEndPosition startEndPosition; + private MacroBuilderUI mbui; + private Encode enc; + + public DecoderSelector(MacroBuilderUI mbui, StartEndPosition startEndPosition, Encode enc) { + super(SwingUtilities.windowForComponent(mbui), bundle.getString("DecoderSelector.dialog.title.text"), Dialog.ModalityType.DOCUMENT_MODAL); + + this.enc = enc; + this.mbui = mbui; + this.startEndPosition = startEndPosition; + this.textPane.setText(startEndPosition.value); + } + + @Override + public void disposeChild() { + + } + + public enum DecodeType { + original, + base64, + URL + } + + @Override + protected Component createMainPanelContent(Component mainPanel, Object optionalObject) { + DefaultComboBoxModel comboModel = new DefaultComboBoxModel<>(new DecodeType[] { + DecodeType.original, + DecodeType.base64, + DecodeType.URL + }); + + decodeComboBox = new JComboBox<>(comboModel); + + textPane = new JTextPane(); + BoxAndScrollerPanel boxAndScrollerPanel = new BoxAndScrollerPanel(); + infoLabel = new JLabel(""); + boxAndScrollerPanel.addComponentToBoxPanelAtYaxis(decodeComboBox); + boxAndScrollerPanel.addComponentToBoxPanelAtYaxis(infoLabel); + infoLabel.setAlignmentX(Component.RIGHT_ALIGNMENT); + infoLabel.setMaximumSize(new Dimension(9999, 9999)); + //infoLabel.setHorizontalAlignment(JLabel.LEFT); + Color defaultLabelForeColor = infoLabel.getForeground(); + //LineBorder lborder = new LineBorder(Color.BLACK, 2, false); + //infoLabel.setBorder(lborder); + boxAndScrollerPanel.setComponentToScroller(textPane); + + decodeComboBox.addActionListener(new ActionListener() { + final DecoderSelector thisDecoderSelector = DecoderSelector.this; + final JComboBox thisDecodeComboBox = decodeComboBox; + final JTextPane thisTextPane = textPane; + final JLabel thisInfoLabel = infoLabel; + @Override + public void actionPerformed(ActionEvent e) { + DecodeType decodeType = CastUtils.castToType(thisDecodeComboBox.getSelectedItem()); + Color labelForeColor = defaultLabelForeColor; + String infoMessage = ""; + String originalValue = thisDecoderSelector.startEndPosition.value; + String decodedValue = originalValue; + if (decodeType != null) { + switch(decodeType) { + case base64: + if (ZapUtil.isBase64(originalValue)) { + decodedValue = ZapUtil.decodeBase64(originalValue, thisDecoderSelector.enc); + } else { + labelForeColor = Color.RED; + infoMessage = bundle.getString("DecoderSelector.nobase64.info.text"); + } + break; + case URL: + if (ZapUtil.isURLencoded(originalValue)) { + decodedValue = ZapUtil.decodeURL(originalValue, thisDecoderSelector.enc); + } else { + labelForeColor = Color.RED; + infoMessage = bundle.getString("DecoderSelector.nourl.info.text"); + } + break; + } + } + this.thisTextPane.setText(decodedValue); + this.thisInfoLabel.setText(infoMessage); + this.thisInfoLabel.setForeground(labelForeColor); + } + }); + + return boxAndScrollerPanel; + } + + + @Override + protected void okBtnActionPerformed() { + JTextPane messageRequest = this.mbui.getMessageRequest(); + StyledDocumentWithChunk requestChunkDoc = CastUtils.castToType(messageRequest.getStyledDocument()); + + String encodedText = this.textPane.getText(); + DecodeType decodeType = CastUtils.castToType(this.decodeComboBox.getSelectedItem()); + String decodeAreaPrefix = ""; + String decodeAreaSuffix = ""; + switch(decodeType) { + case URL: + decodeAreaPrefix = DecoderTag.DECODE_PREFIX_URL_STRING; + decodeAreaSuffix = DecoderTag.DECODE_SUFFIX_URL_STRING; + break; + case base64: + decodeAreaPrefix = DecoderTag.DECODE_PREFIX_BASE64_STRING; + decodeAreaSuffix = DecoderTag.DECODE_SUFFIX_BASE64_STRING; + break; + } + String embedString = decodeAreaPrefix + encodedText + decodeAreaSuffix; + LOGGER4J.debug("decodeType:" + decodeType.name() + "embedString[" + embedString + "]"); + try { + int len = this.startEndPosition.end - this.startEndPosition.start; + requestChunkDoc.remove(this.startEndPosition.start, len); + requestChunkDoc.insertString(this.startEndPosition.start, embedString, null); + } catch (Exception ex) { + LOGGER4J.error(ex.getMessage(), ex); + } + dispose(); + } + + @Override + protected void cancelBtnActionPerformed() { + dispose(); + } +} diff --git a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/view/MessageRequestDocumentFilter.java b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/view/MessageRequestDocumentFilter.java new file mode 100644 index 0000000..056a2ed --- /dev/null +++ b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/view/MessageRequestDocumentFilter.java @@ -0,0 +1,172 @@ +package org.zaproxy.zap.extension.automacrobuilder.zap.view; + +import org.zaproxy.zap.extension.automacrobuilder.StartEndPosition; +import org.zaproxy.zap.extension.automacrobuilder.view.StyledDocumentWithChunk; +import org.zaproxy.zap.extension.automacrobuilder.zap.DecoderTag; + +import javax.swing.text.AttributeSet; +import javax.swing.text.Document; +import javax.swing.text.DocumentFilter; +import java.util.ArrayList; +import java.util.List; + +public class MessageRequestDocumentFilter extends DocumentFilter { + private static final org.apache.logging.log4j.Logger LOGGER4J = + org.apache.logging.log4j.LogManager.getLogger(); + + private StyledDocumentWithChunk doc; + public MessageRequestDocumentFilter(StyledDocumentWithChunk doc) { + this.doc = doc; + } + + + @Override + public void remove(DocumentFilter.FilterBypass fb, int offset, int len) { + if(!doc.getDocumentFilterMasked()) { + try { + LOGGER4J.debug("remove is called offset,len=" + offset + "," + len + " doclength=" + fb.getDocument().getLength()); + Document doc = fb.getDocument(); + int docLength = doc.getLength(); + String requestText = doc.getText(0, docLength); + List startEndPositions = DecoderTag.getDecodeTagList(requestText); + int start = offset; + int end = offset + len; + for (StartEndPosition startEndPosition : startEndPositions) { + // -- same + // -- + // -- overlap + // ---- + // -- between + // -- + // -- + if (start <= startEndPosition.start && end >= startEndPosition.end + || start > startEndPosition.start && start < startEndPosition.end + || end > startEndPosition.start && end < startEndPosition.end + ) { + LOGGER4J.debug("BEEP start,end=" + start + "," + end + " StartPos,EndPos=" + startEndPosition.start + "," + startEndPosition.end); + java.awt.Toolkit.getDefaultToolkit().beep(); + return; + } else { + LOGGER4J.debug("start,end=" + start + "," + end + " StartPos,EndPos=" + startEndPosition.start + "," + startEndPosition.end); + } + } + + } catch (Exception ex) { + LOGGER4J.error(ex.getMessage(), ex); + } + } else { + LOGGER4J.debug("masked remove"); + } + try { + fb.remove(offset, len); + } catch (Exception ex2) { + LOGGER4J.error(ex2.getMessage(), ex2); + } + } + + @Override + public void insertString(DocumentFilter.FilterBypass fb, int offset, String string, AttributeSet attr){ + List decodedAreaStartEndPositions = new ArrayList<>(); + if (!doc.getDocumentFilterMasked()) { + LOGGER4J.debug("insertString is called offset=" + offset + " doclength=" + fb.getDocument().getLength()); + try { + Document doc = fb.getDocument(); + int docLength = doc.getLength(); + String requestText = doc.getText(0, docLength); + List decodeTagStartEndPositions = DecoderTag.getDecodeTagList(requestText); + + int areaStart = -1; + for (StartEndPosition decodeTagStartEndPosition : decodeTagStartEndPositions) { + LOGGER4J.debug("insertString start,end=" + decodeTagStartEndPosition.start + "," + decodeTagStartEndPosition.end + + " string[" + decodeTagStartEndPosition.value + "]"); + if (areaStart != -1) { + StartEndPosition decodedAreaStartEndPosition = new StartEndPosition(areaStart, decodeTagStartEndPosition.start); + decodedAreaStartEndPositions.add(decodedAreaStartEndPosition); + } + if (offset > decodeTagStartEndPosition.start && offset < decodeTagStartEndPosition.end) { + java.awt.Toolkit.getDefaultToolkit().beep(); + return; + } + areaStart = decodeTagStartEndPosition.end; + } + + } catch (Exception ex) { + LOGGER4J.error(ex.getMessage(), ex); + } + } else { + LOGGER4J.debug("masked insertString"); + } + try { + if (!doc.getDocumentFilterMasked()) { + for (StartEndPosition decodedAreaStartEndPosition : decodedAreaStartEndPositions) { + if (offset >= decodedAreaStartEndPosition.start && offset <= decodedAreaStartEndPosition.end) { + if (!DecoderTag.isDecodedTaggedString(string)) { + string = DecoderTag.removeDecodeTag(string); + } + LOGGER4J.debug("insertString string[" + string + "]"); + break; + } + } + } + fb.insertString(offset, string, attr); + } catch (Exception ex2) { + LOGGER4J.error(ex2.getMessage(), ex2); + } + } + + @Override + public void replace(DocumentFilter.FilterBypass fb, int offset, int length, String text, AttributeSet attr) { + LOGGER4J.debug("replace is called offset,length=" + offset + "," + length + " text[" + text + "] doclength=" + fb.getDocument().getLength() ); + List decodedAreaStartEndPositions = new ArrayList<>(); + if (!doc.getDocumentFilterMasked()) { + try { + Document doc = fb.getDocument(); + int docLength = doc.getLength(); + String requestText = doc.getText(0, docLength); + List decodeTagStartEndPositions = DecoderTag.getDecodeTagList(requestText); + int start = offset; + int end = offset + length; + int areaStart = -1; + for (StartEndPosition decodeTagStartEndPosition : decodeTagStartEndPositions) { + LOGGER4J.debug("start,end=" + decodeTagStartEndPosition.start + "," + decodeTagStartEndPosition.end + + " string[" + decodeTagStartEndPosition.value + "]"); + if (areaStart != -1) { + StartEndPosition decodedAreaStartEndPosition = new StartEndPosition(areaStart, decodeTagStartEndPosition.start); + decodedAreaStartEndPositions.add(decodedAreaStartEndPosition); + } + if (start <= decodeTagStartEndPosition.start && end >= decodeTagStartEndPosition.end + || start > decodeTagStartEndPosition.start && start < decodeTagStartEndPosition.end + || end > decodeTagStartEndPosition.start && end < decodeTagStartEndPosition.end + ) { + java.awt.Toolkit.getDefaultToolkit().beep(); + return; + } + areaStart = decodeTagStartEndPosition.end; + } + } catch (Exception ex) { + LOGGER4J.error(ex.getMessage(), ex); + } + } else { + LOGGER4J.debug("masked replace"); + } + try { + if (!doc.getDocumentFilterMasked()) { + for (StartEndPosition decodedAreaStartEndPosition : decodedAreaStartEndPositions) { + int start = offset; + int end = offset + length; + if (start >= decodedAreaStartEndPosition.start && end <= decodedAreaStartEndPosition.end) { + if (!DecoderTag.isDecodedTaggedString(text)) { + text = DecoderTag.removeDecodeTag(text); + } + LOGGER4J.debug("replace text[" + text + "]"); + break; + } + } + } + fb.replace(offset, length, text, attr); + } catch (Exception ex2) { + LOGGER4J.error(ex2.getMessage(), ex2); + } + } + +} diff --git a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/view/RequestListJDialog.java b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/view/RequestListJDialog.java index 8db31d0..fb6a49a 100644 --- a/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/view/RequestListJDialog.java +++ b/addOns/automacrobuilder/src/main/java/org/zaproxy/zap/extension/automacrobuilder/zap/view/RequestListJDialog.java @@ -10,7 +10,7 @@ import org.zaproxy.zap.extension.automacrobuilder.zap.AutoMacroBuilderAuthenticationMethodType; @SuppressWarnings("serial") -public class RequestListJDialog extends GridBagJDialog { +public class RequestListJDialog extends GridBagJDialog { AutoMacroBuilderAuthenticationMethodType.AutoMacroBuilderAuthenticationMethodOptionsPanel optionPanel; @@ -93,7 +93,7 @@ private JTabbedPane createRequestListTabbedPaneFromMacroBuilderUI() { } @Override - protected Component createMainPanelContent() { + protected Component createMainPanelContent(Component mainPanel, Object optionalObject) { return createRequestListTabbedPaneFromMacroBuilderUI(); } @@ -112,4 +112,9 @@ protected void okBtnActionPerformed() { protected void cancelBtnActionPerformed() { dispose(); } + + @Override + public void disposeChild() { + + } } diff --git a/addOns/automacrobuilder/src/main/javahelp/help/contents/help.html b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help/contents/help.html similarity index 100% rename from addOns/automacrobuilder/src/main/javahelp/help/contents/help.html rename to addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help/contents/help.html diff --git a/addOns/automacrobuilder/src/main/javahelp/help/helpset.hs b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help/helpset.hs similarity index 100% rename from addOns/automacrobuilder/src/main/javahelp/help/helpset.hs rename to addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help/helpset.hs diff --git a/addOns/automacrobuilder/src/main/javahelp/help/index.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help/index.xml similarity index 100% rename from addOns/automacrobuilder/src/main/javahelp/help/index.xml rename to addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help/index.xml diff --git a/addOns/automacrobuilder/src/main/javahelp/help/map.jhm b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help/map.jhm similarity index 100% rename from addOns/automacrobuilder/src/main/javahelp/help/map.jhm rename to addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help/map.jhm diff --git a/addOns/automacrobuilder/src/main/javahelp/help/toc.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help/toc.xml similarity index 100% rename from addOns/automacrobuilder/src/main/javahelp/help/toc.xml rename to addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help/toc.xml diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ar_SA/contents/help.html b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ar_SA/contents/help.html new file mode 100644 index 0000000..cc5b44f --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ar_SA/contents/help.html @@ -0,0 +1,23 @@ + + + + +AutoMacroBuilderForZAP + + + +

AutoMacroBuilderForZAP

+ +

About

+A ZAPROXY Add-on that allows testing of web application vulnerabilities by recording complex multi-step sequences. You can test applications that need to access pages in a specific order, such as shopping carts or registration of member information. +

+ +

Descriptions

+ +
    + The below links go to the page under https://github.com/gdgd009xcd/AutoMacroBuilderForZAP/wiki/

    +
  • OverView +
  • Basic Usage +
+ + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ar_SA/helpset.hs b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ar_SA/helpset.hs new file mode 100644 index 0000000..43380c5 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ar_SA/helpset.hs @@ -0,0 +1,41 @@ + + + + AutoMacroBuilderForZAP Add-On + + + automacrobuilder + + + + + TOC + + org.zaproxy.zap.extension.help.ZapTocView + toc.xml + + + + Index + + javax.help.IndexView + index.xml + + + + Search + + javax.help.SearchView + + JavaHelpSearch + + + + + Favorites + + javax.help.FavoritesView + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ar_SA/index.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ar_SA/index.xml new file mode 100644 index 0000000..0b1a47c --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ar_SA/index.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ar_SA/map.jhm b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ar_SA/map.jhm new file mode 100644 index 0000000..49afeb2 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ar_SA/map.jhm @@ -0,0 +1,8 @@ + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ar_SA/toc.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ar_SA/toc.xml new file mode 100644 index 0000000..42708d9 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ar_SA/toc.xml @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_az_AZ/contents/help.html b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_az_AZ/contents/help.html new file mode 100644 index 0000000..cc5b44f --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_az_AZ/contents/help.html @@ -0,0 +1,23 @@ + + + + +AutoMacroBuilderForZAP + + + +

AutoMacroBuilderForZAP

+ +

About

+A ZAPROXY Add-on that allows testing of web application vulnerabilities by recording complex multi-step sequences. You can test applications that need to access pages in a specific order, such as shopping carts or registration of member information. +

+ +

Descriptions

+ +
    + The below links go to the page under https://github.com/gdgd009xcd/AutoMacroBuilderForZAP/wiki/

    +
  • OverView +
  • Basic Usage +
+ + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_az_AZ/helpset.hs b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_az_AZ/helpset.hs new file mode 100644 index 0000000..43380c5 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_az_AZ/helpset.hs @@ -0,0 +1,41 @@ + + + + AutoMacroBuilderForZAP Add-On + + + automacrobuilder + + + + + TOC + + org.zaproxy.zap.extension.help.ZapTocView + toc.xml + + + + Index + + javax.help.IndexView + index.xml + + + + Search + + javax.help.SearchView + + JavaHelpSearch + + + + + Favorites + + javax.help.FavoritesView + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_az_AZ/index.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_az_AZ/index.xml new file mode 100644 index 0000000..0b1a47c --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_az_AZ/index.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_az_AZ/map.jhm b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_az_AZ/map.jhm new file mode 100644 index 0000000..49afeb2 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_az_AZ/map.jhm @@ -0,0 +1,8 @@ + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_az_AZ/toc.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_az_AZ/toc.xml new file mode 100644 index 0000000..42708d9 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_az_AZ/toc.xml @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_bs_BA/contents/help.html b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_bs_BA/contents/help.html new file mode 100644 index 0000000..cc5b44f --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_bs_BA/contents/help.html @@ -0,0 +1,23 @@ + + + + +AutoMacroBuilderForZAP + + + +

AutoMacroBuilderForZAP

+ +

About

+A ZAPROXY Add-on that allows testing of web application vulnerabilities by recording complex multi-step sequences. You can test applications that need to access pages in a specific order, such as shopping carts or registration of member information. +

+ +

Descriptions

+ +
    + The below links go to the page under https://github.com/gdgd009xcd/AutoMacroBuilderForZAP/wiki/

    +
  • OverView +
  • Basic Usage +
+ + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_bs_BA/helpset.hs b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_bs_BA/helpset.hs new file mode 100644 index 0000000..43380c5 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_bs_BA/helpset.hs @@ -0,0 +1,41 @@ + + + + AutoMacroBuilderForZAP Add-On + + + automacrobuilder + + + + + TOC + + org.zaproxy.zap.extension.help.ZapTocView + toc.xml + + + + Index + + javax.help.IndexView + index.xml + + + + Search + + javax.help.SearchView + + JavaHelpSearch + + + + + Favorites + + javax.help.FavoritesView + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_bs_BA/index.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_bs_BA/index.xml new file mode 100644 index 0000000..0b1a47c --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_bs_BA/index.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_bs_BA/map.jhm b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_bs_BA/map.jhm new file mode 100644 index 0000000..49afeb2 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_bs_BA/map.jhm @@ -0,0 +1,8 @@ + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_bs_BA/toc.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_bs_BA/toc.xml new file mode 100644 index 0000000..42708d9 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_bs_BA/toc.xml @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_da_DK/contents/help.html b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_da_DK/contents/help.html new file mode 100644 index 0000000..cc5b44f --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_da_DK/contents/help.html @@ -0,0 +1,23 @@ + + + + +AutoMacroBuilderForZAP + + + +

AutoMacroBuilderForZAP

+ +

About

+A ZAPROXY Add-on that allows testing of web application vulnerabilities by recording complex multi-step sequences. You can test applications that need to access pages in a specific order, such as shopping carts or registration of member information. +

+ +

Descriptions

+ +
    + The below links go to the page under https://github.com/gdgd009xcd/AutoMacroBuilderForZAP/wiki/

    +
  • OverView +
  • Basic Usage +
+ + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_da_DK/helpset.hs b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_da_DK/helpset.hs new file mode 100644 index 0000000..43380c5 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_da_DK/helpset.hs @@ -0,0 +1,41 @@ + + + + AutoMacroBuilderForZAP Add-On + + + automacrobuilder + + + + + TOC + + org.zaproxy.zap.extension.help.ZapTocView + toc.xml + + + + Index + + javax.help.IndexView + index.xml + + + + Search + + javax.help.SearchView + + JavaHelpSearch + + + + + Favorites + + javax.help.FavoritesView + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_da_DK/index.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_da_DK/index.xml new file mode 100644 index 0000000..0b1a47c --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_da_DK/index.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_da_DK/map.jhm b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_da_DK/map.jhm new file mode 100644 index 0000000..49afeb2 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_da_DK/map.jhm @@ -0,0 +1,8 @@ + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_da_DK/toc.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_da_DK/toc.xml new file mode 100644 index 0000000..42708d9 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_da_DK/toc.xml @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_de_DE/contents/help.html b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_de_DE/contents/help.html new file mode 100644 index 0000000..cc5b44f --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_de_DE/contents/help.html @@ -0,0 +1,23 @@ + + + + +AutoMacroBuilderForZAP + + + +

AutoMacroBuilderForZAP

+ +

About

+A ZAPROXY Add-on that allows testing of web application vulnerabilities by recording complex multi-step sequences. You can test applications that need to access pages in a specific order, such as shopping carts or registration of member information. +

+ +

Descriptions

+ +
    + The below links go to the page under https://github.com/gdgd009xcd/AutoMacroBuilderForZAP/wiki/

    +
  • OverView +
  • Basic Usage +
+ + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_de_DE/helpset.hs b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_de_DE/helpset.hs new file mode 100644 index 0000000..43380c5 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_de_DE/helpset.hs @@ -0,0 +1,41 @@ + + + + AutoMacroBuilderForZAP Add-On + + + automacrobuilder + + + + + TOC + + org.zaproxy.zap.extension.help.ZapTocView + toc.xml + + + + Index + + javax.help.IndexView + index.xml + + + + Search + + javax.help.SearchView + + JavaHelpSearch + + + + + Favorites + + javax.help.FavoritesView + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_de_DE/index.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_de_DE/index.xml new file mode 100644 index 0000000..0b1a47c --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_de_DE/index.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_de_DE/map.jhm b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_de_DE/map.jhm new file mode 100644 index 0000000..49afeb2 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_de_DE/map.jhm @@ -0,0 +1,8 @@ + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_de_DE/toc.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_de_DE/toc.xml new file mode 100644 index 0000000..42708d9 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_de_DE/toc.xml @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_el_GR/contents/help.html b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_el_GR/contents/help.html new file mode 100644 index 0000000..cc5b44f --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_el_GR/contents/help.html @@ -0,0 +1,23 @@ + + + + +AutoMacroBuilderForZAP + + + +

AutoMacroBuilderForZAP

+ +

About

+A ZAPROXY Add-on that allows testing of web application vulnerabilities by recording complex multi-step sequences. You can test applications that need to access pages in a specific order, such as shopping carts or registration of member information. +

+ +

Descriptions

+ +
    + The below links go to the page under https://github.com/gdgd009xcd/AutoMacroBuilderForZAP/wiki/

    +
  • OverView +
  • Basic Usage +
+ + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_el_GR/helpset.hs b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_el_GR/helpset.hs new file mode 100644 index 0000000..43380c5 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_el_GR/helpset.hs @@ -0,0 +1,41 @@ + + + + AutoMacroBuilderForZAP Add-On + + + automacrobuilder + + + + + TOC + + org.zaproxy.zap.extension.help.ZapTocView + toc.xml + + + + Index + + javax.help.IndexView + index.xml + + + + Search + + javax.help.SearchView + + JavaHelpSearch + + + + + Favorites + + javax.help.FavoritesView + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_el_GR/index.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_el_GR/index.xml new file mode 100644 index 0000000..0b1a47c --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_el_GR/index.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_el_GR/map.jhm b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_el_GR/map.jhm new file mode 100644 index 0000000..49afeb2 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_el_GR/map.jhm @@ -0,0 +1,8 @@ + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_el_GR/toc.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_el_GR/toc.xml new file mode 100644 index 0000000..42708d9 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_el_GR/toc.xml @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_es_ES/contents/help.html b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_es_ES/contents/help.html new file mode 100644 index 0000000..cc5b44f --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_es_ES/contents/help.html @@ -0,0 +1,23 @@ + + + + +AutoMacroBuilderForZAP + + + +

AutoMacroBuilderForZAP

+ +

About

+A ZAPROXY Add-on that allows testing of web application vulnerabilities by recording complex multi-step sequences. You can test applications that need to access pages in a specific order, such as shopping carts or registration of member information. +

+ +

Descriptions

+ +
    + The below links go to the page under https://github.com/gdgd009xcd/AutoMacroBuilderForZAP/wiki/

    +
  • OverView +
  • Basic Usage +
+ + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_es_ES/helpset.hs b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_es_ES/helpset.hs new file mode 100644 index 0000000..43380c5 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_es_ES/helpset.hs @@ -0,0 +1,41 @@ + + + + AutoMacroBuilderForZAP Add-On + + + automacrobuilder + + + + + TOC + + org.zaproxy.zap.extension.help.ZapTocView + toc.xml + + + + Index + + javax.help.IndexView + index.xml + + + + Search + + javax.help.SearchView + + JavaHelpSearch + + + + + Favorites + + javax.help.FavoritesView + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_es_ES/index.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_es_ES/index.xml new file mode 100644 index 0000000..0b1a47c --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_es_ES/index.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_es_ES/map.jhm b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_es_ES/map.jhm new file mode 100644 index 0000000..49afeb2 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_es_ES/map.jhm @@ -0,0 +1,8 @@ + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_es_ES/toc.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_es_ES/toc.xml new file mode 100644 index 0000000..42708d9 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_es_ES/toc.xml @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fa_IR/contents/help.html b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fa_IR/contents/help.html new file mode 100644 index 0000000..cc5b44f --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fa_IR/contents/help.html @@ -0,0 +1,23 @@ + + + + +AutoMacroBuilderForZAP + + + +

AutoMacroBuilderForZAP

+ +

About

+A ZAPROXY Add-on that allows testing of web application vulnerabilities by recording complex multi-step sequences. You can test applications that need to access pages in a specific order, such as shopping carts or registration of member information. +

+ +

Descriptions

+ +
    + The below links go to the page under https://github.com/gdgd009xcd/AutoMacroBuilderForZAP/wiki/

    +
  • OverView +
  • Basic Usage +
+ + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fa_IR/helpset.hs b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fa_IR/helpset.hs new file mode 100644 index 0000000..43380c5 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fa_IR/helpset.hs @@ -0,0 +1,41 @@ + + + + AutoMacroBuilderForZAP Add-On + + + automacrobuilder + + + + + TOC + + org.zaproxy.zap.extension.help.ZapTocView + toc.xml + + + + Index + + javax.help.IndexView + index.xml + + + + Search + + javax.help.SearchView + + JavaHelpSearch + + + + + Favorites + + javax.help.FavoritesView + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fa_IR/index.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fa_IR/index.xml new file mode 100644 index 0000000..0b1a47c --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fa_IR/index.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fa_IR/map.jhm b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fa_IR/map.jhm new file mode 100644 index 0000000..49afeb2 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fa_IR/map.jhm @@ -0,0 +1,8 @@ + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fa_IR/toc.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fa_IR/toc.xml new file mode 100644 index 0000000..42708d9 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fa_IR/toc.xml @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fil_PH/contents/help.html b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fil_PH/contents/help.html new file mode 100644 index 0000000..cc5b44f --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fil_PH/contents/help.html @@ -0,0 +1,23 @@ + + + + +AutoMacroBuilderForZAP + + + +

AutoMacroBuilderForZAP

+ +

About

+A ZAPROXY Add-on that allows testing of web application vulnerabilities by recording complex multi-step sequences. You can test applications that need to access pages in a specific order, such as shopping carts or registration of member information. +

+ +

Descriptions

+ +
    + The below links go to the page under https://github.com/gdgd009xcd/AutoMacroBuilderForZAP/wiki/

    +
  • OverView +
  • Basic Usage +
+ + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fil_PH/helpset.hs b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fil_PH/helpset.hs new file mode 100644 index 0000000..43380c5 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fil_PH/helpset.hs @@ -0,0 +1,41 @@ + + + + AutoMacroBuilderForZAP Add-On + + + automacrobuilder + + + + + TOC + + org.zaproxy.zap.extension.help.ZapTocView + toc.xml + + + + Index + + javax.help.IndexView + index.xml + + + + Search + + javax.help.SearchView + + JavaHelpSearch + + + + + Favorites + + javax.help.FavoritesView + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fil_PH/index.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fil_PH/index.xml new file mode 100644 index 0000000..0b1a47c --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fil_PH/index.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fil_PH/map.jhm b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fil_PH/map.jhm new file mode 100644 index 0000000..49afeb2 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fil_PH/map.jhm @@ -0,0 +1,8 @@ + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fil_PH/toc.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fil_PH/toc.xml new file mode 100644 index 0000000..42708d9 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fil_PH/toc.xml @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fr_FR/contents/help.html b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fr_FR/contents/help.html new file mode 100644 index 0000000..cc5b44f --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fr_FR/contents/help.html @@ -0,0 +1,23 @@ + + + + +AutoMacroBuilderForZAP + + + +

AutoMacroBuilderForZAP

+ +

About

+A ZAPROXY Add-on that allows testing of web application vulnerabilities by recording complex multi-step sequences. You can test applications that need to access pages in a specific order, such as shopping carts or registration of member information. +

+ +

Descriptions

+ +
    + The below links go to the page under https://github.com/gdgd009xcd/AutoMacroBuilderForZAP/wiki/

    +
  • OverView +
  • Basic Usage +
+ + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fr_FR/helpset.hs b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fr_FR/helpset.hs new file mode 100644 index 0000000..43380c5 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fr_FR/helpset.hs @@ -0,0 +1,41 @@ + + + + AutoMacroBuilderForZAP Add-On + + + automacrobuilder + + + + + TOC + + org.zaproxy.zap.extension.help.ZapTocView + toc.xml + + + + Index + + javax.help.IndexView + index.xml + + + + Search + + javax.help.SearchView + + JavaHelpSearch + + + + + Favorites + + javax.help.FavoritesView + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fr_FR/index.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fr_FR/index.xml new file mode 100644 index 0000000..0b1a47c --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fr_FR/index.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fr_FR/map.jhm b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fr_FR/map.jhm new file mode 100644 index 0000000..49afeb2 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fr_FR/map.jhm @@ -0,0 +1,8 @@ + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fr_FR/toc.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fr_FR/toc.xml new file mode 100644 index 0000000..42708d9 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_fr_FR/toc.xml @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hi_IN/contents/help.html b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hi_IN/contents/help.html new file mode 100644 index 0000000..cc5b44f --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hi_IN/contents/help.html @@ -0,0 +1,23 @@ + + + + +AutoMacroBuilderForZAP + + + +

AutoMacroBuilderForZAP

+ +

About

+A ZAPROXY Add-on that allows testing of web application vulnerabilities by recording complex multi-step sequences. You can test applications that need to access pages in a specific order, such as shopping carts or registration of member information. +

+ +

Descriptions

+ +
    + The below links go to the page under https://github.com/gdgd009xcd/AutoMacroBuilderForZAP/wiki/

    +
  • OverView +
  • Basic Usage +
+ + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hi_IN/helpset.hs b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hi_IN/helpset.hs new file mode 100644 index 0000000..43380c5 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hi_IN/helpset.hs @@ -0,0 +1,41 @@ + + + + AutoMacroBuilderForZAP Add-On + + + automacrobuilder + + + + + TOC + + org.zaproxy.zap.extension.help.ZapTocView + toc.xml + + + + Index + + javax.help.IndexView + index.xml + + + + Search + + javax.help.SearchView + + JavaHelpSearch + + + + + Favorites + + javax.help.FavoritesView + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hi_IN/index.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hi_IN/index.xml new file mode 100644 index 0000000..0b1a47c --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hi_IN/index.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hi_IN/map.jhm b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hi_IN/map.jhm new file mode 100644 index 0000000..49afeb2 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hi_IN/map.jhm @@ -0,0 +1,8 @@ + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hi_IN/toc.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hi_IN/toc.xml new file mode 100644 index 0000000..42708d9 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hi_IN/toc.xml @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hr_HR/contents/help.html b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hr_HR/contents/help.html new file mode 100644 index 0000000..cc5b44f --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hr_HR/contents/help.html @@ -0,0 +1,23 @@ + + + + +AutoMacroBuilderForZAP + + + +

AutoMacroBuilderForZAP

+ +

About

+A ZAPROXY Add-on that allows testing of web application vulnerabilities by recording complex multi-step sequences. You can test applications that need to access pages in a specific order, such as shopping carts or registration of member information. +

+ +

Descriptions

+ +
    + The below links go to the page under https://github.com/gdgd009xcd/AutoMacroBuilderForZAP/wiki/

    +
  • OverView +
  • Basic Usage +
+ + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hr_HR/helpset.hs b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hr_HR/helpset.hs new file mode 100644 index 0000000..43380c5 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hr_HR/helpset.hs @@ -0,0 +1,41 @@ + + + + AutoMacroBuilderForZAP Add-On + + + automacrobuilder + + + + + TOC + + org.zaproxy.zap.extension.help.ZapTocView + toc.xml + + + + Index + + javax.help.IndexView + index.xml + + + + Search + + javax.help.SearchView + + JavaHelpSearch + + + + + Favorites + + javax.help.FavoritesView + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hr_HR/index.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hr_HR/index.xml new file mode 100644 index 0000000..0b1a47c --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hr_HR/index.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hr_HR/map.jhm b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hr_HR/map.jhm new file mode 100644 index 0000000..49afeb2 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hr_HR/map.jhm @@ -0,0 +1,8 @@ + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hr_HR/toc.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hr_HR/toc.xml new file mode 100644 index 0000000..42708d9 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hr_HR/toc.xml @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hu_HU/contents/help.html b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hu_HU/contents/help.html new file mode 100644 index 0000000..cc5b44f --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hu_HU/contents/help.html @@ -0,0 +1,23 @@ + + + + +AutoMacroBuilderForZAP + + + +

AutoMacroBuilderForZAP

+ +

About

+A ZAPROXY Add-on that allows testing of web application vulnerabilities by recording complex multi-step sequences. You can test applications that need to access pages in a specific order, such as shopping carts or registration of member information. +

+ +

Descriptions

+ +
    + The below links go to the page under https://github.com/gdgd009xcd/AutoMacroBuilderForZAP/wiki/

    +
  • OverView +
  • Basic Usage +
+ + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hu_HU/helpset.hs b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hu_HU/helpset.hs new file mode 100644 index 0000000..43380c5 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hu_HU/helpset.hs @@ -0,0 +1,41 @@ + + + + AutoMacroBuilderForZAP Add-On + + + automacrobuilder + + + + + TOC + + org.zaproxy.zap.extension.help.ZapTocView + toc.xml + + + + Index + + javax.help.IndexView + index.xml + + + + Search + + javax.help.SearchView + + JavaHelpSearch + + + + + Favorites + + javax.help.FavoritesView + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hu_HU/index.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hu_HU/index.xml new file mode 100644 index 0000000..0b1a47c --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hu_HU/index.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hu_HU/map.jhm b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hu_HU/map.jhm new file mode 100644 index 0000000..49afeb2 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hu_HU/map.jhm @@ -0,0 +1,8 @@ + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hu_HU/toc.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hu_HU/toc.xml new file mode 100644 index 0000000..42708d9 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_hu_HU/toc.xml @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_id_ID/contents/help.html b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_id_ID/contents/help.html new file mode 100644 index 0000000..cc5b44f --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_id_ID/contents/help.html @@ -0,0 +1,23 @@ + + + + +AutoMacroBuilderForZAP + + + +

AutoMacroBuilderForZAP

+ +

About

+A ZAPROXY Add-on that allows testing of web application vulnerabilities by recording complex multi-step sequences. You can test applications that need to access pages in a specific order, such as shopping carts or registration of member information. +

+ +

Descriptions

+ +
    + The below links go to the page under https://github.com/gdgd009xcd/AutoMacroBuilderForZAP/wiki/

    +
  • OverView +
  • Basic Usage +
+ + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_id_ID/helpset.hs b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_id_ID/helpset.hs new file mode 100644 index 0000000..43380c5 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_id_ID/helpset.hs @@ -0,0 +1,41 @@ + + + + AutoMacroBuilderForZAP Add-On + + + automacrobuilder + + + + + TOC + + org.zaproxy.zap.extension.help.ZapTocView + toc.xml + + + + Index + + javax.help.IndexView + index.xml + + + + Search + + javax.help.SearchView + + JavaHelpSearch + + + + + Favorites + + javax.help.FavoritesView + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_id_ID/index.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_id_ID/index.xml new file mode 100644 index 0000000..0b1a47c --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_id_ID/index.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_id_ID/map.jhm b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_id_ID/map.jhm new file mode 100644 index 0000000..49afeb2 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_id_ID/map.jhm @@ -0,0 +1,8 @@ + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_id_ID/toc.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_id_ID/toc.xml new file mode 100644 index 0000000..42708d9 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_id_ID/toc.xml @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_it_IT/contents/help.html b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_it_IT/contents/help.html new file mode 100644 index 0000000..cc5b44f --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_it_IT/contents/help.html @@ -0,0 +1,23 @@ + + + + +AutoMacroBuilderForZAP + + + +

AutoMacroBuilderForZAP

+ +

About

+A ZAPROXY Add-on that allows testing of web application vulnerabilities by recording complex multi-step sequences. You can test applications that need to access pages in a specific order, such as shopping carts or registration of member information. +

+ +

Descriptions

+ +
    + The below links go to the page under https://github.com/gdgd009xcd/AutoMacroBuilderForZAP/wiki/

    +
  • OverView +
  • Basic Usage +
+ + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_it_IT/helpset.hs b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_it_IT/helpset.hs new file mode 100644 index 0000000..43380c5 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_it_IT/helpset.hs @@ -0,0 +1,41 @@ + + + + AutoMacroBuilderForZAP Add-On + + + automacrobuilder + + + + + TOC + + org.zaproxy.zap.extension.help.ZapTocView + toc.xml + + + + Index + + javax.help.IndexView + index.xml + + + + Search + + javax.help.SearchView + + JavaHelpSearch + + + + + Favorites + + javax.help.FavoritesView + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_it_IT/index.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_it_IT/index.xml new file mode 100644 index 0000000..0b1a47c --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_it_IT/index.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_it_IT/map.jhm b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_it_IT/map.jhm new file mode 100644 index 0000000..49afeb2 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_it_IT/map.jhm @@ -0,0 +1,8 @@ + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_it_IT/toc.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_it_IT/toc.xml new file mode 100644 index 0000000..42708d9 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_it_IT/toc.xml @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ja_JP/contents/help.html b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ja_JP/contents/help.html new file mode 100644 index 0000000..244468b --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ja_JP/contents/help.html @@ -0,0 +1,23 @@ + + + + +AutoMacroBuilderForZAP + + + +

AutoMacroBuilderForZAP

+ +

About

+これは、ZAPROXY用Add-onで、ウエブアプリケーションの画面遷移を記録し、再生することができます。マルチステップのログインシーケンスのある会員サイトなどの診断が可能です。 +

+ +

Descriptions

+ + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ja_JP/helpset_ja_JP.hs b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ja_JP/helpset_ja_JP.hs new file mode 100644 index 0000000..c753beb --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ja_JP/helpset_ja_JP.hs @@ -0,0 +1,41 @@ + + + + AutoMacroBuilderForZAP Add-On + + + automacrobuilder + + + + + TOC + + org.zaproxy.zap.extension.help.ZapTocView + toc.xml + + + + Index + + javax.help.IndexView + index.xml + + + + Search + + javax.help.SearchView + + JavaHelpSearch + + + + + Favorites + + javax.help.FavoritesView + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ja_JP/index.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ja_JP/index.xml new file mode 100644 index 0000000..0b1a47c --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ja_JP/index.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ja_JP/map.jhm b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ja_JP/map.jhm new file mode 100644 index 0000000..49afeb2 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ja_JP/map.jhm @@ -0,0 +1,8 @@ + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ja_JP/toc.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ja_JP/toc.xml new file mode 100644 index 0000000..42708d9 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ja_JP/toc.xml @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ko_KR/contents/help.html b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ko_KR/contents/help.html new file mode 100644 index 0000000..cc5b44f --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ko_KR/contents/help.html @@ -0,0 +1,23 @@ + + + + +AutoMacroBuilderForZAP + + + +

AutoMacroBuilderForZAP

+ +

About

+A ZAPROXY Add-on that allows testing of web application vulnerabilities by recording complex multi-step sequences. You can test applications that need to access pages in a specific order, such as shopping carts or registration of member information. +

+ +

Descriptions

+ +
    + The below links go to the page under https://github.com/gdgd009xcd/AutoMacroBuilderForZAP/wiki/

    +
  • OverView +
  • Basic Usage +
+ + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ko_KR/helpset.hs b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ko_KR/helpset.hs new file mode 100644 index 0000000..43380c5 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ko_KR/helpset.hs @@ -0,0 +1,41 @@ + + + + AutoMacroBuilderForZAP Add-On + + + automacrobuilder + + + + + TOC + + org.zaproxy.zap.extension.help.ZapTocView + toc.xml + + + + Index + + javax.help.IndexView + index.xml + + + + Search + + javax.help.SearchView + + JavaHelpSearch + + + + + Favorites + + javax.help.FavoritesView + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ko_KR/index.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ko_KR/index.xml new file mode 100644 index 0000000..0b1a47c --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ko_KR/index.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ko_KR/map.jhm b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ko_KR/map.jhm new file mode 100644 index 0000000..49afeb2 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ko_KR/map.jhm @@ -0,0 +1,8 @@ + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ko_KR/toc.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ko_KR/toc.xml new file mode 100644 index 0000000..42708d9 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ko_KR/toc.xml @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ms_MY/contents/help.html b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ms_MY/contents/help.html new file mode 100644 index 0000000..cc5b44f --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ms_MY/contents/help.html @@ -0,0 +1,23 @@ + + + + +AutoMacroBuilderForZAP + + + +

AutoMacroBuilderForZAP

+ +

About

+A ZAPROXY Add-on that allows testing of web application vulnerabilities by recording complex multi-step sequences. You can test applications that need to access pages in a specific order, such as shopping carts or registration of member information. +

+ +

Descriptions

+ +
    + The below links go to the page under https://github.com/gdgd009xcd/AutoMacroBuilderForZAP/wiki/

    +
  • OverView +
  • Basic Usage +
+ + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ms_MY/helpset.hs b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ms_MY/helpset.hs new file mode 100644 index 0000000..43380c5 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ms_MY/helpset.hs @@ -0,0 +1,41 @@ + + + + AutoMacroBuilderForZAP Add-On + + + automacrobuilder + + + + + TOC + + org.zaproxy.zap.extension.help.ZapTocView + toc.xml + + + + Index + + javax.help.IndexView + index.xml + + + + Search + + javax.help.SearchView + + JavaHelpSearch + + + + + Favorites + + javax.help.FavoritesView + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ms_MY/index.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ms_MY/index.xml new file mode 100644 index 0000000..0b1a47c --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ms_MY/index.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ms_MY/map.jhm b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ms_MY/map.jhm new file mode 100644 index 0000000..49afeb2 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ms_MY/map.jhm @@ -0,0 +1,8 @@ + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ms_MY/toc.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ms_MY/toc.xml new file mode 100644 index 0000000..42708d9 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ms_MY/toc.xml @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_pl_PL/contents/help.html b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_pl_PL/contents/help.html new file mode 100644 index 0000000..cc5b44f --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_pl_PL/contents/help.html @@ -0,0 +1,23 @@ + + + + +AutoMacroBuilderForZAP + + + +

AutoMacroBuilderForZAP

+ +

About

+A ZAPROXY Add-on that allows testing of web application vulnerabilities by recording complex multi-step sequences. You can test applications that need to access pages in a specific order, such as shopping carts or registration of member information. +

+ +

Descriptions

+ +
    + The below links go to the page under https://github.com/gdgd009xcd/AutoMacroBuilderForZAP/wiki/

    +
  • OverView +
  • Basic Usage +
+ + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_pl_PL/helpset.hs b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_pl_PL/helpset.hs new file mode 100644 index 0000000..43380c5 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_pl_PL/helpset.hs @@ -0,0 +1,41 @@ + + + + AutoMacroBuilderForZAP Add-On + + + automacrobuilder + + + + + TOC + + org.zaproxy.zap.extension.help.ZapTocView + toc.xml + + + + Index + + javax.help.IndexView + index.xml + + + + Search + + javax.help.SearchView + + JavaHelpSearch + + + + + Favorites + + javax.help.FavoritesView + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_pl_PL/index.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_pl_PL/index.xml new file mode 100644 index 0000000..0b1a47c --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_pl_PL/index.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_pl_PL/map.jhm b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_pl_PL/map.jhm new file mode 100644 index 0000000..49afeb2 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_pl_PL/map.jhm @@ -0,0 +1,8 @@ + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_pl_PL/toc.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_pl_PL/toc.xml new file mode 100644 index 0000000..42708d9 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_pl_PL/toc.xml @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_pt_BR/contents/help.html b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_pt_BR/contents/help.html new file mode 100644 index 0000000..cc5b44f --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_pt_BR/contents/help.html @@ -0,0 +1,23 @@ + + + + +AutoMacroBuilderForZAP + + + +

AutoMacroBuilderForZAP

+ +

About

+A ZAPROXY Add-on that allows testing of web application vulnerabilities by recording complex multi-step sequences. You can test applications that need to access pages in a specific order, such as shopping carts or registration of member information. +

+ +

Descriptions

+ +
    + The below links go to the page under https://github.com/gdgd009xcd/AutoMacroBuilderForZAP/wiki/

    +
  • OverView +
  • Basic Usage +
+ + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_pt_BR/helpset.hs b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_pt_BR/helpset.hs new file mode 100644 index 0000000..43380c5 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_pt_BR/helpset.hs @@ -0,0 +1,41 @@ + + + + AutoMacroBuilderForZAP Add-On + + + automacrobuilder + + + + + TOC + + org.zaproxy.zap.extension.help.ZapTocView + toc.xml + + + + Index + + javax.help.IndexView + index.xml + + + + Search + + javax.help.SearchView + + JavaHelpSearch + + + + + Favorites + + javax.help.FavoritesView + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_pt_BR/index.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_pt_BR/index.xml new file mode 100644 index 0000000..0b1a47c --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_pt_BR/index.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_pt_BR/map.jhm b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_pt_BR/map.jhm new file mode 100644 index 0000000..49afeb2 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_pt_BR/map.jhm @@ -0,0 +1,8 @@ + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_pt_BR/toc.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_pt_BR/toc.xml new file mode 100644 index 0000000..42708d9 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_pt_BR/toc.xml @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ro_RO/contents/help.html b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ro_RO/contents/help.html new file mode 100644 index 0000000..cc5b44f --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ro_RO/contents/help.html @@ -0,0 +1,23 @@ + + + + +AutoMacroBuilderForZAP + + + +

AutoMacroBuilderForZAP

+ +

About

+A ZAPROXY Add-on that allows testing of web application vulnerabilities by recording complex multi-step sequences. You can test applications that need to access pages in a specific order, such as shopping carts or registration of member information. +

+ +

Descriptions

+ +
    + The below links go to the page under https://github.com/gdgd009xcd/AutoMacroBuilderForZAP/wiki/

    +
  • OverView +
  • Basic Usage +
+ + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ro_RO/helpset.hs b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ro_RO/helpset.hs new file mode 100644 index 0000000..43380c5 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ro_RO/helpset.hs @@ -0,0 +1,41 @@ + + + + AutoMacroBuilderForZAP Add-On + + + automacrobuilder + + + + + TOC + + org.zaproxy.zap.extension.help.ZapTocView + toc.xml + + + + Index + + javax.help.IndexView + index.xml + + + + Search + + javax.help.SearchView + + JavaHelpSearch + + + + + Favorites + + javax.help.FavoritesView + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ro_RO/index.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ro_RO/index.xml new file mode 100644 index 0000000..0b1a47c --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ro_RO/index.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ro_RO/map.jhm b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ro_RO/map.jhm new file mode 100644 index 0000000..49afeb2 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ro_RO/map.jhm @@ -0,0 +1,8 @@ + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ro_RO/toc.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ro_RO/toc.xml new file mode 100644 index 0000000..42708d9 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ro_RO/toc.xml @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ru_RU/contents/help.html b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ru_RU/contents/help.html new file mode 100644 index 0000000..cc5b44f --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ru_RU/contents/help.html @@ -0,0 +1,23 @@ + + + + +AutoMacroBuilderForZAP + + + +

AutoMacroBuilderForZAP

+ +

About

+A ZAPROXY Add-on that allows testing of web application vulnerabilities by recording complex multi-step sequences. You can test applications that need to access pages in a specific order, such as shopping carts or registration of member information. +

+ +

Descriptions

+ +
    + The below links go to the page under https://github.com/gdgd009xcd/AutoMacroBuilderForZAP/wiki/

    +
  • OverView +
  • Basic Usage +
+ + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ru_RU/helpset.hs b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ru_RU/helpset.hs new file mode 100644 index 0000000..43380c5 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ru_RU/helpset.hs @@ -0,0 +1,41 @@ + + + + AutoMacroBuilderForZAP Add-On + + + automacrobuilder + + + + + TOC + + org.zaproxy.zap.extension.help.ZapTocView + toc.xml + + + + Index + + javax.help.IndexView + index.xml + + + + Search + + javax.help.SearchView + + JavaHelpSearch + + + + + Favorites + + javax.help.FavoritesView + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ru_RU/index.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ru_RU/index.xml new file mode 100644 index 0000000..0b1a47c --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ru_RU/index.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ru_RU/map.jhm b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ru_RU/map.jhm new file mode 100644 index 0000000..49afeb2 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ru_RU/map.jhm @@ -0,0 +1,8 @@ + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ru_RU/toc.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ru_RU/toc.xml new file mode 100644 index 0000000..42708d9 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ru_RU/toc.xml @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_si_LK/contents/help.html b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_si_LK/contents/help.html new file mode 100644 index 0000000..cc5b44f --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_si_LK/contents/help.html @@ -0,0 +1,23 @@ + + + + +AutoMacroBuilderForZAP + + + +

AutoMacroBuilderForZAP

+ +

About

+A ZAPROXY Add-on that allows testing of web application vulnerabilities by recording complex multi-step sequences. You can test applications that need to access pages in a specific order, such as shopping carts or registration of member information. +

+ +

Descriptions

+ +
    + The below links go to the page under https://github.com/gdgd009xcd/AutoMacroBuilderForZAP/wiki/

    +
  • OverView +
  • Basic Usage +
+ + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_si_LK/helpset.hs b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_si_LK/helpset.hs new file mode 100644 index 0000000..43380c5 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_si_LK/helpset.hs @@ -0,0 +1,41 @@ + + + + AutoMacroBuilderForZAP Add-On + + + automacrobuilder + + + + + TOC + + org.zaproxy.zap.extension.help.ZapTocView + toc.xml + + + + Index + + javax.help.IndexView + index.xml + + + + Search + + javax.help.SearchView + + JavaHelpSearch + + + + + Favorites + + javax.help.FavoritesView + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_si_LK/index.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_si_LK/index.xml new file mode 100644 index 0000000..0b1a47c --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_si_LK/index.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_si_LK/map.jhm b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_si_LK/map.jhm new file mode 100644 index 0000000..49afeb2 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_si_LK/map.jhm @@ -0,0 +1,8 @@ + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_si_LK/toc.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_si_LK/toc.xml new file mode 100644 index 0000000..42708d9 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_si_LK/toc.xml @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sk_SK/contents/help.html b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sk_SK/contents/help.html new file mode 100644 index 0000000..cc5b44f --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sk_SK/contents/help.html @@ -0,0 +1,23 @@ + + + + +AutoMacroBuilderForZAP + + + +

AutoMacroBuilderForZAP

+ +

About

+A ZAPROXY Add-on that allows testing of web application vulnerabilities by recording complex multi-step sequences. You can test applications that need to access pages in a specific order, such as shopping carts or registration of member information. +

+ +

Descriptions

+ +
    + The below links go to the page under https://github.com/gdgd009xcd/AutoMacroBuilderForZAP/wiki/

    +
  • OverView +
  • Basic Usage +
+ + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sk_SK/helpset.hs b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sk_SK/helpset.hs new file mode 100644 index 0000000..43380c5 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sk_SK/helpset.hs @@ -0,0 +1,41 @@ + + + + AutoMacroBuilderForZAP Add-On + + + automacrobuilder + + + + + TOC + + org.zaproxy.zap.extension.help.ZapTocView + toc.xml + + + + Index + + javax.help.IndexView + index.xml + + + + Search + + javax.help.SearchView + + JavaHelpSearch + + + + + Favorites + + javax.help.FavoritesView + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sk_SK/index.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sk_SK/index.xml new file mode 100644 index 0000000..0b1a47c --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sk_SK/index.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sk_SK/map.jhm b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sk_SK/map.jhm new file mode 100644 index 0000000..49afeb2 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sk_SK/map.jhm @@ -0,0 +1,8 @@ + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sk_SK/toc.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sk_SK/toc.xml new file mode 100644 index 0000000..42708d9 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sk_SK/toc.xml @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sl_SI/contents/help.html b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sl_SI/contents/help.html new file mode 100644 index 0000000..cc5b44f --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sl_SI/contents/help.html @@ -0,0 +1,23 @@ + + + + +AutoMacroBuilderForZAP + + + +

AutoMacroBuilderForZAP

+ +

About

+A ZAPROXY Add-on that allows testing of web application vulnerabilities by recording complex multi-step sequences. You can test applications that need to access pages in a specific order, such as shopping carts or registration of member information. +

+ +

Descriptions

+ +
    + The below links go to the page under https://github.com/gdgd009xcd/AutoMacroBuilderForZAP/wiki/

    +
  • OverView +
  • Basic Usage +
+ + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sl_SI/helpset.hs b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sl_SI/helpset.hs new file mode 100644 index 0000000..43380c5 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sl_SI/helpset.hs @@ -0,0 +1,41 @@ + + + + AutoMacroBuilderForZAP Add-On + + + automacrobuilder + + + + + TOC + + org.zaproxy.zap.extension.help.ZapTocView + toc.xml + + + + Index + + javax.help.IndexView + index.xml + + + + Search + + javax.help.SearchView + + JavaHelpSearch + + + + + Favorites + + javax.help.FavoritesView + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sl_SI/index.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sl_SI/index.xml new file mode 100644 index 0000000..0b1a47c --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sl_SI/index.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sl_SI/map.jhm b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sl_SI/map.jhm new file mode 100644 index 0000000..49afeb2 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sl_SI/map.jhm @@ -0,0 +1,8 @@ + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sl_SI/toc.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sl_SI/toc.xml new file mode 100644 index 0000000..42708d9 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sl_SI/toc.xml @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sq_AL/contents/help.html b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sq_AL/contents/help.html new file mode 100644 index 0000000..cc5b44f --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sq_AL/contents/help.html @@ -0,0 +1,23 @@ + + + + +AutoMacroBuilderForZAP + + + +

AutoMacroBuilderForZAP

+ +

About

+A ZAPROXY Add-on that allows testing of web application vulnerabilities by recording complex multi-step sequences. You can test applications that need to access pages in a specific order, such as shopping carts or registration of member information. +

+ +

Descriptions

+ +
    + The below links go to the page under https://github.com/gdgd009xcd/AutoMacroBuilderForZAP/wiki/

    +
  • OverView +
  • Basic Usage +
+ + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sq_AL/helpset.hs b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sq_AL/helpset.hs new file mode 100644 index 0000000..43380c5 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sq_AL/helpset.hs @@ -0,0 +1,41 @@ + + + + AutoMacroBuilderForZAP Add-On + + + automacrobuilder + + + + + TOC + + org.zaproxy.zap.extension.help.ZapTocView + toc.xml + + + + Index + + javax.help.IndexView + index.xml + + + + Search + + javax.help.SearchView + + JavaHelpSearch + + + + + Favorites + + javax.help.FavoritesView + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sq_AL/index.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sq_AL/index.xml new file mode 100644 index 0000000..0b1a47c --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sq_AL/index.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sq_AL/map.jhm b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sq_AL/map.jhm new file mode 100644 index 0000000..49afeb2 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sq_AL/map.jhm @@ -0,0 +1,8 @@ + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sq_AL/toc.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sq_AL/toc.xml new file mode 100644 index 0000000..42708d9 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sq_AL/toc.xml @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sr_CS/contents/help.html b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sr_CS/contents/help.html new file mode 100644 index 0000000..cc5b44f --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sr_CS/contents/help.html @@ -0,0 +1,23 @@ + + + + +AutoMacroBuilderForZAP + + + +

AutoMacroBuilderForZAP

+ +

About

+A ZAPROXY Add-on that allows testing of web application vulnerabilities by recording complex multi-step sequences. You can test applications that need to access pages in a specific order, such as shopping carts or registration of member information. +

+ +

Descriptions

+ +
    + The below links go to the page under https://github.com/gdgd009xcd/AutoMacroBuilderForZAP/wiki/

    +
  • OverView +
  • Basic Usage +
+ + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sr_CS/helpset.hs b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sr_CS/helpset.hs new file mode 100644 index 0000000..43380c5 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sr_CS/helpset.hs @@ -0,0 +1,41 @@ + + + + AutoMacroBuilderForZAP Add-On + + + automacrobuilder + + + + + TOC + + org.zaproxy.zap.extension.help.ZapTocView + toc.xml + + + + Index + + javax.help.IndexView + index.xml + + + + Search + + javax.help.SearchView + + JavaHelpSearch + + + + + Favorites + + javax.help.FavoritesView + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sr_CS/index.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sr_CS/index.xml new file mode 100644 index 0000000..0b1a47c --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sr_CS/index.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sr_CS/map.jhm b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sr_CS/map.jhm new file mode 100644 index 0000000..49afeb2 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sr_CS/map.jhm @@ -0,0 +1,8 @@ + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sr_CS/toc.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sr_CS/toc.xml new file mode 100644 index 0000000..42708d9 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sr_CS/toc.xml @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sr_SP/contents/help.html b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sr_SP/contents/help.html new file mode 100644 index 0000000..cc5b44f --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sr_SP/contents/help.html @@ -0,0 +1,23 @@ + + + + +AutoMacroBuilderForZAP + + + +

AutoMacroBuilderForZAP

+ +

About

+A ZAPROXY Add-on that allows testing of web application vulnerabilities by recording complex multi-step sequences. You can test applications that need to access pages in a specific order, such as shopping carts or registration of member information. +

+ +

Descriptions

+ +
    + The below links go to the page under https://github.com/gdgd009xcd/AutoMacroBuilderForZAP/wiki/

    +
  • OverView +
  • Basic Usage +
+ + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sr_SP/helpset.hs b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sr_SP/helpset.hs new file mode 100644 index 0000000..43380c5 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sr_SP/helpset.hs @@ -0,0 +1,41 @@ + + + + AutoMacroBuilderForZAP Add-On + + + automacrobuilder + + + + + TOC + + org.zaproxy.zap.extension.help.ZapTocView + toc.xml + + + + Index + + javax.help.IndexView + index.xml + + + + Search + + javax.help.SearchView + + JavaHelpSearch + + + + + Favorites + + javax.help.FavoritesView + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sr_SP/index.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sr_SP/index.xml new file mode 100644 index 0000000..0b1a47c --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sr_SP/index.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sr_SP/map.jhm b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sr_SP/map.jhm new file mode 100644 index 0000000..49afeb2 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sr_SP/map.jhm @@ -0,0 +1,8 @@ + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sr_SP/toc.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sr_SP/toc.xml new file mode 100644 index 0000000..42708d9 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_sr_SP/toc.xml @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_tr_TR/contents/help.html b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_tr_TR/contents/help.html new file mode 100644 index 0000000..cc5b44f --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_tr_TR/contents/help.html @@ -0,0 +1,23 @@ + + + + +AutoMacroBuilderForZAP + + + +

AutoMacroBuilderForZAP

+ +

About

+A ZAPROXY Add-on that allows testing of web application vulnerabilities by recording complex multi-step sequences. You can test applications that need to access pages in a specific order, such as shopping carts or registration of member information. +

+ +

Descriptions

+ +
    + The below links go to the page under https://github.com/gdgd009xcd/AutoMacroBuilderForZAP/wiki/

    +
  • OverView +
  • Basic Usage +
+ + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_tr_TR/helpset.hs b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_tr_TR/helpset.hs new file mode 100644 index 0000000..43380c5 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_tr_TR/helpset.hs @@ -0,0 +1,41 @@ + + + + AutoMacroBuilderForZAP Add-On + + + automacrobuilder + + + + + TOC + + org.zaproxy.zap.extension.help.ZapTocView + toc.xml + + + + Index + + javax.help.IndexView + index.xml + + + + Search + + javax.help.SearchView + + JavaHelpSearch + + + + + Favorites + + javax.help.FavoritesView + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_tr_TR/index.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_tr_TR/index.xml new file mode 100644 index 0000000..0b1a47c --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_tr_TR/index.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_tr_TR/map.jhm b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_tr_TR/map.jhm new file mode 100644 index 0000000..49afeb2 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_tr_TR/map.jhm @@ -0,0 +1,8 @@ + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_tr_TR/toc.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_tr_TR/toc.xml new file mode 100644 index 0000000..42708d9 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_tr_TR/toc.xml @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ur_PK/contents/help.html b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ur_PK/contents/help.html new file mode 100644 index 0000000..cc5b44f --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ur_PK/contents/help.html @@ -0,0 +1,23 @@ + + + + +AutoMacroBuilderForZAP + + + +

AutoMacroBuilderForZAP

+ +

About

+A ZAPROXY Add-on that allows testing of web application vulnerabilities by recording complex multi-step sequences. You can test applications that need to access pages in a specific order, such as shopping carts or registration of member information. +

+ +

Descriptions

+ +
    + The below links go to the page under https://github.com/gdgd009xcd/AutoMacroBuilderForZAP/wiki/

    +
  • OverView +
  • Basic Usage +
+ + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ur_PK/helpset.hs b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ur_PK/helpset.hs new file mode 100644 index 0000000..43380c5 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ur_PK/helpset.hs @@ -0,0 +1,41 @@ + + + + AutoMacroBuilderForZAP Add-On + + + automacrobuilder + + + + + TOC + + org.zaproxy.zap.extension.help.ZapTocView + toc.xml + + + + Index + + javax.help.IndexView + index.xml + + + + Search + + javax.help.SearchView + + JavaHelpSearch + + + + + Favorites + + javax.help.FavoritesView + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ur_PK/index.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ur_PK/index.xml new file mode 100644 index 0000000..0b1a47c --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ur_PK/index.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ur_PK/map.jhm b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ur_PK/map.jhm new file mode 100644 index 0000000..49afeb2 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ur_PK/map.jhm @@ -0,0 +1,8 @@ + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ur_PK/toc.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ur_PK/toc.xml new file mode 100644 index 0000000..42708d9 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_ur_PK/toc.xml @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_zh_CN/contents/help.html b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_zh_CN/contents/help.html new file mode 100644 index 0000000..cc5b44f --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_zh_CN/contents/help.html @@ -0,0 +1,23 @@ + + + + +AutoMacroBuilderForZAP + + + +

AutoMacroBuilderForZAP

+ +

About

+A ZAPROXY Add-on that allows testing of web application vulnerabilities by recording complex multi-step sequences. You can test applications that need to access pages in a specific order, such as shopping carts or registration of member information. +

+ +

Descriptions

+ +
    + The below links go to the page under https://github.com/gdgd009xcd/AutoMacroBuilderForZAP/wiki/

    +
  • OverView +
  • Basic Usage +
+ + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_zh_CN/helpset.hs b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_zh_CN/helpset.hs new file mode 100644 index 0000000..43380c5 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_zh_CN/helpset.hs @@ -0,0 +1,41 @@ + + + + AutoMacroBuilderForZAP Add-On + + + automacrobuilder + + + + + TOC + + org.zaproxy.zap.extension.help.ZapTocView + toc.xml + + + + Index + + javax.help.IndexView + index.xml + + + + Search + + javax.help.SearchView + + JavaHelpSearch + + + + + Favorites + + javax.help.FavoritesView + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_zh_CN/index.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_zh_CN/index.xml new file mode 100644 index 0000000..0b1a47c --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_zh_CN/index.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_zh_CN/map.jhm b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_zh_CN/map.jhm new file mode 100644 index 0000000..49afeb2 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_zh_CN/map.jhm @@ -0,0 +1,8 @@ + + + + + + diff --git a/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_zh_CN/toc.xml b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_zh_CN/toc.xml new file mode 100644 index 0000000..42708d9 --- /dev/null +++ b/addOns/automacrobuilder/src/main/javahelp/org/zaproxy/zap/extension/automacrobuilder/zap/resources/help_zh_CN/toc.xml @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/addOns/automacrobuilder/src/main/resources/burp/Bundle.properties b/addOns/automacrobuilder/src/main/resources/burp/Bundle.properties index 67e53a0..8d80f05 100644 --- a/addOns/automacrobuilder/src/main/resources/burp/Bundle.properties +++ b/addOns/automacrobuilder/src/main/resources/burp/Bundle.properties @@ -47,8 +47,14 @@ MacroBuilderUI.restore.text=Restore MacroBuilderUI.restore.tooltip.text=Restore the viewing current contents of request from original store MacroBuilderUI.update.text=Update MacroBuilderUI.update.tooltip.text=Update(Save) the viewing current contents of request to original store +MacroBuilderUI.decode.text=Decode +MacroBuilderUI.decode.tooltip.text=Decode currently selected text which is encoded with base64 or URLencode in messageView +MacroBuilderUI.copy.text=Copy +MacroBuilderUI.paste.text=Paste + MacroBuilderUI.describeMessageView.text=this area's component(messageView) was moved to "The information window"
which attached such as history tab.
You can display from menu:View->Show Tab->messageView Tab
or select popup menu "messageView" in above MacroRequestList area. MacroBuilderUI.burpTrackingParameterPanelDisabledLabel.text=This area's component(Tracking Parameter) is disabled because this addon doesn't require it. +MacroBuilderUI.requestEditorTitle.text=RequestHexEditor ParmGenAddParms.DialogTitle.text=Select Request parameter ParmGenAddParms.HowToRestoreTargetPathRegexInfoTitleLabel1.text=Target Path(Regex)\uFF1A\u3000To restore the default, select with the pull down below ParmGenAddParms.CancelBtn.text=Cancel @@ -205,7 +211,7 @@ ParmGenTokenJDialog.initTrackCheckBox.text=Initialize Tracking ParmGenTokenJDialog.initTrackCheckBox.toolTip.text=if you checked this,
\ remove existing tracking parameter and create new one.
\ If you experience tracking issues, please check it.\ - + CustomTrackingParamterConfigMain.DialogTitle.text=Custom Parameter Config CustomTrackingParamterConfigMain.CautionDescriptionLabel2.text=Note\uFF1APlease close this screen with the save or close button
\r\nbefore starting tool. CustomTrackingParamterConfigMain.REPEATER.text=repeater @@ -261,4 +267,8 @@ FetchResponseVal.getHeaderSucceeded.text=STEP[{0}] Succeeded to extract header v FetchResponseVal.getHeaderFailed.text=STEP[{0}] Failed to extract header[{1}] value({2}) from this request. FetchResponseVal.getTokenSucceeded.text=STEP[{0}] Succeeded to extract tracking token value.\n [{1}={2}]\n from this {3}. FetchResponseVal.getTokenFailed.text=STEP[{0}] Failed to extract tracking token[{1}]({2}) from this {3}. +DecoderSelector.dialog.title.text=DecoderSelector +DecoderSelector.nobase64.info.text=original is Not Base64 +DecoderSelector.nourl.info.text=original is Not URLencoded + diff --git a/addOns/automacrobuilder/src/main/resources/org/zaproxy/zap/extension/automacrobuilder/zap/resources/Messages.properties b/addOns/automacrobuilder/src/main/resources/org/zaproxy/zap/extension/automacrobuilder/zap/resources/Messages.properties index 55fddcd..fdeb61e 100644 --- a/addOns/automacrobuilder/src/main/resources/org/zaproxy/zap/extension/automacrobuilder/zap/resources/Messages.properties +++ b/addOns/automacrobuilder/src/main/resources/org/zaproxy/zap/extension/automacrobuilder/zap/resources/Messages.properties @@ -14,9 +14,12 @@ autoMacroBuilder.PopUpItemSingleSend.title.text=SendMessage autoMacroBuilder.PopUpItemSingleSend.Tooltip.text=Send Selected httpMessage. result is shown on messageView autoMacroBuilder.popup.title.PopupMenuAdd2MacroBuilder=AddToMacroBuilder autoMacroBuilder.MessageViewStatusPanel.title.text=messageView - autoMacroBuilder.CloseXbtnTabPanel.closeJButtonToolTip.text=purge autoMacroBuilder.MacroBuilderUI.addNewTabToolTip.text=add NewTab +autoMacroBuilder.CustomVectorInserter.label.tabname.text=DecodeVector +autoMacroBuilder.CustomVectorInserter.infoLabel.title.text=this checkbox disables all of the input vectors except those you manually define on this tab +autoMacroBuilder.CustomVectorInserter.nonCustom.title.text=Disable Non-custom Input Vectors + EnvironmentVariables.loadMacroBuilderJSONFileChooser.filenotfound.message.text=file %s not found EnvironmentVariables.loadMacroBuilderJSONFileChooser.filenotfound.title.text=ERROR EnvironmentVariables.loadMacroBuilderJSONFileChooser.noaccept.message.text=file %s suffix name must be "%s" @@ -26,3 +29,4 @@ EnvironmentVariables.saveMacroBuilderJSONFileChooser.confirm.title.text=Save As EnvironmentVariables.saveMacroBuilderJSONFileChooser.noaccept.message.text=file %s is not "%s" file. EnvironmentVariables.saveMacroBuilderJSONFileChooser.noaccept.title.text=ERROR + diff --git a/addOns/automacrobuilder/src/main/resources/org/zaproxy/zap/extension/automacrobuilder/zap/resources/Messages_ja_JP.properties b/addOns/automacrobuilder/src/main/resources/org/zaproxy/zap/extension/automacrobuilder/zap/resources/Messages_ja_JP.properties index ea7820d..0903b19 100644 --- a/addOns/automacrobuilder/src/main/resources/org/zaproxy/zap/extension/automacrobuilder/zap/resources/Messages_ja_JP.properties +++ b/addOns/automacrobuilder/src/main/resources/org/zaproxy/zap/extension/automacrobuilder/zap/resources/Messages_ja_JP.properties @@ -15,8 +15,10 @@ autoMacroBuilder.PopUpItemSingleSend.Tooltip.text=\u9078\u629E\u3057\u305F\u30E1 autoMacroBuilder.popup.title.PopupMenuAdd2MacroBuilder=\u30DE\u30AF\u30ED\u30D3\u30EB\u30C0\u306B\u8FFD\u52A0 autoMacroBuilder.MessageViewStatusPanel.title.text=\u30E1\u30C3\u30BB\u30FC\u30B8\u30D3\u30E5\u30FC autoMacroBuilder.CloseXbtnTabPanel.closeJButtonToolTip.text=\u524A\u9664 +autoMacroBuilder.CustomVectorInserter.infoLabel.title.text=\u30AB\u30B9\u30BF\u30E0\u30D9\u30AF\u30C8\u30EB\u3092\u8FFD\u52A0\u3059\u308B\u3068\u30AB\u30B9\u30BF\u30E0\u30D9\u30AF\u30C8\u30EB\u4EE5\u5916\u306EInputVector\u306E\u691C\u67FB\u306F\u3057\u307E\u305B\u3093\u3002 autoMacroBuilder.MacroBuilderUI.addNewTabToolTip.text=\u30BF\u30D6\u8FFD\u52A0 +autoMacroBuilder.CustomVectorInserter.label.tabname.text=\u30C7\u30B3\u30FC\u30C9\u30D9\u30AF\u30C8\u30EB EnvironmentVariables.loadMacroBuilderJSONFileChooser.filenotfound.message.text=\u30D5\u30A1\u30A4\u30EB %s \u304C\u307F\u3064\u304B\u308A\u307E\u305B\u3093 EnvironmentVariables.loadMacroBuilderJSONFileChooser.filenotfound.title.text=\u30A8\u30E9\u30FC EnvironmentVariables.loadMacroBuilderJSONFileChooser.noaccept.message.text=\u30D5\u30A1\u30A4\u30EB %s \u306E\u30D5\u30A1\u30A4\u30EB\u62E1\u5F35\u5B50\u304C"%s"\u3068\u7570\u306A\u308A\u307E\u3059