Screensharing -> Bildschirm kurz rot blinken lassen?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Screensharing -> Bildschirm kurz rot blinken lassen?

    Wir setzen in unserem Unternehmen Apple - Rechner ein.
    Unser Administrator nutzt Apple Remote Desktop 3.x [Systemeinstellungen -> Entfernte Verwaltung] bzw. seit Leopard auch "ScreenSharing" aus den Systemeinstellungen.

    Bisher lief das ganze immer sehr fair ab:
    Unter Systemeinstellungen war der Haken gesetzt "Status von >>Entfernte Verwaltung<< in der Menueleiste anzeigen". [Siehe Bildschirmfoto].


    Dieser Haken wurde jetzt vor 2 Wochen entfernt. Das heisst: Jederzeit Zugriff, ohne dass es die Benutzer selbst sehen.


    Nun würde ich mir gerne ein kleines Programm schreiben, so dass man sieht, dass jemand den Bildschirm beobachtet, ohne das der Haken für die Menueleiste gesetzt ist.

    Ich könnte mir z.B. ein kleines Objective-C - Programm vorstellen, dass immer unten im Dock ausgeführt liegt und wenn der Bildschirmbeobachtet wird, fängt es eben an 5x zu springen. Oder der Bildschirm blinkt kurz rot.


    Leider fehlt mir der Ansatzpunkt, wo ich in der Apple-Dokus nachlesen könnte, wie ich dieses Beobachtet-Werden abfangen kann?



    Kennt sich hier evtl. jemand durch Zufall aus, oder hat eine gute Idee für einen Ansatz?
  • RE: Screensharing -> Bildschirm kurz rot blinken lassen?

    Macht alle nichts mehr bis der Haken wieder da ist. Alle Räder stehen still, wenn dein starker Arm es will. ;)
    Alternativ von einer externen Platte booten und Little Snitch installieren oder die Ports per Firewall blocken.

    Chris
    Man macht einfach solange irgendwelche Dinge, bis man tot ist.
    Und dann bekommen die anderen Kuchen.
  • Screen Sharing deaktivieren. ;D

    Mit launchd wird es bestimmt einen Weg gehen, ich kenne mich damit aber zu wenig gut aus. Oder mit lsof, dieses periodisch laufen lassen und die Verbindungen prüfen. Da bin ich aber auch kein Hirsch, ich kann dir nur folgenden Schnipsel bieten, welcher anzeigt wer auf die freigegebene iTunes Mediathek via Netzwerk zugreift:

    Quellcode

    1. lsof -a -c iTunes -i TCP
    Widgetschmie.de • Life is too short for gadgets
  • bitte kirche im dorf lassen. keine bildzeitung. betriebsrat ist auch geregelt.

    ich selbst kenne natürlich auch das admin passwort. ich hab auch kein problem damit, wenn mein bildschirm mal gescannt wird. ich will ja nur wissen, wann gerade der admin-guru drin ist.

    den haken einfach setzen in screensharing, so dass es wieder in der menueleiste aufleuchtet könnte ich. aber dann sieht er ja, dass ich eigenmächtig den haken mit admin-rechten wieder reingemacht habe.


    mein erster ansatz: theoretisch wird dass ja alles in den system.XXXX - dateien gespeichert. nur diese ununterbrochen auszulesen, ist bestimmt zu performance lastig.

    mein 2ter ansatz wäre:
    rausfinden, welcher port dieses screensharing nutzt, diese port dann von einem kleinen programm beobachten und wenn gerade ein zugriff darüber erfolgt, dann soll z.b. das eigene Symbol springen, oder Bildschirm kurz blinken. [Blinken, und Symbol springen lassen ist alles nicht das Problem. Das einzige Problem ist natürlich zu erkennen, dass gerade jemand auf den eigenen Rechner zugreift ;) ]
  • Der Vorschlag von Pascal geht bei mir super. In etwa so:

    Quellcode

    1. NSTask* task = [[[NSTask alloc] init] autorelease];
    2. NSPipe* pipe = [NSPipe pipe];
    3. NSFileHandle* handle = [pipe fileHandleForReading];
    4. NSArray* args = [NSArray arrayWithObjects:@"-a",@"-c",@"AppleVNCServer",@"-i",NULL];
    5. [task setLaunchPath:@"/usr/sbin/lsof"];
    6. [task setArguments:args];
    7. [task setStandardOutput:pipe];
    8. [task launch];
    9. NSData* data = NULL;
    10. NSMutableString* string = [NSMutableString string];
    11. while ((data = [handle availableData]) && [data length]) {
    12. [string appendString:[NSString stringWithCString:[data bytes] length:[data length]]];
    13. }
    14. [task terminate];
    15. BOOL watching = [string rangeOfString:@"ESTABLISHED"].location != NSNotFound;
    Alles anzeigen
    Multigrad - 360°-Produktfotografie für den Mac
  • @mattik: wow, danke für den code-schnippsel.


    Bin nun am überlegen, wie ich das am besten integriere. Ich denke am sinnvollsten ist es - unauffällig - in ein bestehendes Programm zu intergieren, dass sowieso Tag und Nacht läuft. Das läuft & prüft eben einmal in der Sekunde ob Zugriff und springt dann :)

    Dazu sollte ich am besten den Codeschnippsel einmal pro Sekunde aufrufen, oder?
    Würdet Ihr hier ein Deligate + Notfication verwenden?
    Oder gibt es für so was ununterbrochen prüfen soll, ob Zugriff, eine vorgefertigte Objective-C - Variante/Methode?
  • wäre nicht vllt sogar ein bestimmter Ton sinnvoll (oder hört der Admin den auch?!?) - wenn die Audioausgabe nicht auch beim Admin ankommt unauffälliger als hüpfende Icons, zuckelnde Screens oder blitze.

    Gruß
    Reimar

    PS. Je nachdem wie alt du bist, und wie alt deine Kollegen im Büro sind vllt sogar in einer Frequenz die sie nicht mehr hören :)
    Ich glaube ans Schlimmste und hoffe aufs Beste
  • die idee mit dem ton gefällt mir.

    wobei ich das programm ja auch meinen kollegen geben will.
    hoffe dass dann nicht einen dauerton gibt :D
    oder es laufend irgendwo piept und surrt.

    [ diese ultrahellen töne kann ich nicht mehr hören, dafür bin ich bereits zu alt. bzw. wenn ich weiss dass es so einen ton gibt und gezielt darauf konzentriere höre ich den, aber beim normalen arbeiten darauf zu achten ob gerade diese eklige helle ton fiept - no chance. ]

    wird wohl doch eher auf was unauffälliges hinauslaufen, wie z.B. dass das iCal-Symbol statt der [heute] grossen 20 eine 19 anzeigt :D oder ganz links der Finder mit seinem lachenden Gesicht ein Zwickauge macht. ;)


    brauche nur noch einen letzten tipp, wie ich das mit dem perament abrufen machen?
    per notification und deligate? oder mit etwas eleganterem? eine art timer, der einmal pro sekunde das ganze aufruft?
  • Die Idee mit dem Ton ist nett, allerdings wird's auffällig, wenn andere gerade im Büro stehen.... Ich könnte mir vorstellen, einen unauffälligen NSStatusItem in der Menüzeile zu haben (ein kleiner Punkt oder ein Symbol, das anderen eh bekannt vorkommt, z.B. das Modem- oder Bluetooth-Symbol), das nur dann angezeigt wird, wenn der Rechner gerade nicht beobachtet wird, sodass ein Remote-Administrator es nicht zu Gesicht bekommt. Dafür könnte man eine normale Cocoa-Anwendung mit LSUIElement=1 nehmen, dann taucht sie nicht im Dock und auch nicht im Task-Switcher auf. Das sollte als einfaches Verstecken durchgehen (gute Leute, die ganz genau hinsehen, werden es eh entdecken, egal wie man es macht).

    Und ja: ein NSTimer ist das geeignete Mittel dafür.
    Multigrad - 360°-Produktfotografie für den Mac
  • Du könntest das mit einer Überwachungsklasse lösen, die eine Methode drin hat, die vom NSTimer in einem von dir definierten Interval aufgerufen wird. Diese Methode implementiert den Code von Mattik. Wenn Du dann Nachrichten elegant an deinen NSWindowController oder NSViewController schicken willst, würde ich dafür ein Protokoll definieren, das einer der Controller implementiert um dann auf die vielseitigen schon besprochenen Möglichen zu reagieren. Über ein Delegate in der Überwachungsklasse kannst du dann zurück an den Controller feuern.

    Protokoll in einem eigenen Header definieren:

    Quellcode

    1. @protocol StasiProtocol
    2. - (void)operatorConnected;
    3. - (void)operatorIsViewing;
    4. - (void)operatorDisconnected;
    5. @end


    In der Überwachungsklasse definierst Du ein Delegate als Property, um es nach dem Aufrufen von init: aus dem Controller auf diesen setzen zu können. Außerdem musst du noch @synthesize in der Implementierung verwenden, um Getter/Setter für das Delegate zu erzeugen.

    Quellcode

    1. @interface StasiDetector : NSObject
    2. {
    3. id<StasiProtocol> delegate;
    4. }
    5. @property (retain) id<StasiProtocol> delegate;
    6. @end


    Im Interface des Controllers definierst du eine Zeiger vom Typ StasiDetector, initialisiert ihn und implementierst dann die Methoden des Protokolls. Innerhalb deiner NSTimer-gesteuerten Abfrage kannst Du dann je nach Ereignis die Methode im Delegate feuern.

    Der Aufruf der Methoden des Protokolls über das Delegate funktioniert innerhalb des StasiDetectors so:

    Quellcode

    1. [delegate operatorConnected];
    2. [delegate operatorIsViewing];
    3. [delegate operatorDisconnected];


    So würde ich das in ein bestehendes Programm integrieren. Angenommen, Du müsstest das noch an andere Stelle einbauen, dann wäre das eine sehr modulare Sache und du brauchst nur wieder das Protokoll im Delegate implementieren und die bestehende Klassendefinition verwenden.

    Gruß,

    Frank
  • Ich würde wohl auch bestehende Menuitems ein- oder ausblenden, wenn du überwacht wirst. Z.b das Schlösschen des Keychains, kannst es z.B. immer in der Menuleiste drin haben, sobald ein Admin sich einklinkt nimmst du das raus (oder umgekehrt). Oder per GeekTool, dann müsstest du wohl nicht mal ein Cocoa-Programm erstellen.

    Ha, gute Idee, ich mach das mit dem GeekTool gleich mal als iTunes-Überwachung. ;D


    Edit:
    Falls es jemanden interessiert, so erscheinen schön die IPs der verbundenen User auf dem Desktop (mit GeekTool):

    Quellcode

    1. lsof -a -c iTunes -i TCP | awk 'BEGIN { i=0; p="" } /ESTABLISHED/ { foo=substr($9, index($9, ">") + 1); L[i++]=substr(foo, 1, index(foo, ":") - 1) } END { if(i > 0) { p="iTunes: "; for(a = 0; a < i; a++) { if(a > 0) { p = p ", " } p = p L[a] } } print p }'
    Widgetschmie.de • Life is too short for gadgets
  • Stimmt schon, die Kommunikation über ein Interface wäre zwar superordentlich und schön generisch, aber ist das nicht für diese Sache hier ein wenig Overkill?

    Ich habe die Geschichte mit dem Status Item mal interessehalber - ganz primitiv und hart verdrahtet - in ein Projekt gepresst. Das Icon kann man nach Bedarf austauschen. Beenden kann man es, indem man die Zahlentasten 1-4 gleichzeitig drückt. Das können wir jetzt erweitern und eine supertolle Antiüberwachungsanwendung draus machen und gaaanz reich werden... :)
    Multigrad - 360°-Produktfotografie für den Mac
  • Original von mattik
    Stimmt schon, die Kommunikation über ein Interface wäre zwar superordentlich und schön generisch, aber ist das nicht für diese Sache hier ein wenig Overkill?

    Ich habe die Geschichte mit dem Status Item mal interessehalber - ganz primitiv und hart verdrahtet - in ein Projekt gepresst. Das Icon kann man nach Bedarf austauschen. Beenden kann man es, indem man die Zahlentasten 1-4 gleichzeitig drückt. Das können wir jetzt erweitern und eine supertolle Antiüberwachungsanwendung draus machen und gaaanz reich werden... :)



    wow!

    das ist wirklich hammer. das ist weit aus besser alles was ich erdachtet hatte.
    habe es direkt mal getestet - es klappt wunderbar.

    - Beobachtungsschutz per ARD3-Beobachten funktioniert perfekt
    - Beobachtungsschutz per ARD3-Steuern funktioniert perfekt
    - Beobachtungsschutz per Screensharing-Funktion von Leopold funktioniert perfekt.
    - Bildschirm fernsteuern per iChat - der Punkt bleibt - das ist auch perfekt, da man ja bei iChat vorher als Benutzer akzeptiert hat, dass man den anderen es erlaubt den Rechner zu steuern.



    Das greift sogar so schnell, dass bereits der Punkt verschwindet, wenn der Gegenüber nur den Rechner in der "Freigabe" markiert und auf "Bildschirm steuern" klickt - also selbst wenn er noch nicht mal das Passwort eingegeben hat - verschwindet bereits der Punkt. PERFEKT!!! So weiss man schon paar Sekunden vorher, dass gleich einer drin ist. [Es sei denn er hat sich dass Passwort abgespeichert.] :D



    Ich wandle es noch an paar Stellen ab und bau es mal in mein Programm ein.


    Einfach nur HYPERGENIAL! Ein tolles Forum!!! DANKE.

    Natürlich auch insbesondere an mattik - aber auch die anderen Ideengeber!