UDP Wifi sniffen

  • Antworten:9
LitteM
  • Forum-Beiträge: 141

01.04.2013, 22:55:50 via Website

Hallo zusammen,

ich habe heute mal ein kleines Programm erstellt, welches mir ein UDP Broadcast versendet (oder besser gesagt sollte).
Habe mir in diesem Zuge Wireshark heruntergeladen und wollte dann sehen ob da auch was "verschickt" wird.
In die Filterzeile habe ich "udp.srcport == 12345" eingetragen, allerdings findet er kein einziges Paket.

Daher dachte ich mir, vielleicht liegts ja auch an meinem Code. Oder geht das mit der freeware-Version von Wireshark nicht?
Funktionsprinzip: Bei Klick des Buttons wird ein Broadcast über Async-Task versendet.

Wäre super wenn mir jemand auf die Sprünge helfen könnte woran das liegt :)


1public class MainActivity extends Activity implements OnClickListener {
2
3 String testString ="Ich sende einen Broadcast";
4
5 int port = 12345;
6 InetAddress address;
7 DatagramSocket s = null;
8 DatagramPacket p;
9 Button broadcast1;
10
11
12 @Override
13 protected void onCreate(Bundle savedInstanceState) {
14 super.onCreate(savedInstanceState);
15 setContentView(R.layout.activity_main);
16
17 broadcast1 = (Button)findViewById(R.id.Broadcast1);
18 broadcast1.setOnClickListener(this);
19
20 Log.d("START", "Program start");
21}
22
23 class DownloadFileFromURL extends AsyncTask<String, String, String> {
24
25 @Override
26 protected void onPreExecute() {
27 super.onPreExecute();
28 Toast.makeText(getApplicationContext(), "Start sending", Toast.LENGTH_SHORT).show();
29 }
30
31 @Override
32 protected String doInBackground(String... f_url) {
33
34 try {
35 String messageStr="Hello Android!";
36
37 DatagramSocket s = new DatagramSocket(port);
38 s.setBroadcast(true);
39 int msg_length=messageStr.length();
40 byte[] message = messageStr.getBytes();
41 DatagramPacket p = new DatagramPacket(message, msg_length,getBroadcastAddress(),port);
42 s.send(p);
43
44 } catch (IOException e) {
45 e.printStackTrace();
46 }
47 return null;
48 }
49
50
51 protected void onProgressUpdate(String... progress) {
52 }
53
54 @Override
55 protected void onPostExecute(String file_url) {
56 Toast.makeText(getApplicationContext(), "Message sent", Toast.LENGTH_SHORT).show();
57 }
58 }
59
60
61
62 private InetAddress getBroadcastAddress() throws IOException {
63
64 WifiManager wifi = (WifiManager) getSystemService(WIFI_SERVICE);
65 DhcpInfo dhcp = wifi.getDhcpInfo();
66
67 if (dhcp == null) {
68 Log.w("FAIL", "Could not get dhcp info");
69 return null;
70 }
71
72 Log.d("ADDRESS", "Broadkastaddresse wird ermittelt");
73 int broadcast = (dhcp.ipAddress & dhcp.netmask) | ~dhcp.netmask;
74 byte[] quads = new byte[4];
75 for (int k = 0; k < 4; k++)
76 quads[k] = (byte) ((broadcast >> k * 8) & 0xFF);
77 Log.d("ADDRESS", "Broadcast Address ermittelt: "+InetAddress.getByAddress(quads));
78 return InetAddress.getByAddress(quads);
79 }
80
81
82 @Override
83 public void onClick(View v) {
84 DownloadFileFromURL test = new DownloadFileFromURL();
85 test.execute();
86 }
87}


Logcat gibt mir auch ein paar "Fehler" raus wie mir erst jetzta aufgefallen ist. Wenn jemand weiß wie ich die los werde wär ich dankbar ;)
Bin selbst natürlich auch am Suchen nach ner Lösung :)

104-01 14:14:04.766: D/AndroidRuntime(4635): >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<
204-01 14:14:04.766: D/AndroidRuntime(4635): CheckJNI is OFF
304-01 14:14:04.771: D/dalvikvm(4635): Trying to load lib libjavacore.so 0x0
404-01 14:14:04.776: D/dalvikvm(4635): Added shared lib libjavacore.so 0x0
504-01 14:14:04.781: D/dalvikvm(4635): Trying to load lib libnativehelper.so 0x0
604-01 14:14:04.781: D/dalvikvm(4635): Added shared lib libnativehelper.so 0x0
704-01 14:14:04.891: D/AndroidRuntime(4635): Calling main entry com.android.commands.pm.Pm
804-01 14:14:04.896: W/ActivityManager(391): No content provider found for permission revoke: file:///data/local/tmp/SendReceiveBroadcast.apk
904-01 14:14:04.901: D/Finsky(1173): [1] PackageVerificationReceiver.onReceive: Verification requested, id = 12
1004-01 14:14:04.901: D/Finsky(1173): [1] WorkerTask.onPreExecute: Verification Requested for id = 12, data=file:///data/local/tmp/SendReceiveBroadcast.apk flags=114
1104-01 14:14:05.061: D/Finsky(1173): [1] 2.onResponse: Verification id=12 response=0
1204-01 14:14:05.066: D/Finsky(1173): [1] PackageVerificationReceiver.onReceive: Verification requested, id = 12
1304-01 14:14:05.076: W/ActivityManager(391): No content provider found for permission revoke: file:///data/local/tmp/SendReceiveBroadcast.apk
1404-01 14:14:05.076: I/PackageManager(391): Copying native libraries to /data/app-lib/vmdl1551217785
1504-01 14:14:05.116: I/PackageManager(391): Removing non-system package:com.example.sendreceivebroadcast
1604-01 14:14:05.116: I/ActivityManager(391): Force stopping package com.example.sendreceivebroadcast appid=10065 user=-1
1704-01 14:14:05.116: I/ActivityManager(391): Killing proc 4610:com.example.sendreceivebroadcast/u0a10065: force stop com.example.sendreceivebroadcast
1804-01 14:14:05.116: W/ActivityManager(391): Force removing ActivityRecord{42973c30 u0 com.example.sendreceivebroadcast/.MainActivity}: app died, no saved state
1904-01 14:14:05.156: I/WindowState(391): WIN DEATH: Window{429e6fd8 u0 com.example.sendreceivebroadcast/com.example.sendreceivebroadcast.MainActivity}
2004-01 14:14:05.176: I/PackageManager(391): Package com.example.sendreceivebroadcast codePath changed from /data/app/com.example.sendreceivebroadcast-2.apk to /data/app/com.example.sendreceivebroadcast-1.apk; Retaining data and using new
2104-01 14:14:05.181: I/PackageManager(391): Running dexopt on: com.example.sendreceivebroadcast
2204-01 14:14:05.211: D/mali_winsys(602): new_window_surface returns 0x3000
2304-01 14:14:05.211: W/InputMethodManagerService(391): Got RemoteException sending setActive(false) notification to pid 4610 uid 10065
2404-01 14:14:05.361: D/dalvikvm(4646): DexOpt: load 33ms, verify+opt 100ms, 809868 bytes
2504-01 14:14:05.386: I/ActivityManager(391): Force stopping package com.example.sendreceivebroadcast appid=10065 user=-1
2604-01 14:14:05.386: W/PackageManager(391): Code path for pkg : com.example.sendreceivebroadcast changing from /data/app/com.example.sendreceivebroadcast-2.apk to /data/app/com.example.sendreceivebroadcast-1.apk
2704-01 14:14:05.386: W/PackageManager(391): Resource path for pkg : com.example.sendreceivebroadcast changing from /data/app/com.example.sendreceivebroadcast-2.apk to /data/app/com.example.sendreceivebroadcast-1.apk
2804-01 14:14:05.416: D/PackageManager(391): New package installed in /data/app/com.example.sendreceivebroadcast-1.apk
2904-01 14:14:05.461: I/ActivityManager(391): Force stopping package com.example.sendreceivebroadcast appid=10065 user=0
3004-01 14:14:05.491: D/dalvikvm(602): GC_EXPLICIT freed 776K, 22% free 25011K/31724K, paused 2ms+3ms, total 29ms
3104-01 14:14:05.506: D/dalvikvm(672): GC_EXPLICIT freed 225K, 5% free 8988K/9384K, paused 1ms+2ms, total 28ms
3204-01 14:14:05.521: I/InputReader(391): Reconfiguring input devices. changes=0x00000010
3304-01 14:14:05.556: I/InputReader(391): Reconfiguring input devices. changes=0x00000010
3404-01 14:14:05.581: W/ContextImpl(4447): Calling a method in the system process without a qualified user: android.app.ContextImpl.startService:1352 android.content.ContextWrapper.startService:450 android.content.ContextWrapper.startService:450 com.android.keychain.KeyChainBroadcastReceiver.onReceive:12 android.app.ActivityThread.handleReceiver:2376
3504-01 14:14:05.626: D/dalvikvm(391): GC_EXPLICIT freed 1613K, 18% free 19243K/23412K, paused 11ms+33ms, total 112ms
3604-01 14:14:05.641: D/dalvikvm(4112): GC_CONCURRENT freed 304K, 5% free 8948K/9392K, paused 15ms+2ms, total 51ms
3704-01 14:14:05.661: D/dalvikvm(1173): GC_EXPLICIT freed 466K, 15% free 19768K/23028K, paused 2ms+20ms, total 197ms
3804-01 14:14:05.751: D/dalvikvm(4141): GC_CONCURRENT freed 364K, 5% free 8711K/9104K, paused 3ms+1ms, total 24ms
3904-01 14:14:05.831: D/dalvikvm(391): GC_EXPLICIT freed 741K, 19% free 19194K/23412K, paused 13ms+11ms, total 181ms
4004-01 14:14:05.836: D/AndroidRuntime(4635): Shutting down VM
4104-01 14:14:05.836: D/dalvikvm(4635): GC_CONCURRENT freed 95K, 18% free 468K/568K, paused 0ms+0ms, total 1ms
4204-01 14:14:05.836: D/jdwp(4635): Got wake-up signal, bailing out of select
4304-01 14:14:05.841: D/dalvikvm(4635): Debugger has detached; object registry had 1 entries
4404-01 14:14:06.246: D/AndroidRuntime(4663): >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<
4504-01 14:14:06.246: D/AndroidRuntime(4663): CheckJNI is OFF
4604-01 14:14:06.251: D/dalvikvm(4663): Trying to load lib libjavacore.so 0x0
4704-01 14:14:06.256: D/dalvikvm(4663): Added shared lib libjavacore.so 0x0
4804-01 14:14:06.261: D/dalvikvm(4663): Trying to load lib libnativehelper.so 0x0
4904-01 14:14:06.261: D/dalvikvm(4663): Added shared lib libnativehelper.so 0x0
5004-01 14:14:06.371: D/AndroidRuntime(4663): Calling main entry com.android.commands.am.Am
5104-01 14:14:06.371: D/dalvikvm(4663): Note: class Landroid/app/ActivityManagerNative; has 157 unimplemented (abstract) methods
5204-01 14:14:06.376: I/ActivityManager(391): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.example.sendreceivebroadcast/.MainActivity} from pid 4663
5304-01 14:14:06.396: D/AndroidRuntime(4663): Shutting down VM
5404-01 14:14:06.396: D/dalvikvm(4663): GC_CONCURRENT freed 96K, 17% free 500K/600K, paused 1ms+0ms, total 3ms
5504-01 14:14:06.396: D/jdwp(4663): Got wake-up signal, bailing out of select
5604-01 14:14:06.396: D/dalvikvm(4663): Debugger has detached; object registry had 1 entries
5704-01 14:14:06.401: D/dalvikvm(4673): Late-enabling CheckJNI
5804-01 14:14:06.401: I/ActivityManager(391): Start proc com.example.sendreceivebroadcast for activity com.example.sendreceivebroadcast/.MainActivity: pid=4673 uid=10065 gids={50065, 3003, 1015, 1028}
5904-01 14:14:06.476: D/START(4673): Program start
6004-01 14:14:06.526: D/libEGL(4673): loaded /vendor/lib/egl/libGLES_mali.so
6104-01 14:14:06.551: D/mali_winsys(4673): new_window_surface returns 0x3000
6204-01 14:14:06.551: D/OpenGLRenderer(4673): Enabling debug mode 0
6304-01 14:14:06.676: I/ActivityManager(391): Displayed com.example.sendreceivebroadcast/.MainActivity: +286ms
6404-01 14:14:20.811: D/Finsky(1173): [1] 5.onFinished: Installation state replication succeeded.
6504-01 14:15:42.151: D/ADDRESS(4673): Broadkastaddresse wird ermittelt
6604-01 14:15:42.151: D/ADDRESS(4673): Broadcast Address ermittelt: /10.196.15.255
6704-01 14:17:37.946: W/ThrottleService(391): unable to find stats for iface rmnet0

— geändert am 01.04.2013, 23:19:04

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

02.04.2013, 16:31:26 via App

Leite mal den Ganzen traffic von deinem Handy auf einen loalen proxy um, von dem du dann wiederum mit dem Sniffer die Daten aduslesn kannst.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
LitteM
  • Forum-Beiträge: 141

02.04.2013, 23:00:30 via Website

Danke für den Tipp. Ein Freund hatte auch gemeint, dass es aufgrund des Uni-Netzwerkes nicht ging.

Habe jetzt meinen Laptop als Hotspot eingerichtet und das Tablet darüber eingewählt.
Es ermittelt jetzt eben die Broadcastadresse von der jetzigen Verbindung und schickt was raus.

Wireshark gibt fängt mir dann ein UDP Paket ab :)

Antworten
LitteM
  • Forum-Beiträge: 141

03.04.2013, 04:56:13 via Website

Ich weiß nicht ob es "erlaubt" ist, aber kann ich mit der normalen freeware version Wireshark auch den Handshake einsehen?

— geändert am 03.04.2013, 04:56:24

Antworten
Andy N.
  • Forum-Beiträge: 3.112

03.04.2013, 13:21:31 via App

Welchen Handshake?
UDP ist verbindungslos.

Simon H.

Antworten
LitteM
  • Forum-Beiträge: 141

03.04.2013, 17:33:41 via Website

Ouch, peinliche Frage :rolleyes:

Ist es denn überhaupt möglich eine verbindungsorientierte Datenübertragung mit Android zu realisieren?
Ich müsste irgendwie sicherstellen können, dass in dem Moment in dem ich sende kein anderer im Netzwerk sendet...

Antworten
Simon H.
  • Forum-Beiträge: 180

03.04.2013, 17:40:08 via Website

Hilft das? ^^

Antworten
Andy N.
  • Forum-Beiträge: 3.112

03.04.2013, 17:41:01 via App

TCP ist verbindungsorientiert. Aber es spielt doch keine Rolle ob jemand anders sendet, oder warum ist es dir so wichtig?
Den Handshake von TCP sieht man aber mit Wireshark.

Antworten
LitteM
  • Forum-Beiträge: 141

03.04.2013, 17:54:24 via Website

@Simon: Funktionierende sockets für UDP hab ich schon zusammen gebastelt

@Andy: Ich weiß ehrlich gesagt nicht ob ich das ausplaudern darf -_- Wenn du mir trotzdem sagen könntest ob es möglich ist mit Wifi und Android ein Szenario zu realisieren in dem nur ein Client zur gleichen Zeit sendet wäre das super :)

Antworten
Andy N.
  • Forum-Beiträge: 3.112

03.04.2013, 18:55:39 via Website

Du hast einen Server und mehrere Clients und es soll immer nur ein Client mit der Server reden?
Das kann doch der Server regeln, bzw. Clients senden nur, wenn Server ein OK gibt.

Wenn Du aber irgendeinen Client im Netz meinst, so geht das nicht. In den meisten fällen wirst Du gar nicht mitbekommen, wenn eine andere Kommunikation statt findet (nämlich dann wenn sie dich nicht betrifft).


So oder so, ich sehe keinen Sinn dahinter. Ein Server kann mit mehren Clients reden und einem Client stört es kein bisschen, wenn wo anders Daten gesendet werden. Es werden eh ständig irgendwelche Daten gesendet.

Antworten