RSS
 

Archive for the ‘Internet’ Category

Namen und Stoppschilder

02 Sep

Mahlzeit,

ich habe vor einiger Zeit unsere gesamte DSL-Infrastruktur inklusive Telefonanlage, etc. auf eine FRITZ!Box Fon WLAN 7270 umgesetzt.
Zu gegebenem Anlass wollte ich nun, da ich Telekom Kunde bin, andere DNS Server in der Fritz!Box eintragen was zu meinem erstauen nicht einfach so geht.

Ich habe dann einfach mal die Einstellungen exportiert und bin bei dabei auf folgenden Einträge gestoßen:st

1
2
overwrite_dns1 = 0.0.0.0;
overwrite_dns2 = 0.0.0.0;

“Schön!” dachte ich mir und trug dort voller Elan zwei DNS-Server von dieser Liste ein, wonach es so aussah:

1
2
overwrite_dns1 = 85.214.73.63;
overwrite_dns2 = 213.73.91.35;

Zu meiner Verwunderung behauptete das Web-Interface der Fritz!Box beim Importversuch nun aber – ich zitiere wörtlich:

Beim Wiederherstellen der Einstellungen ist ein Fehler aufgetreten.
Die angegebene Datei ist keine gültige Import-Datei.

“Hum?” Warum das nicht? Nach kurzem googlen fand ich das Problem: Die Fritzbox generiert eine Checksum und prüft beim importieren, ob die Datei passt. Ob das nun ein Sicherheitsfeature ist oder einfach nur zur Verhinderung z.B. genau meines Vorhabens gedacht ist, kann ich nicht sagen, aber jeder kann sich ja seinen Teil denken. Verschwörungstheorie und so.

Nun was tun? Bekanntermaßen gibt es für ein solches Problem genau zwei Lösungen.

  1. Checksum neu generieren
  2. Checksumprüfung umgehen

Für die erste Möglichkeit habe ich ein Perl-Skript gefunden, welches die Checksum neu generiert.
Die zweite Möglichkeit hielt ich aber erstmal für besser und hübscher.

Nun gibt es hier aber auch wieder zwei Ansätze. Die erste wäre, man aktiviert Telnet oder wenn man eh eine gemoddete Firmware hat man benutzt SSH um die in /var/flash/ liegende ar7.cfg direkt zu ändern. Danach ist nur ein Neustart erforderlich und die DNS-Server sind eingetragen. Die zweite ist, einfach vor in der exportierten Konfigurations-Datei vor die Zeile “**** CFGFILE:ar7.cfg” ein “NoChecks=yes” zu setzen und die Datei wieder zu importieren. Dies geht auch, wenn man die original Firmware nutzt.
Somit hat man nun wunderbare freie DNS Server.

Dies hilft allerdings nur so lange, wie die ISPs nicht – angewiesen vom BKA oder einer anderen Behörde – die DNS-Anfragen umleiten und/oder sie transparent modifizieren. Was durch eine Softwarelösung der Firma Nominum möglich wäre.
Was nach kurzem Überlegen stark an China erinnert.

Nein wir zensieren nichts im Internet, wir sperren nur das, was dem Staat nicht gefällt!

Abhilfe würde hier aber nur ein Proxy in einem anderen Land bringen. (SOCKS über SSH z.B.)

Ich verachte alles was mit Kindesmissbrauch zu tun hat, aber eine Sperrung von Webseiten, und das nur auf DNS-Basis bringt ja mal überhaupt nichts. Es sollten wohl eher die Hoster solcher Seiten herangezogen werden, was wie der AK-Zensur bewies wohl wesentlich Sinnvoller wäre.

Nun denn, lasst euch nicht von den Politikern ärgern, die wissen schon was sie tun! :D

Weiter Seiten die sich mit diesem oder anderen interessanten Themen beschäftigen findet ihr in meiner Linkliste.

bis neulich

j-zero

PS: Löschen statt verstecken!

 
 

Wolpertinger mit Zwiebeln

19 Jun

Wolpertinger
Mahlzeit,

ich hatte vor mal wieder Tor (The Onion Router) auf meinem Notebook, welches mit Ubuntu 9.04 (Jaunty Jackalope) läuft, zu installieren, als ich feststellen musste, dass diese nicht in den Repositories ist. Nach kurzer Suche habe ich aber Repositories die es haben: http://mirror.noreply.org/pub/tor.

Also einfach Folgendes ausführen:

1
2
3
4
5
sudo echo "deb http://mirror.noreply.org/pub/tor jaunty main" >> /etc/apt/sources.list
sudo echo "deb-src http://mirror.noreply.org/pub/tor jaunty main" >> /etc/apt/sources.list
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com CFF71CB3AFA44BDD
sudo apt-get update
sudo apt-get install tor

Und schon habt ihr Tor wieder installiert. Danach nur noch einen SOCKS5 Proxy auf Port 9050 in den Applikationen einrichten (z.B. mit FoxyProxy für den Firefox) und fertig.

Ihr könnt diesen “Torcheck” machen um zu sehen ob es funktioniert. Wenn nicht, schaut mal in die /var/log/tor/log, warum nicht.

Bis neulich.

j-zero

 

HTML-Link-Target dynamisch ändern…

11 Jun

Mahlzeit,
folgendes Problem ereilt einen des öfteren, wenn man z.B. in WordPress Links in dem HTML Editor manuell einfügt:
Das Link-Target (z.B. “_blank”) muss manuell eingetragen werden, damit beim Klicken auf einen Link die Seite in einem Neuen Fenster geöffnert wird. Es ist aber unschön diesen jedes mal manuell zu setzen, gerade wenn man mehr als einen Link hat.
Man könnte nun in der Tat einfach innerhalb des “<head>”-Tags ein

1
<base target="_blank" />

setzen, dieses würde aber Links die schon ein Target haben nicht ändern, was sehr gut ist, wenn man es nicht will. Wenn aber doch muss man sich anders helfen…
Dazu habe ich folgendes kleines Script gebastelt:

1
2
3
4
5
6
7
8
9
10
function setLinkTargets(){
 var l = document.getElementById("contentbox").getElementsByTagName("div");
  for (var i = 0; i < l.length; i++) {
    if(l[i].getAttribute("class") == "post"){
    var j = l[i].getElementsByTagName("a");
    for (var k = 0; k < j.length; k++) {
       if(j[k].getAttribute("class") == null){
          j[k].target = "_blank";
  }}}}
}

Damit wird allen “a”-Tags, die sich in dem div “contentbox” und innerhalb eines divs, welches die Class “post” hat das Target-Attribute “_blank” gegeben.
Unter Umständen müsst ihr noch den Class-Namen ändern oder eben das Target auf das Setzen was ihr möchtet.
Einzubinden ist das Script einfach folgendermaßen:

1
2
3
4
5
6
7
8
9
10
<html>
<head>
   <script type="text/javascript">
   ...
   </script>
</head>
<body onLoad="setLinkTargets()">
   ...
</body>
</html>

Viel Spaß damit.
j-zero
PS: Sicherlich wäre es eleganter die Links mit den richtigen Targets zu versehen, aber es wäre langweilig. ;)

Nachtrag:
Wie ich gerade eben gesehen habe, ist es nicht XHTML 1.0 Strict-Konform Links mit Targets zu versehen. Daher habe ich das Script deaktiviert.

 

Ping auf einen TCP-Port

12 Mai

Mahlzeit,

wie von schmidt24 schon angekündigt habe ich das tcpping-Skript ein wenig erweitert, da ich finde, das Timeouts nicht markant genug dargestellt wurden, habe ich diese in rot und erfolgreiche Pings durch ein grünes “ok” markiert.

Zudem ist es nun möglich, anstatt des Ports den Namen aus der /etc/services anzugeben (falls man z.B. mal den Port von IMAPS nicht im Kopf hat).

Beispiel: “tcpping.sh 127.0.0.1 imaps” ist equivalent zu “tcpping.sh l27.0.0.1 993″.
Der Standardport ist auch nun 22, also SSH da dieser ja meist auf Linux/UN*X Maschinen auf ist.
Man kann also einfach “tcpping.sh 127.0.0.1″ nutzen und es wird automatisch auf SSH geprüft.
Die Namens- und Portauflösung sind nur eine nette Spielerei aber für den ein oder anderen Skripter vielleicht ganz nützlich. :)

Hier ist es:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/bin/sh

i=0

if [ $# = 1 ]; then PORT=22
else PORT=$2
fi

if [ $# -eq 0  ]; then
    echo "Usage: $0 <HOST> [PORT]"
    echo "   PORT can be numeric or name from /etc/services"
    echo "   Default port is 22 (ssh)"
    exit 1
fi

if [ $(echo "$1." | grep -E "([0-9]{1,3}\.){4}") ]; then
    HOST=$(host -v $1 | grep -1 -m1  -A1 ";; ANSWER SECTION" | awk '{print $5}' | awk NF | sed 's/\.$//')
    IP=$1
else
    IP=$(host -v $1 | grep -i -m 1 -A1 ";; ANSWER SECTION" | awk '{print $5}' | awk NF | sed 's/\.$//')
    HOST=$1
fi

case $PORT in
    *[!0-9]* )  PORT=$(cat /etc/services | grep -i -m 1 $PORT | awk '{print $2}' | sed "s/\/tcp//g")
esac

PROTO=$(cat /etc/services | grep -i -m 1 $PORT | awk '{print $1}' | sed "s/\/tcp//g")

while (true) do
        TIME=`date +%s%N| cut -c -13`
        SCAN=`nmap -P0 -p$PORT $1`
        if [ $? != 0 ]; then exit 1; fi
        echo $SCAN | grep -q open
        if [ $? != 0 ]; then
                echo "tcp ping from $HOST ($IP) port $PORT ($PROTO): tcp_seq=$i time=$(($((`date +%s%N| cut -c -13`-$TIME))))ms\t[\033[1;31mtimeout\033[0m]"
        else
                echo "tcp ping from $HOST ($IP) port $PORT ($PROTO): tcp_seq=$i time=$(($((`date +%s%N| cut -c -13`-$TIME))))ms\t[\033[1;32mok\033[0m]"
        fi
        sleep 1
        i=$((i+1))
done

viel spaß und erfolg damit.

Known Bugs:

  • Wenn als Host ein Nmap Parameter übergeben wird wie z.B: “–help” ist der Ping “[ok]“, da Nmap die Hilfe ausgibt, “grep -q open” ist in dem Fall Wahr, da auch in der Help ein “open” vorkommt.
  • Die Domainauflösung zur IP funktioniert zurzeit nicht bei einem Alias, da dann als erstes Ergebnis von “host” der CNAME zurückgeliefert wird.

Wenn jemand eine Idee hat, wie das zu lösen ist (bevor ich eine habe oder das ganze Ding in Perl implementiere) wäre ich dankbar.

bis neulich

j-zero

 

Perl Twitter

06 Mrz

Mahlzeit!

Ich bin nun auch unter die Twitterer gegangen, nach dem ich ja den Blogkram auch schon mit gemacht habe. Nach kurzer Zeit habe ich ein Tool gesucht, mit dem ich aus der Kommandozeile unter Linux einen Tweet absetzen kann, habe aber erstmal nix gefunden. Also habe ich mal geschaut, ob es ein Perl Modul gibt. Und ja(!), es gibt eins, und zwar: “Net::Twitter” – wär hätte das gedacht! Ihr könnt das einfach mittels “perl -MCPAN -e “install Net::Twitter” installieren.

Hier ist mein kleines Script, welches aus der Konsole Tweets sendet, viel Spaß damit.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/usr/bin/perl
use Getopt::Std;
use Term::ReadKey;
use Net::Twitter;
getopt('upt',\%opts);
$usage= <<USAGE;
commandline twitter 0.1b - www.j-zero.de
Usage
: twitter_cmd -u username [-t tweet] [-p password]
USAGE
sub gp{
    print "password: ";
    ReadMode 2;
    chomp($l = ReadLine(0));
    ReadMode 0;
    print "\n";
    return $l;
}
if(!$opts{u}){print $usage;exit 1;}
    else{$u=$opts{u};}

if(!$opts{t}){print "tweet: ";chomp($t=<STDIN>);}
    else{$t=$opts{t};}

if(!$opts{p}){$p=&gp;}
    else{$p=$opts{p};}
$s=Net::Twitter->new({username=>"$u",password=>"$p" });
$s->update({status=>"$t"});
exit 0;

j-zero