DVI/HDMI/VGA Signal abtasten und speichern

Gast #2477773
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
Gast #2477807
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).
Gast #2478460
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
Gast #2567967
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 :-)
Gast #2567986
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.
#2568004
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
(Firma: Projektleiter Medizinsoftware) #2733905
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.
#2733965
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren