3333import org .csploit .android .core .ChildManager ;
3434import org .csploit .android .core .Plugin ;
3535import org .csploit .android .core .System ;
36+ import org .csploit .android .helpers .ThreadHelper ;
3637import org .csploit .android .net .Network ;
3738import org .csploit .android .net .Target ;
3839import 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