diff --git a/BappDescription.html b/BappDescription.html
new file mode 100644
index 0000000..8f1f997
--- /dev/null
+++ b/BappDescription.html
@@ -0,0 +1,17 @@
+
This extension adds a new tab to Burp's UI, for taking notes and organizing external files that are created during penetration
+testing. You can create text documents and spreadsheets directly within Burp,
+and send HTTP requests and responses directly to new or existing files.
+Within the Notes tab, you can:
+
+ - Save Notes: Save any currently open documents to a file.
+ - Load Notes: Load a previously saved set of notes from a file.
+ - New Text: Add a tab with a new text document.
+ - Import Text: Load the contents of a text document.
+ - New Spreadsheet: Add a tab with a new spreadsheet.
+ - Import Spreadsheet: Load the contents of a CSV document.
+ - You can also export individual notes tabs to an external file.
+
+
+From anywhere within Burp, you can use the context menu to send selected
+items directly to the Notes tab,
+to either a new or existing document.
diff --git a/BappManifest.bmf b/BappManifest.bmf
new file mode 100644
index 0000000..3523b03
--- /dev/null
+++ b/BappManifest.bmf
@@ -0,0 +1,12 @@
+Uuid: b150353ea3d54f61bdc482a4a8470356
+ExtensionType: 1
+Name: Notes
+RepoName: notes
+ScreenVersion: 1.0
+SerialVersion: 1
+MinPlatformVersion: 0
+ProOnly: False
+Author: Austin Lane
+ShortDescription: Lets you take notes and manage external documents from within Burp.
+EntryPoint: build/jar/BurpNotesExtension.jar
+BuildCommand: rm -rf build/classes/* build/jar/* && ant jar
diff --git a/build/jar/BurpNotesExtension.jar b/build/jar/BurpNotesExtension.jar
index 91d8e35..f7e2ce4 100644
Binary files a/build/jar/BurpNotesExtension.jar and b/build/jar/BurpNotesExtension.jar differ
diff --git a/src/com/trustwave/burp/NotesExtensionOperations.java b/src/com/trustwave/burp/NotesExtensionOperations.java
index 783bd27..8e6ef09 100644
--- a/src/com/trustwave/burp/NotesExtensionOperations.java
+++ b/src/com/trustwave/burp/NotesExtensionOperations.java
@@ -20,7 +20,11 @@
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.FileInputStream;
import java.io.PrintWriter;
+import java.io.OutputStreamWriter;
+import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -138,12 +142,12 @@ public void SaveNotes(){
//callbacks.saveExtensionSettings(FILE_SAVE_SETTING, currentNotesFile.getPath()); //Update save location in extension settings
try{
//Create our various Writers
- FileWriter fw = new FileWriter(f);
- CSVWriter writer = new CSVWriter(fw);
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f), "UTF-8"));
+ CSVWriter writer = new CSVWriter(bw);
//Write out to file and close
writer.writeAll(data);
writer.close();
- fw.close();
+ bw.close();
} catch(IOException exc){
errout.println(exc.getMessage());
}
@@ -164,7 +168,7 @@ public void LoadNotes(){
currentNotesFile = file; //Remember the file just opened for saving later
ArrayList spreadData = new ArrayList();
if(file.exists() && file.isFile() && file.canRead()){
- CSVReader reader = new CSVReader(new FileReader(file));
+ CSVReader reader = new CSVReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
String[] nextLine;
while((nextLine = reader.readNext()) != null){
spreadData.add(nextLine);
@@ -456,8 +460,7 @@ public void promptUseTemplate(int templateType){
if((file = GetFileFromDialog(false, "TEMPLATE.txt")) != null){
textTemplateFile = "";
if(file.exists() && file.isFile() && file.canRead()){
- FileReader input = new FileReader(file);
- BufferedReader br = new BufferedReader(input);
+ BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8"));
String strLine;
//Read File Line By Line
while ((strLine = br.readLine()) != null) {
@@ -472,7 +475,7 @@ public void promptUseTemplate(int templateType){
if((file = GetFileFromDialog(false, "TEMPLATE.csv")) != null){
spreadsheetTemplateFile = new ArrayList();
if(file.exists() && file.isFile() && file.canRead()){
- CSVReader reader = new CSVReader(new FileReader(file));
+ CSVReader reader = new CSVReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
String[] nextLine;
while((nextLine = reader.readNext()) != null){
spreadsheetTemplateFile.add(nextLine);
@@ -540,12 +543,11 @@ public void ExportTextTab(int index){
File f;
if((f = GetFileFromDialog(true, "TEMPLATE.txt")) != null){
try{
- // Create file
- FileWriter fstream = new FileWriter(f);
- BufferedWriter out = new BufferedWriter(fstream);
- out.write(data);
- //Close the output stream
- out.close();
+ PrintWriter pw = new PrintWriter(
+ new BufferedWriter(new OutputStreamWriter(
+ new FileOutputStream(f), "UTF-8")));
+ pw.print(data);
+ pw.close();
} catch (Exception exc){//Catch exception if any
errout.println(exc.getMessage());
}
@@ -579,13 +581,12 @@ public void ExportSpreadsheetTab(int index){
File f;
if((f = GetFileFromDialog(true, "TEMPLATE.csv")) != null){
try{
- //Create our various Writers
- FileWriter fw = new FileWriter(f);
- CSVWriter writer = new CSVWriter(fw);
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f), "UTF-8"));
+ CSVWriter writer = new CSVWriter(bw);
//Write out to file and close
writer.writeAll(data);
writer.close();
- fw.close();
+ bw.close();
} catch(IOException exc){
errout.println(exc.getMessage());
}