Zeige Geräte UDID[Source Code - C ohne libs]

02/23/2014 21:27 iOSsec#1
Hey hier mal ein älteres tool von mir, dass in C geschrieben ist und euch die UDID von euren angeschlossenen Geräten zeigt.
Das ganze habe ich euch extra ohne externe libs wie libimobiledevice geschrieben, damit ihr nicht rumheult, dass ihr libimobiledevice nicht installiert habt oder da ihr findet wen es mit libimobiledevice geschrieben ist, dass es dann nicht zu 100 & von mir ist, da es ja ein Library verwendet.

Der Post auf meinen Blog:
[Only registered and activated users can see links. Click Here To Register...]

udid.c:
PHP Code:
#include <string.h>
#include <CoreFoundation/CoreFoundation.h>

// Start - A part of MobileDevice.h
#define ADNCI_MSG_CONNECTED     1
struct am_device_notification_callback_info {
    
struct am_device *dev;
}
__attribute__ ((packed)) am_device_notification_callback_info;
__attribute__ ((packed)) am_device;
    
CFStringRef AMDeviceCopyDeviceIdentifier(struct am_device *device);
// End

struct am_device_notification *notify;
struct am_device *device;
void sendata(*device)
{
    
CFStringEncoding encoding CFStringGetSystemEncoding();
    const 
char *udid CFStringGetCStringPtr(AMDeviceCopyDeviceIdentifier(device), encoding);
    
printf("UDID: %s\n"udid);
    exit(
EXIT_SUCCESS);
}

void getdata(struct am_device_notification_callback_info *info)
{
    
sendata(info->dev);
}     

void main()
{
    
AMDeviceNotificationSubscribe(&getdataNULLNULLNULL, &notify);
    
CFRunLoopRun();

Makefile:
all:
PHP Code:
all:
    
gcc -o udid -framework CoreFoundation -framework MobileDevice -F/System/Library/PrivateFrameworks udid.
Der ganze Code ist auch auf Github Gist.
[Only registered and activated users can see links. Click Here To Register...]

Wen ihr kein iOS Gerät angeschlossen habt, passiert nichts und das tool wartet bis ihr eins angeschlossen habt.
Dann wird euch mit dem folgenden Output die UDID angezeigt:
udid: ...

Njaja was soll ich noch groß sagen, habt Spaß mit dem rumexperimentieren.
Es ist ein einfaches Tool und wen das in die kleine Tools Sektion gehört sagt es mir, aber ich glaube in der Smartphone Sektion schon ganz gut geschrieben.
Und bis ich das raushatte, hat es auch kurz gedauert also so klein ist es auch nicht(15 Minuten oder so).
Ach ja fürs thank geben braucht ihr kein Tutorial, oder?
Folgt mir auf Twitter: [Only registered and activated users can see links. Click Here To Register...].
Webseite: [Only registered and activated users can see links. Click Here To Register...]
Blog für kurze Updates, da findet ihr das Zeug auch noch mal: [Only registered and activated users can see links. Click Here To Register...]
:cool:
02/24/2014 17:01 rea_txt#2
Hey!

Erstmal vielen Dank für Teilen, jedoch bin ich auf dem Gebiet der Programmierung nicht so sehr bewandert, weshalb ich ein paar Fragen hätte.

Meine konkrete Frage wäre zuallererst, wie man so ein Script überhaupt ausführt.

Die UDID zeigt mir ja die normalerweise einmalige Erkennungsnummer meines iOS Geräts, sofern diese nicht mit einem UDID-Faker unkenntlich gemacht wird. Werden diese dann zu dir geschickt? (keine Unterstellung, nur zur Gewissheit)

Ich würde es gerne testen und dir eine positive Resonanz dalassen, falls es klappt!

Vielen Dank im Voraus und liebe Grüße!


-
02/24/2014 22:58 iOSsec#3
Also wie man es ausführt ist logisch.
Bei Mac einfach make datei.c oder gcc -o datei datei.c im Terminal schreiben oder wie auch bei Windows es einfacher ist einen normalen C++ Compiler verwenden um es zu kompilieren. :) Ob das ganze auch so auf Win läuft, kp. Hab ja die Makefile dazugeschrieben und man kann es mittels make einfach kompilieren. Was haste den fürn System?
02/24/2014 23:10 rea_txt#4
Quote:
Originally Posted by iOSsec View Post
Also wie man es ausführt ist logisch.
Bei Mac einfach make datei.c oder gcc -o datei datei.c im Terminal schreiben oder wie auch bei Windows es einfacher ist einen normalen C++ Compiler verwenden um es zu kompilieren. :) Ob das ganze auch so auf Win läuft, kp. Hab ja die Makefile dazugeschrieben und man kann es mittels make einfach kompilieren. Was haste den fürn System?
Nun, ich bin gerade Windows 8.1 64-bit Nutzer. Ist dieser Compiler in Windows bereits integriert oder muss man sich den gesondert aus dem Internet herunterladen? Wenn ja, dann welchen?

Danke und liebe Grüße!


-
02/24/2014 23:13 snow#5
Quote:
Originally Posted by NewMoon* View Post
Meine konkrete Frage wäre zuallererst, wie man so ein Script überhaupt ausführt.
Das ist C, das musst du mit einem Compiler zu einer Binärdatei übersetzen. Entgegen der Beschreibung kommt der Code nicht ohne Libs aus, CoreFoundation wird benötigt und somit wird man das wohl nicht nativ unter Windows kompilieren können.

Quote:
Die UDID zeigt mir ja die normalerweise einmalige Erkennungsnummer meines iOS Geräts, sofern diese nicht mit einem UDID-Faker unkenntlich gemacht wird. Werden diese dann zu dir geschickt? (keine Unterstellung, nur zur Gewissheit)
Der Code macht nichts außer die UDID anzuzeigen.
Programmablauf:
Code:
AMDeviceNotificationSubscribe(&getdata, NULL, NULL, NULL, &notify);
- hier wird die Funktion getdata als Eventhandler registriert, sobald ein Device erkannt wird. notify ist das struct, das als Parameter übergeben wird.
Code:
 CFRunLoopRun()
- startet die Nachrichtenschleife, es wird nur darauf gewartet, dass ein neues Event reinkommt. Da das Programm nur einen Handler besitzt (für AMDeviceNotification), wird es nur bei einer Nachricht eine Aktion geben.

Code:
void sendata(*device)
- wird von getdata aufgerufen, wenn eine Nachricht eintrifft.

Code:
CFStringEncoding encoding = CFStringGetSystemEncoding(); 
const char *udid = CFStringGetCStringPtr(AMDeviceCopyDeviceIdentifier(device), encoding);
- CF Funktionen, die das Encoding bestimmen und einen Zeiger auf den Device Identifier returnen, das ist die UDID, die wird über eine AMDevice Funktion ausgelesen.

Code:
printf("UDID: %s\n", udid); 
    exit(EXIT_SUCCESS);
- die UDID wird ausgegeben im Format "UDID: 123456789" und das Programm schließt sich.

Also kein Code, der irgendwelche Daten sammelt. :)

Quote:
Es ist ein einfaches Tool und wen das in die kleine Tools Sektion gehört sagt es mir, aber ich glaube in der Smartphone Sektion schon ganz gut geschrieben.
Nein, es ist Code. Für Code gibt es diese Sektion: [Only registered and activated users can see links. Click Here To Register...]

Quote:
Ach ja fürs thank geben braucht ihr kein Tutorial, oder?
Doch
02/24/2014 23:26 rea_txt#6
[Fügen Sie hier den Beitrag von snow911 hinzu]


Puh, erstmal "Vielen herzlichen Dank für die minuziöse Illustrierung dieser Komplexität", wie? :)

Das ganze fachmännische Vokabular macht einem echt zu schaffen, aber ich fühle mich.. nunja, man kann sagen geschulter. Ich würde sogar meinen, dass ich das alles wirklich mit großem Interesse verfolgt habe.
Gleich mal das Programmieren lernen! ;)

Ich denke, ein unerfahrener User wie ich es bin, sollte davon (noch) die Finger lassen, eher ich mich daran verbeiße.
Trotzdem schade. Ich hätte es gerne ausgestet

Nichtsdestotrotz: Nochmal danke an euch beiden!

Liebe Grüße!

EDIT

Es tut mir von ganzem Herzen weh und auch leid, Ihre Identität verwechselt zu haben Herr snow911!
Danke fürs Animieren btw! :)

-
02/24/2014 23:54 snow#7
Quote:
snow991
:(

Naja, das Thema ist auch schon ein bisschen komplexer (niemand, der mit dem Programmieren anfängt, wird direkt von einer Nachrichtenschleife hören) & mit dem reinen Programm kann man nicht so viel anfangen (dient eher dazu, dass man für ein Projekt auf die UDID zugreifen kann).
Wenn es dich interessiert, kannst du dir ja mal C anschauen, ist relativ schnell gelernt & ist sehr interessant. :)

@TE: Was spricht gegen libimobiledevice und idevice_get_udid?
02/27/2014 00:20 iOSsec#8
Ja war falsch formuliert, ich meinte die libs die extra für so Zeug sind wie MobileDevice ruby gems oder libimobiledevice.
02/27/2014 08:15 DarkOPM#9
#moved
03/13/2014 15:49 iOSsec#10
1:
Da spricht nicht viel gegen. Ich arbeite selber fast nur damit.
Aber hier meinen manche wenn ich das release, dass währe eh nur Müll weil ichs net gemacht hab wenn ich libimobiledevice verwende.

2:
Und ja es ist nur für Projekte die darauf zugreifen.

3:
Ich arbeite selber mit libimobiledevice.
(Z.b. ein Tool um Apps zu installieren, da ich kp habe bzw es zu viel Zeit brauchen würde die Lockdown Verbindung, AFC, installation_proxy . . . mit iTunes MobileDevice.h datei zu erstellen.)