Processus démon ?

segaoufsegaouf Membre
Bonjour à  tous :).

Bon alors voilà , je suis en colloc à  Londres. J'ai un script qui éteint automatiquement mon ordinateur vers 2h du matin. Cependant depuis quelques temps je constate qu'à  mon retour du boulot mon mac est allumé. Je pense donc que mes collocataires s'amusent à  essayer d'entrer sur mon ordinateur.

Ni une ni deux, je me dis que c'est un bon prétexte pour s'amuser un peu. J'ai donc ecris un script qui, a chaque mauvais mot de passe fournit à  l'écran d'accueil :
- Prends la personne en photo
- Me l'envoi par email
- Prends cette photo et toutes les autres déjà  prise précédemment et les imbrique dans une page html.

Bon j'ai encore besoin de trouver une commande permettant d'uploader ce site et les images sur le serveur de mon pote (qui est en ftp ssl, jtrouve rien pour ce protocole :( )
Mais ma question est :

J'aimerais que ce script tourne tout le temps, dès l'allumage de mon ordinateur. J'ai entendu parler des processus démons, comment ça marche sur mac ?

Un petit exemple simple serait bien sympa de votre part.

Merci !

Réponses

  • DrakenDraken Membre
    novembre 2009 modifié #2
    Tu as pensé a mettre un taser sur une chaise métallique devant ton bureau, activable par script ?





  • segaoufsegaouf Membre
    20:02 modifié #3
    Ahaha :D. C'est vrai que mon script est pas très utile et fait un peu le parano, mais bon, cela serait un bon moyen pour prouver qu'ils ouvrent mon ordinateur et pénètrent dans mon espace privé donc, sans mon authorisation. Donc voilà , ça m'embête, j'ai le droit ^^.
  • DrakenDraken Membre
    20:02 modifié #4
    Les regards fuyants et les mains brûlées seraient aussi une bonne preuve d'intrusion !

    (et je suis totalement d'accord avec toi. Le droit à  la vie privé est fondamental)



  • segaoufsegaouf Membre
    20:02 modifié #5
    Au punaise :(

    Ma première tentative, après lecture d'une doc apple, a entrainer la suppression de mon script. Et comme un c** je n'en avais pas fait de copie ! :'( Je me déteste.
  • novembre 2009 modifié #6
    Processus démon n'est pas vraiment le nom correct pour désigner ce que tu veux faire. À vrai dire, on appelle ça des "Helper". La seule particularité c'est que tu ne verras pas l'application dans le Dock, et elle n'aura pas de menu. La plupart de ces helper se placent simplement sous forme d'icône dans la status bar (en haut à  droite). Chose qui n'est pas obligatoire bien entendu si on veut vraiment faire un Helper.

    Pour ça, il suffit simplement de rajouter la clé "LSUIElement" dans le info.plist et d'y mettre une valeur NSNumber à  1 (ou un boolean à  YES).

    Pour prendre une photo, Apple fourni un exemple simple de capture vidéo (donc la capture photo va avec), il me semble que ça utilise le framework QuickTime.
    Le nom du projet s'appelle "WhackedTV".

    Pour l'envoie des photos, je pense que tu devrais éviter de te casser la tête. Sauvegarde chaque photo sur ton disque dur, dans un coin caché. Mais si tu tiens vraiment à  générer un HTML avec, le code est assez simple.
    En supposant que tu sauvegardes toutes les photos en format .jpg dans le dossier ~/Documents/ISeeU/ :
    <br />- (void)generateHTML<br />{<br />#define PATHOUNET @&quot;~/Documents/ISeeU&quot;<br /><br />&nbsp; &nbsp; &nbsp; NSArray* files = [[NSFileManager defaultManager] directoryContentsAtPath:PATHOUNET];<br /><br />&nbsp; &nbsp; NSMutableString* htmlCode = [NSMutableString stringWithString:@&quot;&lt;html&gt;&lt;head&gt;&lt;title&gt;Surprise!&lt;/title&gt;&lt;/head&gt;&lt;body&gt;&lt;center&gt;&quot;];<br /><br />&nbsp; &nbsp;  for(NSString* filename in files){<br />&nbsp; &nbsp; &nbsp; &nbsp;  if([[filename pathExtension] isEqualTo:@&quot;jpg&quot;])<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [htmlCode appendString:[NSString stringWithFormat:@&quot;&lt;img src=&#092;&quot;%@&#092;&quot; /&gt;&quot;, [PATHOUNET stringByAppendingPathComponent:filename]];<br />&nbsp; &nbsp; }<br /><br />&nbsp; &nbsp; [htmlCode writeToFile:[PATHOUNET stringByAppendingPathComponent:@&quot;index.html&quot; atomically:NO encoding:NSUTF8StringEncoding error:nil];<br />}<br />
    


    Bon d'un côté tu parles de script donc je suppose que tu ne comptes pas faire de projet Objective-C  ;D
  • segaoufsegaouf Membre
    20:02 modifié #7
    Oui malheureusement je ne connais pas bien Objective-c. Donc je m'étais dit que le meilleur moyen serait de faire tourner un script en tâche de fond dès la mise en route du pc ...

    Bon j'ai réécris mon script, donc ça va je suis moins triste :). Il me faut toujours trouver la solution pour qu'il s'éxecute dès le lancement du mac ...
  • 20:02 modifié #8
    Préférences Système -> Comptes -> Elements d'ouverture
  • yoannyoann Membre
    20:02 modifié #9
    EagleLouk, tu te trompe, en l'occurrence ce n'est pas un Helper mais un démon qu'il faut utiliser pour qu'il soit lancer en même temps que la machine et sans qu'un utilisateur ai ouvert de sessions (puisque c'est bien l'idée ici, prendre un photo des méchants qui n'ont pas le mot de passe).

    Segaouf, il te faut regarder du coté des LaunchDeamon avec Launchd pour lancer quelque chose au démarrage de la machine, regarde par la : http://developer.apple.com/mac/library/DOCUMENTATION/Darwin/Reference/ManPages/man5/launchd.plist.5.html

    Une autre possibilité, mais il faut ici connaitre l'ObjC c'est de se mettre dans le process d'authentification via un bundle a placer dans /System/Library/CoreServices/SecurityAgentPlugins mais je ne sais pas si c'est bien documenté comme truc
  • novembre 2009 modifié #10
    Haaa j'avais pas vu la chose comme ça  :P À vrai dire je restait plus sur l'idée que la session était ouverte et que l'ordi était en mode veille avec mot de passe requis pour l'utilisation. Trop habitué à  ma façon de faire  :'(
    Mais du coup, utiliser la iSight hors session, je ne sais pas du tout si c'est faisable?
  • segaoufsegaouf Membre
    20:02 modifié #11
    yoann >> Effectivement, j'avais trouve de la doc sur ce launchd. C'est en essayant de l'utiliser que j'ai perdu mon script :p. C'est pas tres clair pour moi, je retenterais ce week-end (No-Life mode ..)

    Eaglelouk : Sa serait mieux si je peux reussir a le faire des que l'ordi s'allume, comme sa je n'aurais pas a ouvrir ma session pour que le processus ce lance.

    Effectivement, lorsque je ferme ma session et que j'arrive a l'ecran des utilisateurs (Et mon script qui tourne toujours dans ma session) Si je me trompe de mot de passe, rien ne se passe. Et je vois un message d'erreur dans mon script disant que l'isight est peut etre deconnecter/busy :(
  • 20:02 modifié #12
    Dans ce cas je te propose une solution alternative :

    Mettre ton ordinateur en ouverture de session automatique.
    Une fois la session ouverte, ton script se lance, demande un mot de passe et interdit tout lancement d'applications. Tu peux même forcer à  quitter le Finder je pense et empêcher celui-ci de se relancer. C'est pas très user-friendly mais si tu tiens vraiment à  chopper les personnes...
    Autrement tu ne mets aucun blocus et tu demandes simplement le mot de passe entre 23h et 8h, si le mot de passe est erroné tu prends une jolie photo :) tout en la montrant à  l'utilisateur histoire qu'il ne cherche pas à  fouiller plus sur ton ordi, ça lui fera bien peur de voir sa gueule apparaà®tre à  l'écran.
  • AliGatorAliGator Membre, Modérateur
    20:02 modifié #13
    Heu mettre sa session en ouverture automatique ? C'est le meilleur moyen pour que les petits malins qui semblent allumer son ordi puissent encore plus facilement fouiller dans ses documents privés, t'es fou toi ?

    Par contre il est envisageable de créer une session dédiée à  ça ou presque, un nouveau compte utilisateur OSX où tu n'auras rien dessus (qui pourrait être utilisé à  la limite comme "compte invité" pourquoi pas), et qui s'ouvre automatiquement au démarrage, et lance ton script qui prend la photo.
    Et si toi tu veux te logguer, une fois le mac lancé et la session ouverte, tu te déconnectes de la session pour aller dans ta session à  toi.

    Mais bon, du coup tu verras toutes les personnes qui sont devant ton mac au démarrage (toi y compris), si les intrus lancent le mac, vont pisser le temps qu'il démarre, et reviennent après, bah ça marchera pas car prendra un siège vide en photo, et s'ils ferment la session invité pour essayer de rentrer le mot de passe de ta session et y entrer, ça ne marchera pas non plus puisqu'ayant fermé l'autre session, le script de prise de photo ne sera plus là  (où si tu l'as mis en daemon, tournera encore... mais on revient au problème de départ comme quoi il semble problématique d'utiliser la iSight si tu n'es pas logué)...
  • ClicCoolClicCool Membre
    20:02 modifié #14
    La meilleure solution consistera toujours à  ne pas laisser trainer son ordi accessible à  d'autres quand c'est possible.
    Une bonne serrure à  la porte et basta ;)
  • segaoufsegaouf Membre
    20:02 modifié #15
    ClicCool => Malheureusement des fois on ne peut pas intervenir physiquement, sinon cela ferait bien longtemps que je les aurais tuer/frapper/etrangler directement :).

    AliGator => T'as solution pourrait fonctionner, en fait mon script ne prends la photo qu'au moment du password incorrect. Il check le fichier secures.log pour sa.

    Mais mon probleme, c'est qu'il semble finalement impossible d'utiliser Isight lorsque l'on est sur la page des comptes, quelqu'un en sait plus sur cela ?

    Mon script fonctionne parfaitement si je suis sur une session, demande de changer de session (Via la petite icone dans la barre du haut) et me trompe de password.

    Mais si je fais "Afficher la fenetre des utilisateurs " depuis le menu du haut (donc cela ne ferme pas ma session) puis me trompe de mot de passe, j'ai un message d'erreur indiquant que l'isight est deconnecter/busy
  • AliGatorAliGator Membre, Modérateur
    20:02 modifié #16
    Tu as essayé de faire en sorte que ton script se log (au sens login via terminal) à  ton compte ?
    Genre via l'instruction en ligne de commande "login", hein, pas avec un vrai login visuel OSX.
    Si ça marche, c'est à  dire qu'une fois que ton script est logué avec un compte utilisateur standard, tu peux utiliser la iSight, même s'il n'y a pas de session OSX d'ouverte par LoginWindow, ça pourrait être une solution que de créer une session utilisateur qui servirait juste à  ça.

    Mais plus probablement je pense que s'il te dit que l'iSight ne peut pas être utilisée car déconnectée/busy, c'est qu'en réalité le daemon ou autre process permettant de gérer l'iSight, avec les drivers qu'il y a derrière, n'est pas lancé au moment du où juste la LoginWindow est présente et pas de session d'ouverte...
  • segaoufsegaouf Membre
    20:02 modifié #17
    dans 1259331858:

    Tu as essayé de faire en sorte que ton script se log (au sens login via terminal) à  ton compte ?
    Genre via l'instruction en ligne de commande "login", hein, pas avec un vrai login visuel OSX.
    Si ça marche, c'est à  dire qu'une fois que ton script est logué avec un compte utilisateur standard, tu peux utiliser la iSight, même s'il n'y a pas de session OSX d'ouverte par LoginWindow, ça pourrait être une solution que de créer une session utilisateur qui servirait juste à  ça.

    Mais plus probablement je pense que s'il te dit que l'iSight ne peut pas être utilisée car déconnectée/busy, c'est qu'en réalité le daemon ou autre process permettant de gérer l'iSight, avec les drivers qu'il y a derrière, n'est pas lancé au moment du où juste la LoginWindow est présente et pas de session d'ouverte...


    Non je n'ai pas essayer, j'essai ce soir.

    C'est interessant ce que tu dis, penses-tu que mon script pourrais appeler le lancement du daemon gerant l'isight dans le pire des cas ?
  • AliGatorAliGator Membre, Modérateur
    20:02 modifié #18
    C'était l'idée derrière la supputation ;)
  • segaoufsegaouf Membre
    20:02 modifié #19
    Il me reste a connaitre le daemon en question, et savoir comment lui demander de s'activer.
    C'est passionnant l'informatique :).
  • AliGatorAliGator Membre, Modérateur
    20:02 modifié #20
    http://www.macupdate.com/info.php/id/18598 ?
    isightcapture [...] Command Line Interface utility to grab and save still images from iSight [...] does not require the user to be logged in [...]
  • yoannyoann Membre
    20:02 modifié #21
    A mon avis ton iSight est gérer par le process loginwindow, quand tu es sur la fenêtre d'ouverture de session c'est le root qui est propriétaire de ce process, il te faut donc lancer ton script en tant que root avec launchd et ça devrais marcher
Connectez-vous ou Inscrivez-vous pour répondre.