From 01c041582455df1f3f69c57d52cc735f4c72bc43 Mon Sep 17 00:00:00 2001
From: ga
Date: Sat, 3 Oct 2015 19:41:52 +0200
Subject: [PATCH 01/49] Avoid duplicated open ports.
When performing several Service inspector on the same target, due to a race condition it was adding the same results multiple times.
---
.../src/org/csploit/android/net/Target.java | 19 +++++++++++--------
1 file changed, 11 insertions(+), 8 deletions(-)
diff --git a/cSploit/src/org/csploit/android/net/Target.java b/cSploit/src/org/csploit/android/net/Target.java
index 8c6c54dbbc..6fef98df50 100644
--- a/cSploit/src/org/csploit/android/net/Target.java
+++ b/cSploit/src/org/csploit/android/net/Target.java
@@ -634,19 +634,22 @@ public String getHostname(){
public void addOpenPort(Port port){
synchronized (mPorts) {
- if (port.service != null) { // update service but preserve different versions
- for (Port p : mPorts) {
- if (p.number == port.number && (p.service == null || p.service.isEmpty())) {
+ // we cannot just check if mPorts already has the new port (contains(port)), because if the new port has new fields,
+ // it won't be the same and we'll add duplicated ports.
+ for (Port p : mPorts){
+ // port considered added: same port + same protocol -> 22:tcp, 53:udp
+ if (p.number == port.number && p.protocol == port.protocol){
+ if ((port.service != null && !port.service.isEmpty()) && (p.service == null || p.service.isEmpty())) {
p.service = port.service;
+ }
+ if ((port.version != null && !port.version.isEmpty()) && (p.version == null || p.version.isEmpty())) {
p.version = port.version;
- return;
}
+ return;
}
- mPorts.add(port);
- } else {
- if (!mPorts.contains(port))
- mPorts.add(port);
}
+
+ mPorts.add(port);
}
}
From de07e3f928234312d886956af61742136f16267f Mon Sep 17 00:00:00 2001
From: ga
Date: Sat, 3 Oct 2015 22:02:56 +0200
Subject: [PATCH 02/49] Allow to select a target from the Simple Sniff module.
When using the Simple sniff module to see which hosts are sending traffic, allow to select them as target by clicking on on them.
---
.../src/org/csploit/android/core/System.java | 7 ++-
.../csploit/android/plugins/mitm/Sniffer.java | 61 ++++++++++++++++---
2 files changed, 55 insertions(+), 13 deletions(-)
diff --git a/cSploit/src/org/csploit/android/core/System.java b/cSploit/src/org/csploit/android/core/System.java
index e6673041eb..8cf9144bfe 100644
--- a/cSploit/src/org/csploit/android/core/System.java
+++ b/cSploit/src/org/csploit/android/core/System.java
@@ -21,9 +21,7 @@
import android.app.Activity;
import android.app.ActivityManager;
import android.app.ActivityManager.RunningServiceInfo;
-import android.app.AlertDialog;
import android.content.Context;
-import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageInfo;
@@ -32,7 +30,6 @@
import android.net.wifi.WifiManager;
import android.net.wifi.WifiManager.WifiLock;
import android.os.Build;
-import android.os.Bundle;
import android.os.Environment;
import android.os.PowerManager;
import android.os.PowerManager.WakeLock;
@@ -1032,6 +1029,10 @@ public static Target getTarget(int index){
return mTargets.get(index);
}
+ public static int getTargetPosition (Target t) {
+ return mTargets.indexOf(t);
+ }
+
public static boolean hasTarget(Target target){
return mTargets.contains(target);
}
diff --git a/cSploit/src/org/csploit/android/plugins/mitm/Sniffer.java b/cSploit/src/org/csploit/android/plugins/mitm/Sniffer.java
index 021e1f3361..3e785a972e 100644
--- a/cSploit/src/org/csploit/android/plugins/mitm/Sniffer.java
+++ b/cSploit/src/org/csploit/android/plugins/mitm/Sniffer.java
@@ -19,6 +19,7 @@
package org.csploit.android.plugins.mitm;
import android.content.Context;
+import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
@@ -26,7 +27,6 @@
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
-import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
@@ -38,12 +38,12 @@
import android.widget.Toast;
import android.widget.ToggleButton;
+import org.csploit.android.ActionActivity;
import org.csploit.android.R;
import org.csploit.android.core.Child;
import org.csploit.android.core.ChildManager;
import org.csploit.android.core.System;
import org.csploit.android.gui.dialogs.ConfirmDialog;
-import org.csploit.android.gui.dialogs.ConfirmDialog.ConfirmDialogListener;
import org.csploit.android.gui.dialogs.ErrorDialog;
import org.csploit.android.net.Target;
import org.csploit.android.plugins.mitm.SpoofSession.OnSessionReadyListener;
@@ -307,7 +307,43 @@ public void onNothingSelected(AdapterView> arg0){
mListView.setAdapter(mAdapter);
- mSniffToggleButton.setOnClickListener(new OnClickListener(){
+ mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+ @Override
+ public void onItemClick(AdapterView> parent, View view, int position, long id) {
+ final Target t = System.getTargetByAddress(mAdapter.getByPosition(position).mAddress);
+
+ new ConfirmDialog("Select target", "Select " + t.getAddress().getHostAddress() + "?", Sniffer.this, new ConfirmDialog.ConfirmDialogListener() {
+ @Override
+ public void onConfirm() {
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ setStoppedState();
+
+ startActivity(new Intent(Sniffer.this,
+ ActionActivity.class));
+
+ overridePendingTransition(R.anim.slide_in_left,
+ R.anim.slide_out_left);
+ }
+ }).start();
+
+ System.setCurrentTarget(System.getTargetPosition(t));
+ Toast.makeText(Sniffer.this,
+ getString(R.string.selected_) + System.getCurrentTarget(),
+ Toast.LENGTH_SHORT).show();
+ }
+
+ @Override
+ public void onCancel() {
+ }
+ }).show();
+
+
+ }
+ });
+
+ mSniffToggleButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
if(mRunning){
@@ -319,7 +355,7 @@ public void onClick(View v){
}
);
- new ConfirmDialog( getString(R.string.file_output), getString(R.string.question_save_to_pcap), this, new ConfirmDialogListener(){
+ new ConfirmDialog( getString(R.string.file_output), getString(R.string.question_save_to_pcap), this, new ConfirmDialog.ConfirmDialogListener(){
@Override
public void onConfirm(){
mDumpToFile = true;
@@ -357,15 +393,20 @@ private void setStoppedState(){
mTcpdumpProcess.kill();
mTcpdumpProcess = null;
}
- mSpoofSession.stop();
+ Sniffer.this.runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ mSpoofSession.stop();
- mSniffProgress.setVisibility(View.INVISIBLE);
+ mSniffProgress.setVisibility(View.INVISIBLE);
- mRunning = false;
- mSniffToggleButton.setChecked(false);
- }
+ mRunning = false;
+ mSniffToggleButton.setChecked(false);
+ }
+ });
+ }
- private void setSpoofErrorState(final String error){
+ private void setSpoofErrorState(final String error){
Sniffer.this.runOnUiThread(new Runnable(){
@Override
public void run(){
From 3ba8717fcc77063d74d94ec206851474d9bdfb20 Mon Sep 17 00:00:00 2001
From: x-Ai
Date: Mon, 5 Oct 2015 02:14:34 +0800
Subject: [PATCH 03/49] Update strings.xml
---
cSploit/res/values-zh-rCN/strings.xml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/cSploit/res/values-zh-rCN/strings.xml b/cSploit/res/values-zh-rCN/strings.xml
index a703113784..704c22f622 100644
--- a/cSploit/res/values-zh-rCN/strings.xml
+++ b/cSploit/res/values-zh-rCN/strings.xml
@@ -116,6 +116,9 @@ If not, see http://www.gnu.org/licenses/.
无效的文件名称。
发生了未知的错误,请尝试选择一个新的目标。
+ DNS欺骗
+ 重定向连接到指定的web/IP
+ 储存
已经选择
未找到]]>
没有在当前目标找到任何开放的端口,请先运行服务检查工具。
@@ -452,6 +455,8 @@ If not, see http://www.gnu.org/licenses/.
高级
启用 MSF
启用 MetaSploit 框架
+ MSF 状态通知
+ 显示MSF RPC连接状态
删除 MSF
从您的设备删除 MetaSploit 框架
包含 MetaSploit 框架的文件夹。
From 2b10d4d3bb85de392f873e9faa371fcffd5674a5 Mon Sep 17 00:00:00 2001
From: tux_mind
Date: Sun, 4 Oct 2015 20:31:05 +0200
Subject: [PATCH 04/49] increase mac vendor lookup using an integer as key
instead of a string
---
.../src/org/csploit/android/core/System.java | 9 +++----
.../android/helpers/NetworkHelper.java | 24 +++++++++++++++++++
2 files changed, 29 insertions(+), 4 deletions(-)
create mode 100644 cSploit/src/org/csploit/android/helpers/NetworkHelper.java
diff --git a/cSploit/src/org/csploit/android/core/System.java b/cSploit/src/org/csploit/android/core/System.java
index e6673041eb..1918705efa 100644
--- a/cSploit/src/org/csploit/android/core/System.java
+++ b/cSploit/src/org/csploit/android/core/System.java
@@ -44,6 +44,7 @@
import org.csploit.android.R;
import org.csploit.android.WifiScannerActivity;
import org.csploit.android.gui.dialogs.FatalDialog;
+import org.csploit.android.helpers.NetworkHelper;
import org.csploit.android.net.Endpoint;
import org.csploit.android.net.GitHubParser;
import org.csploit.android.net.Network;
@@ -116,7 +117,7 @@ public class System
private static int mCurrentTarget = 0;
private static Map mServices = null;
private static Map mPorts = null;
- private static Map mVendors = null;
+ private static Map mVendors = null;
private static SparseIntArray mOpenPorts = null;
// registered plugins
@@ -558,7 +559,7 @@ private static void preloadServices(){
private static void preloadVendors(){
if(mVendors == null){
try{
- mVendors = new HashMap();
+ mVendors = new HashMap<>();
@SuppressWarnings("ConstantConditions")
FileInputStream fstream = new FileInputStream(mContext.getFilesDir().getAbsolutePath() + "/tools/nmap/nmap-mac-prefixes");
@@ -572,7 +573,7 @@ private static void preloadVendors(){
String[] tokens = line.split(" ", 2);
if(tokens.length == 2)
- mVendors.put(tokens[0], tokens[1]);
+ mVendors.put(NetworkHelper.getOUICode(tokens[0]), tokens[1]);
}
}
@@ -940,7 +941,7 @@ public static String getMacVendor(byte[] mac){
preloadVendors();
if(mac != null && mac.length >= 3)
- return mVendors.get(String.format("%02X%02X%02X", mac[0], mac[1], mac[2]));
+ return mVendors.get(NetworkHelper.getOUICode(mac));
else
return null;
}
diff --git a/cSploit/src/org/csploit/android/helpers/NetworkHelper.java b/cSploit/src/org/csploit/android/helpers/NetworkHelper.java
new file mode 100644
index 0000000000..fe2f356345
--- /dev/null
+++ b/cSploit/src/org/csploit/android/helpers/NetworkHelper.java
@@ -0,0 +1,24 @@
+package org.csploit.android.helpers;
+
+/**
+ * A class that provide some useful network-related static methods
+ */
+public final class NetworkHelper {
+ /**
+ * translate an OUI to it's integer representation
+ * @param macAddress the 6-byte array that represent a mac address
+ * @return the OUI integer
+ */
+ public static int getOUICode(byte[] macAddress) {
+ return (macAddress[2] << 16) & (macAddress[1] << 8) & macAddress[0];
+ }
+
+ /**
+ * translate an OUI to it's integer representation
+ * @param hexOui a string that hold OUI in hexadecimal form ( e.g. "ACDE48" )
+ * @return the OUI integer
+ */
+ public static int getOUICode(String hexOui) {
+ return Integer.parseInt(hexOui, 16);
+ }
+}
From 399e0fef079e0cd7df93813bc20cc2ff9e2d2420 Mon Sep 17 00:00:00 2001
From: tux_mind
Date: Sun, 4 Oct 2015 22:46:25 +0200
Subject: [PATCH 05/49] log why an exploit fails to start.
---
.../org/csploit/android/net/metasploit/MsfExploit.java | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/cSploit/src/org/csploit/android/net/metasploit/MsfExploit.java b/cSploit/src/org/csploit/android/net/metasploit/MsfExploit.java
index e2eecb7cf9..c24e553f60 100644
--- a/cSploit/src/org/csploit/android/net/metasploit/MsfExploit.java
+++ b/cSploit/src/org/csploit/android/net/metasploit/MsfExploit.java
@@ -226,8 +226,11 @@ private void retrievePayloads() throws IOException, RPCClient.MSFException {
@SuppressWarnings("unchecked")
public boolean launch() throws RPCClient.MSFException {
- if(System.getMsfRpc()==null || options.isEmpty())
+ if(System.getMsfRpc()==null || options.isEmpty()) {
+ Logger.info("exploit launch failed: " + (options.isEmpty() ?
+ "missing options" : "RPC client not available"));
return false;
+ }
try {
Map opts = new HashMap();
@@ -248,10 +251,13 @@ public boolean launch() throws RPCClient.MSFException {
Map res = (Map) System.getMsfRpc().call("module.execute","exploit", name, opts);
- if(res == null)
+ if(res == null) {
+ Logger.info("exploit launch failed: null response from RPC");
return false;
+ }
if(res.get("job_id") == null) {
+ Logger.info("exploit launch failed: 'job_id' not found or null");
return false;
}
From 7bd9dc4ac848cd24f2953c127c8c767da2bd16d0 Mon Sep 17 00:00:00 2001
From: tux_mind
Date: Sun, 4 Oct 2015 23:05:19 +0200
Subject: [PATCH 06/49] reformat code
---
.../android/plugins/ExploitFinder.java | 668 +++++++++---------
1 file changed, 334 insertions(+), 334 deletions(-)
diff --git a/cSploit/src/org/csploit/android/plugins/ExploitFinder.java b/cSploit/src/org/csploit/android/plugins/ExploitFinder.java
index 742fd9519a..28dcc86ddf 100644
--- a/cSploit/src/org/csploit/android/plugins/ExploitFinder.java
+++ b/cSploit/src/org/csploit/android/plugins/ExploitFinder.java
@@ -66,373 +66,373 @@
import static org.csploit.android.net.metasploit.MsfExploit.Ranking;
public class ExploitFinder extends Plugin {
- private ToggleButton mSearchToggleButton = null;
- private ProgressBar mSearchProgress = null;
- private ListView mListView = null;
- private Future job = null;
- private ExploitAdapter mAdapter = null;
-
- private static ExploitFinder UIThread = null;
-
- public class ExploitAdapter extends ArrayAdapter {
- class ExploitHolder {
- ImageView itemImage;
- TextView itemTitle;
- TextView itemDescription;
- TextView itemRanking;
- }
+ private ToggleButton mSearchToggleButton = null;
+ private ProgressBar mSearchProgress = null;
+ private ListView mListView = null;
+ private Future job = null;
+ private ExploitAdapter mAdapter = null;
+
+ private static ExploitFinder UIThread = null;
+
+ public class ExploitAdapter extends ArrayAdapter {
+ class ExploitHolder {
+ ImageView itemImage;
+ TextView itemTitle;
+ TextView itemDescription;
+ TextView itemRanking;
+ }
- public ExploitAdapter() {
- super(ExploitFinder.this, R.layout.plugin_exploit_finder_item, (List) System.getCurrentExploits());
- }
+ public ExploitAdapter() {
+ super(ExploitFinder.this, R.layout.plugin_exploit_finder_item, (List) System.getCurrentExploits());
+ }
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- View row = convertView;
- ExploitHolder holder;
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ View row = convertView;
+ ExploitHolder holder;
- if (row == null) {
- LayoutInflater inflater = (LayoutInflater) ExploitFinder.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- row = inflater.inflate(R.layout.plugin_exploit_finder_item, parent, false);
+ if (row == null) {
+ LayoutInflater inflater = (LayoutInflater) ExploitFinder.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ row = inflater.inflate(R.layout.plugin_exploit_finder_item, parent, false);
- holder = new ExploitHolder();
+ holder = new ExploitHolder();
- holder.itemImage = (ImageView) row.findViewById(R.id.itemIcon);
- holder.itemTitle = (TextView) row.findViewById(R.id.itemTitle);
- holder.itemDescription = (TextView) row.findViewById(R.id.itemDescription);
- holder.itemRanking = (TextView) row.findViewById(R.id.itemRanking);
+ holder.itemImage = (ImageView) row.findViewById(R.id.itemIcon);
+ holder.itemTitle = (TextView) row.findViewById(R.id.itemTitle);
+ holder.itemDescription = (TextView) row.findViewById(R.id.itemDescription);
+ holder.itemRanking = (TextView) row.findViewById(R.id.itemRanking);
- row.setTag(holder);
- } else {
- holder = (ExploitHolder) row.getTag();
- }
+ row.setTag(holder);
+ } else {
+ holder = (ExploitHolder) row.getTag();
+ }
- Exploit exploit = getItem(position);
-
- if (exploit instanceof MsfExploit) {
- holder.itemTitle.setText
- (
- Html.fromHtml
- (
- "" + exploit.getName() + ""
- )
- );
- final Ranking rank = ((MsfExploit) exploit).getRank();
- String rString = "Ranking: ";
- String color;
- switch (rank) {
- case Low:
- rString+= "Low";
- color = "red";
- break;
- case Average:
- rString+= "Average";
- color = "grey4";
- break;
- case Normal:
- rString+= "Normal";
- color = "grey4";
- break;
- case Good:
- rString+= "Good";
- color = "blue";
- break;
- case Great:
- rString+= "Great";
- color = "green";
- break;
- case Excellent:
- rString+= "Excellent";
- color = "green";
- break;
- case Manual:
- default:
- rString+= "Manual";
- color = "gray4";
- break;
- }
-
- holder.itemRanking.setText(Html.fromHtml("" + rString + ""));
- } else
- holder.itemTitle.setText(exploit.getName());
-
- holder.itemTitle.setTextColor(ContextCompat.getColor(getContext(),
- exploit.isEnabled() ? R.color.app_color : R.color.gray_text));
- holder.itemTitle.setTypeface(null, Typeface.NORMAL);
- holder.itemImage.setImageResource(exploit.getDrawableResourceId());
- holder.itemDescription.setText(exploit.getSummary());
-
- return row;
- }
- }
+ Exploit exploit = getItem(position);
- private OnItemClickListener listener = new OnItemClickListener() {
- public void onItemClick(AdapterView> parent, View v, final int position, long id) {
- Exploit exp = mAdapter.getItem(position);
-
- if (exp == null)
- return;
-
- if (exp instanceof MsfExploit) {
- final MsfExploit msfEx = (MsfExploit) exp;
- final ArrayList availableChoices = new ArrayList();
-
- if (System.getMsfRpc() != null && !System.getMsfRpc().isRemote())
- availableChoices.add(R.string.exploit_launch);
- if (msfEx.getOptions() != null)
- availableChoices.add(R.string.exploit_edit_options);
- if (msfEx.getCurrentPayload() != null)
- availableChoices.add(R.string.payload_edit_settings);
- if (msfEx.getPayloads() != null && msfEx.getPayloads().size() > 1)
- availableChoices.add(R.string.exploit_choose_payload);
- if (msfEx.getTargets() != null && msfEx.getTargets().size() > 1)
- availableChoices.add(R.string.exploit_choose_target);
- if (msfEx.getUrl() != null && !msfEx.getUrl().isEmpty())
- availableChoices.add(R.string.open_url);
- if (msfEx.getDescription() != null)
- availableChoices.add(R.string.show_full_description);
- new ListChoiceDialog(R.string.choose_an_option, availableChoices.toArray(new Integer[availableChoices.size()]), ExploitFinder.this, new ChoiceDialog.ChoiceDialogListener() {
- @Override
- public void onChoice(int choice) {
- Intent intent;
- switch (availableChoices.get(choice)) {
- case R.string.exploit_launch:
- launchExploit(msfEx);
- break;
- case R.string.exploit_edit_options:
- intent = new Intent(ExploitFinder.this, MsfPreferences.class);
- System.setCurrentExploit(msfEx);
- ExploitFinder.this.startActivity(intent);
- break;
- case R.string.payload_edit_settings:
- intent = new Intent(ExploitFinder.this, MsfPreferences.class);
- System.setCurrentPayload(msfEx.getCurrentPayload());
- ExploitFinder.this.startActivity(intent);
- break;
- case R.string.exploit_choose_payload:
- new ListChoiceDialog("Choose a payload", msfEx.getPayloads().toArray(new Payload[msfEx.getPayloads().size()]), ExploitFinder.this, new ChoiceDialog.ChoiceDialogListener() {
- @Override
- public void onChoice(int choice) {
- msfEx.setPayload(choice);
- }
- }).show();
- break;
- case R.string.exploit_choose_target:
- new ListChoiceDialog("Choose a target", msfEx.getTargets().toArray(new String[msfEx.getTargets().size()]), ExploitFinder.this, new ChoiceDialog.ChoiceDialogListener() {
- @Override
- public void onChoice(int choice) {
- msfEx.setTarget(choice);
- }
- }).show();
- break;
- case R.string.show_full_description:
- new ErrorDialog(msfEx.getName(), msfEx.getDescription(), ExploitFinder.this).show();
- break;
- case R.string.open_url:
- startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(msfEx.getUrl())));
- break;
- }
- }
- }).show();
- } else {
- if (exp.getUrl() != null && !exp.getUrl().isEmpty())
- startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(exp.getUrl())));
- }
+ if (exploit instanceof MsfExploit) {
+ holder.itemTitle.setText
+ (
+ Html.fromHtml
+ (
+ "" + exploit.getName() + ""
+ )
+ );
+ final Ranking rank = ((MsfExploit) exploit).getRank();
+ String rString = "Ranking: ";
+ String color;
+ switch (rank) {
+ case Low:
+ rString += "Low";
+ color = "red";
+ break;
+ case Average:
+ rString += "Average";
+ color = "grey4";
+ break;
+ case Normal:
+ rString += "Normal";
+ color = "grey4";
+ break;
+ case Good:
+ rString += "Good";
+ color = "blue";
+ break;
+ case Great:
+ rString += "Great";
+ color = "green";
+ break;
+ case Excellent:
+ rString += "Excellent";
+ color = "green";
+ break;
+ case Manual:
+ default:
+ rString += "Manual";
+ color = "gray4";
+ break;
}
- };
-
- public void launchExploit(final MsfExploit msfEx) {
- new Thread(new Runnable() {
- @Override
- public void run() {
+ holder.itemRanking.setText(Html.fromHtml("" + rString + ""));
+ } else
+ holder.itemTitle.setText(exploit.getName());
- int length;
- String message;
+ holder.itemTitle.setTextColor(ContextCompat.getColor(getContext(),
+ exploit.isEnabled() ? R.color.app_color : R.color.gray_text));
+ holder.itemTitle.setTypeface(null, Typeface.NORMAL);
+ holder.itemImage.setImageResource(exploit.getDrawableResourceId());
+ holder.itemDescription.setText(exploit.getSummary());
- length = Toast.LENGTH_SHORT;
-
- try {
- if (msfEx.launch())
- message = msfEx.getName() + ": Job started";
- else
- message = msfEx.getName() + ": Launch failed";
- } catch (RPCClient.MSFException e) {
- message = String.format("launch failed: %s", e.getMessage());
- length = Toast.LENGTH_LONG;
- }
-
- final int flength = length;
- final String fmessage = message;
-
- ExploitFinder.this.runOnUiThread(new Runnable() {
- @Override
- public void run() {
- Toast.makeText(ExploitFinder.this, fmessage, flength).show();
- }
- });
- }
- }).start();
+ return row;
}
-
- public ExploitFinder() {
- super
- (
-
- R.string.exploit_finder,
- R.string.exploit_finder_desc,
-
- new Target.Type[]{Target.Type.ENDPOINT, Target.Type.REMOTE},
- R.layout.plugin_exploit_finder,
- R.drawable.action_exploit_finder
- );
+ }
+
+ private OnItemClickListener listener = new OnItemClickListener() {
+ public void onItemClick(AdapterView> parent, View v, final int position, long id) {
+ Exploit exp = mAdapter.getItem(position);
+
+ if (exp == null)
+ return;
+
+ if (exp instanceof MsfExploit) {
+ final MsfExploit msfEx = (MsfExploit) exp;
+ final ArrayList availableChoices = new ArrayList();
+
+ if (System.getMsfRpc() != null && !System.getMsfRpc().isRemote())
+ availableChoices.add(R.string.exploit_launch);
+ if (msfEx.getOptions() != null)
+ availableChoices.add(R.string.exploit_edit_options);
+ if (msfEx.getCurrentPayload() != null)
+ availableChoices.add(R.string.payload_edit_settings);
+ if (msfEx.getPayloads() != null && msfEx.getPayloads().size() > 1)
+ availableChoices.add(R.string.exploit_choose_payload);
+ if (msfEx.getTargets() != null && msfEx.getTargets().size() > 1)
+ availableChoices.add(R.string.exploit_choose_target);
+ if (msfEx.getUrl() != null && !msfEx.getUrl().isEmpty())
+ availableChoices.add(R.string.open_url);
+ if (msfEx.getDescription() != null)
+ availableChoices.add(R.string.show_full_description);
+ new ListChoiceDialog(R.string.choose_an_option, availableChoices.toArray(new Integer[availableChoices.size()]), ExploitFinder.this, new ChoiceDialog.ChoiceDialogListener() {
+ @Override
+ public void onChoice(int choice) {
+ Intent intent;
+ switch (availableChoices.get(choice)) {
+ case R.string.exploit_launch:
+ launchExploit(msfEx);
+ break;
+ case R.string.exploit_edit_options:
+ intent = new Intent(ExploitFinder.this, MsfPreferences.class);
+ System.setCurrentExploit(msfEx);
+ ExploitFinder.this.startActivity(intent);
+ break;
+ case R.string.payload_edit_settings:
+ intent = new Intent(ExploitFinder.this, MsfPreferences.class);
+ System.setCurrentPayload(msfEx.getCurrentPayload());
+ ExploitFinder.this.startActivity(intent);
+ break;
+ case R.string.exploit_choose_payload:
+ new ListChoiceDialog("Choose a payload", msfEx.getPayloads().toArray(new Payload[msfEx.getPayloads().size()]), ExploitFinder.this, new ChoiceDialog.ChoiceDialogListener() {
+ @Override
+ public void onChoice(int choice) {
+ msfEx.setPayload(choice);
+ }
+ }).show();
+ break;
+ case R.string.exploit_choose_target:
+ new ListChoiceDialog("Choose a target", msfEx.getTargets().toArray(new String[msfEx.getTargets().size()]), ExploitFinder.this, new ChoiceDialog.ChoiceDialogListener() {
+ @Override
+ public void onChoice(int choice) {
+ msfEx.setTarget(choice);
+ }
+ }).show();
+ break;
+ case R.string.show_full_description:
+ new ErrorDialog(msfEx.getName(), msfEx.getDescription(), ExploitFinder.this).show();
+ break;
+ case R.string.open_url:
+ startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(msfEx.getUrl())));
+ break;
+ }
+ }
+ }).show();
+ } else {
+ if (exp.getUrl() != null && !exp.getUrl().isEmpty())
+ startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(exp.getUrl())));
+ }
}
+ };
- private void setStartedState() {
- mSearchProgress.setVisibility(View.VISIBLE);
-
- final Target target = System.getCurrentTarget();
-
- job = Search.searchExploitForServices(target,
- new Search.Receiver() {
- private boolean somethingFound = false;
-
- @Override
- public void onItemFound(final Exploit exploit) {
- somethingFound = true;
- ExploitFinder.this.runOnUiThread(new Runnable() {
- @Override
- public void run() {
- target.addExploit(exploit);
- mAdapter.notifyDataSetChanged();
- }
- });
- }
-
- @Override
- public void onFoundItemChanged(Exploit exploit) {
- ExploitFinder.this.runOnUiThread(new Runnable() {
- @Override
- public void run() {
- mAdapter.notifyDataSetChanged();
- }
- });
- }
+ public void launchExploit(final MsfExploit msfEx) {
- @Override
- public void onEnd() {
- ExploitFinder.this.runOnUiThread(new Runnable() {
- @Override
- public void run() {
- mSearchProgress.setVisibility(View.GONE);
- mSearchToggleButton.setChecked(false);
- if (System.getCurrentExploits().size() == 0) {
- new FinishDialog(getString(R.string.warning), getString(R.string.no_exploits_found), ExploitFinder.this).show();
- } else if (!somethingFound) {
- new ErrorDialog(getString(R.string.warning), getString(R.string.no_exploits_found), ExploitFinder.this).show();
- }
- }
- });
- }
- });
- }
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
- private void setStoppedState() {
- if (job != null)
- job.cancel(true);
+ int length;
+ String message;
- mSearchProgress.setVisibility(View.GONE);
- mSearchToggleButton.setChecked(false);
- }
+ length = Toast.LENGTH_SHORT;
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- MenuInflater inflater = getMenuInflater();
- inflater.inflate(R.menu.exploit_finder, menu);
- return super.onCreateOptionsMenu(menu);
- }
+ try {
+ if (msfEx.launch())
+ message = msfEx.getName() + ": Job started";
+ else
+ message = msfEx.getName() + ": Launch failed";
+ } catch (RPCClient.MSFException e) {
+ message = String.format("launch failed: %s", e.getMessage());
+ length = Toast.LENGTH_LONG;
+ }
- @Override
- public void onCreate(Bundle savedInstanceState) {
- SharedPreferences themePrefs = getSharedPreferences("THEME", 0);
- Boolean isDark = themePrefs.getBoolean("isDark", false);
- if (isDark)
- setTheme(R.style.DarkTheme);
- else
- setTheme(R.style.AppTheme);
- super.onCreate(savedInstanceState);
+ final int flength = length;
+ final String fmessage = message;
- Target t = System.getCurrentTarget();
+ ExploitFinder.this.runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ Toast.makeText(ExploitFinder.this, fmessage, flength).show();
+ }
+ });
+ }
+ }).start();
+ }
- if (!t.hasOpenPorts())
- new FinishDialog(getString(R.string.warning), getString(R.string.no_open_ports), this).show();
+ public ExploitFinder() {
+ super
+ (
- else if (!t.hasOpenPortsWithService())
- new FinishDialog(getString(R.string.warning), getString(R.string.no_infos_on_target), this).show();
+ R.string.exploit_finder,
+ R.string.exploit_finder_desc,
- mSearchToggleButton = (ToggleButton) findViewById(R.id.searchToggleButton);
- mSearchProgress = (ProgressBar) findViewById(R.id.searchActivity);
- mListView = (ListView) findViewById(android.R.id.list);
- mAdapter = new ExploitAdapter();
+ new Target.Type[]{Target.Type.ENDPOINT, Target.Type.REMOTE},
+ R.layout.plugin_exploit_finder,
+ R.drawable.action_exploit_finder
+ );
+ }
- UIThread = this;
+ private void setStartedState() {
+ mSearchProgress.setVisibility(View.VISIBLE);
- mListView.setAdapter(mAdapter);
+ final Target target = System.getCurrentTarget();
+ job = Search.searchExploitForServices(target,
+ new Search.Receiver() {
+ private boolean somethingFound = false;
- mListView.setOnItemClickListener(listener);
+ @Override
+ public void onItemFound(final Exploit exploit) {
+ somethingFound = true;
+ ExploitFinder.this.runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ target.addExploit(exploit);
+ mAdapter.notifyDataSetChanged();
+ }
+ });
+ }
- mSearchToggleButton.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- if (((ToggleButton) v).isChecked())
- setStartedState();
- else
- setStoppedState();
- }
- }
- );
- }
+ @Override
+ public void onFoundItemChanged(Exploit exploit) {
+ ExploitFinder.this.runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ mAdapter.notifyDataSetChanged();
+ }
+ });
+ }
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case R.id.exploit_launch_all:
- mAdapter.getCount();
- for (int x=0; x < mAdapter.getCount(); x++) {
- Exploit exp = mAdapter.getItem(x);
- if (exp instanceof MsfExploit) {
- launchExploit((MsfExploit) exp);
+ @Override
+ public void onEnd() {
+ ExploitFinder.this.runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ mSearchProgress.setVisibility(View.GONE);
+ mSearchToggleButton.setChecked(false);
+ if (System.getCurrentExploits().size() == 0) {
+ new FinishDialog(getString(R.string.warning), getString(R.string.no_exploits_found), ExploitFinder.this).show();
+ } else if (!somethingFound) {
+ new ErrorDialog(getString(R.string.warning), getString(R.string.no_exploits_found), ExploitFinder.this).show();
}
- }
- return true;
- default:
- return super.onOptionsItemSelected(item);
+ }
+ });
+ }
+ });
+ }
+
+ private void setStoppedState() {
+ if (job != null)
+ job.cancel(true);
+
+ mSearchProgress.setVisibility(View.GONE);
+ mSearchToggleButton.setChecked(false);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ MenuInflater inflater = getMenuInflater();
+ inflater.inflate(R.menu.exploit_finder, menu);
+ return super.onCreateOptionsMenu(menu);
+ }
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ SharedPreferences themePrefs = getSharedPreferences("THEME", 0);
+ Boolean isDark = themePrefs.getBoolean("isDark", false);
+ if (isDark)
+ setTheme(R.style.DarkTheme);
+ else
+ setTheme(R.style.AppTheme);
+ super.onCreate(savedInstanceState);
+
+ Target t = System.getCurrentTarget();
+
+ if (!t.hasOpenPorts())
+ new FinishDialog(getString(R.string.warning), getString(R.string.no_open_ports), this).show();
+
+ else if (!t.hasOpenPortsWithService())
+ new FinishDialog(getString(R.string.warning), getString(R.string.no_infos_on_target), this).show();
+
+ mSearchToggleButton = (ToggleButton) findViewById(R.id.searchToggleButton);
+ mSearchProgress = (ProgressBar) findViewById(R.id.searchActivity);
+ mListView = (ListView) findViewById(android.R.id.list);
+ mAdapter = new ExploitAdapter();
+
+ UIThread = this;
+
+ mListView.setAdapter(mAdapter);
+
+
+ mListView.setOnItemClickListener(listener);
+
+ mSearchToggleButton.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (((ToggleButton) v).isChecked())
+ setStartedState();
+ else
+ setStoppedState();
+ }
+ }
+ );
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case R.id.exploit_launch_all:
+ mAdapter.getCount();
+ for (int x = 0; x < mAdapter.getCount(); x++) {
+ Exploit exp = mAdapter.getItem(x);
+ if (exp instanceof MsfExploit) {
+ launchExploit((MsfExploit) exp);
+ }
}
+ return true;
+ default:
+ return super.onOptionsItemSelected(item);
}
-
- @Override
- public void onBackPressed() {
- setStoppedState();
- super.onBackPressed();
- overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_left);
- }
-
- @Override
- public void onRpcChange(RPCClient currentValue) {
- // TODO: use Java Observer/Observable implementation
- if (UIThread == null)
- return;
- // rebuild view
- if (this != UIThread) {
- UIThread.onRpcChange(currentValue);
- } else {
- ExploitFinder.this.runOnUiThread(new Runnable() {
- @Override
- public void run() {
- mAdapter.notifyDataSetChanged();
- }
- });
+ }
+
+ @Override
+ public void onBackPressed() {
+ setStoppedState();
+ super.onBackPressed();
+ overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_left);
+ }
+
+ @Override
+ public void onRpcChange(RPCClient currentValue) {
+ // TODO: use Java Observer/Observable implementation
+ if (UIThread == null)
+ return;
+ // rebuild view
+ if (this != UIThread) {
+ UIThread.onRpcChange(currentValue);
+ } else {
+ ExploitFinder.this.runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ mAdapter.notifyDataSetChanged();
}
+ });
}
+ }
}
\ No newline at end of file
From c5c3a1af6e755d976ecd7ad9e782098046606267 Mon Sep 17 00:00:00 2001
From: tux_mind
Date: Sun, 4 Oct 2015 23:42:20 +0200
Subject: [PATCH 07/49] reduced code complexity
---
cSploit/res/values/colors.xml | 9 ++++-
cSploit/res/values/strings.xml | 8 ++++
.../android/net/metasploit/MsfExploit.java | 30 ++++++++++----
.../android/plugins/ExploitFinder.java | 39 ++-----------------
4 files changed, 43 insertions(+), 43 deletions(-)
diff --git a/cSploit/res/values/colors.xml b/cSploit/res/values/colors.xml
index c9a04089ff..f63f0a3a04 100644
--- a/cSploit/res/values/colors.xml
+++ b/cSploit/res/values/colors.xml
@@ -16,5 +16,12 @@
#3F51B5
#FFC107
#000000
-
+ #0000FF
+ @color/red
+ #FF7F50
+ @color/gray_text
+ @color/gray_text
+ @color/blue
+ @color/green
+ @color/green
\ No newline at end of file
diff --git a/cSploit/res/values/strings.xml b/cSploit/res/values/strings.xml
index 1aa3a263a8..63f8244393 100644
--- a/cSploit/res/values/strings.xml
+++ b/cSploit/res/values/strings.xml
@@ -514,4 +514,12 @@
A new version for ruby is available, do you want to upgrade ?
A new msf version is available, do you want to upgrade ?
MetaSploit Status
+ Ranking: %s
+ Manual
+ Low
+ Average
+ Normal
+ Good
+ Great
+ Excellent
diff --git a/cSploit/src/org/csploit/android/net/metasploit/MsfExploit.java b/cSploit/src/org/csploit/android/net/metasploit/MsfExploit.java
index c24e553f60..9933361850 100644
--- a/cSploit/src/org/csploit/android/net/metasploit/MsfExploit.java
+++ b/cSploit/src/org/csploit/android/net/metasploit/MsfExploit.java
@@ -38,13 +38,29 @@ public class MsfExploit extends Target.Exploit
private ArrayList payloads = new ArrayList();
public enum Ranking {
- Manual,
- Low,
- Average,
- Normal,
- Good,
- Great,
- Excellent;
+ Manual(R.color.msf_rank_manual, R.string.msf_rank_manual),
+ Low(R.color.msf_rank_low, R.string.msf_rank_low),
+ Average(R.color.msf_rank_average, R.string.msf_rank_average),
+ Normal(R.color.msf_rank_normal, R.string.msf_rank_normal),
+ Good(R.color.msf_rank_good, R.string.msf_rank_good),
+ Great(R.color.msf_rank_great, R.string.msf_rank_great),
+ Excellent(R.color.msf_rank_excellent, R.string.msf_rank_excellent);
+
+ final int color;
+ final int stringID;
+
+ Ranking(int color, int stringID) {
+ this.color = color;
+ this.stringID = stringID;
+ }
+
+ public int getColor() {
+ return color;
+ }
+
+ public int getStringID() {
+ return stringID;
+ }
public static Ranking valueOf(int value) {
switch (value) {
diff --git a/cSploit/src/org/csploit/android/plugins/ExploitFinder.java b/cSploit/src/org/csploit/android/plugins/ExploitFinder.java
index 28dcc86ddf..ea7440f4e8 100644
--- a/cSploit/src/org/csploit/android/plugins/ExploitFinder.java
+++ b/cSploit/src/org/csploit/android/plugins/ExploitFinder.java
@@ -21,7 +21,6 @@
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
-import android.graphics.Color;
import android.graphics.Typeface;
import android.net.Uri;
import android.os.Bundle;
@@ -118,41 +117,11 @@ public View getView(int position, View convertView, ViewGroup parent) {
)
);
final Ranking rank = ((MsfExploit) exploit).getRank();
- String rString = "Ranking: ";
- String color;
- switch (rank) {
- case Low:
- rString += "Low";
- color = "red";
- break;
- case Average:
- rString += "Average";
- color = "grey4";
- break;
- case Normal:
- rString += "Normal";
- color = "grey4";
- break;
- case Good:
- rString += "Good";
- color = "blue";
- break;
- case Great:
- rString += "Great";
- color = "green";
- break;
- case Excellent:
- rString += "Excellent";
- color = "green";
- break;
- case Manual:
- default:
- rString += "Manual";
- color = "gray4";
- break;
- }
- holder.itemRanking.setText(Html.fromHtml("" + rString + ""));
+ holder.itemRanking.setText(
+ String.format(getString(R.string.msf_exploit_ranking),
+ getString(rank.getStringID())));
+ holder.itemRanking.setTextColor(rank.getColor());
} else
holder.itemTitle.setText(exploit.getName());
From 07ebc066dde4068ea8142764dec2486cd55e4f5c Mon Sep 17 00:00:00 2001
From: tux_mind
Date: Sun, 4 Oct 2015 23:42:42 +0200
Subject: [PATCH 08/49] update core reference
---
cSploit/jni | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/cSploit/jni b/cSploit/jni
index 346967efea..5d58371006 160000
--- a/cSploit/jni
+++ b/cSploit/jni
@@ -1 +1 @@
-Subproject commit 346967efea5dbec7f07d93beb7c8e2ccdf423ab1
+Subproject commit 5d58371006ad73c6d3ebf766cdfcf774822fd511
From 80e70293464777e2c277ae26901d515b885783a9 Mon Sep 17 00:00:00 2001
From: tux_mind
Date: Mon, 5 Oct 2015 03:17:39 +0200
Subject: [PATCH 09/49] moved equals and merge logic into the appropriate class
---
.../src/org/csploit/android/net/Target.java | 48 +++++++++----------
1 file changed, 22 insertions(+), 26 deletions(-)
diff --git a/cSploit/src/org/csploit/android/net/Target.java b/cSploit/src/org/csploit/android/net/Target.java
index 6fef98df50..6ebe0515a4 100644
--- a/cSploit/src/org/csploit/android/net/Target.java
+++ b/cSploit/src/org/csploit/android/net/Target.java
@@ -118,21 +118,20 @@ public boolean equals(Object o) {
if(o == null || o.getClass() != this.getClass())
return false;
Port p = (Port)o;
- if(p.number != this.number || p.protocol != this.protocol)
- return false;
- if(this.version!=null) {
- if(!this.version.equals(p.version))
- return false;
- } else if (p.version != null) {
- return false;
+ return (p.number == this.number && p.protocol == this.protocol);
+ }
+
+ /**
+ * merge data from this port to another
+ * @param other
+ */
+ public void mergeTo(Port other) {
+ if(service != null && !service.equals(other.service)) {
+ other.service = service;
}
- if(this.service!=null) {
- if(!this.service.equals(p.service))
- return false;
- } else if (p.service!=null) {
- return false;
+ if(version != null && !version.equals(other.version)) {
+ other.version = version;
}
- return true;
}
}
@@ -634,22 +633,19 @@ public String getHostname(){
public void addOpenPort(Port port){
synchronized (mPorts) {
- // we cannot just check if mPorts already has the new port (contains(port)), because if the new port has new fields,
- // it won't be the same and we'll add duplicated ports.
- for (Port p : mPorts){
- // port considered added: same port + same protocol -> 22:tcp, 53:udp
- if (p.number == port.number && p.protocol == port.protocol){
- if ((port.service != null && !port.service.isEmpty()) && (p.service == null || p.service.isEmpty())) {
- p.service = port.service;
- }
- if ((port.version != null && !port.version.isEmpty()) && (p.version == null || p.version.isEmpty())) {
- p.version = port.version;
- }
- return;
+ Port existing = null;
+ for(Port p : mPorts) {
+ if(p.equals(port)) {
+ existing = p;
+ break;
}
}
- mPorts.add(port);
+ if(existing != null) {
+ port.mergeTo(existing);
+ } else {
+ mPorts.add(port);
+ }
}
}
From 7b313b6f9fa8156ce517a1efb64bf5de4f625d0c Mon Sep 17 00:00:00 2001
From: tux_mind
Date: Mon, 5 Oct 2015 04:25:54 +0200
Subject: [PATCH 10/49] Update README.md
thanks to fat-tire
---
README.md | 82 +++++++++++++++++++++++++++++++++++++++----------------
1 file changed, 58 insertions(+), 24 deletions(-)
diff --git a/README.md b/README.md
index b07efb6285..cb29e343b1 100644
--- a/README.md
+++ b/README.md
@@ -1,39 +1,73 @@
-cSploit - An Android network penetration suite.
-==============================
+# cSploit: Android network pentesting suite
-Copyleft Margaritelli of Simone aka evilsocket and then fused with zANTI2 continued by tux-mind.
+
--
+[cSploit](http://www.csploit.org) is an open source (GPLed) Android network analysis and penetration suite which aims to be
+**the most complete and advanced professional toolkit** for IT security experts/geeks to perform network security assessments on a mobile device.
+
+See more at [www.cSploit.org](http://www.csploit.org).
+
+## Features:
+
+* Map your local network
+* Fingerprint hosts' operating systems and open ports
+* Add your own hosts outside the local network
+* Integrated traceroute
+* **Integrated [Metasploit](https://www.metasploit.com/) framework RPCd**
+ * Search hosts for **known vulnerabilities** via integrated Metasploit daemon
+ * Adjust exploit settings, launch, and create shell consoles on exploited systems
+ * More coming
+* Forge tcp/udp packets
+* Perform man in the middle attacks (MITM) including:
+ * Image, text, and video replacement-- replace your own content on unencrypted web pages
+ * javascript injection-- add your own javascript to unencrypted web pages.
+ * **password sniffing** ( with common protocols dissection )
+ * Capture pcap network traffic files
+ * Real time **traffic manipulation** to replace images/text/inject into web pages
+ * DNS spoofing to redirect traffic to different domain
+ * Break existing connections
+ * Redirect traffic to another address
+ * Session Hijacking-- listen for unencrypted cookies and clone them to take Web session
+
+## Tutorials:
+
+
+
+* [Use cSploit to get root shell on Metasploitable2](https://github.com/cSploit/android/wiki/%5BTutorial%5D-Use-cSploit-to-get-root-shell-on-Metasploitable2)
+* [Use cSploit for simple Man-in-the-Middle (MITM security demos](https://github.com/cSploit/android/wiki/%5BTutorial%5D-Use-cSploit-for-simple-Man-In-The-Middle-(MITM)-security-demos)
-[![Click here to lend your support to: cSploit and make a donation at www.paypal.com](https://www.paypalobjects.com/en_GB/i/btn/btn_donate_LG.gif?skin_name=chrome)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=FTKXDCBEDMW9G&lc=GB&item_name=cSploit¤cy_code=EUR&bn=PP%2dDonationsBF%3abtn_donate_LG%2egif%3aNonHosted)
--------------
+Also see the [wiki](https://github.com/cSploit/android/wiki) for instructions on building, [reporting issues](https://github.com/cSploit/android/wiki/How-to-open-an-issue), and more.
-cSploit is an Android network analysis and penetration suite which aims to offer to IT security experts/geeks
-**the most complete and advanced professional toolkit** to perform network security assesments on a mobile device.
+## Requirements
-Once cSploit is started, you will be able to easily map your network, fingerprint alive hosts operating systems
-and running services, search for **known vulnerabilities**, crack logon procedures of many tcp protocols, perform
-man in the middle attacks such as **password sniffing** ( with common protocols dissection ), real time **traffic
-manipulation**, etc, etc .
+* A **ROOTED** device running Android 2.3 (Gingerbread) or newer
+* The device must have a BusyBox **full install**, this means with **every** utility installed ( not the partial installation ). If you do not have busybox already, you can get it [here](https://play.google.com/store/apps/details?id=stericson.busybox) or [here](https://play.google.com/store/apps/details?id=com.jrummy.busybox.installer) (note cSploit does not endorse any busybox installer. These are just two we found).
-This application is still in **beta stage**, a stable release will be available as soon as possible, but expect
-some crash or strange behaviour until then, in any case, feel free to submit an issue here on GitHub.
+## Downloads
-Requirements
--------------
+The latest release and pre-release versions are available on github:
-- An Android device with at least the 2.3 ( Gingerbread ) version of the OS.
-- The device **must be rooted**.
-- The device must have a BusyBox **full install**, this means with **every** utility installed ( not the partial installation ).
+https://github.com/cSploit/android/releases
+Or to save a click, [this link](https://github.com/cSploit/android/releases/latest) should always point to the most recent release.
-Disclaimer
--------------
+Additionally, you can get a fresh-from-the-source nightly at [www.cSploit.org/downloads](http://www.csploit.org/downloads). These nightly builds are generated more frequently than the releases. And while they may have the very latest features, they may also have the latest bugs, so be careful running them!
-This application is not to be used for any purposes other than to demonstrate its functions, and must only be used on networks for which you have permission to do so. Any other use is not the responsibility of the developer.In other words, don't be stupid, and don't direct angry people towards me.
+## How to contribute
-License
--------------
+All contributions are welcome, from code to documentation to graphics to design suggestions to bug reports. Please use github to its fullest-- contribute Pull Requests, contribute tutorials or other wiki content-- whatever you have to offer, we can use it!
+
+## License
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+
+## Copyright
+
+Copyleft Margaritelli of Simone aka evilsocket and then fused with zANTI2 continued by @tux-mind and additional contributors.
+
+[![Click here to lend your support to: cSploit and make a donation at www.paypal.com](https://www.paypalobjects.com/en_GB/i/btn/btn_donate_LG.gif?skin_name=chrome)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=FTKXDCBEDMW9G&lc=GB&item_name=cSploit¤cy_code=EUR&bn=PP%2dDonationsBF%3abtn_donate_LG%2egif%3aNonHosted)
+
+## Disclaimer
+
+***Note: cSploit is intended to be used for legal security purposes only, and you should only use it to protect networks/hosts you own or have permission to test. Any other use is not the responsibility of the developer(s). Be sure that you understand and are complying with the cSploit licenses and laws in your area. In other words, don't be stupid, don't be an asshole, and use this tool responsibly and legally.***
\ No newline at end of file
From 7bfb674463ff34a0c4760eaebab2aedc55a1dbd6 Mon Sep 17 00:00:00 2001
From: Ilya
Date: Mon, 5 Oct 2015 14:38:24 +0900
Subject: [PATCH 11/49] Update strings.xml
Added and translated new strings
---
cSploit/res/values-ru/strings.xml | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/cSploit/res/values-ru/strings.xml b/cSploit/res/values-ru/strings.xml
index 1d12481a7c..b0070c882b 100644
--- a/cSploit/res/values-ru/strings.xml
+++ b/cSploit/res/values-ru/strings.xml
@@ -488,4 +488,12 @@
Новая версия ruby доступна, вы хотите обновиться?
Новая версия MSF доступна, вы хотите обновиться?
Статус MetaSploit
+ Рейтинг: %s
+ Вручную
+ Низкий
+ Средний
+ Нормальный
+ Хороший
+ Отличный
+ Превосходный
From 70b1fe961f6ff939eda2ae2095ec95989c80e6e7 Mon Sep 17 00:00:00 2001
From: Tajnymag
Date: Mon, 5 Oct 2015 08:54:00 +0200
Subject: [PATCH 12/49] Updated czech translation
---
cSploit/res/values-cs/strings.xml | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/cSploit/res/values-cs/strings.xml b/cSploit/res/values-cs/strings.xml
index 4b092b46e6..c56ca7b05f 100644
--- a/cSploit/res/values-cs/strings.xml
+++ b/cSploit/res/values-cs/strings.xml
@@ -486,4 +486,20 @@
Knihovna JNI spadla již minule, doufám, že jsi nám již podal hlášení.
Aktualizace byla zastavena
Nemohu spustit proces
+ MSF RPC Daemon byl terminován
+ Nepodařilo se spustit MSF RPC Daemon
+ Připojení k MSF RPC Daemon SELHALO!
+ Průzkum sítě SELHAL!
+ Je k dispozici verze aplikace %s , přejete si aktualizovat?
+ Je k dispozici nová verze Ruby, přejete si aktualizovat?
+ Je k dispozici nová verze MSF, přejete si aktualizovat?
+ Metasploit Status
+ Hodnocení: %s
+ Ruční
+ Nízký
+ Průměrný
+ Normalní
+ Dobrý
+ Skvělý
+ Excellentní
From ae463e96913f23b436067eb40bb1ddec29e5fbda Mon Sep 17 00:00:00 2001
From: tux_mind
Date: Mon, 5 Oct 2015 10:18:22 +0200
Subject: [PATCH 13/49] some fixup: - target index may change - move
callback - onClick get called from main Thread
---
cSploit/res/values/strings.xml | 2 +
.../src/org/csploit/android/core/System.java | 12 ++-
.../csploit/android/plugins/mitm/Sniffer.java | 82 +++++++++----------
3 files changed, 51 insertions(+), 45 deletions(-)
diff --git a/cSploit/res/values/strings.xml b/cSploit/res/values/strings.xml
index 1aa3a263a8..71fbad87d1 100644
--- a/cSploit/res/values/strings.xml
+++ b/cSploit/res/values/strings.xml
@@ -514,4 +514,6 @@
A new version for ruby is available, do you want to upgrade ?
A new msf version is available, do you want to upgrade ?
MetaSploit Status
+ Select target
+ Select %s ?
diff --git a/cSploit/src/org/csploit/android/core/System.java b/cSploit/src/org/csploit/android/core/System.java
index 8cf9144bfe..ddd706e439 100644
--- a/cSploit/src/org/csploit/android/core/System.java
+++ b/cSploit/src/org/csploit/android/core/System.java
@@ -1029,10 +1029,6 @@ public static Target getTarget(int index){
return mTargets.get(index);
}
- public static int getTargetPosition (Target t) {
- return mTargets.indexOf(t);
- }
-
public static boolean hasTarget(Target target){
return mTargets.contains(target);
}
@@ -1041,6 +1037,14 @@ public static void setCurrentTarget(int index){
mCurrentTarget = index;
}
+ public static void setCurrentTarget(Target target) {
+ int index = mTargets.indexOf(target);
+ if(index != -1)
+ setCurrentTarget(index);
+ else
+ Logger.error("target '" + target + "' not found");
+ }
+
public static Target getCurrentTarget(){
return getTarget(mCurrentTarget);
}
diff --git a/cSploit/src/org/csploit/android/plugins/mitm/Sniffer.java b/cSploit/src/org/csploit/android/plugins/mitm/Sniffer.java
index 3e785a972e..20f9f11b46 100644
--- a/cSploit/src/org/csploit/android/plugins/mitm/Sniffer.java
+++ b/cSploit/src/org/csploit/android/plugins/mitm/Sniffer.java
@@ -54,7 +54,7 @@
import java.util.ArrayList;
import java.util.Collections;
-public class Sniffer extends AppCompatActivity
+public class Sniffer extends AppCompatActivity implements AdapterView.OnItemClickListener
{
private static final String[] SORT = {
"Bandwidth ↓",
@@ -296,52 +296,18 @@ public void onCreate(Bundle savedInstanceState){
mSpoofSession = new SpoofSession(false, false, null, null);
mSortSpinner.setAdapter(new ArrayAdapter(this, android.R.layout.simple_spinner_item, SORT));
- mSortSpinner.setOnItemSelectedListener(new OnItemSelectedListener(){
- public void onItemSelected(AdapterView> adapter, View view, int position, long id){
+ mSortSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
+ public void onItemSelected(AdapterView> adapter, View view, int position, long id) {
mSortType = position;
}
- public void onNothingSelected(AdapterView> arg0){
+ public void onNothingSelected(AdapterView> arg0) {
}
});
mListView.setAdapter(mAdapter);
- mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView> parent, View view, int position, long id) {
- final Target t = System.getTargetByAddress(mAdapter.getByPosition(position).mAddress);
-
- new ConfirmDialog("Select target", "Select " + t.getAddress().getHostAddress() + "?", Sniffer.this, new ConfirmDialog.ConfirmDialogListener() {
- @Override
- public void onConfirm() {
- new Thread(new Runnable() {
- @Override
- public void run() {
- setStoppedState();
-
- startActivity(new Intent(Sniffer.this,
- ActionActivity.class));
-
- overridePendingTransition(R.anim.slide_in_left,
- R.anim.slide_out_left);
- }
- }).start();
-
- System.setCurrentTarget(System.getTargetPosition(t));
- Toast.makeText(Sniffer.this,
- getString(R.string.selected_) + System.getCurrentTarget(),
- Toast.LENGTH_SHORT).show();
- }
-
- @Override
- public void onCancel() {
- }
- }).show();
-
-
- }
- });
+ mListView.setOnItemClickListener(this);
mSniffToggleButton.setOnClickListener(new View.OnClickListener(){
@Override
@@ -370,6 +336,40 @@ public void onCancel(){
}).show();
}
+ @Override
+ public void onItemClick(AdapterView> parent, View view, int position, long id) {
+ String address = mAdapter.getByPosition(position).mAddress;
+ final Target t = System.getTargetByAddress(address);
+
+ if (t == null)
+ return;
+
+ new ConfirmDialog(getString(R.string.mitm_ss_select_target_title),
+ String.format(getString(R.string.mitm_ss_select_target_prompt), address),
+ Sniffer.this, new ConfirmDialog.ConfirmDialogListener() {
+ @Override
+ public void onConfirm() {
+ System.setCurrentTarget(t);
+
+ setStoppedState();
+
+ Toast.makeText(Sniffer.this,
+ getString(R.string.selected_) + System.getCurrentTarget(),
+ Toast.LENGTH_SHORT).show();
+
+ startActivity(new Intent(Sniffer.this,
+ ActionActivity.class));
+
+ overridePendingTransition(R.anim.slide_in_left,
+ R.anim.slide_out_left);
+ }
+
+ @Override
+ public void onCancel() {
+ }
+ }).show();
+ }
+
public synchronized int getSortType(){
return mSortType;
}
@@ -404,9 +404,9 @@ public void run() {
mSniffToggleButton.setChecked(false);
}
});
- }
+ }
- private void setSpoofErrorState(final String error){
+ private void setSpoofErrorState(final String error){
Sniffer.this.runOnUiThread(new Runnable(){
@Override
public void run(){
From 52fca0f8efb756a0d2ad4fc513844b11cac6aec4 Mon Sep 17 00:00:00 2001
From: tux_mind
Date: Mon, 5 Oct 2015 16:12:32 +0200
Subject: [PATCH 14/49] fixed deadlock on system cleanup when a proxy is
blocking network content.
---
cSploit/src/org/csploit/android/core/System.java | 3 +++
cSploit/src/org/csploit/android/net/RemoteReader.java | 8 ++++++++
2 files changed, 11 insertions(+)
diff --git a/cSploit/src/org/csploit/android/core/System.java b/cSploit/src/org/csploit/android/core/System.java
index 75053904a7..3a0b2dd968 100644
--- a/cSploit/src/org/csploit/android/core/System.java
+++ b/cSploit/src/org/csploit/android/core/System.java
@@ -47,6 +47,7 @@
import org.csploit.android.net.Endpoint;
import org.csploit.android.net.GitHubParser;
import org.csploit.android.net.Network;
+import org.csploit.android.net.RemoteReader;
import org.csploit.android.net.Target;
import org.csploit.android.net.Target.Exploit;
import org.csploit.android.net.Target.Type;
@@ -1199,6 +1200,8 @@ public static void clean(boolean releaseLocks){
mWakeLock.release();
}
+ RemoteReader.terminateAll();
+
GitHubParser.resetAll();
synchronized (mTargets) {
diff --git a/cSploit/src/org/csploit/android/net/RemoteReader.java b/cSploit/src/org/csploit/android/net/RemoteReader.java
index 89adbcede0..bd2954d97f 100644
--- a/cSploit/src/org/csploit/android/net/RemoteReader.java
+++ b/cSploit/src/org/csploit/android/net/RemoteReader.java
@@ -323,6 +323,14 @@ public String getErrorMessage() {
return res;
}
+ public static void terminateAll() {
+ synchronized (readers) {
+ for(RemoteReader r : readers) {
+ r.terminate();
+ }
+ }
+ }
+
private void addFirst(Task task) {
synchronized (tasks) {
((Deque) tasks).addFirst(task);
From e14d03babc6b3d4aaa5ef0a0425cc1fe60c8fb2a Mon Sep 17 00:00:00 2001
From: tux_mind
Date: Mon, 5 Oct 2015 22:41:10 +0200
Subject: [PATCH 15/49] revert 4d5b3687a0906ed0e2e3ed1914379911ee1ab690
---
.../src/org/csploit/android/MainActivity.java | 2 +-
.../android/services/NetworkRadar.java | 95 ++++---------------
.../receivers/NetworkRadarReceiver.java | 11 +++
3 files changed, 31 insertions(+), 77 deletions(-)
diff --git a/cSploit/src/org/csploit/android/MainActivity.java b/cSploit/src/org/csploit/android/MainActivity.java
index c4b4ab6454..872701a80f 100644
--- a/cSploit/src/org/csploit/android/MainActivity.java
+++ b/cSploit/src/org/csploit/android/MainActivity.java
@@ -200,7 +200,7 @@ public boolean onItemLongClick(AdapterView> parent, View view, int position, l
mWipeReceiver.register(MainActivity.this);
mMsfReceiver.register(MainActivity.this);
- getNetworkRadar().setAdapter(mTargetAdapter);
+ mRadarReceiver.setTargetAdapter(mTargetAdapter);
StartRPCServer();
diff --git a/cSploit/src/org/csploit/android/services/NetworkRadar.java b/cSploit/src/org/csploit/android/services/NetworkRadar.java
index a01996de27..e8baadcdbb 100644
--- a/cSploit/src/org/csploit/android/services/NetworkRadar.java
+++ b/cSploit/src/org/csploit/android/services/NetworkRadar.java
@@ -1,8 +1,8 @@
package org.csploit.android.services;
import android.app.Activity;
+import android.content.Context;
import android.view.MenuItem;
-import android.widget.BaseAdapter;
import org.csploit.android.R;
import org.csploit.android.core.Logger;
@@ -11,29 +11,20 @@
import org.csploit.android.net.Target;
import java.net.InetAddress;
-import java.util.LinkedList;
-import java.util.List;
/**
* network-radar process manager
*/
public class NetworkRadar extends NativeService implements MenuControllableService {
+ public static final String NRDR_CHANGED = "NetworkRadar.action.TARGET_CHANGED";
public static final String NRDR_STOPPED = "NetworkRadar.action.STOPPED";
public static final String NRDR_STARTED = "NetworkRadar.action.STARTED";
public static final String NRDR_START_FAILED = "NetworkRadar.action.START_FAILED";
- private final List taskList = new LinkedList<>();
- private final TargetSubmitter submitter = new TargetSubmitter();
- private BaseAdapter adapter;
-
- public NetworkRadar(Activity context) {
+ public NetworkRadar(Context context) {
this.context = context;
}
- public void setAdapter(BaseAdapter adapter) {
- this.adapter = adapter;
- }
-
public boolean start() {
stop();
try {
@@ -78,48 +69,41 @@ private class Receiver extends org.csploit.android.tools.NetworkRadar.HostReceiv
@Override
public void onHostFound(byte[] macAddress, InetAddress ipAddress, String name) {
Target t;
- TargetTask task = null;
+ boolean notify = false;
t = System.getTargetByAddress(ipAddress);
if(t==null) {
t = new Target(ipAddress, macAddress);
- t.setAlias(name);
- task = new TargetTask(t, true, null, true);
- } else {
- boolean aliasChanged = name != null && !name.equals(t.getAlias());
+ System.addOrderedTarget(t);
- if(aliasChanged || !t.isConnected()) {
- task = new TargetTask(t, false, (aliasChanged ? name : t.getAlias()), true);
- }
+ notify = true;
}
- if(task == null)
- return;
+ if( !t.isConnected() ) {
+ t.setConneced(true);
+ notify = true;
+ }
- synchronized (taskList) {
- taskList.add(task);
+ if (name != null && !name.equals(t.getAlias())) {
+ t.setAlias(name);
+ notify = true;
}
- ((Activity)context).runOnUiThread(submitter);
+ if(notify) {
+ sendIntent(NRDR_CHANGED);
+ }
}
@Override
public void onHostLost(InetAddress ipAddress) {
Target t = System.getTargetByAddress(ipAddress);
- if(t == null) {
- return;
- }
-
- synchronized (taskList) {
- taskList.add(
- new TargetTask(t, false, t.getAlias(), false)
- );
+ if(t != null) {
+ t.setConneced(false);
+ sendIntent(NRDR_CHANGED);
}
-
- ((Activity)context).runOnUiThread(submitter);
}
@Override
@@ -136,45 +120,4 @@ public void onDeath(int signal) {
sendIntent(NRDR_STOPPED);
}
}
-
- private class TargetTask {
- final Target target;
- final boolean add;
- final String name;
- final boolean connected;
-
- public TargetTask(Target target, boolean add, String name, boolean connected) {
- this.target = target;
- this.add = add;
- this.name = name;
- this.connected = connected;
- }
- }
-
- private class TargetSubmitter implements Runnable {
- @Override
- public void run() {
- synchronized (taskList) {
- if(!taskList.isEmpty()) {
- for (TargetTask task : taskList) {
- processTask(task);
- }
- if(adapter != null)
- adapter.notifyDataSetChanged();
- }
- }
- }
-
- private void processTask(final TargetTask task) {
- if(task.add) {
- System.addOrderedTarget(task.target);
- } else {
- task.target.setConneced(task.connected);
- task.target.setAlias(task.name);
- }
- }
-
- }
-
-
}
diff --git a/cSploit/src/org/csploit/android/services/receivers/NetworkRadarReceiver.java b/cSploit/src/org/csploit/android/services/receivers/NetworkRadarReceiver.java
index 70fb6f64a6..95d44d2397 100644
--- a/cSploit/src/org/csploit/android/services/receivers/NetworkRadarReceiver.java
+++ b/cSploit/src/org/csploit/android/services/receivers/NetworkRadarReceiver.java
@@ -4,6 +4,7 @@
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
+import android.widget.BaseAdapter;
import android.widget.Toast;
import org.csploit.android.R;
@@ -16,6 +17,7 @@
public class NetworkRadarReceiver extends ManagedReceiver {
private final IntentFilter filter;
+ private BaseAdapter targetAdapter;
public NetworkRadarReceiver() {
filter = new IntentFilter();
@@ -23,6 +25,11 @@ public NetworkRadarReceiver() {
filter.addAction(NetworkRadar.NRDR_STARTED);
filter.addAction(NetworkRadar.NRDR_START_FAILED);
filter.addAction(NetworkRadar.NRDR_STOPPED);
+ filter.addAction(NetworkRadar.NRDR_CHANGED);
+ }
+
+ public void setTargetAdapter(BaseAdapter targetAdapter) {
+ this.targetAdapter = targetAdapter;
}
@Override
@@ -57,6 +64,10 @@ private void notifyIntent(Context context, Intent intent) {
case NetworkRadar.NRDR_START_FAILED:
Toast.makeText(context, R.string.net_discovery_start_failed, Toast.LENGTH_LONG).show();
break;
+ case NetworkRadar.NRDR_CHANGED:
+ if(targetAdapter != null)
+ targetAdapter.notifyDataSetChanged();
+ break;
}
}
}
From 29c44b49b514ac6e471f3a751355cb2611758cf9 Mon Sep 17 00:00:00 2001
From: F
Date: Tue, 6 Oct 2015 06:11:24 +0800
Subject: [PATCH 16/49] Update strings.xml
---
cSploit/res/values-zh-rCN/strings.xml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/cSploit/res/values-zh-rCN/strings.xml b/cSploit/res/values-zh-rCN/strings.xml
index 1a7e40cfa5..24143b19ea 100644
--- a/cSploit/res/values-zh-rCN/strings.xml
+++ b/cSploit/res/values-zh-rCN/strings.xml
@@ -281,6 +281,7 @@ If not, see http://www.gnu.org/licenses/.
关于
选择自定义端口
+ 自定义参数
正在初始化 …
正在激活 WiFi 接口 …
@@ -431,6 +432,7 @@ If not, see http://www.gnu.org/licenses/.
版本信息
多操作
重点扫描
+ 解析主机名
cSploit 已崩溃
发生了一个预料之外的错误,致使应用或其组件强制停止。请发送错误数据来帮助我们修复这个错误。
From 80c612503ead11f2f51007f9baede185edd9c571 Mon Sep 17 00:00:00 2001
From: tux_mind
Date: Tue, 6 Oct 2015 01:56:04 +0200
Subject: [PATCH 17/49] should fix #329
---
.../org/csploit/android/ActionActivity.java | 8 +-
.../src/org/csploit/android/MainActivity.java | 89 +++++++----
.../android/core/MultiAttackService.java | 5 +-
.../src/org/csploit/android/core/System.java | 143 ++++++++----------
.../android/net/metasploit/Session.java | 8 +-
.../receivers/NetworkRadarReceiver.java | 19 ++-
6 files changed, 138 insertions(+), 134 deletions(-)
diff --git a/cSploit/src/org/csploit/android/ActionActivity.java b/cSploit/src/org/csploit/android/ActionActivity.java
index 798f121f1e..360b43988c 100644
--- a/cSploit/src/org/csploit/android/ActionActivity.java
+++ b/cSploit/src/org/csploit/android/ActionActivity.java
@@ -38,12 +38,14 @@
import org.csploit.android.core.Plugin;
import org.csploit.android.core.System;
import org.csploit.android.gui.dialogs.FinishDialog;
+import org.csploit.android.net.Target;
import java.util.ArrayList;
public class ActionActivity extends AppCompatActivity {
private ArrayList mAvailable = null;
private ListView theList;
+ private Target mTarget;
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -56,8 +58,10 @@ public void onCreate(Bundle savedInstanceState) {
setTheme(R.style.AppTheme);
super.onCreate(savedInstanceState);
- if (System.getTargets() != null && System.getTargets().size() > 0 && System.getCurrentTarget() != null) {
- setTitle("cSploit > " + System.getCurrentTarget());
+ mTarget = System.getCurrentTarget();
+
+ if (mTarget != null) {
+ setTitle("cSploit > " + mTarget);
setContentView(R.layout.actions_layout);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
theList = (ListView) findViewById(R.id.android_list);
diff --git a/cSploit/src/org/csploit/android/MainActivity.java b/cSploit/src/org/csploit/android/MainActivity.java
index 872701a80f..680116b833 100644
--- a/cSploit/src/org/csploit/android/MainActivity.java
+++ b/cSploit/src/org/csploit/android/MainActivity.java
@@ -40,7 +40,7 @@
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemLongClickListener;
-import android.widget.ArrayAdapter;
+import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.RelativeLayout;
@@ -91,6 +91,9 @@
import java.io.IOException;
import java.net.NoRouteToHostException;
import java.util.ArrayList;
+import java.util.List;
+import java.util.Observable;
+import java.util.Observer;
import static org.csploit.android.services.UpdateChecker.UPDATE_AVAILABLE;
import static org.csploit.android.services.UpdateChecker.UPDATE_CHECKING;
@@ -180,7 +183,7 @@ public void createOnlineLayout() {
lv.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView> parent, View view, int position, long id) {
- Target t = System.getTarget(position);
+ Target t = (Target) mTargetAdapter.getItem(position);
if (t.getType() == Target.Type.NETWORK) {
if (mActionMode == null)
targetAliasPrompt(t);
@@ -200,7 +203,7 @@ public boolean onItemLongClick(AdapterView> parent, View view, int position, l
mWipeReceiver.register(MainActivity.this);
mMsfReceiver.register(MainActivity.this);
- mRadarReceiver.setTargetAdapter(mTargetAdapter);
+ mRadarReceiver.setObserver(mTargetAdapter);
StartRPCServer();
@@ -317,6 +320,9 @@ public void onItemClick(AdapterView> parent, View view, int position, long id)
return;
}
+ Target target = (Target) mTargetAdapter.getItem(position);
+ System.setCurrentTarget(target);
+
new Thread(new Runnable() {
@Override
public void run() {
@@ -329,7 +335,6 @@ public void run() {
}
}).start();
- System.setCurrentTarget(position);
Toast.makeText(MainActivity.this,
getString(R.string.selected_) + System.getCurrentTarget(),
Toast.LENGTH_SHORT).show();
@@ -497,9 +502,11 @@ public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
case R.id.multi_action:
final int[] selected = mTargetAdapter.getSelectedPositions();
if (selected.length > 1) {
- commonPlugins = System.getPluginsForTarget(System.getTarget(selected[0]));
+ Target target = (Target) mTargetAdapter.getItem(selected[0]);
+ commonPlugins = System.getPluginsForTarget(target);
for (int i = 1; i < selected.length; i++) {
- ArrayList targetPlugins = System.getPluginsForTarget(System.getTarget(selected[i]));
+ target = (Target) mTargetAdapter.getItem(selected[i]);
+ ArrayList targetPlugins = System.getPluginsForTarget(target);
ArrayList removeThem = new ArrayList();
for (Plugin p : commonPlugins) {
if (!targetPlugins.contains(p))
@@ -533,7 +540,7 @@ public void onChoice(int[] choices) {
(new ErrorDialog(getString(R.string.error), "no common actions found", MainActivity.this)).show();
}
} else {
- targetAliasPrompt(System.getTarget(selected[0]));
+ targetAliasPrompt((Target) mTargetAdapter.getItem(selected[0]));
}
mode.finish(); // Action picked, so close the CAB
return true;
@@ -817,14 +824,24 @@ public void onDestroy() {
super.onDestroy();
}
- public class TargetAdapter extends ArrayAdapter {
- public TargetAdapter() {
- super(MainActivity.this, R.layout.target_list_item);
- }
+ public class TargetAdapter extends BaseAdapter implements Runnable, Observer {
+
+ private List list = System.getTargets();
+ private boolean isDark = getSharedPreferences("THEME", 0).getBoolean("isDark", false);
@Override
public int getCount() {
- return System.getTargets().size();
+ return list.size();
+ }
+
+ @Override
+ public Object getItem(int position) {
+ return list.get(position);
+ }
+
+ @Override
+ public long getItemId(int position) {
+ return R.layout.target_list_item;
}
@Override
@@ -835,24 +852,21 @@ public View getView(int position, View convertView, ViewGroup parent) {
if (row == null) {
LayoutInflater inflater = (LayoutInflater) MainActivity.this
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- row = inflater
- .inflate(R.layout.target_list_item, parent, false);
- if (getSharedPreferences("THEME", 0).getBoolean("isDark", false))
+ row = inflater.inflate(R.layout.target_list_item, parent, false);
+
+ if (isDark)
row.setBackgroundResource(R.drawable.card_background_dark);
+
holder = new TargetHolder();
- holder.itemImage = (ImageView) (row != null ? row
- .findViewById(R.id.itemIcon) : null);
- holder.itemTitle = (TextView) (row != null ? row
- .findViewById(R.id.itemTitle) : null);
- holder.itemDescription = (TextView) (row != null ? row
- .findViewById(R.id.itemDescription) : null);
-
- if (row != null)
- row.setTag(holder);
+ holder.itemImage = (ImageView) row.findViewById(R.id.itemIcon);
+ holder.itemTitle = (TextView) row.findViewById(R.id.itemTitle);
+ holder.itemDescription = (TextView) row.findViewById(R.id.itemDescription);
+
+ row.setTag(holder);
} else
holder = (TargetHolder) row.getTag();
- Target target = System.getTarget(position);
+ Target target = list.get(position);
if (target.hasAlias())
holder.itemTitle.setText(Html.fromHtml(""
@@ -864,8 +878,6 @@ public View getView(int position, View convertView, ViewGroup parent) {
holder.itemTitle.setTextColor(getResources().getColor((target.isConnected() ? R.color.app_color : R.color.gray_text)));
- if (row != null && (getSharedPreferences("THEME", 0).getBoolean("isDark", false)))
- row.setBackgroundResource(R.drawable.card_background_dark);
holder.itemTitle.setTypeface(null, Typeface.NORMAL);
holder.itemImage.setImageResource(target.getDrawableResourceId());
holder.itemDescription.setText(target.getDescription());
@@ -874,7 +886,7 @@ public View getView(int position, View convertView, ViewGroup parent) {
}
public void clearSelection() {
- for (Target t : System.getTargets())
+ for (Target t : list)
t.setSelected(false);
notifyDataSetChanged();
if (mActionMode != null)
@@ -882,7 +894,7 @@ public void clearSelection() {
}
public void toggleSelection(int position) {
- Target t = System.getTarget(position);
+ Target t = list.get(position);
t.setSelected(!t.isSelected());
notifyDataSetChanged();
if (mActionMode != null) {
@@ -895,7 +907,7 @@ public void toggleSelection(int position) {
public int getSelectedCount() {
int i = 0;
- for (Target t : System.getTargets())
+ for (Target t : list)
if (t.isSelected())
i++;
return i;
@@ -903,7 +915,7 @@ public int getSelectedCount() {
public ArrayList getSelected() {
ArrayList result = new ArrayList();
- for (Target t : System.getTargets())
+ for (Target t : list)
if (t.isSelected())
result.add(t);
return result;
@@ -913,12 +925,23 @@ public int[] getSelectedPositions() {
int[] res = new int[getSelectedCount()];
int j = 0;
- for (int i = 0; i < System.getTargets().size(); i++)
- if (System.getTarget(i).isSelected())
+ for (int i = 0; i < list.size(); i++)
+ if (list.get(i).isSelected())
res[j++] = i;
return res;
}
+ @Override
+ public void update(Observable observable, Object data) {
+ MainActivity.this.runOnUiThread(this);
+ }
+
+ @Override
+ public void run() {
+ list = System.getTargets();
+ notifyDataSetChanged();
+ }
+
class TargetHolder {
ImageView itemImage;
TextView itemTitle;
diff --git a/cSploit/src/org/csploit/android/core/MultiAttackService.java b/cSploit/src/org/csploit/android/core/MultiAttackService.java
index e9367d9227..8956a8c6de 100644
--- a/cSploit/src/org/csploit/android/core/MultiAttackService.java
+++ b/cSploit/src/org/csploit/android/core/MultiAttackService.java
@@ -16,6 +16,7 @@
import org.csploit.android.net.metasploit.MsfExploit;
import org.csploit.android.tools.NMap;
+import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@@ -264,10 +265,12 @@ protected void onHandleIntent(Intent intent) {
mRunning = true;
//fetch targets
+ // TODO: rewrite this service since target index may change
+ List list = System.getTargets();
Target[] targets = new Target[targetsIndex.length];
for(i =0; i< targetsIndex.length;i++)
- targets[i] = System.getTarget(targetsIndex[i]);
+ targets[i] = list.get(targetsIndex[i]);
//fetch tasks
for(int stringId : actions) {
diff --git a/cSploit/src/org/csploit/android/core/System.java b/cSploit/src/org/csploit/android/core/System.java
index 3a0b2dd968..e30d7edf75 100644
--- a/cSploit/src/org/csploit/android/core/System.java
+++ b/cSploit/src/org/csploit/android/core/System.java
@@ -85,6 +85,7 @@
import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedList;
+import java.util.List;
import java.util.Map;
import java.util.Vector;
import java.util.regex.Matcher;
@@ -111,8 +112,8 @@ public class System
private static WifiLock mWifiLock = null;
private static WakeLock mWakeLock = null;
private static Network mNetwork = null;
- private static final Vector mTargets = new Vector();
- private static int mCurrentTarget = 0;
+ private static final List mTargets = new ArrayList<>();
+ private static Target mCurrentTarget = null;
private static Map mServices = null;
private static Map mPorts = null;
private static Map mVendors = null;
@@ -360,10 +361,12 @@ public static void reloadNetworkMapping(){
gateway.setAlias(mNetwork.getSSID());
device.setAlias(android.os.Build.MODEL);
- mTargets.clear();
- mTargets.add(network);
- mTargets.add(gateway);
- mTargets.add(device);
+ synchronized (mTargets) {
+ mTargets.clear();
+ mTargets.add(network);
+ mTargets.add(gateway);
+ mTargets.add(device);
+ }
mInitialized = true;
}
@@ -748,12 +751,13 @@ public static String saveSession(String sessionName) throws IOException{
builder.append(SESSION_MAGIC + "\n");
// skip the network target
- builder.append(mTargets.size() - 1).append("\n");
- for(Target target : mTargets){
- if(target.getType() != Target.Type.NETWORK)
- target.serialize(builder);
+ synchronized (mTargets) {
+ builder.append(mTargets.size() - 1).append("\n");
+ for (Target target : mTargets) {
+ if (target.getType() != Target.Type.NETWORK)
+ target.serialize(builder);
+ }
}
- builder.append(mCurrentTarget).append("\n");
session = builder.toString();
@@ -810,16 +814,17 @@ public static void loadSession(String filename) throws Exception{
if(!hasTarget(target)){
System.addOrderedTarget(target);
} else{
- for(int j = 0; j < mTargets.size(); j++){
- if(mTargets.get(j) != null && mTargets.get(j).equals(target)){
- mTargets.set(j, target);
- break;
+ synchronized (mTargets) {
+ for (int j = 0; j < mTargets.size(); j++) {
+ if (mTargets.get(j) != null && mTargets.get(j).equals(target)) {
+ mTargets.set(j, target);
+ break;
+ }
}
}
}
}
- mCurrentTarget = Integer.parseInt(reader.readLine());
reader.close();
} catch(Exception e){
@@ -849,10 +854,10 @@ public static void setMsfRpc(RPCClient value){
mMsfRpc = value;
// refresh all exploits
// NOTE: this method is usually called by the RPCServer Thread, which will not block the UI
- for( Target t : getTargets()) {
- for( Exploit e : t.getExploits()) {
- if(e instanceof MsfExploit) {
- ((MsfExploit)e).refresh();
+ for (Target t : getTargets()) { // use a copy of the targets to avoid deadlocks.
+ for (Exploit e : t.getExploits()) {
+ if (e instanceof MsfExploit) {
+ ((MsfExploit) e).refresh();
}
}
}
@@ -918,16 +923,18 @@ else if(name.endsWith(".tiff"))
}
public static void reset() throws SocketException{
- mTargets.clear();
+ mCurrentTarget = null;
- // local network
- mTargets.add(new Target(System.getNetwork()));
- // network gateway
- mTargets.add(new Target(System.getNetwork().getGatewayAddress(), System.getNetwork().getGatewayHardware()));
- // device network address
- mTargets.add(new Target(System.getNetwork().getLocalAddress(), System.getNetwork().getLocalHardware()));
+ synchronized (mTargets) {
+ mTargets.clear();
- mCurrentTarget = 0;
+ // local network
+ mTargets.add(new Target(System.getNetwork()));
+ // network gateway
+ mTargets.add(new Target(System.getNetwork().getGatewayAddress(), System.getNetwork().getGatewayHardware()));
+ // device network address
+ mTargets.add(new Target(System.getNetwork().getLocalAddress(), System.getNetwork().getLocalHardware()));
+ }
}
public static boolean isInitialized(){
@@ -975,41 +982,14 @@ public static Network getNetwork() {
return mNetwork;
}
- public static Vector getTargets(){
- return mTargets;
- }
-
- public static ArrayList getTargetsByType(Target.Type type){
- ArrayList filtered = new ArrayList();
-
- for(Target target : mTargets){
- if(target.getType() == type)
- filtered.add(target);
- }
-
- return filtered;
- }
-
- public static ArrayList getNetworkEndpoints(){
- ArrayList filtered = new ArrayList();
-
- for(Target target : mTargets){
- if(target.getType() == Type.ENDPOINT)
- filtered.add(target.getEndpoint());
+ /**
+ * get a copy of the current targets
+ * @return a copy of the target list
+ */
+ public static List getTargets(){
+ synchronized (mTargets) {
+ return new ArrayList<>(mTargets);
}
-
- return filtered;
- }
-
- public static void addTarget(int index, Target target){
- mTargets.add(index, target);
- // update current target index
- if(mCurrentTarget >= index)
- mCurrentTarget++;
- }
-
- public static void addTarget(Target target){
- mTargets.add(target);
}
/**
@@ -1018,44 +998,39 @@ public static void addTarget(Target target){
* @return true if target is added, false if already present
*/
public static boolean addOrderedTarget(Target target){
- if(target != null && !hasTarget(target)){
- for(int i = 0; i < getTargets().size(); i++){
- if(getTarget(i).comesAfter(target)){
- addTarget(i, target);
+ if(target == null)
+ return false;
+
+ synchronized (mTargets) {
+ if(mTargets.contains(target)) {
+ return false;
+ }
+
+ for (int i = 0; i < mTargets.size(); i++) {
+ if (mTargets.get(i).comesAfter(target)) {
+ mTargets.add(i, target);
return true;
}
}
- addTarget(target);
+ mTargets.add(target);
return true;
}
-
- return false;
- }
-
- public static Target getTarget(int index){
- return mTargets.get(index);
}
public static boolean hasTarget(Target target){
- return mTargets.contains(target);
- }
-
- public static void setCurrentTarget(int index){
- mCurrentTarget = index;
+ synchronized (mTargets) {
+ return mTargets.contains(target);
+ }
}
public static void setCurrentTarget(Target target) {
- int index = mTargets.indexOf(target);
- if(index != -1)
- setCurrentTarget(index);
- else
- Logger.error("target '" + target + "' not found");
+ mCurrentTarget = target;
}
public static Target getCurrentTarget(){
- return getTarget(mCurrentTarget);
+ return mCurrentTarget;
}
public static Target getTargetByAddress(String address){
diff --git a/cSploit/src/org/csploit/android/net/metasploit/Session.java b/cSploit/src/org/csploit/android/net/metasploit/Session.java
index cc70eb5e5c..86f1d5a292 100644
--- a/cSploit/src/org/csploit/android/net/metasploit/Session.java
+++ b/cSploit/src/org/csploit/android/net/metasploit/Session.java
@@ -58,13 +58,7 @@ public Session(Integer id, Map map) throws UnknownHostException {
mUuid = (String)map.get("uuid");
// Search my Target
- for(Target t : System.getTargets()) {
- InetAddress addr = t.getAddress();
- if(addr!=null && addr.getHostAddress().equals(mTargetHost)) {
- tTmp = t;
- break;
- }
- }
+ tTmp = System.getTargetByAddress(mTargetHost);
if(tTmp == null)
throw new UnknownHostException("no target matches `"+mTargetHost+"'");
mTarget = tTmp;
diff --git a/cSploit/src/org/csploit/android/services/receivers/NetworkRadarReceiver.java b/cSploit/src/org/csploit/android/services/receivers/NetworkRadarReceiver.java
index 95d44d2397..29afbc9ea9 100644
--- a/cSploit/src/org/csploit/android/services/receivers/NetworkRadarReceiver.java
+++ b/cSploit/src/org/csploit/android/services/receivers/NetworkRadarReceiver.java
@@ -4,20 +4,24 @@
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
-import android.widget.BaseAdapter;
+import android.os.Build;
+import android.widget.ArrayAdapter;
import android.widget.Toast;
+import org.csploit.android.MainActivity;
import org.csploit.android.R;
-import org.csploit.android.core.ManagedReceiver;
+import org.csploit.android.core.*;
import org.csploit.android.services.NetworkRadar;
+import java.util.Observer;
+
/**
* receive notifications from NetworkRadar
*/
public class NetworkRadarReceiver extends ManagedReceiver {
private final IntentFilter filter;
- private BaseAdapter targetAdapter;
+ private Observer changeObserver;
public NetworkRadarReceiver() {
filter = new IntentFilter();
@@ -28,8 +32,8 @@ public NetworkRadarReceiver() {
filter.addAction(NetworkRadar.NRDR_CHANGED);
}
- public void setTargetAdapter(BaseAdapter targetAdapter) {
- this.targetAdapter = targetAdapter;
+ public void setObserver(Observer changeObserver) {
+ this.changeObserver = changeObserver;
}
@Override
@@ -65,8 +69,9 @@ private void notifyIntent(Context context, Intent intent) {
Toast.makeText(context, R.string.net_discovery_start_failed, Toast.LENGTH_LONG).show();
break;
case NetworkRadar.NRDR_CHANGED:
- if(targetAdapter != null)
- targetAdapter.notifyDataSetChanged();
+ if(changeObserver != null) {
+ changeObserver.update(null, null);
+ }
break;
}
}
From 82c9ac77bce534499c716fb0c237b86b3ebc21d2 Mon Sep 17 00:00:00 2001
From: fattire
Date: Sat, 3 Oct 2015 18:17:45 -0700
Subject: [PATCH 18/49] Replace slides with fades for more coherence (see
below)
Eventually will want to do complex animations, but for now, I think
the dissolves make it feel more like a single program rather than
multiple activities sliding in and out. Makes me less dizzy too.
Also animate listview items
---
cSploit/res/anim/fadein.xml | 6 +
cSploit/res/anim/fadeout.xml | 6 +
cSploit/res/layout/actions_layout.xml | 15 +--
cSploit/res/layout/plugin_exploit_finder.xml | 67 +++++------
cSploit/res/layout/plugin_mitm.xml | 3 +-
cSploit/res/layout/plugin_mitm_hijacker.xml | 95 +++++++--------
.../layout/plugin_mitm_password_sniffer.xml | 74 ++++++------
cSploit/res/layout/plugin_mitm_sniffer.xml | 109 +++++++++---------
cSploit/res/layout/plugin_portscanner.xml | 93 +++++++--------
cSploit/res/layout/plugin_sessions_layout.xml | 47 ++++----
cSploit/res/layout/plugin_traceroute.xml | 65 ++++++-----
cSploit/res/layout/target_layout.xml | 3 +-
cSploit/res/layout/wifi_scanner.xml | 41 +++----
.../org/csploit/android/ActionActivity.java | 4 +-
.../src/org/csploit/android/MainActivity.java | 6 +-
.../org/csploit/android/SettingsActivity.java | 5 +
.../csploit/android/WifiScannerActivity.java | 3 +-
.../android/plugins/ExploitFinder.java | 2 +-
.../csploit/android/plugins/Inspector.java | 1 +
.../csploit/android/plugins/LoginCracker.java | 1 +
.../csploit/android/plugins/PacketForger.java | 2 +-
.../csploit/android/plugins/PortScanner.java | 1 +
.../csploit/android/plugins/RouterPwn.java | 7 ++
.../org/csploit/android/plugins/Sessions.java | 12 +-
.../csploit/android/plugins/Traceroute.java | 1 +
.../android/plugins/mitm/DNSSpoofing.java | 2 +-
.../csploit/android/plugins/mitm/MITM.java | 9 +-
.../android/plugins/mitm/PasswordSniffer.java | 2 +-
.../csploit/android/plugins/mitm/Sniffer.java | 2 +-
.../plugins/mitm/hijacker/Hijacker.java | 2 +-
.../mitm/hijacker/HijackerWebView.java | 3 +-
31 files changed, 367 insertions(+), 322 deletions(-)
create mode 100644 cSploit/res/anim/fadein.xml
create mode 100644 cSploit/res/anim/fadeout.xml
diff --git a/cSploit/res/anim/fadein.xml b/cSploit/res/anim/fadein.xml
new file mode 100644
index 0000000000..4510acb6b1
--- /dev/null
+++ b/cSploit/res/anim/fadein.xml
@@ -0,0 +1,6 @@
+
+
diff --git a/cSploit/res/anim/fadeout.xml b/cSploit/res/anim/fadeout.xml
new file mode 100644
index 0000000000..4f62cbfbf0
--- /dev/null
+++ b/cSploit/res/anim/fadeout.xml
@@ -0,0 +1,6 @@
+
+
diff --git a/cSploit/res/layout/actions_layout.xml b/cSploit/res/layout/actions_layout.xml
index 346df9944a..55c7aba28c 100644
--- a/cSploit/res/layout/actions_layout.xml
+++ b/cSploit/res/layout/actions_layout.xml
@@ -2,21 +2,21 @@
+ android:paddingTop="8dp">
@@ -25,8 +25,9 @@
android:id="@+id/android_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:showDividers="none"
+ android:animateLayoutChanges="true"
+ android:divider="#00ffffff"
android:dividerHeight="6dp"
- android:divider="#00ffffff"/>
+ android:showDividers="none" />
\ No newline at end of file
diff --git a/cSploit/res/layout/plugin_exploit_finder.xml b/cSploit/res/layout/plugin_exploit_finder.xml
index 85c00b6648..693f03cd88 100644
--- a/cSploit/res/layout/plugin_exploit_finder.xml
+++ b/cSploit/res/layout/plugin_exploit_finder.xml
@@ -1,45 +1,46 @@
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:orientation="vertical"
+ android:padding="10dp">
+ android:id="@+id/searchToggleButton"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:fontFamily="sans-serif-condensed"
+ android:paddingLeft="24dp"
+ android:paddingRight="24dp"
+ android:text="@string/toggle_button"
+ android:textAllCaps="true"
+ android:textOff="Start"
+ android:textOn="Stop" />
+ android:id="@+id/searchActivity"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentRight="true"
+ android:layout_alignTop="@+id/searchToggleButton"
+ android:visibility="invisible" />
+ android:id="@+id/separator"
+ android:layout_width="fill_parent"
+ android:layout_height="1dp"
+ android:layout_below="@+id/searchToggleButton"
+ android:layout_marginBottom="8dp"
+ android:layout_marginTop="8dp"
+ android:background="@android:color/darker_gray" />
+ android:id="@id/android:list"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_alignParentBottom="true"
+ android:layout_alignRight="@+id/searchActivity"
+ android:layout_below="@+id/separator"
+ android:animateLayoutChanges="true" />
\ No newline at end of file
diff --git a/cSploit/res/layout/plugin_mitm.xml b/cSploit/res/layout/plugin_mitm.xml
index ccf189e8c9..50b57f17e5 100644
--- a/cSploit/res/layout/plugin_mitm.xml
+++ b/cSploit/res/layout/plugin_mitm.xml
@@ -11,5 +11,6 @@
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:dividerHeight="6dp"
- android:divider="#00ffffff" />
+ android:divider="#00ffffff"
+ android:animateLayoutChanges="true" />
\ No newline at end of file
diff --git a/cSploit/res/layout/plugin_mitm_hijacker.xml b/cSploit/res/layout/plugin_mitm_hijacker.xml
index dd302814dd..58ef2fb6bc 100644
--- a/cSploit/res/layout/plugin_mitm_hijacker.xml
+++ b/cSploit/res/layout/plugin_mitm_hijacker.xml
@@ -1,61 +1,62 @@
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:orientation="vertical"
+ android:padding="8dp">
+ android:id="@+id/hijackToggleButton"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:fontFamily="sans-serif-condensed"
+ android:paddingLeft="24dp"
+ android:paddingRight="24dp"
+ android:text="@string/toggle_button"
+ android:textAllCaps="true"
+ android:textOff="Start"
+ android:textOn="Stop" />
+ android:id="@+id/hijackActivity"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentRight="true"
+ android:layout_alignTop="@+id/hijackToggleButton"
+ android:visibility="invisible" />
+ android:id="@+id/separator"
+ android:layout_width="fill_parent"
+ android:layout_height="1dp"
+ android:layout_below="@+id/hijackToggleButton"
+ android:layout_marginBottom="8dp"
+ android:layout_marginTop="8dp"
+ android:background="@android:color/darker_gray" />
+ android:id="@+id/textView"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignLeft="@+id/separator"
+ android:layout_alignRight="@+id/separator"
+ android:layout_below="@+id/separator"
+ android:gravity="center_horizontal"
+ android:padding="8dp"
+ android:text="@string/start_hijack"
+ android:textAppearance="?android:attr/textAppearanceSmall"
+ android:textColor="@color/gray_text" />
+ android:id="@+id/listView"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_alignParentBottom="true"
+ android:layout_alignRight="@+id/textView"
+ android:layout_below="@+id/textView"
+ android:animateLayoutChanges="true"
+ android:indicatorLeft="?android:attr/expandableListPreferredItemIndicatorLeft"
+ android:paddingLeft="8dp"
+ android:paddingRight="8dp" />
\ No newline at end of file
diff --git a/cSploit/res/layout/plugin_mitm_password_sniffer.xml b/cSploit/res/layout/plugin_mitm_password_sniffer.xml
index 62bd957df7..a782364237 100644
--- a/cSploit/res/layout/plugin_mitm_password_sniffer.xml
+++ b/cSploit/res/layout/plugin_mitm_password_sniffer.xml
@@ -1,48 +1,50 @@
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:orientation="vertical"
+ android:padding="8dp">
+ android:id="@+id/sniffToggleButton"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:fontFamily="sans-serif-condensed"
+ android:paddingLeft="24dp"
+ android:paddingRight="24dp"
+ android:text="@string/toggle_button"
+ android:textAllCaps="true"
+ android:textOff="Start"
+ android:textOn="Stop" />
+ android:id="@+id/sniffActivity"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentRight="true"
+ android:layout_alignTop="@+id/sniffToggleButton"
+ android:visibility="invisible" />
+ android:id="@+id/separator"
+ android:layout_width="fill_parent"
+ android:layout_height="1dp"
+ android:layout_below="@+id/sniffToggleButton"
+ android:layout_marginBottom="8dp"
+ android:layout_marginTop="8dp"
+ android:background="@android:color/darker_gray" />
+ android:id="@+id/listView"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_alignParentBottom="true"
+ android:layout_alignRight="@+id/sniffActivity"
+ android:layout_below="@+id/separator"
+ android:animateLayoutChanges="true"
+ android:indicatorLeft="?android:attr/expandableListPreferredItemIndicatorLeft"
+ android:paddingLeft="8dp"
+
+ android:paddingRight="8dp" />
\ No newline at end of file
diff --git a/cSploit/res/layout/plugin_mitm_sniffer.xml b/cSploit/res/layout/plugin_mitm_sniffer.xml
index 26c0595d54..7a7f06fb58 100644
--- a/cSploit/res/layout/plugin_mitm_sniffer.xml
+++ b/cSploit/res/layout/plugin_mitm_sniffer.xml
@@ -1,70 +1,71 @@
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:orientation="vertical"
+ android:padding="8dp">
+ android:id="@+id/sniffToggleButton"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:fontFamily="sans-serif-condensed"
+ android:paddingLeft="24dp"
+ android:paddingRight="24dp"
+ android:text="@string/toggle_button"
+ android:textAllCaps="true"
+ android:textOff="@string/start"
+ android:textOn="@string/stop" />
+ android:id="@+id/sniffActivity"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentRight="true"
+ android:layout_alignTop="@+id/sniffToggleButton"
+ android:visibility="invisible" />
+ android:id="@+id/separator"
+ android:layout_width="fill_parent"
+ android:layout_height="1dp"
+ android:layout_below="@+id/sniffToggleButton"
+ android:layout_marginBottom="8dp"
+ android:layout_marginTop="8dp"
+ android:background="@android:color/darker_gray" />
+ android:id="@+id/listView"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_alignParentBottom="true"
+ android:layout_alignRight="@+id/sniffActivity"
+ android:layout_below="@+id/separator"
+ android:animateLayoutChanges="true"
+ android:indicatorLeft="?android:attr/expandableListPreferredItemIndicatorLeft"
+ android:paddingLeft="8dp"
+ android:paddingRight="8dp" />
+ android:id="@+id/sortSpinner"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignBottom="@+id/sniffToggleButton"
+ android:layout_alignTop="@+id/sniffActivity"
+ android:layout_toLeftOf="@+id/sniffActivity"
+ android:layout_toRightOf="@+id/textView1" />
+ android:id="@+id/textView1"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignBottom="@+id/sniffToggleButton"
+ android:layout_alignTop="@+id/sortSpinner"
+ android:layout_toRightOf="@+id/sniffToggleButton"
+ android:gravity="center_vertical"
+ android:paddingLeft="24dp"
+ android:paddingRight="8dp"
+ android:text="@string/sort"
+ android:textAppearance="?android:attr/textAppearanceMedium" />
\ No newline at end of file
diff --git a/cSploit/res/layout/plugin_portscanner.xml b/cSploit/res/layout/plugin_portscanner.xml
index 1b118f4959..826434bf87 100644
--- a/cSploit/res/layout/plugin_portscanner.xml
+++ b/cSploit/res/layout/plugin_portscanner.xml
@@ -1,79 +1,80 @@
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:orientation="vertical"
+ android:padding="8dp">
+ android:id="@+id/scanToggleButton"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:fontFamily="sans-serif-condensed"
+ android:paddingLeft="24dp"
+ android:paddingRight="24dp"
+ android:text="@string/toggle_button"
+ android:textAllCaps="true"
+ android:textOff="@string/start"
+ android:textOn="Stop" />
+ android:background="@android:color/darker_gray" />
+ android:id="@+id/scanListView"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_alignParentLeft="true"
+ android:layout_alignParentRight="true"
+ android:layout_below="@+id/separator"
+ android:animateLayoutChanges="true" />
+ android:id="@+id/scanActivity"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignRight="@+id/scanListView"
+ android:visibility="invisible" />
+ android:visibility="gone" />
diff --git a/cSploit/res/layout/plugin_sessions_layout.xml b/cSploit/res/layout/plugin_sessions_layout.xml
index 809086d01b..27e1282d9f 100644
--- a/cSploit/res/layout/plugin_sessions_layout.xml
+++ b/cSploit/res/layout/plugin_sessions_layout.xml
@@ -1,38 +1,37 @@
+ android:id="@+id/layout"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:padding="10dp">
-
-
+ android:id="@android:id/list"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_alignParentBottom="true"
+ android:layout_alignParentLeft="true"
+ android:layout_below="@+id/textView"
+ android:animateLayoutChanges="true" />
+ android:layout_alignParentLeft="true"
+ android:background="@android:color/darker_gray" />
+ android:id="@+id/textView"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentLeft="true"
+ android:layout_alignParentRight="true"
+ android:layout_alignParentTop="true"
+ android:padding="5dp"
+ android:text="@string/sessions_title"
+ android:textAppearance="?android:attr/textAppearanceSmall"
+ android:textColor="#ccc" />
\ No newline at end of file
diff --git a/cSploit/res/layout/plugin_traceroute.xml b/cSploit/res/layout/plugin_traceroute.xml
index 2a27bdf7a0..7deb81c44b 100644
--- a/cSploit/res/layout/plugin_traceroute.xml
+++ b/cSploit/res/layout/plugin_traceroute.xml
@@ -1,44 +1,45 @@
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:orientation="vertical"
+ android:padding="8dp">
+ android:id="@+id/traceToggleButton"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:fontFamily="sans-serif-condensed"
+ android:paddingLeft="24dp"
+ android:paddingRight="24dp"
+ android:text="@string/toggle_button"
+ android:textAllCaps="true"
+ android:textOff="Start"
+ android:textOn="Stop" />
+ android:id="@+id/separator"
+ android:layout_width="fill_parent"
+ android:layout_height="1dp"
+ android:layout_below="@+id/traceToggleButton"
+ android:layout_marginBottom="8dp"
+ android:layout_marginTop="8dp"
+ android:background="@android:color/darker_gray" />
+ android:id="@+id/traceListView"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_alignParentLeft="true"
+ android:layout_alignParentRight="true"
+ android:layout_below="@+id/separator"
+ android:animateLayoutChanges="true" />
+ android:id="@+id/traceActivity"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignRight="@+id/traceListView"
+ android:visibility="invisible" />
\ No newline at end of file
diff --git a/cSploit/res/layout/target_layout.xml b/cSploit/res/layout/target_layout.xml
index acfb0543ad..0f07f7ffea 100644
--- a/cSploit/res/layout/target_layout.xml
+++ b/cSploit/res/layout/target_layout.xml
@@ -12,7 +12,8 @@
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
- android:layout_below="@+id/textView" />
+ android:layout_below="@+id/textView"
+ android:animateLayoutChanges="true" />
+ android:id="@+id/layout"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:padding="8dp">
+ android:id="@+id/android:list"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_alignParentBottom="true"
+ android:layout_alignParentLeft="true"
+ android:layout_below="@+id/scanStatusText"
+ android:animateLayoutChanges="true" />
+ android:id="@+id/scanStatusText"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignLeft="@+id/android:list"
+ android:layout_alignParentTop="true"
+ android:layout_alignRight="@+id/android:list"
+ android:fontFamily="sans-serif-condensed"
+ android:padding="8dp"
+ android:text="Status"
+ android:textAppearance="?android:attr/textAppearanceSmall" />
\ No newline at end of file
diff --git a/cSploit/src/org/csploit/android/ActionActivity.java b/cSploit/src/org/csploit/android/ActionActivity.java
index 360b43988c..1fcba75a42 100644
--- a/cSploit/src/org/csploit/android/ActionActivity.java
+++ b/cSploit/src/org/csploit/android/ActionActivity.java
@@ -83,7 +83,7 @@ public void onItemClick(AdapterView> parent, View view, int position, long id)
ActionActivity.this,
plugin.getClass()
));
- overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_left);
+ overridePendingTransition(R.anim.fadeout, R.anim.fadein);
} else
plugin.onActionClick(getApplicationContext());
}
@@ -113,7 +113,7 @@ public boolean onOptionsItemSelected(MenuItem item) {
@Override
public void onBackPressed() {
super.onBackPressed();
- overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_left);
+ overridePendingTransition(R.anim.fadeout, R.anim.fadein);
}
public class ActionsAdapter extends ArrayAdapter {
diff --git a/cSploit/src/org/csploit/android/MainActivity.java b/cSploit/src/org/csploit/android/MainActivity.java
index 680116b833..1d3b3e685d 100644
--- a/cSploit/src/org/csploit/android/MainActivity.java
+++ b/cSploit/src/org/csploit/android/MainActivity.java
@@ -330,8 +330,8 @@ public void run() {
startActivityForResult(new Intent(MainActivity.this,
ActionActivity.class), WIFI_CONNECTION_REQUEST);
- overridePendingTransition(R.anim.slide_in_left,
- R.anim.slide_out_left);
+ overridePendingTransition(R.anim.fadeout, R.anim.fadein);
+
}
}).start();
@@ -650,6 +650,7 @@ public void run() {
startActivityForResult(new Intent(MainActivity.this,
WifiScannerActivity.class), WIFI_CONNECTION_REQUEST);
+ overridePendingTransition(R.anim.fadeout, R.anim.fadein);
return true;
case R.id.new_session:
@@ -744,6 +745,7 @@ public void onItemSelected(int index) {
case R.id.settings:
startActivity(new Intent(MainActivity.this, SettingsActivity.class));
+ overridePendingTransition(R.anim.fadeout, R.anim.fadein);
return true;
case R.id.ss_monitor:
diff --git a/cSploit/src/org/csploit/android/SettingsActivity.java b/cSploit/src/org/csploit/android/SettingsActivity.java
index 362174d831..da0e6d81b5 100644
--- a/cSploit/src/org/csploit/android/SettingsActivity.java
+++ b/cSploit/src/org/csploit/android/SettingsActivity.java
@@ -575,6 +575,11 @@ public void onDestroy() {
}
super.onDestroy();
}
+ }
+ @Override
+ public void onBackPressed() {
+ super.onBackPressed();
+ overridePendingTransition(R.anim.fadeout, R.anim.fadein);
}
}
diff --git a/cSploit/src/org/csploit/android/WifiScannerActivity.java b/cSploit/src/org/csploit/android/WifiScannerActivity.java
index 81ce8dd865..ad1fdf3195 100644
--- a/cSploit/src/org/csploit/android/WifiScannerActivity.java
+++ b/cSploit/src/org/csploit/android/WifiScannerActivity.java
@@ -415,7 +415,6 @@ public boolean onOptionsItemSelected(MenuItem item){
}
if(item.getItemId() == android.R.id.home){
onBackPressed();
-
return true;
} else
return super.onOptionsItemSelected(item);
@@ -435,7 +434,7 @@ public void onBackPressed(){
setResult(RESULT_OK, intent);
super.onBackPressed();
- overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_left);
+ overridePendingTransition(R.anim.fadeout, R.anim.fadein);
}
public class ScanAdapter extends ArrayAdapter{
diff --git a/cSploit/src/org/csploit/android/plugins/ExploitFinder.java b/cSploit/src/org/csploit/android/plugins/ExploitFinder.java
index ea7440f4e8..98a5c4ea1c 100644
--- a/cSploit/src/org/csploit/android/plugins/ExploitFinder.java
+++ b/cSploit/src/org/csploit/android/plugins/ExploitFinder.java
@@ -384,7 +384,7 @@ public boolean onOptionsItemSelected(MenuItem item) {
public void onBackPressed() {
setStoppedState();
super.onBackPressed();
- overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_left);
+ overridePendingTransition(R.anim.fadeout, R.anim.fadein);
}
@Override
diff --git a/cSploit/src/org/csploit/android/plugins/Inspector.java b/cSploit/src/org/csploit/android/plugins/Inspector.java
index 716558cfac..c33f61f7b9 100644
--- a/cSploit/src/org/csploit/android/plugins/Inspector.java
+++ b/cSploit/src/org/csploit/android/plugins/Inspector.java
@@ -184,6 +184,7 @@ public void onClick(View v){
public void onBackPressed(){
setStoppedState();
super.onBackPressed();
+ overridePendingTransition(R.anim.fadeout, R.anim.fadein);
}
@Override
diff --git a/cSploit/src/org/csploit/android/plugins/LoginCracker.java b/cSploit/src/org/csploit/android/plugins/LoginCracker.java
index 44fa84843d..444e37e4be 100644
--- a/cSploit/src/org/csploit/android/plugins/LoginCracker.java
+++ b/cSploit/src/org/csploit/android/plugins/LoginCracker.java
@@ -413,6 +413,7 @@ protected void onActivityResult(int request, int result, Intent intent) {
public void onBackPressed() {
setStoppedState();
super.onBackPressed();
+ overridePendingTransition(R.anim.fadeout, R.anim.fadein);
}
public class ProtocolAdapter extends BaseAdapter implements SpinnerAdapter {
diff --git a/cSploit/src/org/csploit/android/plugins/PacketForger.java b/cSploit/src/org/csploit/android/plugins/PacketForger.java
index 4e4cf51bd2..8051ebc589 100644
--- a/cSploit/src/org/csploit/android/plugins/PacketForger.java
+++ b/cSploit/src/org/csploit/android/plugins/PacketForger.java
@@ -289,7 +289,7 @@ private void setStoppedState(String errorMessage) {
@Override
public void onBackPressed() {
setStoppedState(null);
-
super.onBackPressed();
+ overridePendingTransition(R.anim.fadeout, R.anim.fadein);
}
}
diff --git a/cSploit/src/org/csploit/android/plugins/PortScanner.java b/cSploit/src/org/csploit/android/plugins/PortScanner.java
index 68ede17319..79a2715e6a 100644
--- a/cSploit/src/org/csploit/android/plugins/PortScanner.java
+++ b/cSploit/src/org/csploit/android/plugins/PortScanner.java
@@ -352,6 +352,7 @@ public void onInputEntered(String input) {
public void onBackPressed() {
setStoppedState();
super.onBackPressed();
+ overridePendingTransition(R.anim.fadeout, R.anim.fadein);
}
private class Receiver extends NMap.SynScanReceiver {
diff --git a/cSploit/src/org/csploit/android/plugins/RouterPwn.java b/cSploit/src/org/csploit/android/plugins/RouterPwn.java
index fb3ac41344..b4f000b3d4 100644
--- a/cSploit/src/org/csploit/android/plugins/RouterPwn.java
+++ b/cSploit/src/org/csploit/android/plugins/RouterPwn.java
@@ -47,6 +47,13 @@ public boolean isAllowedTarget(Target target){
return target.isRouter();
}
+
+ @Override
+ public void onBackPressed() {
+ super.onBackPressed();
+ overridePendingTransition(R.anim.fadeout, R.anim.fadein);
+ }
+
@Override
public void onActionClick(Context context){
try{
diff --git a/cSploit/src/org/csploit/android/plugins/Sessions.java b/cSploit/src/org/csploit/android/plugins/Sessions.java
index 8c21c3144f..584fab63ee 100644
--- a/cSploit/src/org/csploit/android/plugins/Sessions.java
+++ b/cSploit/src/org/csploit/android/plugins/Sessions.java
@@ -77,7 +77,7 @@ public void onChoice(int choice) {
case R.string.open_shell:
System.setCurrentSession(s);
startActivity(new Intent(Sessions.this, Console.class));
- overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_left);
+ overridePendingTransition(R.anim.fadeout, R.anim.fadein);
break;
case R.string.show_full_description:
String message = s.getDescription();
@@ -126,7 +126,7 @@ public void onItemClick(AdapterView> parent, View view, int position, long id)
if(s.haveShell()) {
System.setCurrentSession(s);
startActivity(new Intent(Sessions.this,Console.class));
- overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_left);
+ overridePendingTransition(R.anim.fadeout, R.anim.fadein);
} else {
longClickListener.onItemLongClick(parent, view, position, id);
}
@@ -179,7 +179,7 @@ public void run() {
}).start();
}
- @Override
+ @Override
public void onRpcChange(RPCClient currentValue) {
if(UIThread==null)
return;
@@ -188,4 +188,10 @@ public void onRpcChange(RPCClient currentValue) {
else if(currentValue == null)
new FinishDialog(getString(R.string.error),getString(R.string.msfrpc_disconnected),Sessions.this).show();
}
+
+ @Override
+ public void onBackPressed() {
+ super.onBackPressed();
+ overridePendingTransition(R.anim.fadeout, R.anim.fadein);
+ }
}
\ No newline at end of file
diff --git a/cSploit/src/org/csploit/android/plugins/Traceroute.java b/cSploit/src/org/csploit/android/plugins/Traceroute.java
index 8edf16c5dc..0ad911884f 100644
--- a/cSploit/src/org/csploit/android/plugins/Traceroute.java
+++ b/cSploit/src/org/csploit/android/plugins/Traceroute.java
@@ -141,6 +141,7 @@ public boolean onOptionsItemSelected(MenuItem item){
public void onBackPressed() {
setStoppedState();
super.onBackPressed();
+ overridePendingTransition(R.anim.fadeout, R.anim.fadein);
}
private class Receiver extends NMap.TraceReceiver {
diff --git a/cSploit/src/org/csploit/android/plugins/mitm/DNSSpoofing.java b/cSploit/src/org/csploit/android/plugins/mitm/DNSSpoofing.java
index 53ac8fc72b..cf0fc832cf 100644
--- a/cSploit/src/org/csploit/android/plugins/mitm/DNSSpoofing.java
+++ b/cSploit/src/org/csploit/android/plugins/mitm/DNSSpoofing.java
@@ -236,7 +236,7 @@ public void run() {
public void onBackPressed() {
setStoppedState();
super.onBackPressed();
- overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_left);
+ overridePendingTransition(R.anim.fadeout, R.anim.fadein);
}
}
diff --git a/cSploit/src/org/csploit/android/plugins/mitm/MITM.java b/cSploit/src/org/csploit/android/plugins/mitm/MITM.java
index 5773800725..8497d3cd26 100644
--- a/cSploit/src/org/csploit/android/plugins/mitm/MITM.java
+++ b/cSploit/src/org/csploit/android/plugins/mitm/MITM.java
@@ -440,7 +440,7 @@ public void onClick(View v) {
Sniffer.class
)
);
- overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_left);
+ overridePendingTransition(R.anim.fadeout, R.anim.fadein);
}
}));
@@ -465,7 +465,7 @@ public void onClick(View v){
PasswordSniffer.class
)
);
- overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_left);
+ overridePendingTransition(R.anim.fadeout, R.anim.fadein);
}
}));
@@ -491,7 +491,7 @@ public void onClick(View v) {
DNSSpoofing.class
)
);
- overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_left);
+ overridePendingTransition(R.anim.fadeout, R.anim.fadein);
}
}));
@@ -516,7 +516,7 @@ public void onClick(View v){
Hijacker.class
)
);
- overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_left);
+ overridePendingTransition(R.anim.fadeout, R.anim.fadein);
}
}));
@@ -987,5 +987,6 @@ public void onError(String error, int resId){
public void onBackPressed(){
setStoppedState();
super.onBackPressed();
+ overridePendingTransition(R.anim.fadeout, R.anim.fadein);
}
}
diff --git a/cSploit/src/org/csploit/android/plugins/mitm/PasswordSniffer.java b/cSploit/src/org/csploit/android/plugins/mitm/PasswordSniffer.java
index e2b6ca7804..7fc5552553 100644
--- a/cSploit/src/org/csploit/android/plugins/mitm/PasswordSniffer.java
+++ b/cSploit/src/org/csploit/android/plugins/mitm/PasswordSniffer.java
@@ -352,6 +352,6 @@ public void run() {
public void onBackPressed() {
setStoppedState();
super.onBackPressed();
- overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_left);
+ overridePendingTransition(R.anim.fadeout, R.anim.fadein);
}
}
\ No newline at end of file
diff --git a/cSploit/src/org/csploit/android/plugins/mitm/Sniffer.java b/cSploit/src/org/csploit/android/plugins/mitm/Sniffer.java
index 20f9f11b46..7d480e92c5 100644
--- a/cSploit/src/org/csploit/android/plugins/mitm/Sniffer.java
+++ b/cSploit/src/org/csploit/android/plugins/mitm/Sniffer.java
@@ -504,6 +504,6 @@ public void run() {
public void onBackPressed(){
setStoppedState();
super.onBackPressed();
- overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_left);
+ overridePendingTransition(R.anim.fadeout, R.anim.fadein);
}
}
\ No newline at end of file
diff --git a/cSploit/src/org/csploit/android/plugins/mitm/hijacker/Hijacker.java b/cSploit/src/org/csploit/android/plugins/mitm/hijacker/Hijacker.java
index 00264c37bd..26f24cc2ef 100644
--- a/cSploit/src/org/csploit/android/plugins/mitm/hijacker/Hijacker.java
+++ b/cSploit/src/org/csploit/android/plugins/mitm/hijacker/Hijacker.java
@@ -622,6 +622,6 @@ public void onItemSelected(int index) {
public void onBackPressed() {
setStoppedState();
super.onBackPressed();
- overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_left);
+ overridePendingTransition(R.anim.fadeout, R.anim.fadein);
}
}
diff --git a/cSploit/src/org/csploit/android/plugins/mitm/hijacker/HijackerWebView.java b/cSploit/src/org/csploit/android/plugins/mitm/hijacker/HijackerWebView.java
index d2c565ab6f..4834a14400 100644
--- a/cSploit/src/org/csploit/android/plugins/mitm/hijacker/HijackerWebView.java
+++ b/cSploit/src/org/csploit/android/plugins/mitm/hijacker/HijackerWebView.java
@@ -190,8 +190,7 @@ public void onBackPressed() {
mWebView.stopLoading();
super.onBackPressed();
- overridePendingTransition(R.anim.slide_in_left,
- R.anim.slide_out_left);
+ overridePendingTransition(R.anim.fadeout, R.anim.fadein);
}
}
}
From de4bcec6463c77519542768c67f6d4b968fa43d3 Mon Sep 17 00:00:00 2001
From: fattire
Date: Sat, 3 Oct 2015 01:13:13 -0700
Subject: [PATCH 19/49] Squashed commits of portscan count
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The following from the show_portcount branch was refactored
w a few bugs fixed. The results were then squashed into this
commit, and brought up to date with develop... and a few bugs
fixed and possibly new ones introduced.
These changes were originally written by fattire, and tux-mind:
Three known bugs:
* routers not scanned
* manually added hosts are not scanned
* ports acquired in other activities don't appear until item is scrolled off
then returns...
Terrible first pass at showing port on main scanner screen (fat-tire)
58e804fa5fe7956570b5a834b9de2aac0a3ea303
alias can be set to null (tux-mind)
4594543cc2d86553c693a9c728e724dc984263d6
give an handy way to scan without custom ports (tux-mind)
20b5ce677a43ba3cc709b8697f2c8e34127a6c39
fixed some little things <3 (tux-mind)
454f31e417289d68db241df15f647bce9660653b
Fixed NPE (tux-mind)
31893e96ca0932dfb8bc283911686c8d10bd0dbb
Use labels/badges/whatever for portcount -- no dark theme support yet … (fat-tire)
d3ea05bd09b2277d61a7c65f7a4f4c758c3f24cb
---
cSploit/res/drawable/rounded_square.xml | 5 ++
cSploit/res/layout/actions_layout.xml | 1 +
cSploit/res/layout/target_list_item.xml | 54 +++++++++++++--
cSploit/res/values/strings.xml | 1 +
.../src/org/csploit/android/MainActivity.java | 37 +++++++---
.../android/plugins/ExploitFinder.java | 40 ++++++-----
.../android/services/NetworkRadar.java | 68 +++++++++++++++----
.../src/org/csploit/android/tools/NMap.java | 4 ++
8 files changed, 163 insertions(+), 47 deletions(-)
create mode 100644 cSploit/res/drawable/rounded_square.xml
diff --git a/cSploit/res/drawable/rounded_square.xml b/cSploit/res/drawable/rounded_square.xml
new file mode 100644
index 0000000000..50a1009bc5
--- /dev/null
+++ b/cSploit/res/drawable/rounded_square.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/cSploit/res/layout/actions_layout.xml b/cSploit/res/layout/actions_layout.xml
index 55c7aba28c..0951e26046 100644
--- a/cSploit/res/layout/actions_layout.xml
+++ b/cSploit/res/layout/actions_layout.xml
@@ -29,5 +29,6 @@
android:divider="#00ffffff"
android:dividerHeight="6dp"
android:showDividers="none" />
+ android:divider="#00ffffff" />
\ No newline at end of file
diff --git a/cSploit/res/layout/target_list_item.xml b/cSploit/res/layout/target_list_item.xml
index 6c28880202..326f459f3d 100644
--- a/cSploit/res/layout/target_list_item.xml
+++ b/cSploit/res/layout/target_list_item.xml
@@ -20,19 +20,65 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
+ android:layout_toLeftOf="@+id/portCountLayout"
android:layout_toRightOf="@id/itemIcon"
- android:textColor="@color/app_color"
+ android:layout_toStartOf="@+id/portCountLayout"
android:fontFamily="sans-serif-light"
+ android:textColor="@color/app_color"
android:textSize="16sp" />
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/cSploit/res/values/strings.xml b/cSploit/res/values/strings.xml
index 21e3e5c0f4..35f182f7d9 100644
--- a/cSploit/res/values/strings.xml
+++ b/cSploit/res/values/strings.xml
@@ -9,6 +9,7 @@
Enter redirection details below:
Address
Port
+ Ports
Target
No information
Services
diff --git a/cSploit/src/org/csploit/android/MainActivity.java b/cSploit/src/org/csploit/android/MainActivity.java
index 1d3b3e685d..7a13603ba5 100644
--- a/cSploit/src/org/csploit/android/MainActivity.java
+++ b/cSploit/src/org/csploit/android/MainActivity.java
@@ -27,6 +27,7 @@
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
+import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.view.ActionMode;
import android.text.Html;
@@ -42,6 +43,7 @@
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
+import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
@@ -135,6 +137,7 @@ private void createUpdateStatusText() {
layout.addView(mUpdateStatus);
}
+
private void createUpdateLayout() {
lv.setVisibility(View.GONE);
@@ -860,30 +863,40 @@ public View getView(int position, View convertView, ViewGroup parent) {
row.setBackgroundResource(R.drawable.card_background_dark);
holder = new TargetHolder();
- holder.itemImage = (ImageView) row.findViewById(R.id.itemIcon);
- holder.itemTitle = (TextView) row.findViewById(R.id.itemTitle);
- holder.itemDescription = (TextView) row.findViewById(R.id.itemDescription);
-
- row.setTag(holder);
+ holder.itemImage = (ImageView) (row != null ? row
+ .findViewById(R.id.itemIcon) : null);
+ holder.itemTitle = (TextView) (row != null ? row
+ .findViewById(R.id.itemTitle) : null);
+ holder.itemDescription = (TextView) (row != null ? row
+ .findViewById(R.id.itemDescription) : null);
+ holder.portCount = (TextView) (row != null ? row
+ .findViewById(R.id.portCount) : null);
+ holder.portCountLayout = (LinearLayout) (row != null ? row
+ .findViewById(R.id.portCountLayout) : null);
+ if (row != null)
+ row.setTag(holder);
} else
holder = (TargetHolder) row.getTag();
- Target target = list.get(position);
+ final Target target = list.get(position);
- if (target.hasAlias())
+ if (target.hasAlias()){
holder.itemTitle.setText(Html.fromHtml(""
+ target.getAlias() + " ( "
+ target.getDisplayAddress() + " )"));
-
- else
+ } else {
holder.itemTitle.setText(target.toString());
-
- holder.itemTitle.setTextColor(getResources().getColor((target.isConnected() ? R.color.app_color : R.color.gray_text)));
+ }
+ holder.itemTitle.setTextColor(ContextCompat.getColor(getApplicationContext(), (target.isConnected() ? R.color.app_color : R.color.gray_text)));
holder.itemTitle.setTypeface(null, Typeface.NORMAL);
holder.itemImage.setImageResource(target.getDrawableResourceId());
holder.itemDescription.setText(target.getDescription());
+ int openedPorts = target.getOpenPorts().size();
+
+ holder.portCount.setText(String.format("%d", openedPorts));
+ holder.portCountLayout.setVisibility(openedPorts < 1 ? View.GONE : View.VISIBLE);
return row;
}
@@ -948,6 +961,8 @@ class TargetHolder {
ImageView itemImage;
TextView itemTitle;
TextView itemDescription;
+ TextView portCount;
+ LinearLayout portCountLayout;
}
}
diff --git a/cSploit/src/org/csploit/android/plugins/ExploitFinder.java b/cSploit/src/org/csploit/android/plugins/ExploitFinder.java
index 98a5c4ea1c..63575ab949 100644
--- a/cSploit/src/org/csploit/android/plugins/ExploitFinder.java
+++ b/cSploit/src/org/csploit/android/plugins/ExploitFinder.java
@@ -65,25 +65,29 @@
import static org.csploit.android.net.metasploit.MsfExploit.Ranking;
public class ExploitFinder extends Plugin {
- private ToggleButton mSearchToggleButton = null;
- private ProgressBar mSearchProgress = null;
- private ListView mListView = null;
- private Future job = null;
- private ExploitAdapter mAdapter = null;
-
- private static ExploitFinder UIThread = null;
-
- public class ExploitAdapter extends ArrayAdapter {
- class ExploitHolder {
- ImageView itemImage;
- TextView itemTitle;
- TextView itemDescription;
- TextView itemRanking;
- }
- public ExploitAdapter() {
- super(ExploitFinder.this, R.layout.plugin_exploit_finder_item, (List) System.getCurrentExploits());
- }
+ private ToggleButton mSearchToggleButton = null;
+ private ProgressBar mSearchProgress = null;
+ private ListView mListView = null;
+ private Future job = null;
+ private ExploitAdapter mAdapter = null;
+
+ private static ExploitFinder UIThread = null;
+
+ public class ExploitAdapter extends ArrayAdapter {
+
+ class ExploitHolder {
+ ImageView itemImage;
+ TextView itemTitle;
+ TextView itemDescription;
+ TextView itemRanking;
+ }
+
+ public ExploitAdapter() {
+ super(ExploitFinder.this, R.layout.plugin_exploit_finder_item, (List) System.getCurrentExploits());
+ }
+
+
@Override
public View getView(int position, View convertView, ViewGroup parent) {
diff --git a/cSploit/src/org/csploit/android/services/NetworkRadar.java b/cSploit/src/org/csploit/android/services/NetworkRadar.java
index e8baadcdbb..0a466c97bd 100644
--- a/cSploit/src/org/csploit/android/services/NetworkRadar.java
+++ b/cSploit/src/org/csploit/android/services/NetworkRadar.java
@@ -8,7 +8,11 @@
import org.csploit.android.core.Logger;
import org.csploit.android.core.System;
import org.csploit.android.core.ChildManager;
+import org.csploit.android.net.Endpoint;
+import org.csploit.android.net.Network;
import org.csploit.android.net.Target;
+import org.csploit.android.tools.NMap;
+import org.csploit.android.tools.NetworkRadar.HostReceiver;
import java.net.InetAddress;
@@ -64,36 +68,57 @@ public void buildMenuItem(MenuItem item) {
item.setEnabled(System.getTools().networkRadar.isEnabled());
}
- private class Receiver extends org.csploit.android.tools.NetworkRadar.HostReceiver {
+ private void onNewHostFound(Target target) {
+ try {
+ System.getTools().nmap.synScan(target, new ScanReceiver(target));
+ } catch (ChildManager.ChildNotStartedException e) {
+ System.errorLogging(e);
+ }
+ }
+
+ private class Receiver extends HostReceiver {
@Override
public void onHostFound(byte[] macAddress, InetAddress ipAddress, String name) {
Target t;
boolean notify = false;
+ boolean justFound;
t = System.getTargetByAddress(ipAddress);
+ justFound = t == null;
- if(t==null) {
+ if(justFound) {
t = new Target(ipAddress, macAddress);
-
- System.addOrderedTarget(t);
-
- notify = true;
- }
-
- if( !t.isConnected() ) {
- t.setConneced(true);
- notify = true;
- }
-
- if (name != null && !name.equals(t.getAlias())) {
t.setAlias(name);
+ System.addOrderedTarget(t);
notify = true;
+ } else {
+ if (!t.isConnected()) {
+ t.setConneced(true);
+ notify = true;
+ }
+
+ if (name != null && !name.equals(t.getAlias())) {
+ t.setAlias(name);
+ notify = true;
+ }
+
+ //TODO: remove me ( and imports )
+ Endpoint e = new Endpoint(ipAddress, macAddress);
+ if(!e.equals(t.getEndpoint())) {
+ Logger.warning(
+ String.format("target '%s' changed it's mac address from '%s' to '%s'",
+ t.toString(), t.getEndpoint().getHardwareAsString(), e.getHardwareAsString()));
+ }
}
if(notify) {
sendIntent(NRDR_CHANGED);
}
+
+ if(justFound) {
+ onNewHostFound(t);
+ }
}
@Override
@@ -120,4 +145,19 @@ public void onDeath(int signal) {
sendIntent(NRDR_STOPPED);
}
}
+
+ private class ScanReceiver extends NMap.SynScanReceiver {
+
+ private final Target target;
+
+ public ScanReceiver(Target target) {
+ this.target = target;
+ }
+
+ @Override
+ public void onPortFound(int port, String protocol) {
+ target.addOpenPort(port, Network.Protocol.fromString(protocol));
+ sendIntent(NRDR_CHANGED);
+ }
+ }
}
diff --git a/cSploit/src/org/csploit/android/tools/NMap.java b/cSploit/src/org/csploit/android/tools/NMap.java
index af76f4e756..2486e1af08 100644
--- a/cSploit/src/org/csploit/android/tools/NMap.java
+++ b/cSploit/src/org/csploit/android/tools/NMap.java
@@ -142,6 +142,10 @@ public Child synScan( Target target, SynScanReceiver receiver, String custom ) t
return super.async( command, receiver );
}
+ public Child synScan( Target target, SynScanReceiver receiver) throws ChildManager.ChildNotStartedException {
+ return synScan(target, receiver, null);
+ }
+
public Child customScan( Target target, SynScanReceiver receiver, String custom ) throws ChildManager.ChildNotStartedException {
String command = "-vvv ";
From d12c2d558422c94b0ddafe3fcebcaeef02301fd3 Mon Sep 17 00:00:00 2001
From: fattire
Date: Mon, 5 Oct 2015 21:27:34 -0700
Subject: [PATCH 20/49] Make mini-browser better - fixes for #373
* use preferred cookiemanager stuff for new non-deprecated api
* fix pinch-to-zoom
* add URL bar
* add status/progress bar
Quick and dirty. Still not 100%, but better.
---
.../layout/plugin_mitm_hijacker_webview.xml | 42 ++++++--
.../mitm/hijacker/HijackerWebView.java | 101 +++++++++++++++---
2 files changed, 121 insertions(+), 22 deletions(-)
diff --git a/cSploit/res/layout/plugin_mitm_hijacker_webview.xml b/cSploit/res/layout/plugin_mitm_hijacker_webview.xml
index 2c0acd2f24..fee5544226 100644
--- a/cSploit/res/layout/plugin_mitm_hijacker_webview.xml
+++ b/cSploit/res/layout/plugin_mitm_hijacker_webview.xml
@@ -1,14 +1,40 @@
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:orientation="vertical">
+
+
+
+
+ android:id="@+id/webView"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_alignParentEnd="true"
+ android:layout_alignParentBottom="true"
+ android:layout_alignParentRight="true"
+ android:layout_below="@+id/url" />
\ No newline at end of file
diff --git a/cSploit/src/org/csploit/android/plugins/mitm/hijacker/HijackerWebView.java b/cSploit/src/org/csploit/android/plugins/mitm/hijacker/HijackerWebView.java
index 4834a14400..863b9da859 100644
--- a/cSploit/src/org/csploit/android/plugins/mitm/hijacker/HijackerWebView.java
+++ b/cSploit/src/org/csploit/android/plugins/mitm/hijacker/HijackerWebView.java
@@ -18,20 +18,29 @@
*/
package org.csploit.android.plugins.mitm.hijacker;
+import android.content.Context;
import android.content.SharedPreferences;
+import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Patterns;
+import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
+import android.view.View;
import android.view.Window;
+import android.view.inputmethod.EditorInfo;
+import android.view.inputmethod.InputMethodManager;
import android.webkit.CookieManager;
import android.webkit.CookieSyncManager;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
+import android.widget.EditText;
+import android.widget.ProgressBar;
+import android.widget.TextView;
import org.csploit.android.R;
import org.csploit.android.core.System;
@@ -43,6 +52,8 @@ public class HijackerWebView extends AppCompatActivity {
private WebSettings mSettings = null;
private WebView mWebView = null;
+ private ProgressBar mProgressBar = null;
+ private EditText mURLet = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -58,42 +69,88 @@ protected void onCreate(Bundle savedInstanceState) {
setTitle(System.getCurrentTarget() + " > MITM > Session Hijacker");
setContentView(R.layout.plugin_mitm_hijacker_webview);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
- setSupportProgressBarIndeterminateVisibility(false);
mWebView = (WebView) findViewById(R.id.webView);
+ mWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
+ mProgressBar = (ProgressBar) findViewById(R.id.webprogress);
+ mURLet = (EditText) findViewById(R.id.url);
+ mProgressBar.setVisibility(View.GONE);
+ mProgressBar.setMax(100);
mSettings = mWebView.getSettings();
mSettings.setJavaScriptEnabled(true);
+ mSettings.setJavaScriptCanOpenWindowsAutomatically(true);
mSettings.setBuiltInZoomControls(true);
mSettings.setAppCacheEnabled(false);
mSettings.setUserAgentString(DEFAULT_USER_AGENT);
+ mSettings.setUseWideViewPort(true);
+
+ mURLet.setOnEditorActionListener(new EditText.OnEditorActionListener() {
+ @Override
+ public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
+ if (actionId == EditorInfo.IME_ACTION_DONE || actionId == EditorInfo.IME_ACTION_NEXT) {
+ mWebView.loadUrl(mURLet.getText().toString());
+ InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
+ imm.hideSoftInputFromWindow(mWebView.getWindowToken(), 0);
+ mWebView.requestFocus();
+ return true;
+ }
+ return false;
+ }
+ });
+
+ mURLet.setOnKeyListener(new EditText.OnKeyListener() {
+ @Override
+ public boolean onKey(View v, int keyCode, KeyEvent event) {
+ if (event.getAction() == KeyEvent.ACTION_DOWN
+ && event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
+ mWebView.loadUrl(mURLet.getText().toString());
+ InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
+ imm.hideSoftInputFromWindow(mWebView.getWindowToken(), 0);
+ mWebView.requestFocus();
+ return true;
+ }
+ return false;
+ }
+ });
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
+ mURLet.setText(url);
return true;
}
});
mWebView.setWebChromeClient(new WebChromeClient() {
+
public void onProgressChanged(WebView view, int progress) {
- if (mWebView != null)
+ if ((mWebView != null) && (mURLet != null) && (progress == 0)); {
getSupportActionBar().setSubtitle(mWebView.getUrl());
+ mURLet.setText(mWebView.getUrl());
+ }
- setSupportProgressBarIndeterminateVisibility(true);
- // Normalize our progress along the progress bar's scale
- int mmprogress = (Window.PROGRESS_END - Window.PROGRESS_START)
- / 100 * progress;
- setProgress(mmprogress);
+ if (mProgressBar != null) {
+ mProgressBar.setVisibility(View.VISIBLE);
+ // Normalize our progress along the progress bar's scale
- if (progress == 100)
- setSupportProgressBarIndeterminateVisibility(false);
+ mProgressBar.setProgress(progress);
+
+ if (progress == 100) {
+ mProgressBar.setVisibility(View.GONE);
+ }
+ }
}
});
- CookieSyncManager.createInstance(this);
- CookieManager.getInstance().removeAllCookie();
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+ CookieManager cm = CookieManager.getInstance();
+ cm.flush();
+ } else {
+ CookieSyncManager.createInstance(this);
+ CookieManager.getInstance().removeAllCookie();
+ }
Session session = (Session) System.getCustomData();
if (session != null) {
@@ -108,7 +165,12 @@ public void onProgressChanged(WebView view, int progress) {
CookieManager.getInstance().setCookie(domain, rawcookie);
}
- CookieSyncManager.getInstance().sync();
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+ CookieManager cm = CookieManager.getInstance();
+ cm.flush();
+ } else {
+ CookieSyncManager.getInstance().startSync();
+ }
if (session.mUserAgent != null
&& session.mUserAgent.isEmpty() == false)
@@ -122,6 +184,7 @@ public void onProgressChanged(WebView view, int progress) {
url += domain;
mWebView.loadUrl(url);
+ mWebView.requestFocus();
}
}
@@ -129,14 +192,24 @@ public void onProgressChanged(WebView view, int progress) {
protected void onResume() {
super.onResume();
- CookieSyncManager.getInstance().startSync();
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+ CookieManager cm = CookieManager.getInstance();
+ cm.flush();
+ } else {
+ CookieSyncManager.getInstance().startSync();
+ }
}
@Override
protected void onPause() {
super.onPause();
- CookieSyncManager.getInstance().stopSync();
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+ CookieManager cm = CookieManager.getInstance();
+ cm.flush();
+ } else {
+ CookieSyncManager.getInstance().startSync();
+ }
}
@Override
From a048d52f0397df8e027581f40d981202e96a3016 Mon Sep 17 00:00:00 2001
From: tux_mind
Date: Tue, 6 Oct 2015 10:36:47 +0200
Subject: [PATCH 21/49] partially fixes #372
---
.../csploit/android/services/UpdateService.java | 2 +-
.../org/csploit/android/update/ApkUpdate.java | 16 +++++++++++++---
.../src/org/csploit/android/update/Update.java | 11 ++++++++---
3 files changed, 22 insertions(+), 7 deletions(-)
diff --git a/cSploit/src/org/csploit/android/services/UpdateService.java b/cSploit/src/org/csploit/android/services/UpdateService.java
index 74a9419a8b..1a24cd2e22 100644
--- a/cSploit/src/org/csploit/android/services/UpdateService.java
+++ b/cSploit/src/org/csploit/android/services/UpdateService.java
@@ -274,7 +274,7 @@ private void finishNotification() {
Intent contentIntent;
errorOccurred = mCurrentTask.errorOccurred;
- contentIntent = mCurrentTask.contentIntent;
+ contentIntent = mCurrentTask.haveIntent() ? mCurrentTask.buildIntent() : null;
if(errorOccurred || contentIntent==null){
Logger.debug("deleting notifications");
diff --git a/cSploit/src/org/csploit/android/update/ApkUpdate.java b/cSploit/src/org/csploit/android/update/ApkUpdate.java
index 267dd21c03..7e20e373e0 100644
--- a/cSploit/src/org/csploit/android/update/ApkUpdate.java
+++ b/cSploit/src/org/csploit/android/update/ApkUpdate.java
@@ -19,9 +19,19 @@ public ApkUpdate(Context context, String url, String version) {
this.version = version;
name = String.format("cSploit-%s.apk", version);
path = String.format("%s/%s", System.getStoragePath(), name);
- contentIntent = new Intent(Intent.ACTION_VIEW);
- contentIntent.setDataAndType(Uri.fromFile(new File(path)), "application/vnd.android.package-archive");
- contentIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
prompt = String.format(context.getString(R.string.new_apk_found), version);
}
+
+ @Override
+ public boolean haveIntent() {
+ return true;
+ }
+
+ @Override
+ public Intent buildIntent() {
+ Intent intent = new Intent(Intent.ACTION_VIEW);
+ intent.setDataAndType(Uri.fromFile(new File(path)), "application/vnd.android.package-archive");
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ return intent;
+ }
}
diff --git a/cSploit/src/org/csploit/android/update/Update.java b/cSploit/src/org/csploit/android/update/Update.java
index 90a6291c54..c7dcfc2049 100644
--- a/cSploit/src/org/csploit/android/update/Update.java
+++ b/cSploit/src/org/csploit/android/update/Update.java
@@ -21,8 +21,6 @@ public abstract class Update implements Serializable {
compression;
public archiveAlgorithm
archiver;
- public Intent
- contentIntent;
public boolean
skipRoot,
fixShebang,
@@ -42,11 +40,18 @@ public void reset() {
version = null;
compression = null;
archiver = null;
- contentIntent = null;
wipeOnFail = fixShebang = errorOccurred = skipRoot = false;
}
}
+ public boolean haveIntent() {
+ return false;
+ }
+
+ public Intent buildIntent() {
+ return null;
+ }
+
public enum compressionAlgorithm {
none,
gzip,
From 21187111a5d24ba4c21f9a1577edf64d110e40b0 Mon Sep 17 00:00:00 2001
From: tux_mind
Date: Tue, 6 Oct 2015 11:42:17 +0200
Subject: [PATCH 22/49] fixed #372
---
cSploit/src/org/csploit/android/helpers/NetworkHelper.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/cSploit/src/org/csploit/android/helpers/NetworkHelper.java b/cSploit/src/org/csploit/android/helpers/NetworkHelper.java
index fe2f356345..11c8ab981f 100644
--- a/cSploit/src/org/csploit/android/helpers/NetworkHelper.java
+++ b/cSploit/src/org/csploit/android/helpers/NetworkHelper.java
@@ -10,7 +10,7 @@ public final class NetworkHelper {
* @return the OUI integer
*/
public static int getOUICode(byte[] macAddress) {
- return (macAddress[2] << 16) & (macAddress[1] << 8) & macAddress[0];
+ return (macAddress[0] << 16) | (macAddress[1] << 8) | macAddress[2];
}
/**
From 6b208e40483df5ed76af38f2b1965cd237f7c760 Mon Sep 17 00:00:00 2001
From: Ilya
Date: Tue, 6 Oct 2015 20:01:00 +1000
Subject: [PATCH 23/49] Update strings.xml
Added 3 new strings.
---
cSploit/res/values-ru/strings.xml | 3 +++
1 file changed, 3 insertions(+)
diff --git a/cSploit/res/values-ru/strings.xml b/cSploit/res/values-ru/strings.xml
index c11cb045ca..28c8dc1587 100644
--- a/cSploit/res/values-ru/strings.xml
+++ b/cSploit/res/values-ru/strings.xml
@@ -280,6 +280,7 @@
О программе
Выбрать свои порты
+ Свои параметры
Инициализация …
Активация WiFi интерфейса …
@@ -496,4 +497,6 @@
Хороший
Отличный
Превосходный
+ Выбрать цель
+ Выбрать %s ?
From 23b7f3ffb6068df42d022cda44346d9d5eb296fe Mon Sep 17 00:00:00 2001
From: tux_mind
Date: Tue, 6 Oct 2015 12:21:04 +0200
Subject: [PATCH 24/49] fixed #375
---
cSploit/src/org/csploit/android/services/NetworkRadar.java | 2 +-
cSploit/src/org/csploit/android/tools/NetworkRadar.java | 4 ++++
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/cSploit/src/org/csploit/android/services/NetworkRadar.java b/cSploit/src/org/csploit/android/services/NetworkRadar.java
index e8baadcdbb..c6da053144 100644
--- a/cSploit/src/org/csploit/android/services/NetworkRadar.java
+++ b/cSploit/src/org/csploit/android/services/NetworkRadar.java
@@ -61,7 +61,7 @@ public void run() {
@Override
public void buildMenuItem(MenuItem item) {
item.setTitle(isRunning() ? R.string.stop_monitor : R.string.start_monitor);
- item.setEnabled(System.getTools().networkRadar.isEnabled());
+ item.setEnabled(System.getTools().networkRadar.isEnabled() && System.getNetwork() != null);
}
private class Receiver extends org.csploit.android.tools.NetworkRadar.HostReceiver {
diff --git a/cSploit/src/org/csploit/android/tools/NetworkRadar.java b/cSploit/src/org/csploit/android/tools/NetworkRadar.java
index 21a31931bf..2fa4a54ef2 100644
--- a/cSploit/src/org/csploit/android/tools/NetworkRadar.java
+++ b/cSploit/src/org/csploit/android/tools/NetworkRadar.java
@@ -56,6 +56,10 @@ public void onEvent(Event e) {
public Child start(HostReceiver receiver) throws ChildManager.ChildNotStartedException {
String ifName;
+ if(System.getNetwork() == null) {
+ throw new ChildManager.ChildNotStartedException();
+ }
+
ifName = System.getNetwork().getInterface().getDisplayName();
return async(ifName, receiver);
From 5e70f942656cf8d988e2fb470735e21b583fa8f7 Mon Sep 17 00:00:00 2001
From: tux_mind
Date: Tue, 6 Oct 2015 12:21:18 +0200
Subject: [PATCH 25/49] removed unused imports
---
cSploit/src/org/csploit/android/core/System.java | 3 ---
1 file changed, 3 deletions(-)
diff --git a/cSploit/src/org/csploit/android/core/System.java b/cSploit/src/org/csploit/android/core/System.java
index e30d7edf75..1eef87dc0f 100644
--- a/cSploit/src/org/csploit/android/core/System.java
+++ b/cSploit/src/org/csploit/android/core/System.java
@@ -44,13 +44,11 @@
import org.csploit.android.gui.dialogs.FatalDialog;
import org.csploit.android.helpers.NetworkHelper;
import org.csploit.android.helpers.ThreadHelper;
-import org.csploit.android.net.Endpoint;
import org.csploit.android.net.GitHubParser;
import org.csploit.android.net.Network;
import org.csploit.android.net.RemoteReader;
import org.csploit.android.net.Target;
import org.csploit.android.net.Target.Exploit;
-import org.csploit.android.net.Target.Type;
import org.csploit.android.net.http.proxy.HTTPSRedirector;
import org.csploit.android.net.http.proxy.Proxy;
import org.csploit.android.net.http.server.Server;
@@ -87,7 +85,6 @@
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
-import java.util.Vector;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.zip.GZIPInputStream;
From e927980ccf4d748be2967cf0b94fc052a62f007a Mon Sep 17 00:00:00 2001
From: tux_mind
Date: Tue, 6 Oct 2015 12:29:09 +0200
Subject: [PATCH 26/49] fixes #374
---
cSploit/src/org/csploit/android/SettingsActivity.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/cSploit/src/org/csploit/android/SettingsActivity.java b/cSploit/src/org/csploit/android/SettingsActivity.java
index 362174d831..6cd150e197 100644
--- a/cSploit/src/org/csploit/android/SettingsActivity.java
+++ b/cSploit/src/org/csploit/android/SettingsActivity.java
@@ -50,7 +50,7 @@
public class SettingsActivity extends AppCompatActivity {
- public static final int SETTINGS_DONE = 101285;
+ public static final int SETTINGS_DONE = 1285;
public static final String SETTINGS_WIPE_START = "SettingsActivity.WIPE_START";
public static final String SETTINGS_WIPE_DIR = "SettingsActivity.data.WIPE_DIR";
public static final String SETTINGS_WIPE_DONE = "SettingsActivity.WIPE_DONE";
From 804c0b92c40a3fd6503d40a3c2c9b95964a841d3 Mon Sep 17 00:00:00 2001
From: tux_mind
Date: Tue, 6 Oct 2015 12:35:14 +0200
Subject: [PATCH 27/49] fixed #377
---
.../org/csploit/android/net/http/RequestParser.java | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/cSploit/src/org/csploit/android/net/http/RequestParser.java b/cSploit/src/org/csploit/android/net/http/RequestParser.java
index e3782ee7a9..f189ac0a16 100644
--- a/cSploit/src/org/csploit/android/net/http/RequestParser.java
+++ b/cSploit/src/org/csploit/android/net/http/RequestParser.java
@@ -20,6 +20,7 @@
import android.util.Patterns;
+import org.csploit.android.core.Logger;
import org.csploit.android.net.ByteBuffer;
import java.net.HttpCookie;
@@ -356,7 +357,14 @@ public static ArrayList parseRawCookie(String rawCookie){
String cookieName = rawCookieNameAndValue[0].trim();
String cookieValue = rawCookieNameAndValue[1].trim();
- HttpCookie cookie = new HttpCookie(cookieName, cookieValue);
+ HttpCookie cookie;
+
+ try {
+ cookie = new HttpCookie(cookieName, cookieValue);
+ } catch (IllegalArgumentException e){
+ Logger.error("Invalid cookie. name=" + cookieName + ":" + cookieValue);
+ continue;
+ }
for(int i = 1; i < rawCookieParams.length; i++){
String rawCookieParamNameAndValue[] = rawCookieParams[i].trim().split("=");
From 6fb3bbfad937a4ace2a42f192b94493684c79708 Mon Sep 17 00:00:00 2001
From: tux_mind
Date: Tue, 6 Oct 2015 14:26:44 +0200
Subject: [PATCH 28/49] WiP for #365
---
cSploit/res/values-ar/strings.xml | 13 -------------
cSploit/res/values-cs/strings.xml | 13 -------------
cSploit/res/values-de/strings.xml | 3 ---
cSploit/res/values-el/strings.xml | 3 ---
cSploit/res/values-es/strings.xml | 13 -------------
cSploit/res/values-fi/strings.xml | 3 ---
cSploit/res/values-fr/strings.xml | 3 ---
cSploit/res/values-hr/strings.xml | 13 -------------
cSploit/res/values-it/strings.xml | 3 ---
cSploit/res/values-nl/strings.xml | 3 ---
cSploit/res/values-no/strings.xml | 13 -------------
cSploit/res/values-pl/strings.xml | 13 -------------
cSploit/res/values-pt/strings.xml | 13 -------------
cSploit/res/values-ru/strings.xml | 13 -------------
cSploit/res/values-tr/strings.xml | 13 -------------
cSploit/res/values-zh-rCN/strings.xml | 13 -------------
cSploit/res/values/strings.xml | 12 +++++++-----
cSploit/src/org/csploit/android/MainActivity.java | 4 +++-
18 files changed, 10 insertions(+), 154 deletions(-)
diff --git a/cSploit/res/values-ar/strings.xml b/cSploit/res/values-ar/strings.xml
index 4268e9dec2..91c93812ba 100644
--- a/cSploit/res/values-ar/strings.xml
+++ b/cSploit/res/values-ar/strings.xml
@@ -1,5 +1,4 @@
- cSploit
إعدادات
cSploit
وهناك مشكلة حدثت، بإرسال السجل لمطور التطبيق
@@ -22,7 +21,6 @@
بروتوكول
cSploit - جناح اختراق شبكة الروبوت.
Copyleft of Simone Margaritelli aka evilsocket.
- http://www.csploit.org/
Disclaimer
@@ -80,7 +78,6 @@
اضغط مرة أخرى لإغلاق هذا التطبيق.
Selected
- https://github.com/cSploit/android/issues/new
أي ملف الجلسة الاطلاع على بطاقة الذاكرة الرقمية المؤمنة.
تحديد ملف الجلسة من بطاقة الذاكرة الرقمية المؤمنة:
حدد الدورة
@@ -364,22 +361,12 @@
- CVE
- both CVE and OSVDB
-
- - OSVDB
- - CVE
- - BOTH
-
Search exploits
- MSF compatible only
- on exploitdb only
- from both exploitdb and MSF
-
- - MSF
- - EXDB
- - BOTH
-
wide host scan
scan for hosts outside the network mask
Advanced
diff --git a/cSploit/res/values-cs/strings.xml b/cSploit/res/values-cs/strings.xml
index c56ca7b05f..00ae9776c3 100644
--- a/cSploit/res/values-cs/strings.xml
+++ b/cSploit/res/values-cs/strings.xml
@@ -1,5 +1,4 @@
- cSploit
Nastavení
cSploit
Ooooops! Něco je špatně, ale zpráva bude odeslána mému vývojáři pro opravu chyby:)
@@ -24,7 +23,6 @@
Protokol
cSploit - An Android network penetration suite.
Copyleft of Simone Margaritelli aka evilsocket.
- http://www.csploit.org/
Záruka
@@ -82,7 +80,6 @@
Pro ukončení aplikace stiskněte znovu ZPĚT
Vybráno
- https://github.com/cSploit/android/issues/new
Na SD kartě nebyl nalezen žádný spoubor ze sezení
Vyberte soubor ze sezení na SD kartě :
Vyberte sezení
@@ -362,22 +359,12 @@
- CVE
- oboje - CVE i OSVDB
-
- - OSVDB
- - CVE
- - BOTH
-
Hledání exploitů
- MSF jenom kompatibilní
- jen na exploitdb
- z obou exploitdb i MSF
-
- - MSF
- - EXDB
- - BOTH
-
široký sken hostitelů
hledovat hostitele i mimo zvolenou síťovou masku
Advanced
diff --git a/cSploit/res/values-de/strings.xml b/cSploit/res/values-de/strings.xml
index 0a3dc5c786..543db16216 100644
--- a/cSploit/res/values-de/strings.xml
+++ b/cSploit/res/values-de/strings.xml
@@ -1,5 +1,4 @@
- cSploit
Einstellungen
cSploit
Uppps! Ich bin abgestürzt, aber ein Fehlerbericht wird an meinen Entwickler geschickt um bei der Behebung des Problems zu helfen :)
@@ -22,7 +21,6 @@
Protokoll
cSploit - An Android network penetration suite.
Copyleft von Simone Margaritelli aka evilsocket.
- http://www.csploit.org/
Haftungsausschluss
@@ -69,7 +67,6 @@
cSploit wird sich beenden. Wirklich fortfahren?
Nochmal auf Zurück drücken um die Anwendung zu beenden.
Ausgewählt
- https://github.com/cSploit/android/issues/new
Keine Sitzungsdatei auf der SD-Karte gefunden.
Wähle eine Sitzungsdatei von der SD-Karte:
Wähle Sitzung
diff --git a/cSploit/res/values-el/strings.xml b/cSploit/res/values-el/strings.xml
index 84c1fc25ef..f20037f6c1 100644
--- a/cSploit/res/values-el/strings.xml
+++ b/cSploit/res/values-el/strings.xml
@@ -1,5 +1,4 @@
- cSploit
Ρυθμίσεις
cSploit
Όπα, πρόβλημα, θα σταλεί email στον προγραματιστή για να
@@ -27,7 +26,6 @@
cSploit - Μία σουίτα δικτυακής διείσδυσης για Android.
Copyleft του Simone Margaritelli άλλος evilsocket.
- http://www.csploit.org/
Αποποίηση ευθύνης
@@ -79,7 +77,6 @@
Κλείσιμο του cSploit, είσαστε σίγουροι;
Πατήστε ξανά το κουμπί επιστροφής για να κλείσετε το app.
Επιλογή
- https://github.com/cSploit/android/issues/new
Δεν βρέθηκε αρχείο συνεδρίας στο sd card.
Επιλέξτε αρχείο συνεδρίας απο το sd card :
Επιλέξτε συνεδρία
diff --git a/cSploit/res/values-es/strings.xml b/cSploit/res/values-es/strings.xml
index 9aab8ea8a4..349c77753c 100644
--- a/cSploit/res/values-es/strings.xml
+++ b/cSploit/res/values-es/strings.xml
@@ -1,5 +1,4 @@
- cSploit
Configuración
cSploit
¡Ooooops! Algo ha ido mal, pero un informe va a ser enviado a mi desarrollador para ayudar a solucionar el problema :)
@@ -22,7 +21,6 @@
Protocolo
cSploit - Suite de penetración de red para Android.
Copyleft de Simone Margaritelli alias evilsocket.
- http://www.csploit.org/
Renuncia
Licencia
@@ -75,7 +73,6 @@
Esto cerrará cSploit, ¿seguro que desea continuar?
Pulse de nuevo para cerrar la aplicación.
Seleccionado
- https://github.com/cSploit/android/issues/new
No se ha encontrado ningún archivo de sesión en la tarjeta SD.
Seleccione un archivo de sesión de la tarjeta SD:
Seleccionar sesión
@@ -311,22 +308,12 @@
- CVE
- tanto CVE como OSVDB
-
- - OSVDB
- - CVE
- - AMBOS
-
Buscar exploits
- solo compatibles con MSF
- solo en exploitdb
- tanto exploitdb como MSF
-
- - MSF
- - EXDB
- - AMBOS
-
El directorio
no existe.
no tiene permiso de escritura.
diff --git a/cSploit/res/values-fi/strings.xml b/cSploit/res/values-fi/strings.xml
index 011a620ce2..6e382d494c 100644
--- a/cSploit/res/values-fi/strings.xml
+++ b/cSploit/res/values-fi/strings.xml
@@ -1,5 +1,4 @@
- cSploit
Asetukset
cSploit
No hupsista. Kaaduin, mutta raportti lähetetään kehittäjälleni
@@ -26,7 +25,6 @@
Protokolla
cSploit - Verkkotestaus sovellus Androidille.
Copyleft: Simone Margaritelli, eli evilsocket.
- http://www.csploit.org/
Käyttöehdot
@@ -83,7 +81,6 @@
Paina takaisin-näppäintä vielä kerran poistuaksesi.
Valittu
- https://github.com/cSploit/android/issues/new
Tilanteita ei löydetty SD-kortilta.
Valitse Tilanne-tiedosto SD-kortilta :
Valitse Tilanne
diff --git a/cSploit/res/values-fr/strings.xml b/cSploit/res/values-fr/strings.xml
index 597c68d839..4a0d0c1e11 100644
--- a/cSploit/res/values-fr/strings.xml
+++ b/cSploit/res/values-fr/strings.xml
@@ -1,6 +1,5 @@
- cSploit
Paramètres
cSploit
Ooooops ! Un crash est survenu, mais le bug va être signalé au
@@ -28,7 +27,6 @@
cSploit - Une suite de pénétration réseau pour Android.
Copyleft de Simone Margaritelli aka evilsocket.
- http://www.csploit.org/
Conditions d\'utilisation
@@ -82,7 +80,6 @@
Ceci arrêtera cSploit, voulez-vous vraiment continuer ?
Appuyez sur retour à nouveau pour quitter l\'application.
Selectionné
- https://github.com/cSploit/android/issues/new
Aucune session trouvée sur la carte SD.
Choisir un fichier de session depuis la carte SD:
Choisir Session
diff --git a/cSploit/res/values-hr/strings.xml b/cSploit/res/values-hr/strings.xml
index 5b7938d7cc..aee4065079 100644
--- a/cSploit/res/values-hr/strings.xml
+++ b/cSploit/res/values-hr/strings.xml
@@ -1,5 +1,4 @@
- cSploit
Postavke
cSploit
Ooooops! Srušio sam se, ali izvješće će se poslati mojem
@@ -25,7 +24,6 @@
Protokol
cSploit - Android paket za testiranje mreže
Copyleft of Simone Margaritelli aka evilsocket.
- http://www.csploit.org/
Disclaimer
@@ -83,7 +81,6 @@
Pritisnite opet tipku nazad za izlaz.
Izabrano
- https://github.com/cSploit/android/issues/new
Nije pronađena sesija na SD kartici.
Odaberi sesiju sa SD kartice :
Izabrana Sesija
@@ -357,22 +354,12 @@
- CVE
- OSVDB i CVE
-
- - OSVDB
- - CVE
- - OSVDB i CVE
-
Traži exploite
- samo koje podržava MSF
- samo sa exploitdb
- sa MSF i exploitdb
-
- - MSF
- - EXDB
- - MSF i EXDB
-
Opsežna potraga za izvorima
Potraga za izvorima izvan mrežne maske
Napredno
diff --git a/cSploit/res/values-it/strings.xml b/cSploit/res/values-it/strings.xml
index de9d4ba98f..cb07f63da3 100644
--- a/cSploit/res/values-it/strings.xml
+++ b/cSploit/res/values-it/strings.xml
@@ -1,5 +1,4 @@
- cSploit
Impostazioni
cSploit
Ooooops! Sono crashato, ma un report verrà inviato al mio
@@ -28,7 +27,6 @@
cSploit - An Android network penetration suite.
Copyleft of Simone Margaritelli aka evilsocket.
- http://www.csploit.org/
Disclaimer
Premi nuovamente il tasto indietro per chiudere l\'app.
Selezionato
- https://github.com/cSploit/android/issues/new
Nessun file di sessione trovato sulla sd card.
Seleziona un file di sessione dalla sd card :
Seleziona Sessione
diff --git a/cSploit/res/values-nl/strings.xml b/cSploit/res/values-nl/strings.xml
index 819c901a1c..367cc8480c 100644
--- a/cSploit/res/values-nl/strings.xml
+++ b/cSploit/res/values-nl/strings.xml
@@ -1,5 +1,4 @@
- cSploit
Karaterset
De JNI bibliotheek is eerder gecrashed, De omstandigheden rapporteren om de oorzaak te achterhalen zou gewaardeerd worden.
Over cSploit
@@ -51,7 +50,6 @@
Deze applicatie mag alleen maar gebruikt worden om zijn functies te tonen, alleen op netwerken waarvan je toestemming heb gekregen om acties met deze applicatie uit te voeren. De ontwikkelaars van deze applicatie zijn voor niks aansprakelijk. Andere woorden: Doe geen domme dingen en stuur geen bozen mensen naar ons
Voeg een WiFi sleutel in of probeer het te kraken
Voeg de port lijst in
- http://www.csploit.org/
Aangepaste karakterset
Java code
Aangepaste filter
@@ -115,7 +113,6 @@
Van
(Jouw netwerk router)
Sleutels aan het genereren…
- https://github.com/cSploit/android/issues/new
Dit programma is vrije software: je kunt het herdistribueren en / of onder de voorwaarden van de GNU General Public License zoals gepubliceerd door de Free Software Foundation, ofwel versie 3 van de Licentie, of (naar keuze) een latere versie. Dit programma wordt verspreid in de hoop dat het nuttig zal zijn, maar ZONDER ENIGE GARANTIE; zonder zelfs de impliciete garantie van verkoopbaarheid of geschiktheid voor een bepaald doel. Zie de GNU General Public License voor meer details. U moet een kopie van de GNU General Public License hebben ontvangen samen met dit programma. Zo niet, zie http://www.gnu.org/licenses/.
Heart aanval
Heart aanval is opgedoken, de applicatie zou nu gaan kijken voor updates.#STATUS#
diff --git a/cSploit/res/values-no/strings.xml b/cSploit/res/values-no/strings.xml
index dbc2fe6ea4..1e4a03caea 100644
--- a/cSploit/res/values-no/strings.xml
+++ b/cSploit/res/values-no/strings.xml
@@ -1,5 +1,4 @@
- cSploit
Innstillinger
cSploit
Ooooops! Jeg krasjet, men en rapport kommer til å bli sendt til min
@@ -25,7 +24,6 @@
Protokoll
cSploit - An Android network penetration suite.
Copyleft of Simone Margaritelli aka evilsocket.
- http://www.csploit.org/
ansvarsfraskrivelse
@@ -83,7 +81,6 @@
trykk igjen for å avslutte.
Valgt
- https://github.com/cSploit/android/issues/new
Ingen økt funnet på SD kort.
Velg en økt fil fra SD kortet :
Velg økt
@@ -373,22 +370,12 @@
- CVE
- both CVE and OSVDB
-
- - OSVDB
- - CVE
- - BOTH
-
Search exploits
- MSF compatible only
- on exploitdb only
- from both exploitdb and MSF
-
- - MSF
- - EXDB
- - BOTH
-
bred host søk
søk for hosts utenfor network mask
Avansert
diff --git a/cSploit/res/values-pl/strings.xml b/cSploit/res/values-pl/strings.xml
index 46f5484d3c..8948d05cf8 100644
--- a/cSploit/res/values-pl/strings.xml
+++ b/cSploit/res/values-pl/strings.xml
@@ -1,5 +1,4 @@
- cSploit
Ustawienia
cSploit
Ooooops! Wywaliłem się, ale zamierzam wysłać raport do mojego twórcy
@@ -25,7 +24,6 @@
Protokół
cSploit - Zestaw penetracyjny dla systemu Android.
Copyleft of Simone Margaritelli aka evilsocket.
- http://www.csploit.org/
Wyłączenie odpowiedzialności
@@ -82,7 +80,6 @@
Naciśnij wstecz jeszcze raz by opuścić aplikację.
Wybrano
- https://github.com/cSploit/android/issues/new
Nie znaleziono pliku sesji na karcie sd.
Wybierz plik sesji ze swojej karty sd :
Wybierz sesję
@@ -339,21 +336,11 @@
- CVE
- both CVE and OSVDB
-
- - OSVDB
- - CVE
- - BOTH
-
Wyszukiwanie exploitów
- Tylko z MSF
- Tylko z exploit-db
- Z exploit-db i MSF
-
-
- - MSF
- - EXDB
- - BOTH
wide host scan
scan for hosts outside the network mask.
diff --git a/cSploit/res/values-pt/strings.xml b/cSploit/res/values-pt/strings.xml
index 4cdafa665e..16e9a3bac0 100644
--- a/cSploit/res/values-pt/strings.xml
+++ b/cSploit/res/values-pt/strings.xml
@@ -1,6 +1,5 @@
- cSploit
Configurações
cSploit
Oooops! houve um erro , mas um relatório será enviado para o meu desenvolvedor para ajudar a corrigir o problema :)
@@ -23,7 +22,6 @@
Protocolo
cSploit - Uma suíte android de penetração de rede.
Copyleft of Simone Margaritelli aka evilsocket.
- http://www.csploit.org/
Termo de responsabilidade
@@ -71,7 +69,6 @@
Pressione voltar novamente para fechar este aplicativo.
Selecionado
- https://github.com/cSploit/android/issues/new
Nenhum arquivo de sessão encontrado no cartão SD.
Selecione um arquivo de sessão a partir do cartão SD :
Selecionar Sessão
@@ -342,22 +339,12 @@
- CVE
- Ambos
-
- - OSVDB
- - CVE
- - Ambos
-
Busca de exploits
- MSF compatível apenas
- apenas exploitdb
- Ambos
-
- - MSF
- - EXDB
- - Ambos
-
Grande Varredura do Host
Procurar por Hosts Fora Da Máscara de Rede
diff --git a/cSploit/res/values-ru/strings.xml b/cSploit/res/values-ru/strings.xml
index c11cb045ca..871a59c605 100644
--- a/cSploit/res/values-ru/strings.xml
+++ b/cSploit/res/values-ru/strings.xml
@@ -1,6 +1,5 @@
- cSploit
Настройки
cSploit
Ой! Я вынужден завершить работу, но отправка отчета об ошибке моему разработчику поможет исправить проблему :)
@@ -25,7 +24,6 @@
Протокол
cSploit - набор инструментов для проникновения в сеть под Android.
Копилефт Simone Margaritelli aka evilsocket.
- http://www.csploit.org/
Предупреждение
@@ -76,7 +74,6 @@
Нажмите назад ещё раз, чтобы закрыть приложение.
Выбрано
- https://github.com/cSploit/android/issues/new
Не найдено файлов сессии на карте памяти.
Выберите файл сессии с карты памяти:
Выбор сессии
@@ -348,22 +345,12 @@
- CVE
- CVE и OSVDB
-
- - OSVDB
- - CVE
- - BOTH
-
Поиск эксплойтов
- Только совместимые с MSF
- Толко на exploitdb
- Использовать exploitdb и MSF
-
- - MSF
- - EXDB
- - BOTH
-
Широкий поиск хостов
Поиск хостов вне текущей маски сети
Дополнительно
diff --git a/cSploit/res/values-tr/strings.xml b/cSploit/res/values-tr/strings.xml
index 4094d07802..0d094e70c5 100644
--- a/cSploit/res/values-tr/strings.xml
+++ b/cSploit/res/values-tr/strings.xml
@@ -1,5 +1,4 @@
- cSploit
Ayarlar
cSploit
Ooooops! Bir hata oluştu. Üzülmeyin bunu geliştiricime haber ettim :)
@@ -23,7 +22,6 @@
Protokol
cSploit - An Android network penetration suite.
Copyleft of Simone Margaritelli aka evilsocket.
- http://www.csploit.org/
Yasal Uyarı
@@ -81,7 +79,6 @@
Tekrar geri tuşuna basın ve uygulamayı kapatın.
Seçildi
- https://github.com/cSploit/android/issues/new
SD Kartınız da oturum dosyası bulunamadı.
SD Kartınızdan oturum dosyası seçin :
Oturum Seç
@@ -355,22 +352,12 @@
- CVE
- both CVE and OSVDB
-
- - OSVDB
- - CVE
- - BOTH
-
Exploit arama
- MSF compatible only
- on exploitdb only
- from both exploitdb and MSF
-
- - MSF
- - EXDB
- - BOTH
-
yatay sunucu arama
ağ maskesi dışında sunucu arama
Gelişmiş
diff --git a/cSploit/res/values-zh-rCN/strings.xml b/cSploit/res/values-zh-rCN/strings.xml
index 24143b19ea..f530a16d5e 100644
--- a/cSploit/res/values-zh-rCN/strings.xml
+++ b/cSploit/res/values-zh-rCN/strings.xml
@@ -1,5 +1,4 @@
- cSploit
设置
cSploit
额!崩溃了...不过我将给我的开发者发送报告来帮助解决这个问题。
@@ -22,7 +21,6 @@
协议
cSploit - 安卓上的网络渗透套装。
非版权保护 来自 Simone Margaritelli 又名 evilsocket。
- http://www.csploit.org/
免责声明
@@ -76,7 +74,6 @@ If not, see http://www.gnu.org/licenses/.
将关闭 cSploit,您确定继续么?
再摁一次返回退出。
已选择
- https://github.com/cSploit/android/issues/new
没在在SD卡上找到会话文件。
请从SD卡中选择会话文件:
选择会话
@@ -334,22 +331,12 @@ If not, see http://www.gnu.org/licenses/.
- CVE
- CVE 和 OSVDB 同时
-
- - OSVDB
- - CVE
- - BOTH
-
搜索攻击方案
- 仅MSF兼容
- 仅exploitdb
- 同时来自exploitdb 与 MSF
-
- - MSF
- - EXDB
- - BOTH
-
文件夹
并不存在。
不可写。
diff --git a/cSploit/res/values/strings.xml b/cSploit/res/values/strings.xml
index 21e3e5c0f4..af1321cc82 100644
--- a/cSploit/res/values/strings.xml
+++ b/cSploit/res/values/strings.xml
@@ -1,5 +1,5 @@
- cSploit
+ cSploit
Settings
cSploit
Ooooops! I crashed, but a report is going to be sent to my
@@ -25,7 +25,7 @@
Protocol
cSploit - An Android network penetration suite.
Copyleft of Simone Margaritelli aka evilsocket.
- http://www.csploit.org/
+ http://www.csploit.org/
Disclaimer
@@ -84,7 +84,7 @@
Press back again to close this app.
Selected:
- https://github.com/cSploit/android/issues/new
+ https://github.com/cSploit/android/issues/new
No session file found on sd card.
Select a session file from the sd card :
Select Session
@@ -376,7 +376,7 @@
- CVE
- both CVE and OSVDB
-
+
- OSVDB
- CVE
- BOTH
@@ -387,7 +387,7 @@
- on exploitdb only
- from both exploitdb and MSF
-
+
- MSF
- EXDB
- BOTH
@@ -524,4 +524,6 @@
Excellent
Select target
Select %s ?
+ https://github.com/cSploit/android/issues
+ Before opening a new issue, please, take the time to read the already open issues, probably it\' s already open. If it\' s not open we\'ll need as much information as you can get, so please, read this guide in order to know how to report a bug properly.
]]>
diff --git a/cSploit/src/org/csploit/android/MainActivity.java b/cSploit/src/org/csploit/android/MainActivity.java
index 680116b833..5dc4897b16 100644
--- a/cSploit/src/org/csploit/android/MainActivity.java
+++ b/cSploit/src/org/csploit/android/MainActivity.java
@@ -765,9 +765,11 @@ public void run() {
return true;
case R.id.submit_issue:
- String uri = getString(R.string.github_issues);
+ String uri = getString(R.string.github_new_issue_url);
Intent browser = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
startActivity(browser);
+ // for fat-tire:
+ // String.format(getString(R.string.issue_message), getString(R.string.github_issues_url), getString(R.string.github_new_issue_url));
return true;
case R.id.about:
From c573ba8a5e206751c83b317be5c465768a315be5 Mon Sep 17 00:00:00 2001
From: tux-mind
Date: Tue, 6 Oct 2015 22:36:42 +0200
Subject: [PATCH 29/49] centralize services singletons
---
.../csploit/android/CSploitApplication.java | 2 ++
.../src/org/csploit/android/MainActivity.java | 35 ++++++-------------
.../csploit/android/services/Services.java | 30 ++++++++++++++++
3 files changed, 42 insertions(+), 25 deletions(-)
create mode 100644 cSploit/src/org/csploit/android/services/Services.java
diff --git a/cSploit/src/org/csploit/android/CSploitApplication.java b/cSploit/src/org/csploit/android/CSploitApplication.java
index c6b5daedcd..f356a7256d 100644
--- a/cSploit/src/org/csploit/android/CSploitApplication.java
+++ b/cSploit/src/org/csploit/android/CSploitApplication.java
@@ -35,6 +35,7 @@
import org.csploit.android.plugins.Sessions;
import org.csploit.android.plugins.Traceroute;
import org.csploit.android.plugins.mitm.MITM;
+import org.csploit.android.services.Services;
import java.net.NoRouteToHostException;
@@ -63,6 +64,7 @@ public void onCreate() {
super.onCreate();
ACRA.init(this);
+ Services.init(this);
// initialize the system
try {
diff --git a/cSploit/src/org/csploit/android/MainActivity.java b/cSploit/src/org/csploit/android/MainActivity.java
index 7a13603ba5..e1a0033b15 100644
--- a/cSploit/src/org/csploit/android/MainActivity.java
+++ b/cSploit/src/org/csploit/android/MainActivity.java
@@ -79,8 +79,7 @@
import org.csploit.android.plugins.Sessions;
import org.csploit.android.plugins.Traceroute;
import org.csploit.android.plugins.mitm.MITM;
-import org.csploit.android.services.MsfRpcdService;
-import org.csploit.android.services.NetworkRadar;
+import org.csploit.android.services.Services;
import org.csploit.android.services.UpdateChecker;
import org.csploit.android.services.UpdateService;
import org.csploit.android.services.receivers.MsfRpcdServiceReceiver;
@@ -107,8 +106,6 @@ public class MainActivity extends AppCompatActivity {
private static final int WIFI_CONNECTION_REQUEST = 1012;
private boolean isWifiAvailable = false;
private TargetAdapter mTargetAdapter = null;
- private NetworkRadar mNetworkRadar = null;
- private MsfRpcdService mMsfRpcdService = null;
private NetworkRadarReceiver mRadarReceiver = new NetworkRadarReceiver();
private UpdateReceiver mUpdateReceiver = new UpdateReceiver();
private WipeReceiver mWipeReceiver = new WipeReceiver();
@@ -440,27 +437,15 @@ public boolean onCreateOptionsMenu(Menu menu) {
return super.onCreateOptionsMenu(menu);
}
- private MsfRpcdService getMsfRpcdService() {
- if(mMsfRpcdService == null)
- mMsfRpcdService = new MsfRpcdService(this);
- return mMsfRpcdService;
- }
-
- private NetworkRadar getNetworkRadar() {
- if(mNetworkRadar == null)
- mNetworkRadar = new NetworkRadar(this);
- return mNetworkRadar;
- }
-
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuItem item = menu.findItem(R.id.ss_monitor);
- getNetworkRadar().buildMenuItem(item);
+ Services.getNetworkRadar().buildMenuItem(item);
item = menu.findItem(R.id.ss_msfrpcd);
- getMsfRpcdService().buildMenuItem(item);
+ Services.getMsfRpcdService().buildMenuItem(item);
mMenu = menu;
@@ -571,7 +556,7 @@ public void startNetworkRadar() {
new Thread(new Runnable() {
@Override
public void run() {
- getNetworkRadar().start();
+ Services.getNetworkRadar().start();
}
}).start();
}
@@ -580,7 +565,7 @@ public void stopNetworkRadar() {
new Thread(new Runnable() {
@Override
public void run() {
- getNetworkRadar().stop();
+ Services.getNetworkRadar().stop();
}
}).start();
}
@@ -592,8 +577,8 @@ public void StartRPCServer() {
new Thread(new Runnable() {
@Override
public void run() {
- if(getMsfRpcdService().isAvailable())
- getMsfRpcdService().start();
+ if(Services.getMsfRpcdService().isAvailable())
+ Services.getMsfRpcdService().start();
}
}).start();
}
@@ -605,7 +590,7 @@ public void StopRPCServer() {
new Thread(new Runnable() {
@Override
public void run() {
- getMsfRpcdService().stop();
+ Services.getMsfRpcdService().stop();
}
}).start();
}
@@ -755,7 +740,7 @@ public void onItemSelected(int index) {
new Thread(new Runnable() {
@Override
public void run() {
- getNetworkRadar().onMenuClick(MainActivity.this, item);
+ Services.getNetworkRadar().onMenuClick(MainActivity.this, item);
}
}).start();
return true;
@@ -764,7 +749,7 @@ public void run() {
new Thread(new Runnable() {
@Override
public void run() {
- getMsfRpcdService().onMenuClick(MainActivity.this, item);
+ Services.getMsfRpcdService().onMenuClick(MainActivity.this, item);
}
}).start();
return true;
diff --git a/cSploit/src/org/csploit/android/services/Services.java b/cSploit/src/org/csploit/android/services/Services.java
new file mode 100644
index 0000000000..77424bbd6d
--- /dev/null
+++ b/cSploit/src/org/csploit/android/services/Services.java
@@ -0,0 +1,30 @@
+package org.csploit.android.services;
+
+import android.content.Context;
+
+/**
+ * Services provider
+ */
+public final class Services {
+ private static Context context;
+ private static NetworkRadar networkRadar;
+ private static MsfRpcdService msfRpcdService;
+
+ public static void init(Context context) {
+ Services.context = context;
+ }
+
+ public synchronized static NetworkRadar getNetworkRadar() {
+ if(networkRadar == null) {
+ networkRadar = new NetworkRadar(context);
+ }
+ return networkRadar;
+ }
+
+ public synchronized static MsfRpcdService getMsfRpcdService() {
+ if(msfRpcdService == null) {
+ msfRpcdService = new MsfRpcdService(context);
+ }
+ return msfRpcdService;
+ }
+}
From d9eaf6a06511a75da66c2b99cb2d98aa954f380f Mon Sep 17 00:00:00 2001
From: tux-mind
Date: Tue, 6 Oct 2015 22:36:57 +0200
Subject: [PATCH 30/49] cleanup
---
cSploit/src/org/csploit/android/core/System.java | 13 ++++---------
1 file changed, 4 insertions(+), 9 deletions(-)
diff --git a/cSploit/src/org/csploit/android/core/System.java b/cSploit/src/org/csploit/android/core/System.java
index e30d7edf75..0e2bdc1b8c 100644
--- a/cSploit/src/org/csploit/android/core/System.java
+++ b/cSploit/src/org/csploit/android/core/System.java
@@ -44,13 +44,11 @@
import org.csploit.android.gui.dialogs.FatalDialog;
import org.csploit.android.helpers.NetworkHelper;
import org.csploit.android.helpers.ThreadHelper;
-import org.csploit.android.net.Endpoint;
import org.csploit.android.net.GitHubParser;
import org.csploit.android.net.Network;
import org.csploit.android.net.RemoteReader;
import org.csploit.android.net.Target;
import org.csploit.android.net.Target.Exploit;
-import org.csploit.android.net.Target.Type;
import org.csploit.android.net.http.proxy.HTTPSRedirector;
import org.csploit.android.net.http.proxy.Proxy;
import org.csploit.android.net.http.server.Server;
@@ -87,7 +85,6 @@
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
-import java.util.Vector;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.zip.GZIPInputStream;
@@ -836,12 +833,10 @@ public static void loadSession(String filename) throws Exception{
throw new Exception(filename + " does not exists or is empty.");
}
- public static ToolBox getTools() {
- synchronized (System.class) {
- if(mTools == null)
- mTools = new ToolBox();
- return mTools;
- }
+ public synchronized static ToolBox getTools() {
+ if(mTools == null)
+ mTools = new ToolBox();
+ return mTools;
}
public static RPCClient getMsfRpc() {
From 7425363b6384fd086d1e461ff56b47b7a7e3f7fb Mon Sep 17 00:00:00 2001
From: tux-mind
Date: Tue, 6 Oct 2015 23:04:50 +0200
Subject: [PATCH 31/49] move duplicate code into reset() call
NetworkRadar#onNewTargetFound for 3 initial targets call
NetworkRadar#onNewTargetFound for each added target
---
.../src/org/csploit/android/core/System.java | 68 ++++++++-----------
.../android/services/NetworkRadar.java | 25 ++++---
2 files changed, 43 insertions(+), 50 deletions(-)
diff --git a/cSploit/src/org/csploit/android/core/System.java b/cSploit/src/org/csploit/android/core/System.java
index 0e2bdc1b8c..7d2088727b 100644
--- a/cSploit/src/org/csploit/android/core/System.java
+++ b/cSploit/src/org/csploit/android/core/System.java
@@ -56,6 +56,7 @@
import org.csploit.android.net.metasploit.Payload;
import org.csploit.android.net.metasploit.RPCClient;
import org.csploit.android.net.metasploit.Session;
+import org.csploit.android.services.Services;
import org.csploit.android.tools.ToolBox;
import java.io.BufferedReader;
@@ -189,21 +190,7 @@ public static void init(Context context) throws Exception{
MSF_RPC_PORT = 55553;
}
- // initialize network data at the end
- mNetwork = new Network(mContext);
-
- Target network = new Target(mNetwork),
- gateway = new Target(mNetwork.getGatewayAddress(), mNetwork.getGatewayHardware()),
- device = new Target(mNetwork.getLocalAddress(), mNetwork.getLocalHardware());
-
- gateway.setAlias(mNetwork.getSSID());
- device.setAlias(android.os.Build.MODEL);
-
- mTargets.add(network);
- mTargets.add(gateway);
- mTargets.add(device);
-
- mInitialized = true;
+ uncaughtReloadNetworkMapping();
ThreadHelper.getSharedExecutor().execute(new Runnable() {
@Override
@@ -349,23 +336,7 @@ public static void initCore() throws DaemonException, SuException {
public static void reloadNetworkMapping(){
try{
- mNetwork = new Network(mContext);
-
- Target network = new Target(mNetwork),
- gateway = new Target(mNetwork.getGatewayAddress(), mNetwork.getGatewayHardware()),
- device = new Target(mNetwork.getLocalAddress(), mNetwork.getLocalHardware());
-
- gateway.setAlias(mNetwork.getSSID());
- device.setAlias(android.os.Build.MODEL);
-
- synchronized (mTargets) {
- mTargets.clear();
- mTargets.add(network);
- mTargets.add(gateway);
- mTargets.add(device);
- }
-
- mInitialized = true;
+ uncaughtReloadNetworkMapping();
}
catch(NoRouteToHostException nrthe){
// swallow bitch
@@ -375,6 +346,14 @@ public static void reloadNetworkMapping(){
}
}
+ private static void uncaughtReloadNetworkMapping() throws UnknownHostException, SocketException {
+ mNetwork = new Network(mContext);
+
+ reset();
+
+ mInitialized = true;
+ }
+
public static boolean checkNetworking(final Activity current){
if(!Network.isWifiConnected(mContext)){
@@ -917,18 +896,26 @@ else if(name.endsWith(".tiff"))
return type;
}
- public static void reset() throws SocketException{
+ public static void reset() {
mCurrentTarget = null;
synchronized (mTargets) {
mTargets.clear();
- // local network
- mTargets.add(new Target(System.getNetwork()));
- // network gateway
- mTargets.add(new Target(System.getNetwork().getGatewayAddress(), System.getNetwork().getGatewayHardware()));
- // device network address
- mTargets.add(new Target(System.getNetwork().getLocalAddress(), System.getNetwork().getLocalHardware()));
+ Target network = new Target(mNetwork),
+ gateway = new Target(mNetwork.getGatewayAddress(), mNetwork.getGatewayHardware()),
+ device = new Target(mNetwork.getLocalAddress(), mNetwork.getLocalHardware());
+
+ gateway.setAlias(mNetwork.getSSID());
+ device.setAlias(android.os.Build.MODEL);
+
+ mTargets.add(network);
+ mTargets.add(gateway);
+ mTargets.add(device);
+
+ for(Target t : mTargets) {
+ Services.getNetworkRadar().onNewTargetFound(t);
+ }
}
}
@@ -1004,12 +991,13 @@ public static boolean addOrderedTarget(Target target){
for (int i = 0; i < mTargets.size(); i++) {
if (mTargets.get(i).comesAfter(target)) {
mTargets.add(i, target);
+ Services.getNetworkRadar().onNewTargetFound(target);
return true;
}
}
mTargets.add(target);
-
+ Services.getNetworkRadar().onNewTargetFound(target);
return true;
}
}
diff --git a/cSploit/src/org/csploit/android/services/NetworkRadar.java b/cSploit/src/org/csploit/android/services/NetworkRadar.java
index 0a466c97bd..dcc23f1d7a 100644
--- a/cSploit/src/org/csploit/android/services/NetworkRadar.java
+++ b/cSploit/src/org/csploit/android/services/NetworkRadar.java
@@ -8,6 +8,7 @@
import org.csploit.android.core.Logger;
import org.csploit.android.core.System;
import org.csploit.android.core.ChildManager;
+import org.csploit.android.helpers.ThreadHelper;
import org.csploit.android.net.Endpoint;
import org.csploit.android.net.Network;
import org.csploit.android.net.Target;
@@ -68,12 +69,20 @@ public void buildMenuItem(MenuItem item) {
item.setEnabled(System.getTools().networkRadar.isEnabled());
}
- private void onNewHostFound(Target target) {
- try {
- System.getTools().nmap.synScan(target, new ScanReceiver(target));
- } catch (ChildManager.ChildNotStartedException e) {
- System.errorLogging(e);
- }
+ public void onNewTargetFound(final Target target) {
+ if(target.getType() == Target.Type.NETWORK)
+ return;
+
+ ThreadHelper.getSharedExecutor().execute(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ System.getTools().nmap.synScan(target, new ScanReceiver(target));
+ } catch (ChildManager.ChildNotStartedException e) {
+ System.errorLogging(e);
+ }
+ }
+ });
}
private class Receiver extends HostReceiver {
@@ -115,10 +124,6 @@ public void onHostFound(byte[] macAddress, InetAddress ipAddress, String name) {
if(notify) {
sendIntent(NRDR_CHANGED);
}
-
- if(justFound) {
- onNewHostFound(t);
- }
}
@Override
From 28e8ecc8eefee260708aebdbd59fa04dabc9bd78 Mon Sep 17 00:00:00 2001
From: tux-mind
Date: Tue, 6 Oct 2015 23:12:22 +0200
Subject: [PATCH 32/49] sort add from background thread, then notify the
adapter when finished.
---
cSploit/src/org/csploit/android/MainActivity.java | 11 ++++-------
1 file changed, 4 insertions(+), 7 deletions(-)
diff --git a/cSploit/src/org/csploit/android/MainActivity.java b/cSploit/src/org/csploit/android/MainActivity.java
index e1a0033b15..6f6cfd0b5e 100644
--- a/cSploit/src/org/csploit/android/MainActivity.java
+++ b/cSploit/src/org/csploit/android/MainActivity.java
@@ -68,6 +68,7 @@
import org.csploit.android.gui.dialogs.MultipleChoiceDialog;
import org.csploit.android.gui.dialogs.SpinnerDialog;
import org.csploit.android.gui.dialogs.SpinnerDialog.SpinnerDialogListener;
+import org.csploit.android.helpers.ThreadHelper;
import org.csploit.android.net.Network;
import org.csploit.android.net.Target;
import org.csploit.android.plugins.ExploitFinder;
@@ -607,15 +608,11 @@ public boolean onOptionsItemSelected(final MenuItem item) {
public void onInputEntered(String input) {
final Target target = Target.getFromString(input);
if (target != null) {
- // refresh the target listview
- MainActivity.this.runOnUiThread(new Runnable() {
+ ThreadHelper.getSharedExecutor().execute(new Runnable() {
@Override
public void run() {
- if (System.addOrderedTarget(target)
- && mTargetAdapter != null) {
- mTargetAdapter
- .notifyDataSetChanged();
- }
+ System.addOrderedTarget(target);
+ mTargetAdapter.update(null, null);
}
});
} else
From 098a6cb029423518f3631464f26f158649640ef2 Mon Sep 17 00:00:00 2001
From: tux-mind
Date: Tue, 6 Oct 2015 23:52:39 +0200
Subject: [PATCH 33/49] TargetList notification system re-implemented. do not
use intents, use Observer. notify on every interesting event ( target {port ,
name, connected} changed, target list changed )
---
.../src/org/csploit/android/MainActivity.java | 27 +++++++++++++++--
.../src/org/csploit/android/core/System.java | 30 +++++++++++++++++++
.../src/org/csploit/android/net/Target.java | 4 +++
.../android/services/NetworkRadar.java | 15 ++++++----
.../receivers/NetworkRadarReceiver.java | 16 ----------
5 files changed, 68 insertions(+), 24 deletions(-)
diff --git a/cSploit/src/org/csploit/android/MainActivity.java b/cSploit/src/org/csploit/android/MainActivity.java
index 6f6cfd0b5e..16b18c36bf 100644
--- a/cSploit/src/org/csploit/android/MainActivity.java
+++ b/cSploit/src/org/csploit/android/MainActivity.java
@@ -204,7 +204,7 @@ public boolean onItemLongClick(AdapterView> parent, View view, int position, l
mWipeReceiver.register(MainActivity.this);
mMsfReceiver.register(MainActivity.this);
- mRadarReceiver.setObserver(mTargetAdapter);
+ System.setTargetListObserver(mTargetAdapter);
StartRPCServer();
@@ -930,7 +930,30 @@ public int[] getSelectedPositions() {
@Override
public void update(Observable observable, Object data) {
- MainActivity.this.runOnUiThread(this);
+ final Target target = (Target) data;
+
+ if(target == null) {
+ // update the whole list
+ MainActivity.this.runOnUiThread(this);
+ return;
+ }
+
+ // update only a row, if it's displayed
+ MainActivity.this.runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ if(lv == null)
+ return;
+ int start = lv.getFirstVisiblePosition();
+ for(int i=start, j=lv.getLastVisiblePosition();i<=j;i++)
+ if(target==list.get(i)){
+ View view = lv.getChildAt(i-start);
+ getView(i, view, lv);
+ break;
+ }
+ }
+ });
+
}
@Override
diff --git a/cSploit/src/org/csploit/android/core/System.java b/cSploit/src/org/csploit/android/core/System.java
index 7d2088727b..7b90ba4fb2 100644
--- a/cSploit/src/org/csploit/android/core/System.java
+++ b/cSploit/src/org/csploit/android/core/System.java
@@ -86,6 +86,7 @@
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
+import java.util.Observer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.zip.GZIPInputStream;
@@ -143,6 +144,8 @@ public class System
private static KnownIssues mKnownIssues = null;
+ private static Observer targetListObserver = null;
+
private final static LinkedList mSettingReceivers = new LinkedList();
public static void init(Context context) throws Exception{
@@ -372,6 +375,33 @@ public static boolean checkNetworking(final Activity current){
return true;
}
+ public synchronized static void setTargetListObserver(Observer targetListObserver) {
+ System.targetListObserver = targetListObserver;
+ }
+
+ /**
+ * notify that a specific target of the list has been changed
+ * @param target the changed target
+ */
+ public static void notifyTargetListChanged(Target target) {
+ Observer o;
+ synchronized (System.class) {
+ o = targetListObserver;
+ }
+
+ if(o==null)
+ return;
+
+ o.update(null, target);
+ }
+
+ /**
+ * notify that the targets list has been changed
+ */
+ public static void notifyTargetListChanged() {
+ notifyTargetListChanged(null);
+ }
+
public static void setLastError(String error){
mLastError = error;
}
diff --git a/cSploit/src/org/csploit/android/net/Target.java b/cSploit/src/org/csploit/android/net/Target.java
index a5873d781f..5712d510e6 100644
--- a/cSploit/src/org/csploit/android/net/Target.java
+++ b/cSploit/src/org/csploit/android/net/Target.java
@@ -655,6 +655,7 @@ public String getHostname(){
}
public void addOpenPort(Port port){
+ boolean notifyList = false;
synchronized (mPorts) {
Port existing = null;
for(Port p : mPorts) {
@@ -668,8 +669,11 @@ public void addOpenPort(Port port){
port.mergeTo(existing);
} else {
mPorts.add(port);
+ notifyList = true;
}
}
+ if(notifyList)
+ System.notifyTargetListChanged(this);
}
public void addOpenPort(int port, Protocol protocol){
diff --git a/cSploit/src/org/csploit/android/services/NetworkRadar.java b/cSploit/src/org/csploit/android/services/NetworkRadar.java
index dcc23f1d7a..7c0c827846 100644
--- a/cSploit/src/org/csploit/android/services/NetworkRadar.java
+++ b/cSploit/src/org/csploit/android/services/NetworkRadar.java
@@ -21,7 +21,6 @@
* network-radar process manager
*/
public class NetworkRadar extends NativeService implements MenuControllableService {
- public static final String NRDR_CHANGED = "NetworkRadar.action.TARGET_CHANGED";
public static final String NRDR_STOPPED = "NetworkRadar.action.STOPPED";
public static final String NRDR_STARTED = "NetworkRadar.action.STARTED";
public static final String NRDR_START_FAILED = "NetworkRadar.action.START_FAILED";
@@ -121,8 +120,13 @@ public void onHostFound(byte[] macAddress, InetAddress ipAddress, String name) {
}
}
- if(notify) {
- sendIntent(NRDR_CHANGED);
+ if(!notify)
+ return;
+
+ if(justFound) {
+ System.notifyTargetListChanged();
+ } else {
+ System.notifyTargetListChanged(t);
}
}
@@ -130,9 +134,9 @@ public void onHostFound(byte[] macAddress, InetAddress ipAddress, String name) {
public void onHostLost(InetAddress ipAddress) {
Target t = System.getTargetByAddress(ipAddress);
- if(t != null) {
+ if(t != null && t.isConnected()) {
t.setConneced(false);
- sendIntent(NRDR_CHANGED);
+ System.notifyTargetListChanged(t);
}
}
@@ -162,7 +166,6 @@ public ScanReceiver(Target target) {
@Override
public void onPortFound(int port, String protocol) {
target.addOpenPort(port, Network.Protocol.fromString(protocol));
- sendIntent(NRDR_CHANGED);
}
}
}
diff --git a/cSploit/src/org/csploit/android/services/receivers/NetworkRadarReceiver.java b/cSploit/src/org/csploit/android/services/receivers/NetworkRadarReceiver.java
index 29afbc9ea9..8918370c6d 100644
--- a/cSploit/src/org/csploit/android/services/receivers/NetworkRadarReceiver.java
+++ b/cSploit/src/org/csploit/android/services/receivers/NetworkRadarReceiver.java
@@ -4,24 +4,18 @@
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
-import android.os.Build;
-import android.widget.ArrayAdapter;
import android.widget.Toast;
-import org.csploit.android.MainActivity;
import org.csploit.android.R;
import org.csploit.android.core.*;
import org.csploit.android.services.NetworkRadar;
-import java.util.Observer;
-
/**
* receive notifications from NetworkRadar
*/
public class NetworkRadarReceiver extends ManagedReceiver {
private final IntentFilter filter;
- private Observer changeObserver;
public NetworkRadarReceiver() {
filter = new IntentFilter();
@@ -29,11 +23,6 @@ public NetworkRadarReceiver() {
filter.addAction(NetworkRadar.NRDR_STARTED);
filter.addAction(NetworkRadar.NRDR_START_FAILED);
filter.addAction(NetworkRadar.NRDR_STOPPED);
- filter.addAction(NetworkRadar.NRDR_CHANGED);
- }
-
- public void setObserver(Observer changeObserver) {
- this.changeObserver = changeObserver;
}
@Override
@@ -68,11 +57,6 @@ private void notifyIntent(Context context, Intent intent) {
case NetworkRadar.NRDR_START_FAILED:
Toast.makeText(context, R.string.net_discovery_start_failed, Toast.LENGTH_LONG).show();
break;
- case NetworkRadar.NRDR_CHANGED:
- if(changeObserver != null) {
- changeObserver.update(null, null);
- }
- break;
}
}
}
From 9b365143436691065416417c5691dc9cac2e32a6 Mon Sep 17 00:00:00 2001
From: tux-mind
Date: Wed, 7 Oct 2015 00:34:02 +0200
Subject: [PATCH 34/49] nmap is not available until we connect to the core.
make network-radar trigger a scan of the current hosts when it startup.
---
cSploit/src/org/csploit/android/core/System.java | 9 +++++++++
.../src/org/csploit/android/services/NetworkRadar.java | 5 +++++
2 files changed, 14 insertions(+)
diff --git a/cSploit/src/org/csploit/android/core/System.java b/cSploit/src/org/csploit/android/core/System.java
index 7b90ba4fb2..450f589062 100644
--- a/cSploit/src/org/csploit/android/core/System.java
+++ b/cSploit/src/org/csploit/android/core/System.java
@@ -943,6 +943,15 @@ public static void reset() {
mTargets.add(gateway);
mTargets.add(device);
+ scanThemAll();
+ }
+ }
+
+ public static void scanThemAll() {
+ if(!mCoreInitialized) {
+ return;
+ }
+ synchronized (mTargets) {
for(Target t : mTargets) {
Services.getNetworkRadar().onNewTargetFound(t);
}
diff --git a/cSploit/src/org/csploit/android/services/NetworkRadar.java b/cSploit/src/org/csploit/android/services/NetworkRadar.java
index 7c0c827846..2f80f5d00e 100644
--- a/cSploit/src/org/csploit/android/services/NetworkRadar.java
+++ b/cSploit/src/org/csploit/android/services/NetworkRadar.java
@@ -72,6 +72,10 @@ public void onNewTargetFound(final Target target) {
if(target.getType() == Target.Type.NETWORK)
return;
+ if(!System.isCoreInitialized()) {
+ return;
+ }
+
ThreadHelper.getSharedExecutor().execute(new Runnable() {
@Override
public void run() {
@@ -143,6 +147,7 @@ public void onHostLost(InetAddress ipAddress) {
@Override
public void onStart(String cmd) {
sendIntent(NRDR_STARTED);
+ System.scanThemAll();
}
public void onEnd(int exitValue) {
From 17caa2dea7c2d3383c9ac7c69b9e47989a9be5d1 Mon Sep 17 00:00:00 2001
From: fattire
Date: Tue, 6 Oct 2015 20:08:37 -0700
Subject: [PATCH 35/49] Add "Auto port-scan" preference to Settings.
This allows you to disable the default behavior, which is to do a port scan
for each discovered host.
---
cSploit/res/values/strings.xml | 2 +
cSploit/res/xml/preferences.xml | 48 +++++++++++--------
.../android/services/NetworkRadar.java | 29 ++++++-----
3 files changed, 45 insertions(+), 34 deletions(-)
diff --git a/cSploit/res/values/strings.xml b/cSploit/res/values/strings.xml
index 4db836441f..0ce171ce12 100644
--- a/cSploit/res/values/strings.xml
+++ b/cSploit/res/values/strings.xml
@@ -415,6 +415,8 @@
Buffer size must be between 1024 and 104857600.
persistent network monitor
keep network monitor watching the network
+ Auto port-scan
+ Always SYN scan for open ports when new host is discovered
Exploit Finder
Search for exploit that matches found vulnerabilities.
diff --git a/cSploit/res/xml/preferences.xml b/cSploit/res/xml/preferences.xml
index d0fc3c9c6b..3d3e039ead 100644
--- a/cSploit/res/xml/preferences.xml
+++ b/cSploit/res/xml/preferences.xml
@@ -1,9 +1,9 @@
+ android:layout_height="wrap_content">
-
+
+
+
+
-
+
-
+
-
+
+ android:title="@string/pref_performance_widescan" />
-
+
+ android:summary="@string/pref_msf_enable_desc"
+ android:title="@string/pref_msf_enable" />
+ android:summary="@string/pref_msf_notifications_desc"
+ android:title="@string/pref_msf_notifications" />
@@ -224,8 +230,8 @@
+ android:summary="@string/pref_msf_delete_desc"
+ android:title="@string/pref_msf_delete" />
diff --git a/cSploit/src/org/csploit/android/services/NetworkRadar.java b/cSploit/src/org/csploit/android/services/NetworkRadar.java
index ed6394ca84..3001195ca1 100644
--- a/cSploit/src/org/csploit/android/services/NetworkRadar.java
+++ b/cSploit/src/org/csploit/android/services/NetworkRadar.java
@@ -2,12 +2,13 @@
import android.app.Activity;
import android.content.Context;
+import android.content.SharedPreferences;
import android.view.MenuItem;
import org.csploit.android.R;
+import org.csploit.android.core.ChildManager;
import org.csploit.android.core.Logger;
import org.csploit.android.core.System;
-import org.csploit.android.core.ChildManager;
import org.csploit.android.helpers.ThreadHelper;
import org.csploit.android.net.Endpoint;
import org.csploit.android.net.Network;
@@ -69,23 +70,25 @@ public void buildMenuItem(MenuItem item) {
}
public void onNewTargetFound(final Target target) {
- if(target.getType() == Target.Type.NETWORK)
+ if (target.getType() == Target.Type.NETWORK)
return;
- if(!System.isCoreInitialized()) {
+ if (!System.isCoreInitialized()) {
return;
}
-
- ThreadHelper.getSharedExecutor().execute(new Runnable() {
- @Override
- public void run() {
- try {
- System.getTools().nmap.synScan(target, new ScanReceiver(target));
- } catch (ChildManager.ChildNotStartedException e) {
- System.errorLogging(e);
+ SharedPreferences prefs = System.getSettings();
+ if (prefs.getBoolean("PREF_AUTO_PORTSCAN", true)) {
+ ThreadHelper.getSharedExecutor().execute(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ System.getTools().nmap.synScan(target, new ScanReceiver(target));
+ } catch (ChildManager.ChildNotStartedException e) {
+ System.errorLogging(e);
+ }
}
- }
- });
+ });
+ }
}
private class Receiver extends HostReceiver {
From cd8cb8c826b5b36c3fe83fcaf9114bf3d312af80 Mon Sep 17 00:00:00 2001
From: fattire
Date: Tue, 6 Oct 2015 20:27:45 -0700
Subject: [PATCH 36/49] Fix capitalization for strings.xml per Google style
guidelines
See here:
https://www.google.com/design/spec/style/writing.html#writing-tone
---
cSploit/res/values/strings.xml | 124 ++++++++++++++++-----------------
1 file changed, 62 insertions(+), 62 deletions(-)
diff --git a/cSploit/res/values/strings.xml b/cSploit/res/values/strings.xml
index 0ce171ce12..d03780c5c9 100644
--- a/cSploit/res/values/strings.xml
+++ b/cSploit/res/values/strings.xml
@@ -76,8 +76,8 @@
Enter an URL, host name or IP address below:
Network discovery stopped.
Network discovery started.
- Start Network Monitor
- Stop Network Monitor
+ Start network monitor
+ Stop network monitor
Start Metasploit RPCD
Stop Metasploit RPCD
Exit
@@ -88,10 +88,10 @@
https://github.com/cSploit/android/issues/new
No session file found on sd card.
Select a session file from the sd card :
- Select Session
+ Select session
Invalid session name.
Session saved to
- Save Session
+ Save session
Enter the name of the session file :
New session started
Warning
@@ -185,18 +185,18 @@
Search for known vulnerabilities for target running
services upon National Vulnerability Database.
- Service Inspector
+ Service inspector
Perform target operating system and services deep detection
(slower than port scanner, but more accurate).
- Login Cracker
+ Login cracker
A very fast network logon cracker which support many different
services.
- Packet Forger
+ Packet forger
Craft and send a custom TCP or UDP packet to the target.
- Port Scanner
+ Port scanner
Perform a SYN port scanning on target.
Router PWN
Launch the http://routerpwn.com/ service to pwn your router.
@@ -246,14 +246,14 @@
Metasploit RPCD does not respond
- Simple Sniff
+ Simple sniff
Redirect target\'s traffic through this device and show some stats while dumping it to a pcap file.
- Password Sniffer
+ Password sniffer
Sniff passwords of many protocols such as http, ftp, imap, imaps, irc, msn, etc from the target.
Users/pass fields
- Session Hijacker
+ Session hijacker
Listen for cookies on the network and hijack sessions.
- Kill Connections
+ Kill connections
Kill connections preventing the target to reach any website or server.
Connection killer can be used only against single endpoints.
Redirect
@@ -261,7 +261,7 @@
Redirection
Port out of range.
Invalid address and/or port specified.
- Replace Images
+ Replace images
Replace all images on webpages with the specified one.
Choose a source:
Local Images
@@ -269,42 +269,42 @@
Image
Enter the url of the image :
Invalid image url.
- Replace Videos
+ Replace videos
Replace all youtube videos on webpages with the specified one.
Video
Enter the url of the video :
Invalid youtube video.
- Script Injection
- Inject a javascript in every visited webpage.
+ Script injection
+ Inject a Javascript in every visited web page.
Choose a method:
Choose a branch:
Local files
- Custom Code
- Seems like you have no file manager capable of browsing files, please install one.
- Enter the js code to inject :
+ Custom code
+ Seems like you have no file manager capable of browsing files. Please install one.
+ Enter the Javascript code to inject :
enclosing tags.]]>
- Custom Filter
+ Custom filter
Replace custom text on webpages with the specified one.
- Custom Filter
+ Custom filter
Invalid regular expression
- File Output
- Do you want to save sniffed traffic to a pcap file?
+ File output
+ Do you want to save sniffed traffic to a PCAP file?
Dumping traffic to
Unable to create the proxy, please check your connection and port availability.
Unable to create the HTTPS redirector, please check your connection and port availability.
Unable to create the resource server, please check your connection and port availability.
- Load From File
- User Wordlist
- Password Wordlist
+ Load from file
+ User word list
+ Password word list
- New Session
- Save Session
- Restore Session
- Stop Network Monitor
- Submit Issue
- About
+ New session
+ Save session
+ Restore session
+ Stop network monitor
+ Submit issue
+ About cSploit
Select Custom Ports
Custom parameters
@@ -319,27 +319,27 @@
Could not generate keys.
Scanning finished.
- DNS Spoofing
+ DNS spoofing
Redirect domains to a different web/IP
Saved
General
Modules
- Metasploit Framework
+ Metasploit framework
Performance
- Check for Updates
- Wake Lock
- Save Path
- Debug Error Logging
- Code Profiler
- Sniffer Sample Time
- HTTP Proxy Port
- HTTP Server Port
- SSL Stripping
- HTTPS Redirector Port
- HTTP Max Buffer Size
- Password Sniffer File
+ Check for updates
+ Wake lock
+ Save path
+ Debug error logging
+ Code profiler
+ Sniffer sample time
+ HTTP proxy port
+ HTTP server port
+ SSL stripping
+ HTTPS redirector port
+ HTTP max buffer size
+ Password sniffer file
Check for updates every time the application is started.
Prevents the device going in sleep mode while the application is running.
Global save path to put every log file.
@@ -418,7 +418,7 @@
Auto port-scan
Always SYN scan for open ports when new host is discovered
- Exploit Finder
+ Exploit finder
Search for exploit that matches found vulnerabilities.
Launch all
Sessions
@@ -435,10 +435,10 @@
Add
Scan
- WiFi Scan
+ WiFi scan
Stop MSFRPCD
- Dark Theme
+ Dark theme
Enable the dark theme, which is easier on the eyes
The new theme will not be applied until you restart the app
Evasion
@@ -487,19 +487,19 @@
Core version %s is available, do you want to upgrade ?
Updates
App
- check for App updates
+ Check for app updates
Core
- check for Core updates
+ Check for core updates
Ruby
- check for Ruby updates
+ Check for Ruby updates
MSF
- check for MSF updates
+ Check for MSF updates
RubyGems
- check for RubyGems updates
+ Check for RubyGems updates
Custom manifest
- custom MSF manifest URL
- Build Info
- Multi Action
+ Custom MSF manifest URL
+ Build info
+ Multi action
focused scan
resolve hostnames
@@ -509,13 +509,13 @@
The JNI library has crashed previously. Reporting the circumstances leading to the crash would be appreciated.
Update cancelled
Cannot start process
- MSF RPC Daemon killed
- MSF RPC Daemon failed to start
- Connection to the MSF RPC Daemon FAILED!
+ MSF RPC daemon killed
+ MSF RPC daemon failed to start
+ Connection to the MSF RPC daemon FAILED!
Network discovery FAILED to start!
App version %s is available, do you want to upgrade ?
- A new version for ruby is available, do you want to upgrade ?
- A new msf version is available, do you want to upgrade ?
+ A new version of Ruby is available, do you want to upgrade ?
+ A new MSF version is available, do you want to upgrade ?
Metasploit Status
Ranking: %s
Manual
From ebb4accce4c431856e63e7a40e580200928b4613 Mon Sep 17 00:00:00 2001
From: fattire
Date: Tue, 6 Oct 2015 21:05:17 -0700
Subject: [PATCH 37/49] aesthetic webview changes -- don't spellcheck URL +
more
---
.../res/layout/plugin_mitm_hijacker_webview.xml | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/cSploit/res/layout/plugin_mitm_hijacker_webview.xml b/cSploit/res/layout/plugin_mitm_hijacker_webview.xml
index fee5544226..f764be926f 100644
--- a/cSploit/res/layout/plugin_mitm_hijacker_webview.xml
+++ b/cSploit/res/layout/plugin_mitm_hijacker_webview.xml
@@ -11,9 +11,9 @@
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
+ android:layout_marginTop="-7dp"
android:maxHeight="4dp"
- android:visibility="visible"
- android:layout_marginTop="-6dp"/>
+ android:visibility="visible" />
+ android:translationZ="-6dp" />
From a28bd01014bc6974f0c5b1c9eb180df852562fa5 Mon Sep 17 00:00:00 2001
From: tux_mind
Date: Wed, 7 Oct 2015 13:21:12 +0200
Subject: [PATCH 38/49] change autoScan state only when needed, do not check on
every host found
---
.../org/csploit/android/SettingsActivity.java | 3 ++
.../src/org/csploit/android/core/System.java | 5 ++-
.../android/services/NetworkRadar.java | 38 ++++++++++---------
3 files changed, 28 insertions(+), 18 deletions(-)
diff --git a/cSploit/src/org/csploit/android/SettingsActivity.java b/cSploit/src/org/csploit/android/SettingsActivity.java
index aeafbb69b5..4a64f9787a 100644
--- a/cSploit/src/org/csploit/android/SettingsActivity.java
+++ b/cSploit/src/org/csploit/android/SettingsActivity.java
@@ -41,6 +41,7 @@
import org.csploit.android.gui.dialogs.ChoiceDialog;
import org.csploit.android.gui.dialogs.ConfirmDialog;
import org.csploit.android.net.GitHubParser;
+import org.csploit.android.services.Services;
import org.csploit.android.tools.Raw;
import org.json.JSONException;
@@ -376,6 +377,8 @@ public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, Strin
} else if (key.equals("MSF_ENABLED")) {
if (mMsfEnabled.isChecked())
onMsfEnabled();
+ } else if (key.equals("PREF_AUTO_PORTSCAN")) {
+ Services.getNetworkRadar().onAutoScanChanged();
}
if (message != null)
diff --git a/cSploit/src/org/csploit/android/core/System.java b/cSploit/src/org/csploit/android/core/System.java
index 450f589062..bb84779006 100644
--- a/cSploit/src/org/csploit/android/core/System.java
+++ b/cSploit/src/org/csploit/android/core/System.java
@@ -305,6 +305,7 @@ public static void shutdownCoreDaemon(){
Client.Disconnect();
mCoreInitialized = false;
+ Services.getNetworkRadar().onAutoScanChanged();
}
public static void initCore() throws DaemonException, SuException {
@@ -335,6 +336,7 @@ public static void initCore() throws DaemonException, SuException {
reloadTools();
mCoreInitialized = true;
+ Services.getNetworkRadar().onAutoScanChanged();
}
public static void reloadNetworkMapping(){
@@ -948,7 +950,7 @@ public static void reset() {
}
public static void scanThemAll() {
- if(!mCoreInitialized) {
+ if(!Services.getNetworkRadar().isAutoScanEnabled()) {
return;
}
synchronized (mTargets) {
@@ -1212,6 +1214,7 @@ public static void clean(boolean releaseLocks){
Client.Disconnect();
mCoreInitialized = false;
+ Services.getNetworkRadar().onAutoScanChanged();
}
catch(Exception e){
errorLogging(e);
diff --git a/cSploit/src/org/csploit/android/services/NetworkRadar.java b/cSploit/src/org/csploit/android/services/NetworkRadar.java
index 3001195ca1..9a81cd5a08 100644
--- a/cSploit/src/org/csploit/android/services/NetworkRadar.java
+++ b/cSploit/src/org/csploit/android/services/NetworkRadar.java
@@ -26,6 +26,8 @@ public class NetworkRadar extends NativeService implements MenuControllableServi
public static final String NRDR_STARTED = "NetworkRadar.action.STARTED";
public static final String NRDR_START_FAILED = "NetworkRadar.action.START_FAILED";
+ private boolean autoScan = true;
+
public NetworkRadar(Context context) {
this.context = context;
}
@@ -69,26 +71,28 @@ public void buildMenuItem(MenuItem item) {
item.setEnabled(System.getTools().networkRadar.isEnabled() && System.getNetwork() != null);
}
- public void onNewTargetFound(final Target target) {
- if (target.getType() == Target.Type.NETWORK)
- return;
+ public void onAutoScanChanged() {
+ autoScan = System.isCoreInitialized() && System.getSettings().getBoolean("PREF_AUTO_PORTSCAN", true);
+ Logger.info("autoScan has been set to " + autoScan);
+ }
- if (!System.isCoreInitialized()) {
+ public boolean isAutoScanEnabled() {
+ return autoScan;
+ }
+
+ public void onNewTargetFound(final Target target) {
+ if(!autoScan || target.getType() == Target.Type.NETWORK)
return;
- }
- SharedPreferences prefs = System.getSettings();
- if (prefs.getBoolean("PREF_AUTO_PORTSCAN", true)) {
- ThreadHelper.getSharedExecutor().execute(new Runnable() {
- @Override
- public void run() {
- try {
- System.getTools().nmap.synScan(target, new ScanReceiver(target));
- } catch (ChildManager.ChildNotStartedException e) {
- System.errorLogging(e);
- }
+ ThreadHelper.getSharedExecutor().execute(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ System.getTools().nmap.synScan(target, new ScanReceiver(target));
+ } catch (ChildManager.ChildNotStartedException e) {
+ System.errorLogging(e);
}
- });
- }
+ }
+ });
}
private class Receiver extends HostReceiver {
From 3ae622c337aaa45389d06c3fc120dd2de0e15d10 Mon Sep 17 00:00:00 2001
From: Rubenoo
Date: Wed, 7 Oct 2015 18:45:27 +0200
Subject: [PATCH 39/49] Updated dutch translation
It doesn't break anything :)
---
cSploit/res/values-nl/strings.xml | 65 +++++++++++++++++++------------
1 file changed, 40 insertions(+), 25 deletions(-)
diff --git a/cSploit/res/values-nl/strings.xml b/cSploit/res/values-nl/strings.xml
index 367cc8480c..14c3b62c0f 100644
--- a/cSploit/res/values-nl/strings.xml
+++ b/cSploit/res/values-nl/strings.xml
@@ -29,8 +29,8 @@
Dit zal cSploit afsluiten, weet je het zeker?
Opdracht
Verbind
- Verbinden met MetaSploit
- Verbonden met MetaSploit
+ Verbinden met Metasploit
+ Verbonden met Metasploit
]]>
met sleutel ]]>
!]]>
@@ -58,7 +58,7 @@
Verwijder vorige locatie?
Apparaat Type:
Vrijwaring
- Verbinding met MetaSploit verbroken
+ Verbinding met Metasploit verbroken
Update aan het downloaden…
Dump verkeer naar
Legen port lijst
@@ -159,7 +159,7 @@
Raporteer een fout
WiFi Scan
Minimale lengte
- de Core is niet geinstalleerd, de applicatie zal nu kijken voor updates #STATUS#
+ de Core is niet geinstalleerd, de applicatie zal nu kijken voor updates. #STATUS#
MITM
Verbreek Connecties
Dit zal het doelwit weerhouden om alle sites te bereiken.
@@ -187,7 +187,7 @@
Vervang Videos
Vervang alle YouTube video\'s op een website met één specifieke video.
Verbinding met MSF RPC Daemon maken GEFAALD!
- MetaSploit Status
+ Metasploit Status
MSF RPC Daemon heeft gefaald om het te starten
MSF RPC heeft de verbinding verbroken
MSF RPC Daemon afgesloten
@@ -200,7 +200,7 @@
Core versie %s is beschikbaar, wil je updaten?
Een update voor ruby gems
Een nieuwe MSF versie is beschikbaar, wil je updaten?
- Een MetaSploitFramework update
+ Een MetasploitFramework update
Een nieuwe versie van Ruby is beschikbaar, wil je updaten?
Een update voor Ruby is beschikbaar
Nieuwe sessie is gestart
@@ -267,22 +267,22 @@
HTTPS herleider Port
MITM https herleidings server port om naar te luisteren
Modules
- MetaSploit Framework
- De MetaSploit Framework branch om te gebruiken
+ Metasploit Framework
+ De Metasploit Framework branch om te gebruiken
MSF Branch
Kijk voor MSF updates
Check voor MSF updates elke keer als de applicatie opstart
Verwijder MSF
- Verwijder de MetaSploit Framework van je apparaat
+ Verwijder de Metasploit Framework van je apparaat
Activeer MSF
- Activeer de MetaSploit Framework
+ Activeer de Metasploit Framework
Aangepaste manifest
aangepaste MSF manifest URL
MSF status notificaties
Kijk naar de MSF RPC connectie status
MSF map
- In deze map zit de MetaSploit Framework.
- Wil je echt de MetaSploit Framework verwijderen?
+ In deze map zit de Metasploit Framework.
+ Wil je echt de Metasploit Framework verwijderen?
Ongeveer %d MB zal verwijderd worden
Wachtwoord Sniffer Bestand
Naam van het bestand om de wachtwoord en cookies te loggen.
@@ -295,15 +295,15 @@
persistent network monitor
Zorgt ervoor de de netwerk monitor het netwerk blijft monitoren
RPC host
- Host waar de MetaSploit RPC server is in
+ Host waar de Metasploit RPC server is in
RPC port
- Port waarmee je verbind met MetaSploit RPCD
+ Port waarmee je verbind met Metasploit RPCD
RPC wachtwoord
- Wachtwoord om te verbinden met MetaSploit RPCD
+ Wachtwoord om te verbinden met Metasploit RPCD
RPC gebruikt SSL
- Specifikeer of MetaSploit RPC SLL gebruikt
+ Specifikeer of Metasploit RPC SLL gebruikt
RPC gebruikersnaam
- Gebruikersnaam om te verbinden met MetaSploit RPCD.
+ Gebruikersnaam om te verbinden met Metasploit RPCD.
Ruby map
Map waarin de ruby interpreters inzitten.
Sla pad op
@@ -335,11 +335,11 @@
Herstel het orginele pad
Router PWN
Activeer de http://routerpwn.com/ service op je router.
- MetaSploit RPCD is al gestart
- MetaSploit RPCD gestart
- MetaSploit RPCD wordt gestart. Geduld…
- MetaSploit RPCD is gestopt
- MetaSploit RPCD reageert niet
+ Metasploit RPCD is al gestart
+ Metasploit RPCD gestart
+ Metasploit RPCD wordt gestart. Geduld…
+ Metasploit RPCD is gestopt
+ Metasploit RPCD reageert niet
Uitvoeren
Opslaan
Sla Sessie op
@@ -375,11 +375,11 @@
Stoppen met sniffen en beginnen met sessie hijacking?
Beginnen met sessie hijacken?
Start Netwerk Monitor
- Start MetaSploit RPCD
+ Start Metasploit RPCD
Opstarten …
Stop
Stop Netwerk Monitor
- Stop MetaSploit RPCD
+ Stop Metasploit RPCD
Gestopt…
Gestopt …
Klik opniew om te stoppen
@@ -422,4 +422,19 @@
WiFi connectie ging weg.
Met sleutel
Ja
-
\ No newline at end of file
+ Voordat je een problem reporteerd, lees alstublieft Raporteerd een probleem, Waarschijnlijk is het probleem al raporteerd, als dat niet zo is reporteer het dan met zo veel mogelijk informatie. Leesdit artikel Om te weten hoe je een probleem zo goed mogelijk te raporteren.]]>
+ Selecteer %s ?
+ Selecteer doelwit
+ Beoordeling: %s
+ Normaal
+ Uitstekend
+ Goed
+ Erg Goed
+ Slecht
+ Handmatig
+ Normaal
+ Ports
+ Automatische poort-scan
+ Scan altijd een doelwit met SYNC scanner als een doelwit gevonden word
+ Aangepaste parameters
+
From b3ad6b700b2ae4b47cac3e3bd854b205505d99f2 Mon Sep 17 00:00:00 2001
From: tux_mind
Date: Thu, 8 Oct 2015 17:10:21 +0200
Subject: [PATCH 40/49] fixes #392
---
cSploit/src/org/csploit/android/net/datasource/CVEDetails.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/cSploit/src/org/csploit/android/net/datasource/CVEDetails.java b/cSploit/src/org/csploit/android/net/datasource/CVEDetails.java
index 82df4b806e..c85a9f79fd 100644
--- a/cSploit/src/org/csploit/android/net/datasource/CVEDetails.java
+++ b/cSploit/src/org/csploit/android/net/datasource/CVEDetails.java
@@ -58,7 +58,7 @@ private void checkCompatibility(String html) {
target = exploit.getParent();
- if(!target.hasOpenPorts()) {
+ if(target == null || !target.hasOpenPorts()) {
return;
}
From cc7dc50ee020d10342c41feec9f7757fbe640a65 Mon Sep 17 00:00:00 2001
From: Ilya
Date: Fri, 9 Oct 2015 00:11:01 +0900
Subject: [PATCH 41/49] Updated russian translation
Added 5 strings (about: opening issue, port scanning). Fixed missing space after "Selected" string
---
cSploit/res/values-ru/strings.xml | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/cSploit/res/values-ru/strings.xml b/cSploit/res/values-ru/strings.xml
index 47718bd5a5..0218ed8b8e 100644
--- a/cSploit/res/values-ru/strings.xml
+++ b/cSploit/res/values-ru/strings.xml
@@ -8,6 +8,7 @@
Введите параметры переадресации ниже:
Адрес
Порт
+ Порты
Цель
Неизвестно
Сервисы
@@ -73,7 +74,7 @@
Приложение cSploit будет закрыто, вы уверены, что хотите продолжить?
Нажмите назад ещё раз, чтобы закрыть приложение.
- Выбрано
+ Выбрано
Не найдено файлов сессии на карте памяти.
Выберите файл сессии с карты памяти:
Выбор сессии
@@ -373,6 +374,8 @@
Размер буфера может быть от 1024 до 104857600.
Постоянный мониторинг сети
Постоянно продолжать мониторинг сети
+ Автоматическое сканирование портов
+ Всегда проводить SYN сканирование портов когда найден новый хост
Выберите ветку:
Настройки поиска
Недопустимо создание исполняемого контента
@@ -486,4 +489,5 @@
Превосходный
Выбрать цель
Выбрать %s ?
+ Перед открытием новой проблемы поищите посмотрите список в открытых проблем, возможно она уже открыта. Если нету сообщения о проблеме нам нужны как можно больше данных, так что пожайлуста прочитайте это руководство, чтобы знать как правильно сообщить о баге.]]>
From 05608cbff6db5d4f29b4f746ef52b5961bd50b31 Mon Sep 17 00:00:00 2001
From: tux_mind
Date: Thu, 8 Oct 2015 17:15:54 +0200
Subject: [PATCH 42/49] fixes #393
---
cSploit/src/org/csploit/android/net/Target.java | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/cSploit/src/org/csploit/android/net/Target.java b/cSploit/src/org/csploit/android/net/Target.java
index 5712d510e6..6b20888b38 100644
--- a/cSploit/src/org/csploit/android/net/Target.java
+++ b/cSploit/src/org/csploit/android/net/Target.java
@@ -230,7 +230,10 @@ public int getDrawableResourceId() {
}
public boolean equals(Object o) {
- return !(o == null || o.getClass() != this.getClass()) && ((Exploit) o).getId().equals(getId());
+ if(o == null || o.getClass() != this.getClass())
+ return false;
+ Exploit other = (Exploit) o;
+ return id == null ? other.id == null : id.equals(other.id);
}
public void addReference(Reference ref) {
From 598eb77cfb60eaf4fcf88f1cf8f88d5011ffd0df Mon Sep 17 00:00:00 2001
From: fattire
Date: Sat, 10 Oct 2015 00:53:34 -0700
Subject: [PATCH 43/49] update gradle plugin from 1.4.0b3->b6
---
build.gradle | 2 +-
cSploit/build.gradle | 5 +++--
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/build.gradle b/build.gradle
index 596a216230..c0bd27756b 100644
--- a/build.gradle
+++ b/build.gradle
@@ -5,7 +5,7 @@ buildscript {
mavenCentral()
}
dependencies {
- classpath 'com.android.tools.build:gradle:1.3.1'
+ classpath 'com.android.tools.build:gradle:1.4.0-beta6'
}
}
diff --git a/cSploit/build.gradle b/cSploit/build.gradle
index 3471e20f3f..83d05c94fa 100644
--- a/cSploit/build.gradle
+++ b/cSploit/build.gradle
@@ -4,7 +4,7 @@ buildscript {
mavenCentral()
}
dependencies {
- classpath 'com.android.tools.build:gradle:1.4.0-beta3'
+ classpath 'com.android.tools.build:gradle:1.4.0-beta6'
}
}
@@ -87,6 +87,7 @@ android {
debuggable true
jniDebuggable true
zipAlignEnabled true
+ multiDexEnabled true
}
release {
buildConfigField "java.util.Date", "BUILD_TIME", "new java.util.Date(" + getDate() + "L)"
@@ -94,6 +95,7 @@ android {
if (System.getenv("KEYSTORE_FILE") != null) {
signingConfig signingConfigs.release
}
+ multiDexEnabled true
return true
}
}
@@ -102,7 +104,6 @@ android {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
- resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
From 2f20205b97269c8813e30331cd7df6046275a845 Mon Sep 17 00:00:00 2001
From: fattire
Date: Mon, 12 Oct 2015 01:58:43 -0700
Subject: [PATCH 44/49] Rubenoo's New portcount design(small changes) squished
+ 1 change
---
cSploit/res/drawable/rounded_square.xml | 2 +-
cSploit/res/drawable/rounded_square_grey.xml | 6 ++++++
cSploit/res/layout/target_list_item.xml | 2 +-
cSploit/src/org/csploit/android/MainActivity.java | 2 ++
4 files changed, 10 insertions(+), 2 deletions(-)
create mode 100644 cSploit/res/drawable/rounded_square_grey.xml
diff --git a/cSploit/res/drawable/rounded_square.xml b/cSploit/res/drawable/rounded_square.xml
index 50a1009bc5..739b0338ec 100644
--- a/cSploit/res/drawable/rounded_square.xml
+++ b/cSploit/res/drawable/rounded_square.xml
@@ -1,5 +1,5 @@
-
+
diff --git a/cSploit/res/drawable/rounded_square_grey.xml b/cSploit/res/drawable/rounded_square_grey.xml
new file mode 100644
index 0000000000..5ca9b73ab4
--- /dev/null
+++ b/cSploit/res/drawable/rounded_square_grey.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
diff --git a/cSploit/res/layout/target_list_item.xml b/cSploit/res/layout/target_list_item.xml
index 326f459f3d..654731850e 100644
--- a/cSploit/res/layout/target_list_item.xml
+++ b/cSploit/res/layout/target_list_item.xml
@@ -64,7 +64,7 @@
android:layout_row="0"
android:gravity="top|center_horizontal"
android:text="@string/ports"
- android:textColor="@color/selectable_blue"
+ android:textColor="@color/primary_material_light"
android:textSize="12dp"
android:textStyle="bold" />
diff --git a/cSploit/src/org/csploit/android/MainActivity.java b/cSploit/src/org/csploit/android/MainActivity.java
index ce2337e7b1..157d8ad230 100644
--- a/cSploit/src/org/csploit/android/MainActivity.java
+++ b/cSploit/src/org/csploit/android/MainActivity.java
@@ -857,6 +857,8 @@ public View getView(int position, View convertView, ViewGroup parent) {
.findViewById(R.id.portCount) : null);
holder.portCountLayout = (LinearLayout) (row != null ? row
.findViewById(R.id.portCountLayout) : null);
+ if (isDark)
+ holder.portCountLayout.setBackgroundResource(R.drawable.rounded_square_grey);
if (row != null)
row.setTag(holder);
} else
From 7bbd294ce1ee988d9cf37db300366fbebf203be1 Mon Sep 17 00:00:00 2001
From: fattire
Date: Mon, 12 Oct 2015 00:31:28 -0700
Subject: [PATCH 45/49] Quick (not by any means final) materialization of
buttons w/fabs/colors.
Not everything here is done as well as it could be, but it's meant only as
a step in the right direction. It's possible some stuff was inadvertantly
broken. Could use animation and stuff, and probably shouldn't hard-code in
so much color and the like. A few buttons and such may have been missed,
but I think it's by-and-large better than the plain grey buttons that were
there before.
---
cSploit/res/drawable/ic_play_arrow_24dp.xml | 9 ++
cSploit/res/drawable/ic_stop_24dp.xml | 9 ++
cSploit/res/layout/dirpicker_chooser_list.xml | 30 +++----
cSploit/res/layout/file_edit.xml | 4 +-
cSploit/res/layout/plugin_exploit_finder.xml | 39 ++++-----
cSploit/res/layout/plugin_inspector.xml | 68 ++++++++-------
cSploit/res/layout/plugin_login_cracker.xml | 24 +++---
.../res/layout/plugin_mitm_dns_spoofing.xml | 83 ++++++++++---------
cSploit/res/layout/plugin_mitm_hijacker.xml | 2 +
.../layout/plugin_mitm_password_sniffer.xml | 4 +-
cSploit/res/layout/plugin_mitm_sniffer.xml | 4 +-
cSploit/res/layout/plugin_packet_forger.xml | 12 ++-
cSploit/res/layout/plugin_portscanner.xml | 39 ++++-----
cSploit/res/layout/plugin_traceroute.xml | 26 ++----
.../android/plugins/ExploitFinder.java | 22 +++--
.../csploit/android/plugins/Inspector.java | 11 ++-
.../csploit/android/plugins/LoginCracker.java | 12 +--
.../csploit/android/plugins/PortScanner.java | 12 +--
.../csploit/android/plugins/Traceroute.java | 12 +--
19 files changed, 225 insertions(+), 197 deletions(-)
create mode 100644 cSploit/res/drawable/ic_play_arrow_24dp.xml
create mode 100644 cSploit/res/drawable/ic_stop_24dp.xml
diff --git a/cSploit/res/drawable/ic_play_arrow_24dp.xml b/cSploit/res/drawable/ic_play_arrow_24dp.xml
new file mode 100644
index 0000000000..81a8f74f6e
--- /dev/null
+++ b/cSploit/res/drawable/ic_play_arrow_24dp.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/cSploit/res/drawable/ic_stop_24dp.xml b/cSploit/res/drawable/ic_stop_24dp.xml
new file mode 100644
index 0000000000..c5b211a777
--- /dev/null
+++ b/cSploit/res/drawable/ic_stop_24dp.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/cSploit/res/layout/dirpicker_chooser_list.xml b/cSploit/res/layout/dirpicker_chooser_list.xml
index 2b73ec087a..e777df513a 100644
--- a/cSploit/res/layout/dirpicker_chooser_list.xml
+++ b/cSploit/res/layout/dirpicker_chooser_list.xml
@@ -1,22 +1,24 @@
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:orientation="vertical"
+ android:padding="8dp">
+ android:id="@android:id/list"
+ android:layout_width="fill_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1" />
+ android:id="@+id/btnChoose"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:backgroundTint="@color/app_color"
+ android:fontFamily="sans-serif-condensed"
+ android:text="@string/choose"
+ android:textAllCaps="true"
+ android:textColor="@android:color/white" />
\ No newline at end of file
diff --git a/cSploit/res/layout/file_edit.xml b/cSploit/res/layout/file_edit.xml
index 8cce001164..83cc4e29c9 100644
--- a/cSploit/res/layout/file_edit.xml
+++ b/cSploit/res/layout/file_edit.xml
@@ -13,7 +13,9 @@
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
- android:layout_alignParentEnd="true" />
+ android:layout_alignParentEnd="true"
+ android:textColor="@android:color/white"
+ android:backgroundTint="@color/app_color"/>
+ android:orientation="vertical">
-
+ android:padding="20dp"
+ android:src="@drawable/ic_play_arrow_24dp"
+ android:checked="false"
+ android:translationZ="8dp"
+ android:layout_alignParentBottom="true"
+ android:layout_alignParentRight="true"
+ android:layout_margin="20dp" />
-
-
+ android:layout_alignParentTop="true"
+ android:visibility="invisible"
+ android:layout_margin="20dp" />
+ android:animateLayoutChanges="true"
+ android:layout_marginLeft="16dp"
+ android:layout_marginRight="16dp" />
\ No newline at end of file
diff --git a/cSploit/res/layout/plugin_inspector.xml b/cSploit/res/layout/plugin_inspector.xml
index 24ccf9cad5..1c9ee175ef 100644
--- a/cSploit/res/layout/plugin_inspector.xml
+++ b/cSploit/res/layout/plugin_inspector.xml
@@ -3,38 +3,30 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="16sp"
- android:paddingRight="16sp"
android:paddingTop="16sp"
android:id="@+id/whatever">
-
+ android:padding="20dp"
+ android:src="@drawable/ic_play_arrow_24dp"
+ android:checked="false"
+ android:translationZ="8dp"
+ android:layout_alignParentBottom="true"
+ android:layout_alignParentRight="true"
+ android:layout_margin="20dp"
+ android:focusableInTouchMode="true" />
-
-
+ android:layout_alignParentTop="false"
+ android:visibility="invisible"
+ android:layout_margin="20dp" />
+ android:layout_toRightOf="@+id/deviceTypeLabel"
+ android:layout_marginRight="16dp">
+ android:layout_below="@+id/ScrollView03"
+ android:layout_marginRight="16dp">
+ android:layout_below="@+id/textView3"
+ android:layout_marginRight="16dp">
+ android:textAppearance="?android:attr/textAppearanceMedium" />
-
+
-
+ android:gravity="center_vertical"
+ />
+
\ No newline at end of file
diff --git a/cSploit/res/layout/plugin_login_cracker.xml b/cSploit/res/layout/plugin_login_cracker.xml
index 6908dc3311..045b8d0d9c 100644
--- a/cSploit/res/layout/plugin_login_cracker.xml
+++ b/cSploit/res/layout/plugin_login_cracker.xml
@@ -171,16 +171,7 @@
android:layout_alignParentBottom="true"
android:layout_alignRight="@+id/linearLayout6">
-
+
-
+
diff --git a/cSploit/res/layout/plugin_mitm_dns_spoofing.xml b/cSploit/res/layout/plugin_mitm_dns_spoofing.xml
index 550d72968c..acfe966f64 100644
--- a/cSploit/res/layout/plugin_mitm_dns_spoofing.xml
+++ b/cSploit/res/layout/plugin_mitm_dns_spoofing.xml
@@ -1,63 +1,66 @@
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:focusable="true"
+ android:focusableInTouchMode="true"
+ android:padding="6dp">
+ android:id="@+id/sniffToggleButton"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:backgroundTint="@color/app_color"
+ android:fontFamily="sans-serif-condensed"
+ android:paddingLeft="24dp"
+ android:paddingRight="24dp"
+ android:text="@string/toggle_button"
+ android:textAllCaps="true"
+ android:textColor="@android:color/white"
+ android:textOff="Start"
+ android:textOn="Stop" />
+ android:id="@+id/sniffActivity"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentRight="true"
+ android:layout_alignTop="@+id/sniffToggleButton"
+ android:visibility="invisible" />
+ android:id="@+id/separator"
+ android:layout_width="fill_parent"
+ android:layout_height="1dp"
+ android:layout_below="@+id/sniffToggleButton"
+ android:layout_marginBottom="8dp"
+ android:layout_marginTop="8dp"
+ android:background="@android:color/darker_gray" />
+ android:layout_alignParentStart="true"
+ android:text="Save" />
+ android:scrollbars="vertical|horizontal" />
\ No newline at end of file
diff --git a/cSploit/res/layout/plugin_mitm_hijacker.xml b/cSploit/res/layout/plugin_mitm_hijacker.xml
index 58ef2fb6bc..34dd943c2a 100644
--- a/cSploit/res/layout/plugin_mitm_hijacker.xml
+++ b/cSploit/res/layout/plugin_mitm_hijacker.xml
@@ -9,11 +9,13 @@
android:id="@+id/hijackToggleButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:backgroundTint="@color/app_color"
android:fontFamily="sans-serif-condensed"
android:paddingLeft="24dp"
android:paddingRight="24dp"
android:text="@string/toggle_button"
android:textAllCaps="true"
+ android:textColor="@android:color/white"
android:textOff="Start"
android:textOn="Stop" />
diff --git a/cSploit/res/layout/plugin_mitm_password_sniffer.xml b/cSploit/res/layout/plugin_mitm_password_sniffer.xml
index a782364237..3fe025978b 100644
--- a/cSploit/res/layout/plugin_mitm_password_sniffer.xml
+++ b/cSploit/res/layout/plugin_mitm_password_sniffer.xml
@@ -15,7 +15,9 @@
android:text="@string/toggle_button"
android:textAllCaps="true"
android:textOff="Start"
- android:textOn="Stop" />
+ android:textOn="Stop"
+ android:textColor="@android:color/white"
+ android:backgroundTint="@color/app_color"/>
+ android:textOn="@string/stop"
+ android:textColor="@android:color/white"
+ android:backgroundTint="@color/app_color"/>
+ android:layout_marginBottom="8dp"/>
+ android:fontFamily="sans-serif-condensed"
+ android:textColor="@android:color/white"
+ android:backgroundTint="@color/app_color"
+ />
\ No newline at end of file
diff --git a/cSploit/res/layout/plugin_portscanner.xml b/cSploit/res/layout/plugin_portscanner.xml
index 826434bf87..0609cbebb2 100644
--- a/cSploit/res/layout/plugin_portscanner.xml
+++ b/cSploit/res/layout/plugin_portscanner.xml
@@ -2,31 +2,19 @@
+ android:orientation="vertical">
-
-
-
+ android:layout_margin="16dp"
+ android:checked="false"
+ android:src="@drawable/ic_play_arrow_24dp"
+ android:translationZ="8dp" />
+
@@ -61,7 +52,7 @@
android:id="@+id/scanDoc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_alignEnd="@+id/separator"
+ android:layout_alignEnd="@+id/scanParameters"
android:layout_alignParentBottom="false"
android:layout_alignParentLeft="false"
android:layout_alignParentRight="false"
@@ -69,6 +60,8 @@
android:layout_alignParentTop="false"
android:layout_alignRight="@+id/separator"
android:layout_below="@+id/scanParameters"
+ android:layout_marginLeft="16dp"
+ android:layout_marginRight="16dp"
android:autoLink="web"
android:gravity="center_horizontal"
android:linksClickable="true"
diff --git a/cSploit/res/layout/plugin_traceroute.xml b/cSploit/res/layout/plugin_traceroute.xml
index 7deb81c44b..87219b024f 100644
--- a/cSploit/res/layout/plugin_traceroute.xml
+++ b/cSploit/res/layout/plugin_traceroute.xml
@@ -5,26 +5,17 @@
android:orientation="vertical"
android:padding="8dp">
-
-
-
+ android:padding="20dp"
+ android:src="@drawable/ic_play_arrow_24dp"
+ android:checked="false"
+ android:translationZ="8dp"
+ android:layout_alignParentBottom="true"
+ android:layout_alignParentRight="true"
+ android:layout_margin="20dp" />
mListAdapter = null;
@@ -62,11 +63,12 @@ private void setStoppedState() {
}
mTraceProgress.setVisibility(View.INVISIBLE);
mRunning = false;
- mTraceToggleButton.setChecked(false);
+ mTraceFloatingActionButton.setImageDrawable(ContextCompat.getDrawable(this, R.drawable.ic_play_arrow_24dp));
}
private void setStartedState() {
mListAdapter.clear();
+ mTraceFloatingActionButton.setImageDrawable(ContextCompat.getDrawable(this, R.drawable.ic_stop_24dp));
try {
System.getTools().nmap.trace(System.getCurrentTarget(), resolveNames, mTraceReceiver);
@@ -88,10 +90,10 @@ public void onCreate(Bundle savedInstanceState) {
setTheme(R.style.AppTheme);
super.onCreate(savedInstanceState);
- mTraceToggleButton = (ToggleButton) findViewById(R.id.traceToggleButton);
+ mTraceFloatingActionButton = (FloatingActionButton) findViewById(R.id.traceToggleButton);
mTraceProgress = (ProgressBar) findViewById(R.id.traceActivity);
- mTraceToggleButton.setOnClickListener(new OnClickListener() {
+ mTraceFloatingActionButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (mRunning) {
From 62b530dccf1df7d4954080787c25968dc39c470c Mon Sep 17 00:00:00 2001
From: tux-mind
Date: Tue, 13 Oct 2015 01:34:38 +0200
Subject: [PATCH 46/49] fix #401
---
.../csploit/android/plugins/mitm/Sniffer.java | 59 +++++++++++--------
1 file changed, 34 insertions(+), 25 deletions(-)
diff --git a/cSploit/src/org/csploit/android/plugins/mitm/Sniffer.java b/cSploit/src/org/csploit/android/plugins/mitm/Sniffer.java
index 7d480e92c5..0a3ab1f76b 100644
--- a/cSploit/src/org/csploit/android/plugins/mitm/Sniffer.java
+++ b/cSploit/src/org/csploit/android/plugins/mitm/Sniffer.java
@@ -145,59 +145,68 @@ else if(va < vb)
}
}
- public class StatListAdapter extends ArrayAdapter{
+ public class StatListAdapter extends ArrayAdapter {
private int mLayoutId = 0;
- private ArrayList mStats = null;
+ private final ArrayList mStats;
- public class StatsHolder{
+ public class StatsHolder {
TextView address;
TextView description;
}
- public StatListAdapter(int layoutId){
+ public StatListAdapter(int layoutId) {
super(Sniffer.this, layoutId);
mLayoutId = layoutId;
- mStats = new ArrayList();
+ mStats = new ArrayList<>();
}
- public AddressStats getStats(String address){
- for(AddressStats stats : mStats){
- if(stats.mAddress.equals(address))
- return stats;
+ public AddressStats getStats(String address) {
+ synchronized (mStats) {
+ for (AddressStats stats : mStats) {
+ if (stats.mAddress.equals(address))
+ return stats;
+ }
}
return null;
}
- public synchronized void addStats(AddressStats stats){
+ public synchronized void addStats(AddressStats stats) {
boolean found = false;
- for(AddressStats sstats : mStats){
- if(sstats.mAddress.equals(stats.mAddress)){
- sstats.mBytes = stats.mBytes;
- sstats.mBandwidth = stats.mBandwidth;
- sstats.mSampledTime = stats.mSampledTime;
- sstats.mSampledBytes = stats.mSampledBytes;
+ synchronized (mStats) {
- found = true;
- break;
+ for (AddressStats sstats : mStats) {
+ if (sstats.mAddress.equals(stats.mAddress)) {
+ sstats.mBytes = stats.mBytes;
+ sstats.mBandwidth = stats.mBandwidth;
+ sstats.mSampledTime = stats.mSampledTime;
+ sstats.mSampledBytes = stats.mSampledBytes;
+
+ found = true;
+ break;
+ }
}
- }
- if(!found)
- mStats.add(stats);
+ if (!found)
+ mStats.add(stats);
- Collections.sort(mStats);
+ Collections.sort(mStats);
+ }
}
- private synchronized AddressStats getByPosition(int position){
- return mStats.get(position);
+ private synchronized AddressStats getByPosition(int position) {
+ synchronized (mStats) {
+ return mStats.get(position);
+ }
}
@Override
public int getCount(){
- return mStats.size();
+ synchronized (mStats) {
+ return mStats.size();
+ }
}
private String formatSize(long size){
From 1211689cc8f71732c79c2a5092e9d47b14a2b739 Mon Sep 17 00:00:00 2001
From: tux_mind
Date: Tue, 13 Oct 2015 16:26:57 +0200
Subject: [PATCH 47/49] fixes #405
---
cSploit/src/org/csploit/android/net/datasource/Rapid7.java | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/cSploit/src/org/csploit/android/net/datasource/Rapid7.java b/cSploit/src/org/csploit/android/net/datasource/Rapid7.java
index 739d016c87..fe5b1202a4 100644
--- a/cSploit/src/org/csploit/android/net/datasource/Rapid7.java
+++ b/cSploit/src/org/csploit/android/net/datasource/Rapid7.java
@@ -179,6 +179,10 @@ public static MsfExploit parsePage(String html) {
}
}
+ // name is a required field
+ if(name == null)
+ return null;
+
return new MsfExploit(name, summary, description, ranking, targets, authors, platforms, architectures, references);
}
From a39bf9e7da1acab1e9cbd7e27d24e2b3271c74be Mon Sep 17 00:00:00 2001
From: tux_mind
Date: Tue, 13 Oct 2015 17:32:55 +0200
Subject: [PATCH 48/49] fixes #412
---
.../src/org/csploit/android/core/ExecChecker.java | 8 +++-----
cSploit/src/org/csploit/android/core/System.java | 4 +++-
cSploit/src/org/csploit/android/tools/MsfRpcd.java | 7 -------
cSploit/src/org/csploit/android/tools/Ruby.java | 3 ++-
cSploit/src/org/csploit/android/tools/ToolBox.java | 14 +++-----------
5 files changed, 11 insertions(+), 25 deletions(-)
diff --git a/cSploit/src/org/csploit/android/core/ExecChecker.java b/cSploit/src/org/csploit/android/core/ExecChecker.java
index 02184bee79..1c9b19bf22 100644
--- a/cSploit/src/org/csploit/android/core/ExecChecker.java
+++ b/cSploit/src/org/csploit/android/core/ExecChecker.java
@@ -122,11 +122,9 @@ private String getRealPath(final String file) {
updateFuseBinds();
synchronized (mFuseBinds) {
- if(mFuseBinds.size()>0) {
- for(FuseBind b : mFuseBinds) {
- if(file.startsWith(b.mountpoint)) {
- return b.source + file.substring(b.mountpoint.length());
- }
+ for(FuseBind b : mFuseBinds) {
+ if(file.startsWith(b.mountpoint)) {
+ return b.source + file.substring(b.mountpoint.length());
}
}
return null;
diff --git a/cSploit/src/org/csploit/android/core/System.java b/cSploit/src/org/csploit/android/core/System.java
index bb84779006..2c144bb62d 100644
--- a/cSploit/src/org/csploit/android/core/System.java
+++ b/cSploit/src/org/csploit/android/core/System.java
@@ -845,8 +845,10 @@ public static void loadSession(String filename) throws Exception{
}
public synchronized static ToolBox getTools() {
- if(mTools == null)
+ if(mTools == null) {
mTools = new ToolBox();
+ mTools.reload();
+ }
return mTools;
}
diff --git a/cSploit/src/org/csploit/android/tools/MsfRpcd.java b/cSploit/src/org/csploit/android/tools/MsfRpcd.java
index 6ed5a5a29a..a565a76ec2 100644
--- a/cSploit/src/org/csploit/android/tools/MsfRpcd.java
+++ b/cSploit/src/org/csploit/android/tools/MsfRpcd.java
@@ -22,13 +22,6 @@ public void onEvent(Event e) {
public MsfRpcd() {
mHandler = "msfrpcd";
-
- setEnabled();
-
- if(mEnabled)
- setupEnvironment();
-
- registerSettingReceiver();
}
/**
diff --git a/cSploit/src/org/csploit/android/tools/Ruby.java b/cSploit/src/org/csploit/android/tools/Ruby.java
index 695e2ff876..95a392fec6 100644
--- a/cSploit/src/org/csploit/android/tools/Ruby.java
+++ b/cSploit/src/org/csploit/android/tools/Ruby.java
@@ -30,10 +30,11 @@ public class Ruby extends Tool {
private final static String rubyLib = "%1$s/site_ruby/1.9.1:%1$s/site_ruby/1.9.1/arm-linux-androideabi:%1$s/site_ruby:%1$s/vendor_ruby/1.9.1:%1$s/vendor_ruby/1.9.1/arm-linux-androideabi:%1$s/vendor_ruby:%1$s/1.9.1:%1$s/1.9.1/arm-linux-androideabi";
-
public Ruby() {
mHandler = "raw";
+ }
+ public void init() {
setEnabled();
if(mEnabled)
diff --git a/cSploit/src/org/csploit/android/tools/ToolBox.java b/cSploit/src/org/csploit/android/tools/ToolBox.java
index 671874478c..0eee68a92b 100644
--- a/cSploit/src/org/csploit/android/tools/ToolBox.java
+++ b/cSploit/src/org/csploit/android/tools/ToolBox.java
@@ -57,7 +57,6 @@ public ToolBox() {
public void reload() {
raw.setEnabled();
shell.setEnabled();
- ruby.setEnabled();
nmap.setEnabled();
hydra.setEnabled();
arpSpoof.setEnabled();
@@ -65,18 +64,11 @@ public void reload() {
fusemounts.setEnabled();
ipTables.setEnabled();
tcpDump.setEnabled();
- msf.setEnabled();
networkRadar.setEnabled();
- msfrpcd.setEnabled();
logcat.setEnabled();
- if(ruby.isEnabled())
- ruby.setupEnvironment();
-
- if(msf.isEnabled())
- msf.setupEnvironment();
-
- if(msfrpcd.isEnabled())
- msfrpcd.setupEnvironment();
+ ruby.init();
+ msf.init();
+ msfrpcd.init();
}
}
From c36e7baf3ec3f0b80ff4790ab8ca2bc931baddd3 Mon Sep 17 00:00:00 2001
From: tux_mind
Date: Tue, 13 Oct 2015 18:03:16 +0200
Subject: [PATCH 49/49] version bump
---
cSploit/build.gradle | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/cSploit/build.gradle b/cSploit/build.gradle
index 83d05c94fa..1271813146 100644
--- a/cSploit/build.gradle
+++ b/cSploit/build.gradle
@@ -52,8 +52,8 @@ android {
defaultConfig {
minSdkVersion 9
targetSdkVersion 22
- versionCode 2
- versionName "1.6.0"
+ versionCode 3
+ versionName "1.6.1"
if(System.getenv("NIGHTLY_BUILD")) {
versionName += "+" + System.getenv("NIGHTLY_BUILD_COMMIT").substring(0, 7)
}