Forum: PC Hard- und Software DVI/HDMI/VGA Signal abtasten und speichern


von Arno N. (Gast)


Lesenswert?

Hallo Mikrocontroller-Gemeinde,

ich programmiere der Zeit ein Anti-Cheat Tool für Counterstrike: 
1.6/Source!
Ich mache mir viele Gedanken, wie man eine unknackbare 
Screenshotfunktion realisieren könnte. Da ich mit der Materie µC und 
Elektronik auskenne(Kenntnisse sind halt vorhanden.:P), habe ich da an 
eine Blackbox zwischen PC und Monitor gedacht, die außerdem über einen 
USB-Port verfügt, der mit dem PC verbunden werden muss.

Jetzt stelle ich mir vor, dass ein Signal vom PC zur Blackbox geht und 
dort einmal kurz die aktuellen Pegel an den Ausgängen gespeichert werden 
und an den PC übertragen werden, wo sie dann in eine JPG-Datei 
umgewandelt wird.

Bis hierhin komme ich denke ich alleine, aber jetzt. :P

...

Ist das überhaupt so möglich wie ich mir das vorstelle?
Sind irgendwelche Signale verschlüsselt?
Kann ich überhaupt die Pegel wieder in eine JPG Datei umrechnen? Wenn 
ja, jemand ne Idee wie?
Das Anticheat-Tool ist in .net geschrieben


Liebe Grüße Kevin

: Verschoben durch Admin
von Jaromir (Gast)


Lesenswert?

Du brauchst einen FrameGrabber. Mit einer fertigen Karte bist Du am 
schnellsten fertig, aber ich denke, dass es dort auch einen Copy-Schutz 
gibt. Der ist - wie im Audiosignal - eincodiert. ("copy bit")

Daher muss man sich sowas selber bauen. FPGA mit DVI-Input-Karte (Chip + 
Video-ADC) und dann das timing interpretieren. Ist nicht so schwer. Über 
USB kriegt man das dann auch wieder in den PC und zwar volldigital ohne 
Verluste.

Am Einfachsten müsste es mit einer alten digitalen Video-Karte gehen, 
denn die hatten sicher noch keinen Kopierschutz. Mit denen konnte man 
digitales Fernsehen direkt aufzeichnen und auch das, was die VGA-Karte 
geschickt bekommt.

Oder, Du schnappst Dir das Signal voll analog, 5-kanalig (r,g,b, hs,vs), 
musst dann Du halt das timing selber machen. Es bliebe da noch der 
S-Video-Stecker - je nachdem, was den Rechner ausgibt. Das sind nur 3 
Signale glaube ich (Video composite).

von Arno N. (Gast)


Lesenswert?

Hallo,

danke erstmal für deine schnelle Antwort!

Voll Analog gibt es aber doch nur bei dem VGA-Stecker oder nicht?

Wie genau rechne ich das ganze denn wieder in ein JPG Bild zurück? Die 
BITS in den PC bekommen ist nicht das Problem, denke ich.
Jedoch was mache ich, wenn ich in einer Variable jetzt die Daten habe? 
Wie zaubere ich mir daraus wieder ein Bild?

Liebe Grüße Kevin

von Thomas (Gast)


Lesenswert?

Es gibt eine Reihe von Bildverarbeitungsprogrammen, die Rohdaten lesen 
und als JPG abspeichern können. Wenn Du einen frame grabber oder eine 
Videokarte hast, bekommst du aber schon einen video stream.

Wenn Du ein Copyproblem bekommst:

Mit einem VGA auf Videowandler einen Videorekorder ansteuern und dann 
das so analog gespeicherte Signal mit einer Videokarte lesen. Die alten 
Videorecorder wissen nichts von copy bits :-)

von g457 (Gast)


Lesenswert?

Zwei Problemchen gibts noch zu lösen: HDCP und die Datenrate. Ersters 
dürfte ein technisches K.O. sein wenn sich die Anwender beschweren, dass 
sie ihre geliebten blauen Scheiben nicht mehr kucken können. Zweiteres 
ist bei einem einzelnen Bild natürlich kein Problem. Wenns aber mal 
'Video' sein soll, dann kommen da schnell mal 400MiB/s zusammen, das 
will erst mal gewuppt werden.

Achja und ich hätte hier auch schon einen "Lösung" für Deine unknackbare 
Anti-Cheat-Screenshot-Funktion - dürfte wesentlich einfacher zu 
implementieren sein als Dein Tool: man nehme zwei Monitösen, in des 
einen Zuleitung hängt man Deine Blackbox, die andere schließt man direkt 
an. Sodann lässt man die Ausgabe zweifach rendern, einmal ganz normal 
und einmal aufgehübscht extra für Dich.

Nix für ungut.

von Frank K. (fchk)


Lesenswert?

Kevin J. schrieb:

> Ich mache mir viele Gedanken, wie man eine unknackbare
> Screenshotfunktion realisieren könnte. Da ich mit der Materie µC und
> Elektronik auskenne(Kenntnisse sind halt vorhanden.:P), habe ich da an
> eine Blackbox zwischen PC und Monitor gedacht, die außerdem über einen
> USB-Port verfügt, der mit dem PC verbunden werden muss.

Schau Dir mal den AD9888 von Analog Devices an:

http://www.analog.com/en/audiovideo-products/analoghdmidvi-interfaces/ad9888/products/product.html

Der ist auch auf diversen KVM-Over-IP Karten drauf und dafür gemacht, 
ein VGA-Signal zu digitalisieren. Das wäre also schon einmal das 
passende Frontend. Kopierschutz oder so gibt bei VGA nicht.

Der AD9888 liefert Dir 24 Bit RGB-Daten plus HSYNC/VSYNC mit Pixelraten 
von bis zu 200 MHz (je nach Auflösung und Bildwiederholrate, bis UXGA 
(1600*1200@75 Hz)), die Du dann in ein entsprechend schnelles RAM 
ablegen musst. Das sind dann 600 MB an Daten pro Sekunde, wobei Du ja 
nur einen Frame brauchst. Aber da Du Dich mit Elektronik auskennst, 
sollte das für Dich dann kein Problem mehr sein.

Bei DVI ohne HDCP ist halt das Frontend ein anderes.

Viel Spaß noch.

fchk

von amir (Gast)


Lesenswert?

speichere deine rgb samples in eine datei und verpasse ihnen einen pnm 
header (ansi-c implementierung -> http://netpbm.sourceforge.net/). dann 
hast du ein raw image welches du z.b.: mit imagemagick komprimieren 
kannst.

e.g.:

$ echo -e "P6\n1024 768\n255" > header
$ cat header grabbeddata > frame.pnm
$ convert frame.pnm frame.jpg

von Kevin Janssen (Gast)


Lesenswert?

Hey,
danke für die ganzen Antworten. :)

Ich werd mir alles mal genau durchlesen und dann mal schauen, wie ich 
was umsetzen kann. :)


Vielen Dank! :)

von Robert K. (Firma: Medizintechnik) (robident)


Lesenswert?

Was gäbe es diesbezüglich an FPGA-basierten Karten? Der Chip von AD 
konvertiert ja nur das timing auf ein RAM Interface, was sich mit jedem 
AD-Board+PLd auch machen liesse. Danach brauchte man noch einen MCU der 
die Daten zum Rechner schickt.

Lieber wäre mir eine kleine FPGA-Karte mit DVI-Digitaleingang, die 
direkt an den PC angeschlossen werden kann, idealerweise über USB. Kennt 
da jemand was?

Oben wurde Phytec erwähnt, jedoch scheinen die nur DSP Karten zu haben.

von Christian R. (supachris)


Lesenswert?

Da brauchst du aber einen richtig großen FPGA dann. HDMI basiert auf DVI 
und da hast du mehrere serielle Hochgeschwindigkeits-Kanäle. Es gibt ein 
Board mit Spartan 6 und 2 DVI Schnittstellen, damit haben die den HDCP 
Koierschutz umgangen. Das wäre ein Anfangspunkt. Aber für 8 HDMI 
Schnittstellen brauchst du ja schon 24 MultiGigabit Receiver, das ist 
dann schon ein recht großer und teurer FPGA.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.