Envoyer un CSV en HTTP en PowerShell

Salut à tous, aujourd’hui j’ai eu un besoin d’envoyer un CSV en HTTP en PowerShell. J’ai fait ça pour automatiser un envoi de fichier de résultat de script entre 2 serveurs. Ma grosse contrainte était que je pouvais pas faire du mode ‘Push’ (cf. transfert SCP sans mot de passe) comme je partais d’une zone de sécurité moindre que celle de destination. Et comme, le fichier source venait d’un Windows, je ne voulais pas mettre en place un serveur Web IIS sur le serveur pour un pauvre fichier CSV à transférer 2 fois par jour…

Du coup, j’ai bricolé quelques lignes à la fin de mon script PowerShell pour exposer le fichier en HTTP et permettre au serveur destination de venir les « Puller » pour respecter le sens d’établissement du flux.

Et sans transition le script pour envoyer un CSV en HTTP en PowerShell :

Function New-SimpleHTTPListener {
  Param (         
    [Parameter()] [Int] $Port = 7443
  )
  Begin{
    $listener = New-Object System.Net.HttpListener
    $prefix = "http://localhost:$Port/"
    $listener.Prefixes.Add($prefix)
  }

  Process{

    try{
      $listener.Start()
      Write-Host "Listening on $Port ..."
      $pathwd = Get-Location
      while ($listener.IsListening) {
        $context = $listener.GetContext()

        if ($context.Request.HttpMethod -eq 'GET' -and $context.Request.RawUrl -eq '/quit')
        {
            $listener.Close()
            break;
        }    

        $HTTPresponse = $context.Response
        $HTTPresponse.StatusCode = "200"
        $HTTPResponse.Headers.Add("Content-Type","text/csv") 

        $RequestUrl = $context.Request.Url.OriginalString
        $data = [System.Text.UTF8Encoding]::UTF8.GetBytes([System.IO.File]::ReadAllText("$pathwd"  + '\' + ($RequestUrl.Split('/')[-1])))

        $HTTPresponse.ContentLength64 = $data.Length

        $output = $HTTPresponse.OutputStream

        $output.Write($data,0,$data.Length)

        $output.Close() 
      }
    }catch{
       Write-Warning "Error with Server : $_" 
    }Finally{
      Write-Warning "terminating Server : $_" 
      $listener.Stop()
    }
  }

  End{
    
  }
}

New-SimpleHTTPListener

Alors clairement, c’est du bon gros « quick and dirty … Lire la suite

Calculer la distance entre 2 points GPS avec Splunk

Salut à tous, ça fait une paye que je vous ai pas fait un peu de Splunk, non ? et récemment au taf j’ai trouvé 5 min pour réimplémenter une requête rigolote pour calculer la distance entre 2 points GPS avec Splunk.

Pour vous faire la genèse du truc, on supervise beaucoup nos connexions VPN depuis le confinement du printemps bizarrement :-). D’ailleurs dans mon article MISC de septembre, je vous ai mis une requête pour surveiller les doubles connexions simultanées d’un(des) utilisateur(s) , qui est également super pratique pour limiter les abus autour des connexions à distances dans un cadre de surcharge de vos passerelles.

Les logs VPN font vraiment parti des logs intéressants car ils ramènent l’analyse au « monde réel ». En effet, les VPNs sont souvent utilisés dans des situations de nomadisme ou de télétravail et combiné avec les informations de géolocalisation : ça fait des chocopics !

Du coup, je vous donne la requête « as-it » :

index=$vpn "Session started" OR "Session ended" | sort 0 user, _time  
| streamstats window=1 current=f values(_time) as last_time values(src_ip) as last_src_ip by user 
| where last_src_ip != src_ip AND _time - last_time < 8*60*60 
| 
Lire la suite

SEPM Computers REST API

Bonjour à tous, aujourd’hui je voulais vous partager un bout de script que j’ai du faire au travail sur ces 4 mots clés : SEPM, Computers, REST et API.

En effet, pour ceux qui ne le sauraient pas, dans un parc informatique d’envergure construire un inventaire complet des postes est une tâche complexe (voir carrément difficile), et je ne parle pas de la maintenir à jour l’inventaire en question, bref récupérer la liste des ordinateurs dans un SEPM, c’est cool.

C’est là que l’API REST (on a déjà parlé de REST , ou encore ) de SEP et sa fonction « computer » entre en jeu, en effet les antivirus font partie des solutions qui sont généralement déployée sur une bonne partie des postes clients d’un parc informatique. Et la bonne nouvelles, c’est que la plupart des antivirus sur le marché remontent plus ou moins une sorte d’inventaire des postes sur lesquels leur client tournent., et c’est le taf de la fonction computer est documentée ici pour obtenir les détails des postes.

Je crois aussi que je vous ai déjà assez parlé de REST et PowerShell sur le blog… Du coup, vous devriez voir venir la suite, … Lire la suite

Docker et Portainer part 6 – NextCloud avec Docker, Déployer un « Cloud » personnel

Salut à tous, Ça vous dirait d’héberger vous même vos propres services « Cloud » (genre maps, notes, photos, contact, calendrier) ? Ça tombe bien aujourd’hui je vais vous parler de NextCloud avec Docker et comment déployer votre « cloud » personnel.

Pour le coup, je précise que suis pas un intégriste Anti-GAFAM quand-il s’agit mes données personnelles (j’ai quasiment tout qui fini ou passe chez Google à un moment ou à un autre). Par contre, quand il s’agit de mes activités « Pro » (à mon taf ou sur mes activités indépendantes avec System Sec) : je suis vachement moi chaud pour laisser trainer des données de clients ou de mon employeur chez eux bizarrement ! C’est dans ce cadre que je me suis retrouvé à monter une petite infra Drive & Notes sur le serveur.

Rappel des articles de la série « Docker et Portainer » :

Lire la suite