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
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).
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
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 :-)
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.
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
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
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! :)
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.