Skip to content

Commit 62f94f3

Browse files
committed
partially fixes #332
1 parent 69f62f1 commit 62f94f3

4 files changed

Lines changed: 93 additions & 84 deletions

File tree

cSploit/src/org/csploit/android/core/Plugin.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -122,13 +122,5 @@ public void onBackPressed(){
122122
overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_left);
123123
}
124124

125-
public void onTargetNewOpenPort(Target target, Port port){
126-
127-
}
128-
129-
public void onTargetNewExploit( Target target, Exploit ex ) {
130-
131-
}
132-
133125
public void onRpcChange(RPCClient currentValue) { }
134126
}

cSploit/src/org/csploit/android/core/System.java

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,7 @@
2121
import android.app.Activity;
2222
import android.app.ActivityManager;
2323
import android.app.ActivityManager.RunningServiceInfo;
24-
import android.app.AlertDialog;
2524
import android.content.Context;
26-
import android.content.DialogInterface;
2725
import android.content.Intent;
2826
import android.content.SharedPreferences;
2927
import android.content.pm.PackageInfo;
@@ -32,7 +30,6 @@
3230
import android.net.wifi.WifiManager;
3331
import android.net.wifi.WifiManager.WifiLock;
3432
import android.os.Build;
35-
import android.os.Bundle;
3633
import android.os.Environment;
3734
import android.os.PowerManager;
3835
import android.os.PowerManager.WakeLock;
@@ -47,10 +44,8 @@
4744
import org.csploit.android.net.Endpoint;
4845
import org.csploit.android.net.GitHubParser;
4946
import org.csploit.android.net.Network;
50-
import org.csploit.android.net.Network.Protocol;
5147
import org.csploit.android.net.Target;
5248
import org.csploit.android.net.Target.Exploit;
53-
import org.csploit.android.net.Target.Port;
5449
import org.csploit.android.net.Target.Type;
5550
import org.csploit.android.net.http.proxy.HTTPSRedirector;
5651
import org.csploit.android.net.http.proxy.Proxy;
@@ -1130,24 +1125,6 @@ public static Session getCurrentSession() {
11301125
return mMsfSession;
11311126
}
11321127

1133-
public static void addOpenPort( int port, Protocol protocol ) {
1134-
addOpenPort( port, protocol, null, null );
1135-
}
1136-
1137-
public static void addOpenPort( int port, Protocol protocol, String service ) {
1138-
addOpenPort(port, protocol, service, null);
1139-
}
1140-
1141-
public static void addOpenPort( int port, Protocol protocol, String service, String version ) {
1142-
Port p = new Port( port, protocol, service, version );
1143-
1144-
getCurrentTarget().addOpenPort( p );
1145-
1146-
for( Plugin plugin : getPluginsForTarget() ) {
1147-
plugin.onTargetNewOpenPort( getCurrentTarget(), p );
1148-
}
1149-
}
1150-
11511128
public static Collection<Exploit> getCurrentExploits() {
11521129
return getCurrentTarget().getExploits();
11531130
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package org.csploit.android.helpers;
2+
3+
import android.os.Looper;
4+
5+
import java.util.concurrent.Executor;
6+
import java.util.concurrent.Executors;
7+
8+
/**
9+
* Help cSploit dealing with threads
10+
*/
11+
public final class ThreadHelper {
12+
13+
private final static Executor EXECUTOR = Executors.newCachedThreadPool();
14+
15+
/**
16+
* share an Executor among all cSploit components
17+
* @return an Executor for running background stuff
18+
*/
19+
public static Executor getSharedExecutor() {
20+
return EXECUTOR;
21+
}
22+
23+
public static boolean isOnMainThread() {
24+
return Looper.myLooper() == Looper.getMainLooper();
25+
}
26+
}

cSploit/src/org/csploit/android/plugins/Inspector.java

Lines changed: 67 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import org.csploit.android.core.ChildManager;
3434
import org.csploit.android.core.Plugin;
3535
import org.csploit.android.core.System;
36+
import org.csploit.android.helpers.ThreadHelper;
3637
import org.csploit.android.net.Network;
3738
import org.csploit.android.net.Target;
3839
import org.csploit.android.net.Target.Port;
@@ -52,12 +53,12 @@ public class Inspector extends Plugin{
5253

5354
public Inspector(){
5455
super(
55-
R.string.inspector,
56-
R.string.inspector_desc,
56+
R.string.inspector,
57+
R.string.inspector_desc,
5758

58-
new Target.Type[]{Target.Type.ENDPOINT, Target.Type.REMOTE},
59-
R.layout.plugin_inspector,
60-
R.drawable.action_inspect
59+
new Target.Type[]{Target.Type.ENDPOINT, Target.Type.REMOTE},
60+
R.layout.plugin_inspector,
61+
R.drawable.action_inspect
6162
);
6263
}
6364

@@ -74,33 +75,44 @@ private void setStoppedState(){
7475

7576
private void write_services()
7677
{
77-
synchronized (mDeviceServices) {
78-
StringBuilder sb = new StringBuilder();
79-
String service;
80-
String version;
81-
82-
for (Port port : System.getCurrentTarget().getOpenPorts()) {
83-
service = port.getService();
84-
version = port.getVersion();
85-
86-
if (service != null && !service.isEmpty()) {
87-
sb.append(port.getNumber());
88-
sb.append(" ( ");
89-
sb.append(port.getProtocol().toString());
90-
sb.append(" ) : ");
91-
sb.append(service);
92-
93-
if (version != null && !version.isEmpty()) {
94-
sb.append(" - ");
95-
sb.append(version);
96-
}
97-
sb.append("\n");
78+
StringBuilder sb = new StringBuilder();
79+
String service;
80+
String version;
81+
82+
for (Port port : System.getCurrentTarget().getOpenPorts()) {
83+
service = port.getService();
84+
version = port.getVersion();
85+
86+
if (service != null && !service.isEmpty()) {
87+
sb.append(port.getNumber());
88+
sb.append(" ( ");
89+
sb.append(port.getProtocol().toString());
90+
sb.append(" ) : ");
91+
sb.append(service);
92+
93+
if (version != null && !version.isEmpty()) {
94+
sb.append(" - ");
95+
sb.append(version);
9896
}
97+
sb.append("\n");
9998
}
100-
if (sb.length() > 0)
101-
mDeviceServices.setText(sb.toString());
102-
else
103-
mDeviceServices.setText(empty);
99+
}
100+
if (sb.length() > 0)
101+
mDeviceServices.setText(sb.toString());
102+
else
103+
mDeviceServices.setText(empty);
104+
}
105+
106+
private void updateView() {
107+
if(ThreadHelper.isOnMainThread()) {
108+
write_services();
109+
} else {
110+
runOnUiThread(new Runnable() {
111+
@Override
112+
public void run() {
113+
write_services();
114+
}
115+
});
104116
}
105117
}
106118

@@ -109,7 +121,7 @@ private void setStartedState(){
109121
try {
110122
Target target = System.getCurrentTarget();
111123

112-
write_services();
124+
updateView();
113125

114126
mProcess = System.getTools().nmap.inpsect( target, mReceiver, mFocusedScan);
115127

@@ -150,6 +162,7 @@ public void onCreate(Bundle savedInstanceState){
150162

151163
empty = getText(R.string.unknown).toString();
152164

165+
// yep, we're on main thread here
153166
write_services();
154167

155168
mStartButton.setOnClickListener(new OnClickListener(){
@@ -164,7 +177,7 @@ public void onClick(View v){
164177
}
165178
);
166179

167-
mReceiver = new Receiver();
180+
mReceiver = new Receiver(System.getCurrentTarget());
168181
}
169182

170183
@Override
@@ -208,38 +221,39 @@ public boolean onOptionsItemSelected(MenuItem item){
208221
}
209222

210223
private class Receiver extends InspectionReceiver{
224+
225+
private final Target target;
226+
227+
public Receiver(Target target) {
228+
this.target = target;
229+
}
230+
211231
@Override
212-
public void onServiceFound( final int port, final String protocol, final String service, final String version ){
213-
boolean hasServiceDescription = !service.trim().isEmpty();
214-
final boolean hasVersion = (version != null && !version.isEmpty());
232+
public void onServiceFound(int port, String protocol, String service, String version ){
233+
Port p = new Port(port, Network.Protocol.fromString(protocol));
215234

216-
if(hasServiceDescription){
217-
if(hasVersion) {
218-
System.addOpenPort( port, Network.Protocol.fromString(protocol), service, version );
219-
}
220-
else
221-
System.addOpenPort( port, Network.Protocol.fromString(protocol), service );
222-
}
223-
else
224-
System.addOpenPort(port, Network.Protocol.fromString(protocol));
235+
service = service.trim();
236+
service = service.isEmpty() ? null : service;
225237

226-
Inspector.this.runOnUiThread(new Runnable(){
238+
version = version != null ? version.trim() : null;
239+
version = version != null && !version.isEmpty() ? version : null;
227240

228-
@Override
229-
public void run(){
230-
write_services();
231-
}
232-
});
241+
p.setService(service);
242+
p.setVersion(version);
243+
244+
target.addOpenPort(p);
245+
246+
updateView();
233247
}
234248

235249
@Override
236250
public void onOpenPortFound(int port, String protocol){
237-
System.addOpenPort(port, Network.Protocol.fromString(protocol));
251+
target.addOpenPort(port, Network.Protocol.fromString(protocol));
238252
}
239253

240254
@Override
241255
public void onOsFound(final String os){
242-
System.getCurrentTarget().setDeviceOS(os);
256+
target.setDeviceOS(os);
243257

244258
Inspector.this.runOnUiThread(new Runnable(){
245259
@Override
@@ -251,7 +265,7 @@ public void run(){
251265

252266
@Override
253267
public void onDeviceFound(final String device){
254-
System.getCurrentTarget().setDeviceType(device);
268+
target.setDeviceType(device);
255269

256270
Inspector.this.runOnUiThread(new Runnable(){
257271
@Override

0 commit comments

Comments
 (0)