Results for tag "python"

TInfoLeak – Infos über Twitter-User mit Hilfe von Python abfragen

Ich bin über ein nettes kleines Tool gestolpert, mit dem man aus der Kommandozeile heraus Infos über Twitter-User abfragen kann. Das Tool nennt sich tinfoleak und die Webseite dazu ist http://vicenteaguileradiaz.com/tools/. Ich habe ein bisschen mit dem Tool herumgespielt und möchte meine ersten Eindrücke schildern.

Damit man das Tool nutzen kann benötigt man zum einen Tweepy (eine Twitter API Library für Python)[1] und  zudem OAuth Credentials (API Key) für den API-Zugriff[2]. Tweepy gibt es sowohl für Linux als auch für Windows; die Windows-Variante scheint aber noch nicht richtig zu funktionieren.Ich habe Tweepy und TInfoLeak deshalb unter OpenSuse 13.1 installiert. Unter [2] sind die Schritte ganz gut beschrieben. Ich habe dort eine nicht existente App eingetragen und erhielt so einen API Key und ein API Secret (die man für sich behalten soll). Das reicht aber noch nicht; man muss sich auch noch eine Access Token mit entsprechendem Access Token Secret erzeugen. Diese vier Informationen benötigt man später. Am Besten packt man die Infos in eine Textdatei, damit man sie später nicht von Hand eingeben muss.

Tweepy installiert man am Einfachsten über „easy_install tweepy„; andere Methoden (Git Repository / Source Archiv) sind unter [3] beschrieben.

TInfoleak wird nicht installiert; das Paket besteht nur aus einem README und dem Python-Skript. Vor dem ersten Start muss man aber noch die oben erwähnten vier Information im Skript eintragen:

# OAuth Settings
# How to obtain the API key:
# Go to https://dev.twitter.com/apps/new
# Copy the consumer key (API key), consumer secret, access token and access token secret
CONSUMER_KEY = “
CONSUMER_SECRET = “
ACCESS_TOKEN = “
ACCESS_TOKEN_SECRET = “

„CONSUMER_KEY“ und „CONSUMER_SECRET“ beziehen sich hier auf „API Key“ und „API Secret“.

Nun sind wir bereit für einen ersten Test. Zuerst einmal rufe ich meine eigenen Infos ab. python tinfoleak.py -n twallutis -b liefert:

+++
+++ tinfoleak v1.2 – „Get detailed information about a Twitter user“
+++ Vicente Aguilera Diaz. @VAguileraDiaz
+++ Internet Security Auditors
+++ 03/02/2014
+++

Looking info for @twallutis

Account info
——————-
Screen Name: twallutis
User name: Thomas Wallutis
Twitter Unique ID: 49129829
Account created at: 06/20/2009
Followers: 279
Tweets: 6751
Location: Germany
Description: Computer Nerd; especially MS Exchange and Security. All tweets are my own opinion. Blame me, not others! I tweet in German and bad English.
URL: http://t.co/KNbtt73v6M
Profile image URL: http://pbs.twimg.com/profile_images/274513070/foto_normal.jpg

Elapsed time: 00:00:00

See you soon!

Nun möchte ich gerne wissen mit welchen Apps ich so meine Tweets verschicke. python tinfoleak.py -n twallutis -s liefert

+++
+++ tinfoleak v1.2 – „Get detailed information about a Twitter user“
+++ Vicente Aguilera Diaz. @VAguileraDiaz
+++ Internet Security Auditors
+++ 03/02/2014
+++

Looking info for @twallutis

100 tweets analyzed

Date Source
————————————
09/11/2014 – TweetDeck
09/07/2014 – TweetCaster for Android
09/02/2014 – Twitter Web Client
09/01/2014 – XING
08/26/2014 – Twitter for Websites
08/26/2014 – Twitter for Android

6 results.

Elapsed time: 00:00:03

See you soon!

Hinweis: es werden die letzten 100 Tweets analysiert. Frage ich z.B. die letzten 1000 Tweets ab, indem ich noch „-c 1000“ anhänge, erhalte ich

Looking info for @twallutis

        1000 tweets analyzed

        Date         Source
        ————————————
        09/11/2014 – TweetDeck
        09/07/2014 – TweetCaster for Android
        09/02/2014 – Twitter Web Client
        09/01/2014 – XING
        08/26/2014 – Twitter for Websites
        08/26/2014 – Twitter for Android
        08/15/2014 – Social Proxy by Mailchimp

Daraus könnte man jetzt schon Informationen für einen gezielten Angriff ableiten. Aber es gibt noch mehr: „python tinfoleak.py -n twallutis -p 1“ durchsucht die Tweets nach Bildern und speichert diese ab („-p 0“ würde sie direkt anzeigen).

python tinfoleak.py -n twallutis -f Blacky“ durchsucht meine Tweets nach dem Wort „Blacky“ und findet ganz korrekt meinen Tweet zum Tod von Joachim Fuchsberger:

+++
+++ tinfoleak v1.2 – „Get detailed information about a Twitter user“
+++ Vicente Aguilera Diaz. @VAguileraDiaz
+++ Internet Security Auditors
+++ 03/02/2014
+++

Looking info for @twallutis

100 tweets analyzed

Date Word [Blacky]
————————————
09/11/2014 – Joachim Fuchsberger ist tot. R.I.P. Blacky!

1 results.

Elapsed time: 00:00:02

See you soon!

Ich kann mir aber auch anzeigen lassen, welche Hashtags ein Account benutzt. Der Twitter-Account @MSCloud hat in den letzten 100 Tweets die folgenden Hashtags benutzt („python tinfoleak.py -n mscloud -h„):

+++
+++ tinfoleak v1.2 – „Get detailed information about a Twitter user“
+++ Vicente Aguilera Diaz. @VAguileraDiaz
+++ Internet Security Auditors
+++ 03/02/2014
+++

Looking info for @MSCloud

100 tweets analyzed

Date Hashtags
————————————
09/11/2014 – #Azure
09/11/2014 – #MachineLearning
09/10/2014 – #Azure #Cloud
09/09/2014 – #24hopquiz
09/08/2014 – #Cloud #MSFT
09/05/2014 – #Podcast
09/05/2014 – #Cloud #Azure
09/04/2014 – #Microsoft #MachineLearning
09/04/2014 – #winning
09/03/2014 – #machinelearning #msft
08/30/2014 – #CANITPRO #ITPRO #Azure #Cloud
08/29/2014 – #BigData
08/27/2014 – #bigdata #PredictiveAnalytics #machinelearning
08/26/2014 – #winserv
08/26/2014 – #SQLServer #Azure
08/25/2014 – #WindowsIntune
08/24/2014 – #azureml
08/23/2014 – #azureml #MLatMSFT
08/22/2014 – #Cloud #Gaming #CloudComputing
08/21/2014 – #Hybrid #Cloud
08/19/2014 – #machinelearning #MLatMSFT #bigdata #datascience
08/15/2014 – #winserv #SysCtr

22 results.

Elapsed time: 00:00:02

See you soon!

Und wie sieht es mit Mentions aus (hier beschränkt auf die letzten 10 Tweets)? „python tinfoleak.py -n twallutis -m -c 10“ liefert uns:

+++
+++ tinfoleak v1.2 – „Get detailed information about a Twitter user“
+++ Vicente Aguilera Diaz. @VAguileraDiaz
+++ Internet Security Auditors
+++ 03/02/2014
+++

Looking info for @twallutis

10 tweets analyzed

Date User mentions
————————————
09/11/2014 – @niggi
09/11/2014 – @andreasdotorg
09/11/2014 – @jnievele
09/11/2014 – @Laberfasel
09/11/2014 – @semibogan @thegrugq @dcuthbert
09/11/2014 – @dcuthbert @semibogan
09/11/2014 – @katerussell @TrendMicro @rik_ferguson

7 results.

Elapsed time: 00:00:01

See you soon!

Daraus lässt sich erkennen, mit wem ich mich so austausche.

Mit dem Parameter „-g“ und einem Dateinamen kann ich die in einem Tweet evtl. vorhandenen Geo-Informationen auslesen und in eine Datei speichern, die ich in z.B. Google Earth öffnen kann. Dann sehe ich, wo die betreffenden Person war, als der Tweet abgesetzt wurde. Ich selber übertrage aber keine Geolocation-Informationen und habe bisher auch keinen Account gefunden, der brauchbare Informationen geliefert hat. Hier aber ein einfaches Beispiel; ich benutze auch den Parameter „-t“, um mir die Uhrzeit des Tweets mit anzeigen zu lassen:

python tinfoleak.py -n scienceporn -g scienceporn.kml -t

liefert

+++
+++ tinfoleak v1.2 – „Get detailed information about a Twitter user“
+++ Vicente Aguilera Diaz. @VAguileraDiaz
+++ Internet Security Auditors
+++ 03/02/2014
+++

Looking info for @SciencePorn

100 tweets analyzed

Date Time Geolocation information
————————————
09/10/2014 – 19:41:58 – London
09/10/2014 – 16:01:05 – London
09/10/2014 – 15:09:58 – London
09/09/2014 – 23:29:23 – London
09/09/2014 – 14:46:38 – London
09/08/2014 – 20:40:19 – London
09/07/2014 – 18:18:21 – London
09/06/2014 – 13:31:55 – London
08/31/2014 – 20:54:45 – London
08/28/2014 – 21:12:39 – London

10 results.

Elapsed time: 00:00:03

See you soon!

Orts- und Zeitangaben können ein Bewegungsprofil des Accounts liefern und auch nur die Uhrzeit ergibt eine interessante Information.

Es gibt auch noch Optionen, um die Suche auf einen bestimmten Zeitraum bezogen auf Tage und Uhrzeit einschränken zu können.

Falls jemand interessante Szenarien findet, würde ich mich auf einen Hinweis in den Kommentaren freuen.

 

[1] https://github.com/tweepy/tweepy
[2] https://dev.twitter.com/discussions/631
[3] https://github.com/tweepy/tweepy/blob/master/INSTALL

 

Quicktipp: Temporärer Webserver mit Python

Während der BRUCON 2012 habe ich auch den Python-Workshop von Vivek Ramachandran besucht. Dabei habe ich gelernt, dass in Python ein kleiner Webserver versteckt ist. Es gibt eine Version, die statische Seiten ausliefert und eine Version, die CGI unterstützt. Ich dachte mir damals schon, dass das bestimmt mal nützlich sein könnte.

Wenn ich Artikel für meinen Blog erstelle, schaue ich mir gerne den neuen Artikel an, bevor ich ihn hochlade. Ich kann nun die HTML-Seite aufrufen; aber leider wird dabei die CSS-Datei nicht geladen, so dass ich nur den Text sehe und keine Formatierung.

Ich könnte nun einen Webserver auf meinem Rechner installieren; aber das sieht mir zum Einen nach Overkill aus und wenn ich mal vergesse, ihn zu stoppen, dann habe ich unterwegs ein potentielles Sicherheitsloch.

Als ich heute noch mal darüber nachdachte, fiel mir der Vortrag ein. Und siehe da: mein Problem war gelöst! Was muss man nun genau tun? Ich arbeite zu Hause unter Linux (OpenSUSE) und benutze hier Python 2.7.

Ich wechsle in der Shell in das Verzeichnis, in dem die Blog-Dateien liegen. Dort starte ich den Webserver mit dem Aufruf

python -m BasicHTTPServer 8080

Dadurch wird ein einfacher Webserver gestartet, der auf Port 8080 lauscht. Falls man den Server auf Port 80 lauschen lassen will, muss man den Aufruf als root starten (und natürlich 80 statt 8080 angeben;-)). Interessanterweise kann ich nicht von der normalen Webseite zum Blog wechseln (wenn ich den Server aus dem Verzeichnis mit den Dateien der Webseite starte), da angeblich die Datei index.html nicht gefunden wird; starte ich den Server aber direkt aus dem Blog-Verzeichnis, kann ich auf alle Blog-Artikel wechseln. Es gibt da also noch Einiges zu erforschen.

Das Ganze ist nun nicht die große Entdeckung; aber ich dachte mir, dass jemand das ganz nützlich finden könnte.

Nachtrag:der fehlerhafte Aufruf des Blogs von der lokalen Kopie der Webseite lag daran, dass das Blog-Verzeichnis lokal „Blog“ heisst, im Internet aber „blog“. Nachdem ich den lokalen Verzeichnisnamen angepasst habe, klappt der Aufruf nun auch.

]]>