C++Guns – RoboBlog blogging the bot

12.04.2009

whois easteregg patch

Filed under: programmieren — Thomas @ 22:04

Da mir gerade langweilig ist, hab ich mir selbst ein Eastergg in whois eingebaut:

--snip--
$whois 127.0.0.1
I hacked 127.0.0.1!
--snap--

--patch--
diff whois_patch.c whois-4.7.32/whois.c
75,80d74
< if(strstr(argv[1],"127.0.0.1")) < { < printf("I hacked 127.0.0.1!\n"); < return 0; < } < --hctap--

11.04.2009

UDP Hole Punching

Filed under: Allgemein — Thomas @ 19:04

In diesem Post möchte ich nicht erklären wie UDP Hole Punching funktioniert, sondern mir nur schnell die Befehle notieren.

Client starten. -u = UDP; -l = listen;
local/1# nc -u -l -p 14141

Ein Paket an den remote Rechner senden. -c = count; -2 UDP Mode; -s source port, -p = dest port
local/2# hping2 -c 1 -2 -s 14141 -p 5353 remote

Oder ohne root
nc -p 14141 -u remote 5353

Nun kennt NAT eine gültige IP+Port und leitet eingehende Pakete weiter

remote# echo "hello" | nc -p 5353 -u local-fw 14141

Das ganze ist mehr oder weniger geklaut [1] . Weitere Informationen gibts unter dem Suchwort STUN und [2]

[1] http://www.heise.de/security/Wie-Skype-Co-Firewalls-umgehen--/artikel/82054/1
[2] http://www.ietf.org/rfc/rfc3489.txt

50MHz Oszilloskop bei Ebay für 116Eur gekauft

Filed under: Allgemein — Thomas @ 18:04

50MHz Oszilloskop bei Ebay für 116Eur gekauft. Und ich freue mich wie ein Osterhase

Der Hintergrund ist folgender:
seit einem Jahr bin ich auf der Suche nach einem Oszilloskope. Ein gebrauchtes, altes, analoges mit 20MHZ ohne Qualitätsname würde mich schon langen. Jeder sagt mir, 50Eur, aber nicht mehr ausgeben. Nur gibt es keinen der seins für 50Eur verkauft, selbst bei Ebay gehen die alten Dinger für 150Eur weg. Und dann kam da dieses eine Angebot in Ebay. Ein 50MHz Oszi, gebraucht mit allen möglichen Kabeln. Die Kabel allein hatten neu 200Eur gekostet. Die Reaktion der Leute war vorraus zusehen. 150Eur? Nie im Leben geht das Ding für so wenig weg. Man muss allerdings auch erwähnen, dass 25Eur versicherten Versand anfallen. Das hat bestimmt die meisten Leute abgeschreckt. Also hab ich mal bis 125Eur mitgeboten. Ich war mir so sicher, dass ich überboten werden. Klick, 3, 2,1 meins. Für 91Eur + Verstand. *staun*

Von wegen 150Eur. Jetzt hab ich ein besserers für weniger

Nun, ganz so einfach war es dann doch nicht. Musste zwei mal den Weg zur Bank antreten, da es für eine Überweisung nach Österreich die IBAN Nummer und die Europäische Überweisung braucht. Wieder etwas gelernt... Nu warte ich bis Ostern vorbei ist. Warum müssen auch so viele Feiertage zwischen mir und meinem Oszi liegen.

31.03.2009

TCP Verbindung beenden

Filed under: Allgemein — Thomas @ 22:03

Es sollte eigentlich nicht vorkommen, aber dennoch passiert es, dass sich TCP Verbindungen nicht abbauen, wenn die Verbindung eigentlich beendet wurde. Das passiert z.B. wenn man den Drucker ausschaltet, wenn er gerade Daten empfängt. Diese tote TCP Verbindung kann man sich mit netstat -ntpa anzeigen lassen

tcp 0 0 192.168.0.103:33419 192.168.0.200:631 VERBUNDEN -

Im letzten Feld steht normal die PID und der Name des Programmes. Die Verbindung würde sich beenden, wenn Daten durch sie geschickt werden. Da der Remote Rechner aber nicht läuft, würde kein Antwortpaket zurück kommen welches die Verbindung beendet.

Nun möchte man die Verbindung aber beenden, ohne neu zu starten. Unter BSD gibt es das Programm tcpdrop, welches Verbindungen ganz einfach beendet. Aber anscheinend hat es niemand nach Linux portiert. Also behelfen wir uns anders. Mit netstat -nptae kann man sich die inode der Verbindung anzeigen lassen

tcp 0 0 192.168.0.103:33419 192.168.0.200:ipp VERBUNDEN root 252919 -

Die inode ist im vorletzten Feld gelistet. Ein einfaches lsof | grep 252919 liefert auch endlich die passende PID

ipp 27904 root 6u IPv4 252919 0t0 TCP 192.168.0.103:33419->192.168.0.200:ipp (ESTABLISHED)

Die PID steht an zweiter Stelle. Nun kann man den Process auch mit kill 27904 beenden. netstat bestätigt dies mit einem FIN_WAIT1

tcp 0 1 192.168.0.103:33419 192.168.0.200:631 FIN_WAIT1 0 0 -

Und nach ein paar Minuten ist sie dann auch ganz weg.

07.03.2009

PIV Tag 14

Filed under: Allgemein — Thomas @ 14:03

Heute hab ich mich nur diesem Wasserradprojekt gewindmet. Am Morgen noch schnell die Platine zusammen gelötet und das erste Testprogramm aufgespielt. Natürlich funktionierte erst einmal garnichts. Am meisten Probleme hatte ich mit dem USART. Die Werkseinstellung des Mikrocontrollers ist ein 8MHz int. RC OSzi mit einem Teiler von 8, ergibt 1MHz. So hatte ich es eingestellt, es kamen dennoch nur wilde Zeichen in der Konsole an.

Die Fusebits konnte ich auch nicht umstellen. Irgendwann kam ich dann mal auf die Idee, ein Update für meinem Programmer zu besorgen. Danach konnt ich die Fusebits auch einstellen. Und schon funktionierte USART.

Das zweite Problem war, dass ich vergessen hatte den Pin "Test" des FD232 Chips an Minus anzulöten. Ist er nämlich unbeschaltet, reagiert der Chip kein Stück. Wie schnell man doch solche Kleinigkeiten übersieht. :(

01.03.2009

Digitale Video Kamera und wie sie nicht funktioniert

Filed under: Allgemein — Thomas @ 14:03

Im Museum gibt es derzeit eine Sonderausstellung über meinen Ur-Opa zu bewundern. Gestern, bei der Eröffnung habe ich versucht alles zu filmen. Zugegeben, ich habe etwas gebraucht um alle Knöpfe an der Kamera zu finden und wie man was wo tun muss, damit auch das ext. Micro funktioniert, aber letztendlich ist wohl die neue Kasette kaputt. Beim Abspielen kommen dicke Streifen in das Bild und sie gehen auch nicht wieder weg. Auch wenn ich es auf den PC per Firewire überspiele, sind sie noch da. Nehme ich hingehen direkt von Kamera auf PC auf, sind sie nicht da.

Das wäre nur halb so schlimm, wenn der Sound da wäre. Aber kaum hält mein Vater seine Rede, ist die Klimaanlage an und man versteht garnichts mehr. Noch dazu ist der Sound total abgehackt. Nun, daran kann man leider nichts mehr ändern.

Aber ich wolte in diesem Aktikel wieder etwas über Windows lästern. Letzte Nacht bin ich auf die Idee gekommen, dass der DV Ausgang an der Kamera gleich der Firewire Eingang am PC ist. Und nachdem ich es auch nach ein paar Minuten geschafft hatte, dieses doofe Kabel in die Buchse zu stecken, viel mir auf, dass irgendwie der Treiber für die Kamera nicht im Kernel ist. Nun, das ist bei einer abgespecken Kernel auch zu erwarten. Ich hab mir gedacht, es ist Mitternacht, ich habe keine Lust auf Bastelleien, bootest doch mal schnell in Windows und ziehst das Video rüber.

Mit dem Moviemaker kann man ja Videos von einer Kamera überspielen. Aber da ich keine Lus auf dieses WMV Format hatte, speicherte ich alle im RAW Format ab. Platz ist auf der ext. Festplatte ja genug. Leider überspielt er das Video in Realzeit. Das heisst eine Stunde Film, eine Stunde Überspielzeit.

Als die ersten zwei GB überspielt waren, viel mir ein, dass FAT32 ja doch irgendwie eine Dategrößenbeschränkung hat. (Warum nehm ich nicht NTFS? Weils stinkt. Basta!). Und beim vierten GB brach er auch ab. Ok halb so wild. Speichere ich es eben komprimiert ab. Nach weitern 15min war auf einmal der Akku leer. DANACH hab ich auch herausgefunden, dass man die Kamera an das Ladegerät anschliessen kann, so dass sie auch gleichzeitig im Betrieb ist.

Der dritte Versuch gestartet. Und mir war soooo langweilig. Da zockt man doch gerne mal ein kleines Spielchen. Spiel gestartet, bam Fehler. Die Aufnahme brach ab, weil die Bildschirmauflösung geändert wurde. Ich habe zwar keine Ahung was Firewire mit der Auflösung zu tun hat, aber bitte.

Der vierte Versuch. Nach einer elend langen Stunde war das Video endlich auf der Platte. Im Movie Maker sah die Vorschau des Bildes gut aus, spielte ich es aber im Mediaplayer ab, stimmen die Farben nicht mehr. Autsch ich geh pennen.

Am nächsten Morgen das Video nochmal irgendwie mit einem anderen Format codiert und sieht da, nach 40min geht es auch endlich. Mal ehrlich, ich wäre lieber meinen Linux treu geblieben und hätte die Zeit investiert den Treiber zu installieren. Dann hätte ich das komplette Video einmal im RAW Format rüber gezogen. Hätte keine Probleme mit Dateigrößenbeschränkungen gehabt, hatte keinen leeren Akku gehabt. Auch das ändern der Auflösung hätte keinen Fehler verursacht. Ich hätte kein beschränktes Windows Media Format gehabt und auch keine falschen Farben im Film.

Hätte, hätte, hätte...

19.02.2009

itoa uitoa für AVRs

Filed under: Allgemein — Tags: — Thomas @ 23:02

Wer kennt das nicht, man möchte eine Zahl über USART ausgeben, scheut sich aber vor solche dicken Funktionen wie fprintf. Man höhrt dann öfters von einer itoa Funktion, die es aber nicht per default gibt. Hier ist meine uitoa Funktion, welche die Zahl gleich raussendet. Inspiriert vom midgard Projekt von buha.info . Die USARTtransmis* Funktionen sind von http://jump.to/fleury .

void USARTuitoa(uint16_t n)
{
// max. 5 stellige zahlen + die abschliessende 0 im string
unsigned char s[6];
// arrays fangen bei 0 an zu zählen. pos zeigt auf das letzte feld
register uint8_t pos = 5;

// den string mit einer 0 terminieren
s[pos] = (char) 0;

do {
uint8_t rest = n % 10;
n = (n - rest) / 10;

s[- -pos] = rest + '0';
} while(n && pos);

USARTtransmitString((unsigned char *) (s + pos));
}

18.02.2009

PIV Tag 13

Filed under: Allgemein — Thomas @ 19:02

Gibt nichts aussergewöhnliches zu berichten. Wir suchen immernoch nach Dinge, die im Wasser schweben.

17.02.2009

Irix root password reset

Filed under: Allgemein — Tags: , , — Thomas @ 14:02

Seit einer Woche beschäftige ich mich ja mit diesen O2 Rechner. Auf einem hatte ich Debian installiert. Das lief mehr oder weniger Reibungsfrei. Auf dem anderen belasse ich das Irix. Nun hat sich das Problem ergeben, dass ich das root Passwort nicht kenne. Man hat mir geraten einfach das Hash zu löschen, dann sei auch kein PW gesetzt. Glücklicherweise habe ich ja zwei O2 Rechner. So konnte ich die eine Festplatte gerade in den anderen schieben.

Das mounten funktionierte erst nicht. Es gab eine "bad superblock" Meldung. Laut /var/log/messages hatte er wohl Probleme mit einer kaputten Log auf der Platte. Also schnell xfsprogs und xfsdump installiert und einen fsck gemacht. Dann konnte man sie auch mounten :)

Das Passwort steht als Hash in der /etc/shadow Datei. Einfach den Kryptischen Kram zwischen den zwei ":" rauslöschen. Ausserdem sollte man in der Datei /etc/default/login kontrollieren ob auch alles so eingestellt ist wie hier gezeigt:

# Must all accounts have passwords? If YES, and user has no password, they
# will be prompted for one at login time.
PASSREQ=NO
#

#
# Like PASSREQ, but locks out user if they have no password.
MANDPASS=NO

Danach runterfahren, Platte wieder umstecken und booten. Fertig :)

14.02.2009

It is 1234567890

Filed under: Allgemein — Thomas @ 12:02

Viel gibt es dazu nicht zu sagen. Ich hab mal ein kleines Video gemacht ;)

1234567890.avi

« Newer PostsOlder Posts »

Powered by WordPress