From 031d5f470b494936d703d0ad44a405822f618710 Mon Sep 17 00:00:00 2001 From: William Shackleton Date: Mon, 12 May 2014 22:39:08 +0100 Subject: [PATCH] Added word deletion spoof --- res/raw/js_removewords | 18 +++++++++ res/values/spoofs.xml | 3 +- .../netspoofer/config/IOHelpers.java | 13 ++++--- .../netspoofer/config/RunManager.java | 1 + .../netspoofer/spoofs/ContentChange.java | 39 +++++++++++++++++-- 5 files changed, 64 insertions(+), 10 deletions(-) create mode 100644 res/raw/js_removewords diff --git a/res/raw/js_removewords b/res/raw/js_removewords new file mode 100644 index 0000000..c44b27a --- /dev/null +++ b/res/raw/js_removewords @@ -0,0 +1,18 @@ + + + \ No newline at end of file diff --git a/res/values/spoofs.xml b/res/values/spoofs.xml index db0ae52..22e2efd 100644 --- a/res/values/spoofs.xml +++ b/res/values/spoofs.xml @@ -51,7 +51,8 @@ Flip content Turn the content of all websites upside down - Websites experience gravity All elements on websites fall to the bottom of the page + Delete random words + Words disappear from pages every second diff --git a/src/uk/digitalsquid/netspoofer/config/IOHelpers.java b/src/uk/digitalsquid/netspoofer/config/IOHelpers.java index 20fd933..0c34a84 100644 --- a/src/uk/digitalsquid/netspoofer/config/IOHelpers.java +++ b/src/uk/digitalsquid/netspoofer/config/IOHelpers.java @@ -27,6 +27,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.io.StringWriter; import java.util.ArrayList; import java.util.List; @@ -40,12 +41,14 @@ private IOHelpers() {} * @throws IOException */ public static final String readFileContents(InputStream is) throws IOException { - StringBuffer out = new StringBuffer(); - byte[] b = new byte[256]; - for (int n; (n = is.read(b)) != -1;) { - out.append(new String(b, 0, n)); + StringWriter out = new StringWriter(); + BufferedReader reader = new BufferedReader(new InputStreamReader(is)); + String line; + while((line = reader.readLine()) != null) { + out.append(line); + out.append('\n'); } - is.close(); + reader.close(); return out.toString(); } diff --git a/src/uk/digitalsquid/netspoofer/config/RunManager.java b/src/uk/digitalsquid/netspoofer/config/RunManager.java index 1f48e5f..2a591aa 100644 --- a/src/uk/digitalsquid/netspoofer/config/RunManager.java +++ b/src/uk/digitalsquid/netspoofer/config/RunManager.java @@ -78,6 +78,7 @@ public ArrayList getSpoofList() { spoofs.add(new ContentChange(context, ContentChange.MODE_FLIP)); spoofs.add(new ContentChange(context, ContentChange.MODE_GRAVITY)); + spoofs.add(new ContentChange(context, ContentChange.MODE_DELETE)); Collections.sort(spoofs); diff --git a/src/uk/digitalsquid/netspoofer/spoofs/ContentChange.java b/src/uk/digitalsquid/netspoofer/spoofs/ContentChange.java index c669425..899b6c0 100644 --- a/src/uk/digitalsquid/netspoofer/spoofs/ContentChange.java +++ b/src/uk/digitalsquid/netspoofer/spoofs/ContentChange.java @@ -1,27 +1,35 @@ package uk.digitalsquid.netspoofer.spoofs; +import java.io.IOException; + import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.nodes.Node; import org.jsoup.nodes.TextNode; import uk.digitalsquid.netspoofer.R; +import uk.digitalsquid.netspoofer.config.IOHelpers; import uk.digitalsquid.netspoofer.config.Lists; +import uk.digitalsquid.netspoofer.config.LogConf; import android.content.Context; +import android.content.res.Resources.NotFoundException; +import android.util.Log; -public class ContentChange extends HtmlEditorSpoof { +public class ContentChange extends HtmlEditorSpoof implements LogConf { private static final long serialVersionUID = 792590861534877480L; public static final int MODE_FLIP = 1; public static final int MODE_GRAVITY = 2; + public static final int MODE_DELETE = 3; private static String getTitle(Context context, int mode) { switch(mode) { case MODE_FLIP: return context.getResources().getString(R.string.spoof_content_flip); case MODE_GRAVITY: - return context.getResources().getString(R.string.spoof_gravity); + case MODE_DELETE: + return context.getResources().getString(R.string.spoof_delete); default: return "Unknown image spoof"; } @@ -32,16 +40,38 @@ private static String getDescription(Context context, int mode) { return context.getResources().getString(R.string.spoof_content_flip_description); case MODE_GRAVITY: return context.getResources().getString(R.string.spoof_gravity_description); + case MODE_DELETE: + return context.getResources().getString(R.string.spoof_delete_description); default: return ""; } } private final int mode; + + private final String js; public ContentChange(Context context, int mode) { super(getTitle(context, mode), getDescription(context, mode)); this.mode = mode; + switch(mode) { + default: + case MODE_GRAVITY: + js = ""; + break; + case MODE_DELETE: + String payload = ""; + try { + payload = IOHelpers.readFileContents( + context.getResources().openRawResource(R.raw.js_removewords)); + } catch (NotFoundException e) { + Log.w(TAG, "Failed to load js_removewords payload", e); + } catch (IOException e) { + Log.w(TAG, "Failed to load js_removewords payload", e); + } + js = payload; + break; + } } @Override @@ -51,9 +81,10 @@ protected void modifyDocument(Document document, Element body) { modifyElement(body); break; case MODE_GRAVITY: - document.select("head").append( - ""); + case MODE_DELETE: + document.select("head").append(js); break; + } }