Tweeter en PowerShell – PSTwitterAPI

Tweeter en PowerShell

Salut à tous, on nous a demandé d’organiser un petit Capture The Flag (CTF) en interne au boulot. Du coup, il a fallu faire quelques challenges et je me suis dit que j’allais refaire un challenge que j’avais bien aimé du SANS celui à base de tweet offusqués. Du coup j’ai voulu refaire le mien, la dernière fois, j’avais fait le crawler en Python, ce coup ci j’ai donc voulu Tweeter en PowerShell (au cas où vous n’auriez toujours pas compris que je kif ce langage…^^).

Alors j’aurais pu jouer à le faire à la main avec Invoke-RestMethod, mais bon une recherche Google Plus tard et je suis tombé sur : PSTwitterAPI qui fait très très bien le boulot. En fait le plus long ça a été de créer un compte Twitter, de générer les accès API en écriture et de préparer le fichier avec le flag caché dedans…^^

Mais du coup, Un fois que vous avez fait le fichier de résultat, le script pour le pusher sur le site, il tient en quelques lignes :

Import-Module PSTwitterAPI
$OAuthSettings = @{
  ApiKey = "xxx"
  ApiSecret = "yyy"  
  AccessToken = "123"
  AccessTokenSecret = "456"
}
Set-TwitterOAuthSettings @OAuthSettings

$a = Get-Content 
Lire la suite

Envoyer des syslog en Powershell

Envoyer des syslog en Powershell

Salut à tous, aujourd’hui je vais m’arrêter sur un bout de script dont j’ai eu besoin il y a quelques mois de cela pour envoyer des syslog en Powershell et que chaque machines où je faisait exécuter un script envoie directement ses résultats à à un serveur syslog. Et puis tant qu’on y était avec Grégoire, on a fait le récepteur syslog au passage histoire de pouvoir tester ça en local sans se faire trop mal à monter un vrai serveur syslog.

Syslog ?

Pour rappel Syslog est un protocole réseau qui permet d’envoyer des logs. Bien connu et largement utilisé, il permet de déporter les logs entre l’équipement et la machine qui les stocke, voire les traite (qui a dit Splunk?). Il y a 2 RFC qui cadrent la norme la RFC 3164 et la RFC 5424. En grande majorité, syslog passe sur UDP, le problème c’est que ça ne garantie pas la bonne arrivée de 100% des logs sur vos collecteurs syslog. Mais on commence à trouver de plus en plus de TCP dans l’utilisation de Syslog.

Chiffrement ? Signature ?

Une petite digression pour votre culture, même si en TCP on garantie la bonne réception … Lire la suite

Extraire les N premières lignes d’un fichier en PowerShell

Extraire les N premières lignes d'un fichier en PowerShell

Salut à tous, aujourd’hui je vous propose une rapide commande PowerShell pour extraire les N premières lignes d’un fichier en PowerShell et dont j’ai eu besoin pour intégrer quelques logs dans un Splunk aujourd’hui.

Le fichier de log pour une journée faisait 5Go, c’était un peu gros pour tester l’intégration. J’ai voulu piquer uniquement les 5000 premières lignes mais sans passer par un Linux (avec Head par exemple) ou dans un éditeur de texte comme notepad.

La bonne nouvelle c’est que, comme d’habitude, ça se fait très bien en PowerShell :

Get-Content "grosfichier.csv" | select -First 5000 | Out-File "first-5000-grosfichier.csv"

Et voilà ! c’est tout pour aujourd’hui, mais comme ça vous saurez faire la prochaine fois que vous aurez besoin de d’extraire les N premières lignes d’un fichier en PowerShell ! @+… Lire la suite

Opérateur ternaire en PowerShell

Opérateur ternaire en PowerShell

Salut à tous, une petite info pour aujourd’hui sur l’apparition de l’opérateur ternaire en PowerShell. Vous ne savez pas ce que c’est que ça ? On va regarder rapidement !

L’opérateur ternaire, c’est un gros mot pour dire « one-liner pour un if then else« . Par exemple en Python ou en C, on peut écrire (je vous avais déjà fait une comparaison Python vs. PowerShell sur les foreach d’ailleurs):

<condition? <condition-si-vrai: <condition-si-faux;

C’est un truc qui existe depuis des années et qui me manquait cruellement en PowerShell. L’intérêt c’est surtout la concision et la lisibilité du code, car ça permet d’éviter d’imbriquer trop de « if then else » les uns dans les autres, en particulier quand ceux là ne sont là que pour contrôler un petit trucs sans lien avec l’algorithme.

Un petit exemple où je m’en sert, c’est pour afficher des « hashtables » automatiquement et éviter d’appeler la méthode toString() quand l’entrée est null. :

foreach($key in $ma_hashtable.Keys){
    Write-Host(($null -ne $ma_hashtable.$key) ? ($ma_hashtable.$key).toString() : "")
}

La mauvaise nouvelle c’est que Opérateur ternaire en PowerShell disponible qu’à partir de la version 7. La bonne c’est qu’on peut quand même bricoler des … Lire la suite