antisplash.sh

January 17th, 2014 § 0 comments § permalink

Wer sich wie ich, haeufiger mit diversen Weimarnetz Routern verbindet um sich ins Internet einzuwaehlen, dem ist dies sicherlich nur als zu gut bekannt.

Screen shot 2014-01-17 at 22.07.30Jedes mal darf man mit seinem Browser eine beliebeige Seite besuchen (im Zweifel fiese Terror-SSL-Certification-Validation-Warnungen ignorieren), nach unten scrollen, Haeckchen setzen, klicken und sich freuen.

Fuer Linux-Rechner ohne Browser bzw. ohne menschliche Interaktionen, wie kleinen RaspberryPi-Fileservern, haben wir bei einem Dienstaeglichen Freifunk Treffen diesen `curl` one-liner geschrieben, der das Problem loest.

curl --data "REDIRECTED=1&FORM_RULES=on&ORIGIN=http://$GATEWAY/" \
"http://$GATEWAY/cgi-bin/luci/freifunk/captive"

Die Tage bin ich auf die Idee gekommen zu suchen, wie sich sowas auch auf Graphical Desktop Linuxen mit Netzwerk Manager loesen laesst. Der oft eingesetzte `NetworkManager` kann bei jeder erfolgreichen WLAN-Verbindung automatisch Scripte im Ordner `/etc/NetworkManager/dispatcher.d/` ausfuehren. In diesem Ordner habe ich dann eine erweitere Version hinterlegt, sodass der Freischaltevorgang bei jedem Connect zu einem Weimarnetz Knoten geschieht.

Den Script und eine kurze README habe ich ins Redmine geladen. Viel Spass.

http://projects.maschinenraum.tk/projects/antisplash-sh/repository/revisions/master/entry/internet-starten.sh

Bundestrojaner / Scareware und der andere Dreck – Hilfeseite

July 27th, 2013 § 0 comments § permalink

Vor einiger Zeit, haben wir eine eher durch Zufall entstandene Löschanleitung für den "BKA-Trojaner" (wenn man ihn so nennen möchte) unter Windwos 7 veröffentlicht.

Nun hat Rene Hifinger mit uns Kontakt aufgenommen und auf eine Website hingewiesen, auf der er für viele der verschiedenen Versionen Löschanleitungen und Hilfe zur Problemstellung gibt.
Auch ist er im Zweifel per E-Mail für Hilfesuchende erreichbar.

Bundespolizei-Virus.de

Vielen Dank für den Hinweis! Und Respekt, dass sich wer die Mühe macht sich mit den eher "nervigen" Problemen auseinander zusetzen.

grep voodooo

November 26th, 2012 § 3 comments § permalink

Seit einigen Wochen nutzen wir u.a. fuer Swopspot den github-clone gitlab. Soweit - Sogut. Alles schoen. Doof nur, das der verwendete resque server abundan aussteigt und dann werden die Aenderungen der git-repositories nicht an gitlab weitergereicht. Also bekomm ich dann (nach dem die Notifications zwei Tage haengen) eMails mit der Bitte mal zu gucken... Das spiel habe ich dann jetzt drei mal gespielt und keine Lust mehr gehabt... Nachdem man einmal weis woran es liegt kann man das bequem die Maschine uebernehmen lassen...

Also dachte mir ich, k bauste fix nen shell script, was guckt ob sich irgendwo noch resque Prozesse finden, und wenn nicht, dann starte ihn halt wieder...

Dann sah die erste Version so aus:

 #!/bin/bash

FINDRESQUEPROCESS=$(echo `ps -ef | grep resque | grep -vc grep`)
# den grep Prozess wollen wir natuerlich nicht mitzaehlen ;)
# -v invertiert die Suche und -c zaehlt die Ergebnisse

if [ $FINDRESQUEPROCESS != "0" ]; then
  echo "resque is running."
  echo "nothing to do here."
  exit 0
else
  echo "resque is not running!"
  echo "starting resque for you..."
  sudo su - gitlab bash -c "cd gitlab && ./resque.sh && exit"
  exit 0
fi
exit 1

# ./check-resque.sh
4

4? Sollte dort nicht 1 stehen? Mhm...
Also lassen wir uns testweise mal ausgeben was gefunden wird.

# ./check-resque.sh
gitlab 11727 1 0 01:04 ? 00:00:05 resque-1.20.0: Waiting for post_receive,mailer,system_hook
root 23013 5903 0 13:51 pts/9 00:00:00 /bin/bash ./check-resque.sh
root 23014 23013 0 13:51 pts/9 00:00:00 /bin/bash ./check-resque.sh
root 23015 23014 0 13:51 pts/9 00:00:00 /bin/bash ./check-resque.sh

Gut, das erklaert die Sache, das Script enthaelt natuerlich auch resque im Namen und wird somit gefunden. Also muessen wir das Script selbst auch aus dem Ergebniss nehmen.

 #!/bin/bash

THISSCRIPT=`basename $0`
FINDRESQUEPROCESS=$(echo `ps -ef | grep resque | grep -v $THISSCRIPT | grep -vc grep`)

if [ $FINDRESQUEPROCESS != "0" ]; then
  echo "resque is running."
  echo "nothing to do here."
  exit 0
else
  echo "resque is not running!"
  echo "starting resque for you..."
  sudo su - gitlab bash -c "cd gitlab && ./resque.sh && exit"
  exit 0
fi
exit 1

Cron fuehrt das Script jetzt einfach alle 30 Minuten aus und Ruhe is' (hoffentlich).

“BKA Trojaner 2.0″ unter Windows 7 – per Hand und ohne zusätzliche Software entfernen

December 11th, 2011 § 7 comments § permalink

Leider erinnere ich mich nicht mehr an die genaue Version, aber vielleicht sollte ich ihn nochmal in der VM testen/installieren und eine genauere Anleitung zum Entfernen nachreichen. Ansonsten gibt es hier immer nochmal Infos falls man sich was diesbezügliches eingefangen hat.

Also die Version die gleich auf zwei Rechnern bei uns eintrudelte, schaffte es (oh welche Überraschung) sich an AntiVir vorbei zu mogeln. Auch die kostenpflichtige Version von Kaspersky musste erst mit der Nase drauf gestupst werden, bis sie registrierte, dass das Stückchen Malware nichts auf der Maschine zu suchen hat. Aber im Grunde kein Problem, der "Trojaner" bzw. die Malware lies sich relativ leicht entfernen.
Da ich im Netz keine Anleitung gefunden habe, die ihn so entfernt schreibe ich einfach zwei drei Zeilen dazu und vielleicht ist es mal irgendwem nützlich.

Als erstes ist es wohl doch sinnvoll im abgesicherten Modus zu starten. Allerdings hatte ich auf einen der Zwei Rechner auch Erfolg das Browserfenster mit mehrmaligen  "Alt+F4" zu beenden. Und konnte danach zumindest im Explorer ein bisschen auf Datei-Suche gehen. Im Abgesicherten Modus dürfte dies auf jeden Fall gehen. How ever.

1. Schritt
Erster Anhaltspunkt sollte sein:

C:\User\[Benutzername]\AppData\Local\Temp\

Hier sollte sich eine "komisch" benannte .exe-Datei finden lassen. Falls nicht, auf Nummer sicher gehen und unter Ordneroptionen "Versteckte und Systemdateien anzeigen" einstellen.
konkretes Beispiel, könnte dann so aussehen:

C:\User\HansWurst\AppData\Local\Temp\

Beispiel der exe:

0.89965784.exe

Den Namen der exe sollte man sich irgndwo notieren bevor man die Datei löscht sonst sucht man eventuell die Nadel im Nadelhaufen. Nachdem notieren die Datei einfach löschen und den Papierkorb leeren.

2. Schritt
Leider reicht das noch nicht aus, aber jetzt wissen wir ja, wonach wir suchen müssen.
jetzt unter Start bei Ausführen einfach "cmd" eingeben und in der sich öffnenden Konsole "regedit" eingeben. (Vielleicht geht auch gleich bei Ausführen/Suchen "regedit", ich weiß es nicht genau, da ich selbst kein Windows 7 benutze)

In der Registry geben wir dann in der Suche den Name unserer .exe-Datei ein. Hier im Beispiel "0.89965784.exe" oder nur "0.89965784". Die Suche dürfte dann ein passendes Ergebnis liefern, dieser Eintrag sollte dann aus der Registry entfernt werden.

3. Schritt
Prinzipiell, kann jetzt schon nichts mehr geschehen. Allerdings wird Windows beim starten wohl jetzt eine Fehlermeldung bringen, dass die auszuführende Datei nicht mehr vorhanden ist (in dem Falle die Datei des Trojaners). Um dies zu verhindern, müssen wir nun noch aus dem Startup die entsprechende .rundll-Datei entfernen. Diese finden wir unter:

C:\Users\[Benutzername]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

konkretes Beispiel könnte dann so aussehen:

c:\Users\HansWurst\AppData\Roaming\Microsoft\Start Menu\Programs\Startup

in dem Ordner Startup sollte sich dann eine .rundll finden lassen, die dem Namen unserer .exe-Datei entspricht. Diese sollte ebenfalls gelöscht werden.

Mit dem letzten Schritt sollte alles entfernt sein. Natürlich ist es sinnvoll nachdem noch einmal den Viren-/Malwarescanner zu aktualisieren und nochmal über die Platte zu jagen. Eine Neuinstallation des Betriebssystems sehe ich einfach nicht. Zumal der "Trojaner" meines Wissens nach auch keinen weiteren Schaden anrichtet außer beim Start das Browserfenster aufzurufen welches den User auffordert Geld zu überweisen. Sprich eigentlich ist es gar kein Trojaner sondern eher Scamware oder Scareware.

WICHTIG: Checkt noch ob euer Taskmanager funktioniert. Wenn dieser nicht auftaucht oder nicht startet dann ist doch noch ein letzter Schritt erforderlich:
1. Unter Start im Suchefeld wieder regedit eingeben.
2. Unter HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies System "öffnen"
3. Den Eintrag DisableTaskMgr suchen und öffnen und den Wert auf 0 setzten. Dann ok und prüfen ob der Taskmanager jetzt wie gewohnt erscheint.

Eventuell reiche ich eine genauere Anleitung nach, wenn ich Zeit und Ruhe dazu finde. Ansonsten sind wir für alle Hinweise und Verbesserungsvorschläge sowie Fehlerkorrekturen offen.

mr_door_status

December 8th, 2011 § 3 comments § permalink

Schloss, Schalter, Arduino, Ethernet-Shield, Twitter
www.twitter.com/mr_door_status
http://mrdoor.paddd.de/

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CODE:

#if defined(ARDUINO) && ARDUINO > 18
#include <SPI.h>
#endif
#include <Ethernet.h>
#include <EthernetDNS.h>
#include <EthernetDHCP.h>
#include <Twitter.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
const char* ip_to_str(const uint8_t*);
int state = 1; //door will be open at boot!!!
int sensorValue = 0;

Twitter twitter("your-token-here");

void setup() {
  Serial.begin(9600);
  network();
}

void network() {
  Serial.println("attempting to obtain DHCP lease...");
  EthernetDHCP.begin(mac);

  const byte* ipAddr = EthernetDHCP.ipAddress();
  const byte* gatewayAddr = EthernetDHCP.gatewayIpAddress();
  const byte* dnsAddr = EthernetDHCP.dnsIpAddress();
  
  Serial.println("DHCP lease has been obtained.");

  Serial.print("IP address is ");
  Serial.println(ip_to_str(ipAddr));
  
  Serial.print("gateway IP address is ");
  Serial.println(ip_to_str(gatewayAddr));
  
  Serial.print("DNS IP address is ");
  Serial.println(ip_to_str(dnsAddr));
}


// Just a utility function to nicely format an IP address.
const char* ip_to_str(const uint8_t* ipAddr) {
  static char buf[16];
  sprintf(buf, "%d.%d.%d.%d", ipAddr[0], ipAddr[1], ipAddr[2], ipAddr[3]);
  return buf;
}

void loop() {
  door_status();
  EthernetDHCP.maintain();
  randomSeed(millis());
}

void door_status() {
  int sensorValue = analogRead(A0);
  Serial.println(sensorValue);
  
  if(sensorValue>915 && state==1){
    delay(3000);
    int sensorValue = analogRead(A0);
    if(sensorValue>915 && state==1){
      delay(3000);
      int sensorValue = analogRead(A0);
      if(sensorValue>915 && state==1){
        state=0;
        tweet(state);
      }
    }
  } 
  if(sensorValue<916 && state==0) {
    delay(3000);
    int sensorValue = analogRead(A0);
    if(sensorValue<916 && state==0) {
      delay(3000);
      int sensorValue = analogRead(A0);
      if(sensorValue<916 && state==0) {
        state=1;
        tweet(state);
      }
    }
  }
  //update margin
  delay(10000);
}

void tweet(int state) {
  if(state==1) {
    
    int rand = random(5000);
    char txt [120];
    sprintf(txt, "der maschinenraum ist offen No. %d", state);
    
    Serial.println("connecting to twitter...");
    if (twitter.post(txt)) {
      int status = twitter.wait();
      if (status == 200) {
        Serial.println("status tweet OPEN sent.");
      } else {
        Serial.print("tweet failed : code ");
        Serial.println(status);
      }
    } else {
    Serial.println("connection to twitter failed.");
    setup();
    }
    
  }  
  
  if(state==0) {
    
    int rand = random(5000);
    char txt [120];
    sprintf(txt, "der maschinenraum ist geschlossen No. %d", state);
    
    
    Serial.println("connecting to twitter...");
    if (twitter.post(txt)) {
      int status = twitter.wait();
      if (status == 200) {
        Serial.println("status tweet CLOSED sent.");
      } else {
        Serial.print("tweet failed : code ");
        Serial.println(status);
      }
    } else {
    Serial.println("connection to twitter failed.");
    setup();
    }
  }
}

Where Am I?

You are currently browsing the howto category at maschinenraum.