base64 auf dem Papier – Kodierung

[[ Base64 | Base64 ]] ist ein Verfahren zur Kodierung von 8-Bit Zeichen, wie sie im ASCII vorkommen, zu einem 6-Bit Zeichen. Dies wird beispielsweise häufig für Mails verwendet, um Anhänge oder Texte Plattform- und Zeichensatzunabhängig zu versenden.

In diesem Beitrag geht es um das manuelle Umrechnen von 8-Bit-ASCII zu 6-Bit Zeichen. Als Beispiel-wort nehme ich hier mal: „Lorem“.

ASCII zu Bit

Zuallererst müssen alle ASCII-Zeichen vom Dezimalsystem ins Dualsystem umgerechnet werden. Da „A“ im ASCII 65, und Z wird als 90 repräsentiert. Ein kleines „a“ liegt bei 97, und ein „z“ bei 122.

„L“ wird mit der 76 repräsentiert, „e“ mit 101, „o“ mit 111, „r“ mit 114 und „m“ mit 109.
Jetzt werden zuerst die Zahlen ins Dualsystem konvertiert:

Buchstabe ASCII-Zahl Binär
L 76 1001100
o 111 1101111
r 114 1110010
e 101 1100101
m 109 1101101

Bits zu base64

Da base64 auf 6-Bits, statt 8 Bits basiert, müssen die Bits nun in 6-er Blöcke unterteilt werden. Jeder Block repräsentiert dann ein Zeichen, das zwischen 0 und 64 liegt(2⁶=64). Dabei sind die großen Buchstaben zwischen 0 und 25, die kleinen zwischen 26 und 51, sowie die Zahlen zwischen 52 und 61, worauf nur noch die Zeichen: 62=“+“, 63=“/“ und das = als „nichts“ folgen.

Um dies jetzt zu base64 zu kodieren, müssen jetzt alle Bits aneinander gestellt werden:

… und unterteilen sie in 6-er Blöcke:

Wie wir sehen, passt das nicht zusammen. Base64 nutzt dafür dass „nichts“ repräsentierende „=“(in Bits: „00000000“ oder auch 0) Zeichen, um die Anzahl der Bits aufzufüllen. Daraus resultiert also:

Das ganze umgerechnet zu Bas64 ergibt folgende Zeichenkette: „TG9yZW0=“
… eine passende Dekodierungsmethode folgt bald! 🙂

Grüße.

Bourneshell-Skript, aka Bashscript: Rekursive Verzeichnis-Iteration

Gestern Abend, als ich mich mit der AtariFrosch unterhielt, erzählte sie mir von ihrer Änderung des Encodings auf ihrer Website. Sie sagte, dass man das zwar mit „iconv“ machen könne, dies es aber erforderlich macht, jede Datei einzeln auf zu rufen. Außerdem sollte die jeweils erste Zeile(ein <?xml> mit dem charset ISO) entfernt werden. Perfekt für ’sed‘ und die möglichkeiten der Iteration der Bourneshell, nicht wahr? 😉 

Problem?
Problem?

Also setzte ich ich ein einfaches Skript auf:

Dass dies nicht rekursiv arbeitet, dürfte allen klar sein. Aber iterativ bearbeteit es zumindest dass erste Verzeichniss.

Nun ist ihre Webseite aber sehr verschachtelt, was die Rekursion erforderlich macht. Da dies nicht „das einfachste“ für mich ungeübten Shellskripter war, würde klar sein. 
Zwischendurch aber kam dass Kommando „find“ auf. Nach mehreren Stunden rumprobiererei, weil ich die Manpages abscannen musste, kam dann folgendes Skript zustande:

Code unter GPLv2

Was macht es genau?
per „find $Files -type f -printf „%p „“ formatieren wir die Ausgabe folgendermaßen:

[/crayon]
„-type f“ gibt an, dass nur Dateien ausgegeben werden. Der Ausdruck „-printf „%p “ sorgt für die saubere Ausgabe. %p steht für den relativen Pfad vom aktuellen aus. Denn der Shellskript interpreter kann nur so über die Liste iterieren. Das Problem, dass die Dateien nicht mit dem relativen Pfad angegeben werden können(siehe Ausgabe von ls -R *), wäre also gelöst.

Danach wird nur noch geprüft, ob die Datei auch wirklich eine Datei ist(im Fall, dass ich mich getäuscht hätte mit der Formatierungs- und Typangabe), und danach die Kommandos ausgeführt.

…löscht die erste Zeile(‚1d‘, „delete first line“), schreibt ein Backup in die Datei $f.back und das Ergebniss(löschen der ersten Zeile) wird zurück in die Datei $f geschrieben.Fuck yeah! Fuck yeah!

Für die Lösung habe ich mehrere Stunden gebraucht, weil ich Intelligenzbestie es erstmal mit ls -R versuchen musste. Dass man dabei nur mal „eben“ in die Manpages schauen sollte, zeigt auch dieser Fall. Nichts lehrt uns mehr, als etwas selbst zu machen. So habe ich deutlich gemerkt, was der „richtige“ Weg ist, oder eher der Weg, welcher mir am meisten bringt. 🙂

"Krisenhafte"-Entwicklungen soll durch Bundeswehr erkannt und gebannt werden und Opposition will Snowden in DE verhören

Jaja, auch heute gibt es wieder genug zum Aufregen. Beispielsweise will die Bundeswehr einfach mal alle Trends und Meinungen auffangen(berichtet derStandard.at), um „Krisenhafte“-Entwicklungen zuvorzukommen.

Man will neben dem Überwachen, jetzt nach möglichkeit auch noch Legal in DE eine eigene Form der „Krisenhaften“-Entwicklung definieren, um damit eben jenen „rechtzeitig“ zu entgegnen.
Stellt sich die Frage was denn „Krisenhaft“ ist. Wenn ich die Linken wähle? Oder Piraten? Ist es Krisenhaft, wenn ich mich für bsp. GPG interessiere, oder schlimmer noch, für Verschlüsselung an sich? Reicht ja nicht, dass das schon die Five-Eyes-Staaten machen. Demnächst gibt es dann wahrscheinlich auch noch Werbebotschaften im TV nach dem Tenor: „Wenn ihnen XY gefällt, kommen Sie zur Bundeswehr!“ – ist ja schon so nicht manipulativ genug.

Außerdem berichtet er auch, dass die Opposition(Grüne, Linke..) ein Ultimatum für das Aufheben des Beschlusses gesetzt haben. Das ist jetzt nicht die üble Nachricht, aber dass solche Maßnahme gebraucht werden, damit jemand mitdenkt ist schon auf einer Art und Weise traurig.
Guten Morgen.

Kannabis im Eigenbau: Für Schmerzpatienten mit Genehmigung nun erlaubt

Ein Gericht in Köln hat nun entschieden, dass Kannabisanbau für Schmerzpatienten/Therapieunwirksame-Patienten nun erlaubt ist, insofern sie eine Ausnahmegenehmigung besitzen.

Ein Gericht in Köln hat nun entschieden, dass Kannabisanbau für Schmerzpatienten/Therapieunwirksame-Patienten nun erlaubt ist. Die Einschränkung ist, dass die Patienten entweder eine Bescheinigung vom Arzt der unwirksamkeit jeglicher anderer existierender Therapien existent ist, oder eine Sondergenehmigung vorliegt.
Ein großer Schritt, wenn man bedenkt, das die Leute teilweise 900€ für 5 Gramm hinlegen müssen. Das sich das kaum jemand leisten kann, fand das Gericht offensichtlich auch. Denn bei minimaler Dosis würden diese 5 Gramm nicht länger als 2 Wochen halten, was einen zwingt zwischen Lebensqualität und Schulden zu entscheiden.
So dürfen diese Männer und Frauen nun auch ihr eigenes Kannabis anbauen, solange es in einem aktzeptablen Sicherheitsrahmen liegt, sprich gut genug geschützt ist.
Sehr erfreulich, und gut für jeden einzelnen, der jemals eine der Krankheiten bekommt die dies benötigen. 🙂
(und jetzt der obligatorische Witz über den Namen des Richters: Fleischfresser. Höhö, wie lustig…einself)

Von der "Verhütung auf Knopfdruck"

Jetzt sind wir sogar schon bei „Verhütung auf Knopfdruck“ angelangt. Lesen wir mal den Artikel und lassen das Ganze sacken.
Unten? Gut.

Nun, der Artikel beschreibt eine Methode einer US-Firma, die behauptet, es wäre toll sich einen Chip implantieren zu lassen, mit dem es möglich ist Schwangerschaften auf „Knopfdruck“ zu verhindern. Was für ein Knopfdruck, frag‘ ich mich dabei, und auch das beantwortet Heise sehr freundlich: Mit einer Fernbedienung oder über das Internet.
Es ist ja nicht so, als ob es schon lange sogenannte „Schwingkreise“ (oder auch Störsender) gäbe, die bestimmte Frequenzen blockieren und somit einen validen Empfang unmöglich machen würden, oder auch die Möglichkeit einfach die Fernbedienung nachzubauen und auf derselben Frequenz nach Lust und Laune zu senden. Genauso gibt es ja nicht die nachgewiesene Inexistenz von Fehlerfreiheit innerhalb von Software, denn wo wären wir denn, wenn ein Mensch einen Fehler macht!

Aber lasst mich noch ein wenig weiter ausholen, zuerst mit dem Argument der „tollen Fernbedienung“.
Ihr kennt doch sicher die „1-Kind-Politik“ der Chinesen. Wie würde man wohl eine solche Politik gut umsetzen können, besonders innerhalb eines solchen Staates? Genau! Mikrochips, die wir mal eben naiverweise in den Körper implantieren lassen, damit irgendein Hanswurst in irgendeiner Regierungsanlage mal eben entscheiden kann, ob wir ein Kind kriegen dürfen oder nicht.
Denn, man bedenke natürlich, das man alles Technische „irgendwie“ manipulieren kann… und dass Geheimdienste beim Manipulieren von Hard- und Soft ware nicht gerade zimperlich vorgehen, ist ja auch hinreichend bekannt, allerspätestens nach Snowden.

Mit dem Internet wäre der schöne Fall eingetreten, dass dieses Signal nicht einmal großartig in der Reichweite eingeschränkt wäre. Jedem ist bekannt, dass wenn man durch die Straße läuft und nach W-Lan Spots sucht, auch eine Menge findet, wo ebenfalls bekannt ist, dass sehr viele Router und deren Hard-/Software manipuliert worden sind.
Man sendet nun also einfach einfach das Signal für „Erlaubnis erteilt“, und die jeweilige Frau fühlt sich sicher. Beide haben Sex, gucken spätestens 2 Wochen später nach weil sie nicht wissen, warum die Frau plötzlich der Morgenübelkeit unterlegen ist und bemerken dass sie Schwanger ist.

Was nun? Rein psychologisch bedinkt könnte man jetzt versuchen, eben jene Frau mit dieser Information zu erpressen. Ja, ich weiß, sehr drastisch. Man stelle sich nur vor, unsere Allseits gehasste und geächtete sowie faule weshalb das auch unrealistisch ist,  Bundeskanzlerin hätte mit einem Putin geschlafen, und wird nun von XY erpresst, etwas zu tun, weil sonst diese Information an die Öffentlichkeit getragen wird. Man kann also supi mit den Gefühlen bzw. Schwächen und befindlichkeiten der anderen Person spielen.

Außerdem ist das Teil ja auch eine potenzielle Wanze und GPS/Standorttracker, wie unser schönes „Smartphone“. Nur das man mit diesem Chip auch noch die erschütterung bei jedem „Stoß“ nutzen kann, um die sexuellen vorlieben zu finden.

Oder man stelle sich die gute Freundinn vor, die mal eben einen „Streich“ spielen will, sich einen der Ach-So-Minderbemittelten „Nerds“ angelt, der ihr zeigt, wie man das ganze Manipulieren kann und dadurch mal eben die Schwangerschaft nach herzenslust manipuliert. Ich seh schon den Zickenkrieg:“Warum hast Du das getan!?!?!?!“ Freundinn:“Das war doch nur ein harmloser Scherz öy!“

Der beste Fall also, der hier eintreten kann: Alle sind glücklich, und nur ein paar Idioten kommen daher, und manipulieren ab und zu die Signale.

Der schlimmste Fall: Geheimdienste kapern das Signal, senden ihr eigenes, manipulieren in drastischer Art und Weise die Empfängniss und können Druck ausüben, indem sie den Gesundheitsstatus eben jener Person „einfach mal so“ abfragen können.

Ob der Erfinder dieses Chips sich Gedanken darüber gemacht hat? Und wenn ja, ist er euer zukünftiger Spanner mitliebhaber?

Prost Mahlzeit.

mpd: Konfiguration(I) – Netzwerkadresse, Verzeichnisse und der Standarduser

MPD(engl. für »Music Player Daemon«) ist ein Freier Musikserver für Linux bzw. Unix-Artige Systeme, der unter anderem erlaubt, innerhalb des Netzwerks Playlists zu erstellen, die Musikdateien zu »Taggen«, danach zu suchen, usw.. Einen Musikplayer hierfür, den ncmpcpp, habe ich hier schon vorgestellt.

Hier soll es erst mal um die Standardkonfiguration gehen, sprich Adresse innerhalb des Netzwerks, Ports, Standardverzeichnisse und den entsprechenden User.

MPDs Standardverzeichnisse sind wie folgt(in Debian-Artigen Systemen):

  • Konfiguration: /etc/mpd.conf
  • Basisverzeichnis: /var/lib/mpd/
    • Musik: /var/lib/mpd/music
    • Playlists: /var/lib/mpd/playlists
    • Tag Cache: /var/lib/mpd/tag_cache
    • „Standards“: /var/lib/mpd/state (Hier wird eine Playlist angelegt, die Standardmäßig genutzt werden kann.)

Konfigurieren der Adresse

Der MPD ist normalerweise unter localhost:6600 erreichbar. Dies kann nützlich sein, wenn man ihn nur Lokal nutzen möchte, hindert aber gerne aussenstehende Rechner daran, eine Verbindung aufzubauen(Kommt auf die genutzte Firewall an..). Wenn man den MPD also im ganzen Netzwerk erreichen möchte, sollte man ihm eine Statische IP zuweisen, welche er belegen kann.
Dies wird in der Konfigurationsdatei, /etc/mpd.conf, niedergeschrieben. Ich habe hier Lokal den Adressbereich 10.0.0. reserviert, und nutze deshalb die Adresse 10.0.0.3:

Der Unix-Socket für den MPD wird folgendermaßen niedergelegt:

Wenn wir jetzt also den MPD neustarten, welches wir über „service mpd restart“, oder optional, /etc/init.d/mpd restart, tun können.

Jetzt ist der Daemon schonmal erreichbar. 🙂

User und Verzeichnisse

Vom MPD wird der gleichnamige User, „mpd“, direkt bei der Installation angelegt. Auch dieser wird erst mal vorgegeben, in der Konfiguration. Wenn man diesen also ändern will, kann man das mit der Option „user“ machen.

Nun könnte man einen User anlegen, der *nur* das Recht hat, auf /etc/mpd.conf und /var/lib/mpd zuzugreifen… oder oder oder. 😉

Verzeichnisse

Wie schon zuvor erwähnt, liegen die Dateien des MPD per „default“ in /var/lib/mpd/(music,playlists,tag_cache,state). Auch dies könnte man nun ändern, beispielsweise um die Musiksammlung direkt einzuspielen, ohne den Ort eben dieser zu ändern. In der Konfiguration vom MPD steht hierführ „music_directory“, und für die Playlists „playlist_directory“. Als beispiel dient hier jetzt einfach mal /home/user/Musik:

MPD mal wieder neustarten, und schon ist auch dies erledigt. Glückwunsch! 🙂

Passwort für die Verbindung definieren.

Innerhalb der Konfiguration gibt es einen Abschnitt, der mit „Permissions“(Berechtigungen) betitelt wird. Hier finden sich die Elemente „password@“ und „default_permissions“. Derer wollen wir uns jetzt annehmen.

Beschränkungen: Mit denen können wir bestimmte User, bzw. Passwörter, im Zugriff limitieren. Folgende Beschränkungen gibt es: read,add,control,admin. Jedes einzelne Element sollte für sich selbst sprechen(Read=Lesen, Add=Hinzufügen von Elementen, Control=Pause/Play/Next/Previous, Admin=Tags erneut generieren, Verzeichnisse ändern, Tag-Cache neu laden, Playlists erstellen(Also der „root“ 😉 ).

„password@“: Dies definiert ein Profil für den Zugang. Die Syntax ist folgende: „password@permissions“. Beispiel: „Testpw123@read,add,control,admin“, wobei „Testpw123″(Verständlicherweise) das Passwort ist. So kann man dann auch mehrere Profile anlegen:

Jedes dieser „Profile“ sind nach einem weiteren Neustart des MPDs zugänglich.

„default_permissions“(Standardzugriffsberechtigungen) sind für alle User, die sich ohne Passwort anmelden, gleich. Hier kann man den „Besucher“ definieren, und ihm bestimmte rechte geben, oder entziehen.<neustart /> 😛

Wie’s demnächst weiter geht…

Demnächst wird wohl noch eine »Anleitung« kommen, die ich wohl mit den Themen Playlist(Generieren), Audio Ausgangskonfiguration und Buffern füllen werde. Stay tuned, also 😉

MfG

@TODO für Juni: i3 config, mpd config…

Moin!
Ich dachte mir mal, gerade weil meine Aktivität aktuell hier ziemlich … äh … »low« ist, werde ich mir hier eine TODO auferlegen. Diese sieht folgendes Format vor:

Artikelname: @TODO für $Monat – $Todopunkt1, $Todo2punkt2 …
Inhalt:
* Listenpunkt1 (Priorität – High, normal, low)
* Listenpunkt2 (High).
Nun, dann lasst mich beginnen!


@TODO für Juni: i3 config, mpd config…

* i3 Konfiguration erklären und veröffentlichen(high)
* MPD Konfiguration veröffentlichen(low)
* C++-Stringklasse(Selbst implementiert) veröffentlichen(normal)
* C++ Operatorenüberladung(Artikelserie)(normal)
* PHP Verschlüsselungsimplementationsbeispiele(Bsp. eigene Hashtrennungen und Syntaxen).(low)

ncmpcpp: Ein Wrapper mit Curses Interface für MPD

ncmpcpp ist ein Wrapper für MPD, der aus dem Projekt ncmpc hervorgegangen ist. Es kommt daher mit einer angenehmen Curses Umgebung und lässt sich auch per Kommandos steuern, ohne ihn direkt aufzurufen.

Da es, wie bereits erwähnt, ein Wrapper ist, hat es natürlich ein paar Vorteile. So kann man, ohne ncmpcpp selbst zu starten, über das Skript direkt Lautstärken regeln, entfernte MPDs ansteuern und Tastenbelegungen erstellen(Dies wird in der Datei ~/.ncmpcpp/keys.config erledigt). Ich halte es für eine Qual, dort alles einzustellen, besonders weil diese nur laufen, wenn ich in der entsprechenden Shell arbeite, wo ncmpcpp läuft.

Ein paar Beispiele

Natürlich dürfen hier keine Beispiele fehlen. Ich beginne mit dem Grundsätzlichsten, der Lautstärke. So kann man sie erhöhen:

erhöht die Lautstärke um genau 5%. Indem wir das Pluszeichen zu einem Minus migrieren, wird die Lautstärke vermindert.

Um dem MPD über ncmpcpp zu starten/Stoppen/Pausieren, wird ein ganz Simples, Intuitives Kommando genutzt:

Falls man nun ncmpcpp über(beispielsweise) einem Skript ansteuern will, und das selbe Kommando nutzen will, um zu Starten oder zu Pausieren, wird einem die Option „toggle“ gegeben.

Die Konfiguration

Die Konfiguration von ncmpcpp beginnt zuallererst damit, indem man sich die Konfiguration von ncmpcpp in

kopiert. Falls man es, beispiesweise unter Debian, über APT installiert hat, kann man es sich aus

entpacken. In der Kommandozeile wäre folgendes eines der funktionierenden Szenarieren:

Natürlich ließe sich dies auch über einfaches Copy&Paste und, wenn man möchte, entpacken im File-Manager machen.
Aber was wäre daran „the Debia way“? 😉

Da wir uns nun bereitgemacht haben, können wir mit der Konfiguration beginnen. Standardmäßig sollte man die Adresse und Ports des MPDs anpassen, der erreicht werden soll, oder, wenn man möchte, den Lokalen Standardport beibehalten. Jenachdem, wie der MPD konfiguriert wurde.

Da ich meinen auf eine Adresse im Netzwerk konfigurierte, muss ich den natürlich eintragen. Der entsprechende Teil der konfiguration kann so aussehen:

Nun sollte der ncmpcpp laufen. Die entsprechende Konfiguration von MPD gehe ich hier an, sobald ich wieder Zeit zum schreiben finde. 🙂

Cya.

Schnell Erwähnt VIIII: Linktipp für den "nicht-sysadmin"

Da ich gerade mal wieder kurzzeitig Lust hatte, im Forum von OSBN vorbeizuschauen. Ein Bloginhaber meldete sich dort und, nach eingehender Betrachtung der Seite, ist mir aufgefallen, dass der Schreiber dort doch sehr auf lange Beiträge besteht, was durchaus nichts negatives ist. Er führt viele Sachen aus, hat meiner Meinung nach einen guten Schreibstil und scheint auch Kompetenz zu besitzen.

Nach langer Geheimhalterei, hier der Link zur Seite: 3Towers Blog 😛

i3: Ein Tiling WM – Screenshots und Eindruck

Huhu,
nachdem ich erst letztens über Notion schreiben wollte, kam von einem der Autoren von crunchWeb* per Jabber der Hinweis auf i3-wm hier an.

i3 ist ein sogenannter Tiling Window Manager(WM) für Unix-artige Systeme(Worunter bekannterweise Debian auch fällt).
Nach meinem persönlichen Geschmack ist der i3 nicht groß anders als Notion. Der einzige (Positive) unterschied scheint mir hier i3status, welches die Statusleiste im i3 darstellt. Über diese ist es möglich, sich verschiedenstes Zeug anzeigen zu lassen:

  • DHCP Läuft: Ja/Nein
  • IPv4 Verbindung: Ja/Nein
  • IPv6 Verbindung: Ja/Nein
  • Bei beiden IP-Versionen ist es zudem möglich, IP-Adresse und (Prinzipielle-)Geschwindigkeit des Anschlusses anzuzeigen
  • Überwachung von spezifischen(selbst definierten) Netzwerkverbindungen(Beispielsweise VPN, Tethering, SSH…)
  • …weiteres auf der Manpage
  • Der konfiguration von i3 selbst werde ich mich erst später widmen(können), werde dies entsprechend in einem separaten Artikel tun. 😉

    Ein Screenshot meines aktuellen Bildschirms(Hintergrund durch feh):
    i3-screenshot-wp-01

    Bildschirm mit mehreren urxvtc-Shells:
    i3-screenshot-wp-02

    … weitere der zahlreichen Features sind: Virtuelle Arbeitsflächen, Arbeitsflächen umbenennen, eigene dmenu Umsetzung(Läuft schneller als dmenu selbst), optional dmenu selbst, Konfigurieren von Shortcuts, anpassen von Aussehen(Farben der i3status-leiste, Breite der Fenstertrenner(im Screenshot sind die entfernt), Farben von Windowtabs usw.).

    Mein persönlicher Eindruck ist sehr Positiv. Es wird kaum unnötiger Schnickschnack geladen, die Performance ist selbst auf sehr alten Rechnern nahezu unschlagbar(Ein Acer Notebook, TravelMate 292LCi mit auf 1 GB aufgestocktem RAM), denn es läuft dauerhaft flüssig. Natürlich muss ich hier auf Komfort verzichten, aber der hat mir ehrlich gesagt auch nicht gefehlt. 🙂

    Der Artikel mit der konfiguration folgt in bälde! 😉

    Grüße