1919package org .csploit .android .plugins .mitm ;
2020
2121import android .content .Context ;
22+ import android .content .Intent ;
2223import android .content .SharedPreferences ;
2324import android .os .Bundle ;
2425import android .support .v7 .app .AppCompatActivity ;
2526import android .text .Html ;
2627import android .view .LayoutInflater ;
2728import android .view .MenuItem ;
2829import android .view .View ;
29- import android .view .View .OnClickListener ;
3030import android .view .ViewGroup ;
3131import android .widget .AdapterView ;
3232import android .widget .AdapterView .OnItemSelectedListener ;
3838import android .widget .Toast ;
3939import android .widget .ToggleButton ;
4040
41+ import org .csploit .android .ActionActivity ;
4142import org .csploit .android .R ;
4243import org .csploit .android .core .Child ;
4344import org .csploit .android .core .ChildManager ;
4445import org .csploit .android .core .System ;
4546import org .csploit .android .gui .dialogs .ConfirmDialog ;
46- import org .csploit .android .gui .dialogs .ConfirmDialog .ConfirmDialogListener ;
4747import org .csploit .android .gui .dialogs .ErrorDialog ;
4848import org .csploit .android .net .Target ;
4949import org .csploit .android .plugins .mitm .SpoofSession .OnSessionReadyListener ;
5454import java .util .ArrayList ;
5555import java .util .Collections ;
5656
57- public class Sniffer extends AppCompatActivity
57+ public class Sniffer extends AppCompatActivity implements AdapterView . OnItemClickListener
5858{
5959 private static final String [] SORT = {
6060 "Bandwidth ↓" ,
@@ -296,18 +296,20 @@ public void onCreate(Bundle savedInstanceState){
296296 mSpoofSession = new SpoofSession (false , false , null , null );
297297
298298 mSortSpinner .setAdapter (new ArrayAdapter <String >(this , android .R .layout .simple_spinner_item , SORT ));
299- mSortSpinner .setOnItemSelectedListener (new OnItemSelectedListener (){
300- public void onItemSelected (AdapterView <?> adapter , View view , int position , long id ){
299+ mSortSpinner .setOnItemSelectedListener (new OnItemSelectedListener () {
300+ public void onItemSelected (AdapterView <?> adapter , View view , int position , long id ) {
301301 mSortType = position ;
302302 }
303303
304- public void onNothingSelected (AdapterView <?> arg0 ){
304+ public void onNothingSelected (AdapterView <?> arg0 ) {
305305 }
306306 });
307307
308308 mListView .setAdapter (mAdapter );
309309
310- mSniffToggleButton .setOnClickListener (new OnClickListener (){
310+ mListView .setOnItemClickListener (this );
311+
312+ mSniffToggleButton .setOnClickListener (new View .OnClickListener (){
311313 @ Override
312314 public void onClick (View v ){
313315 if (mRunning ){
@@ -319,7 +321,7 @@ public void onClick(View v){
319321 }
320322 );
321323
322- new ConfirmDialog ( getString (R .string .file_output ), getString (R .string .question_save_to_pcap ), this , new ConfirmDialogListener (){
324+ new ConfirmDialog ( getString (R .string .file_output ), getString (R .string .question_save_to_pcap ), this , new ConfirmDialog . ConfirmDialogListener (){
323325 @ Override
324326 public void onConfirm (){
325327 mDumpToFile = true ;
@@ -334,6 +336,40 @@ public void onCancel(){
334336 }).show ();
335337 }
336338
339+ @ Override
340+ public void onItemClick (AdapterView <?> parent , View view , int position , long id ) {
341+ String address = mAdapter .getByPosition (position ).mAddress ;
342+ final Target t = System .getTargetByAddress (address );
343+
344+ if (t == null )
345+ return ;
346+
347+ new ConfirmDialog (getString (R .string .mitm_ss_select_target_title ),
348+ String .format (getString (R .string .mitm_ss_select_target_prompt ), address ),
349+ Sniffer .this , new ConfirmDialog .ConfirmDialogListener () {
350+ @ Override
351+ public void onConfirm () {
352+ System .setCurrentTarget (t );
353+
354+ setStoppedState ();
355+
356+ Toast .makeText (Sniffer .this ,
357+ getString (R .string .selected_ ) + System .getCurrentTarget (),
358+ Toast .LENGTH_SHORT ).show ();
359+
360+ startActivity (new Intent (Sniffer .this ,
361+ ActionActivity .class ));
362+
363+ overridePendingTransition (R .anim .slide_in_left ,
364+ R .anim .slide_out_left );
365+ }
366+
367+ @ Override
368+ public void onCancel () {
369+ }
370+ }).show ();
371+ }
372+
337373 public synchronized int getSortType (){
338374 return mSortType ;
339375 }
@@ -357,12 +393,17 @@ private void setStoppedState(){
357393 mTcpdumpProcess .kill ();
358394 mTcpdumpProcess = null ;
359395 }
360- mSpoofSession .stop ();
396+ Sniffer .this .runOnUiThread (new Runnable () {
397+ @ Override
398+ public void run () {
399+ mSpoofSession .stop ();
361400
362- mSniffProgress .setVisibility (View .INVISIBLE );
401+ mSniffProgress .setVisibility (View .INVISIBLE );
363402
364- mRunning = false ;
365- mSniffToggleButton .setChecked (false );
403+ mRunning = false ;
404+ mSniffToggleButton .setChecked (false );
405+ }
406+ });
366407 }
367408
368409 private void setSpoofErrorState (final String error ){
0 commit comments