Eine Datei die sich anpasst
Gerade eben habe ich einen kleinen PHP Skript geschrieben, der sich selbst als Bild einbindet. Das klingt etwas seltsam aber veranschaulicht das Prinzip der Content Negotiation sehr gut.
Content Negotiation ist kurz gesagt ein Verfahren, bei dem ein Client und Server das Format der Antwort auf eine Anfrage aushandeln. Der Client gibt seine Vorlieben nach Priorität geordnet an und der Server tut sein Bestes um das bevorzugte Dateiformat zu liefern.
Hier der PHP-Code (image.php):
<?php
$accept = $_SERVER['HTTP_ACCEPT'];
if (stristr($accept, ‘html’)) {
echo ‘<html><body><h1>Bild</h1>’;
echo ‘<img src=”image.php” /><br/>’;
echo ‘Accept: ‘ . $accept . ‘</body></html>’;
} else {
header(“Content-type: image/png”);
$string = $accept;
$im = imagecreatetruecolor(512,64);
$orange = imagecolorallocate($im, 220, 210, 60);
$px = (imagesx($im) – 7.5 * strlen($string)) / 2;
imagestring($im, 3, $px, 9, $string, $orange);
imagepng($im);
imagedestroy($im);
}
?>
Der Script ließt die Servervariable “HTTP_ACCEPT”, in der der Inhalt des empfangenen “Accept”-Headers enthalten ist z.B “text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8″. Wenn dieser “html” enthält wird eine HTML-Seite ausgegeben, in der mit dem “<img>”- Tag die Seite selbst (“image.png”) eingebunden wird. Beim Einbinden als Bild sendet der Browser dann aber einen anderen Accept-Header z.B. “image/png,image/*;q=0.8,*/*;q=0.5 “, was bedeutet, dass der Browser ein Bild erwartet. In dem Fall ist dann “html” nicht in dem String enthalten und der PHP-Script bastelt ein kleines Bild zusammen, was er anschließend zusammen mit dem entsprechenden Content-type (“image/png”) ausgibt.
Auf diese Weise kann man zwischen vielen verschiedenen Dateiformaten unterscheiden und zum Beispiel auch RDF-Daten ausgeben, wenn diese angefordert werden.
Phishing with mTAN (German)
Zu meinem Beitrag über die neuen TAN-Verfahren der Sparkasse “Umstellung auf chipTAN/smsTAN” kann ich jetzt auch einen Exploit liefern. Wie heise unter Berufung auf McAfee gestern berichtete gibt es einen Trojaner, der sich über phishing Zugang zum Konto des Opfers verschafft. Damit ist ein Ziel der Umstellung auf mTAN, eine Maßnahme gegen phishing, wohl gescheitert.
Split PDF pages
At the moment I’m learning for an examine where the slides of the lecture are available in PDF. These documents contain two slides per page, but I want to learn with the presentation mode of my PDF reader. Because I couldn’t find a Tool which is able to split pages I had to write an own script in python with pyPdf. I never programed python before but it works. I have just adopted the example from pyPdf.
# based on EXAMPLE from http://pybrary.net/pyPdf/
import sys
from pyPdf import PdfFileWriter, PdfFileReader
output = PdfFileWriter()
input1 = PdfFileReader(file(sys.argv[1], "rb"))
input2 = PdfFileReader(file(sys.argv[1], "rb"))
# print the title of document1.pdf
print "title = %s" % (input1.getDocumentInfo().title)
# print how many pages input1 has:
print "document1.pdf has %s pages." % input1.getNumPages()
for x in range(input1.getNumPages()):
# add page 5 from input1, but crop it to half size:
page1 = input2.getPage(x)
page1.mediaBox.lowerRight = (
page1.mediaBox.getUpperRight_x(),
page1.mediaBox.getUpperRight_y() / 2
)
output.addPage(page1)
page2 = input1.getPage(x)
page2.mediaBox.upperRight = (
page2.mediaBox.getUpperRight_x(),
page2.mediaBox.getUpperRight_y() / 2
)
output.addPage(page2)
# finally, write "output" to document-output.pdf
outputStream = file("document-output.pdf", "wb")
output.write(outputStream)
outputStream.close()
You can call this script with the PDF file as sole argument. The problem is, that the output documents are twice as big as the input document because it doubles the pages and just crops the media MediaBox. Do what you can with this script.
Ein bisschen Märme ist gut

Finde den Fehler
(Gesichtet in Leipzig)