Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Jak odebrać dane ekranu BIOS'u przez kabel LPT na drugim komputerze?

Gelip 09 Sty 2012 14:18 2802 4
  • #1 09 Sty 2012 14:18
    Gelip
    Poziom 28  

    Jak wiadomo w większości BIOS'ów po wciśnięciu przycisku PrintScreen tekstowa zawartość ekranu jest wysyłana na port LPT i jeśli mamy podłączoną drukarkę LPT to można to wydrukować. Była o tym mowa w tym temacie. Mnie interesuje natomiast czy dałoby się zrobić tak, aby przechwycić te dane na drugim komputerze za pomocą kabla LPT i wyświetlić. Jaki to musiałby być kabel, prosty czy z przeplotem? Powiedzmy, że na komputerze odbiorczym działa Win95 lub DOS aby dostęp do portów był bezpośredni. Połączyłem komputery kablem nullmodem RS232 i uruchomiłem jeden z dyskietki startowej Win95 a drugi w trybie MS-DOS systemu Win95 tak aby na obu komputerach było dostępne polecenie MODE.COM. Następnie przekierowałem port LPT na COM w DOS'ie na komputerze docelowym (odbierającym dane):

    Code:
    mode lpt1=com1
    ale to nie działa. Odwrotnie, tzn. gdy uruchomimy zamiast BIOS'u - DOS na komputerze źródłowym (wysyłającym dane) i skonfigurujemy go w ten sposób:
    Code:
    mode com1:9600,n,8,1,p
    
    mode lpt1=com1

    a na komputerze docelowym (odbierającym dane) uruchomimy np. HyperTerminal to po wciśnięciu PrintScreen w pierwszym komputerze zawartość jest wysyłana na drugi komputer i wyświetlana w terminalu. Na rosyjskiej stronie znalazłem sposób z zapisem zrzutu ekranu na dyskietkę ale w tym celu trzeba chyba najpierw modyfikować BIOS.

    0 4
  • #2 10 Sty 2012 00:59
    szafarz
    Poziom 18  

    Jeżeli PrintScreen rzeczywiście drukuje do lpt to można je odebrać, ale:
    1. Trzeba zrobić specjalny kabel - nie ma kabli prosty/przeplot w lpt.
    2. Trzeba napisać specjalny program, który będzie dane odbierał.

    Sprawa nie jest banalna i (moim zdaniem) nie warta zachodu - prościej jest użyć telefonu/kamery/aparatu.

    0
  • #3 10 Sty 2012 06:22
    Aseri15
    Poziom 28  

    Dokładnie jak wyżej.

    0
  • #4 10 Sty 2012 10:59
    Gelip
    Poziom 28  

    To nie może być aż tak trudne chyba - tu chodzi raczej o brak informacji na ten temat a nie o nieopłacalność. W artykule do którego link podawałem, niejaki xKVtor próbował właśnie początkowo zrobić zrzut w ten sposób i jak wynika z opisu zrobił taki kabel i napisał program:

    Cytat:
    Собственно, первоначальная идея состояла в том, чтобы:

    * соединить 2 компьютера спец. кабелем;
    * зайти на 1-м в сетап биоса;
    * запустить на 2-м специальную программу, эмулирующую поведение принтера;
    * нажать на 1-м компьютере клавишу <Print Screen>;
    * эмулятор принтера на 2-м компе получает изображение и сохраняет его в графический файл.

    Выглядит заманчиво. Но пока я разобрался со всеми возможными режимами работы LPT-портов (для того, чтобы написать программу-эмулятор), пока спаял кабель для связи компов, весь мой экспериментаторский пыл поугас. К тому же выяснилось, что изображение на принтер передается в черно-белом виде.





    Pisze tu, że wyjaśniło się, że obraz z BIOS'u jest przesyłany do drukarki w kolorze czarno-białym. W temacie na elektrodzie do którego link podawałem elektryk po podłączeniu drukarki HP LJ-5 do płyty z BIOS'em AWARD otrzymał taki wydruk. Wynika z tego, że jest to zwykły tekst DOS ASCII. Sprawdziłem to w VMWare 5.5.0 z BIOS'em Phoenix i działa bez problemu. Trzeba tylko dodać port LPT i ustawić przechwytywanie do pliku tekstowego np. lpt.txt w wirtualnej maszynie. Po wejściu do BIOS'u i wciśnięciu PrintScreen dane tekstowe aktualnie wyświetlanego ekranu trafiają do określonego wcześniej pliku (lpt.txt). Jest to czysty tekst ASCII a plik ma wielkość 2054 bajty.
    Code:

                               PhoenixBIOS Setup Utility                           
        Main     Advanced     Security     Power     Boot     Exit                 
                                                                                   
                                                             Item Specific Help     
        System Time:                  [19:06:53]                                   
        System Date:                  [01/23/2012]                                 
                                                           <Tab>, <Shift-Tab>, or   
        Legacy Diskette A:            [1.44/1.25 MB  3 "]  <Enter> selects field.   
        Legacy Diskette B:            [Disabled]                                   
                                                                                   
      > Primary Master                [VMware Virtual ID]                           
      > Primary Slave                 [None]                                       
      > Secondary Master              [VMware Virtual ID]                           
      > Secondary Slave               [None]                                       
                                                                                   
      > Keyboard Features                                                           
                                                                                   
        System Memory:                640 KB                                       
        Extended Memory:              228352 KB                                     
        Boot-time Diagnostic Screen:  [Disabled]                                   
                                                                                   
                                                                                   
                                                                                   
      F1   Help       Select Item   -/+    Change Values       F9   Setup Defaults 
      Esc  Exit       Select Menu   Enter  Select > Sub-Menu   F10  Save and Exit   


    Prawdopodobnie wciśnięcie przycisku PrintScreen w BIOS'ie powoduje zrzut pamięci ekranu w trybie tekstowym od adresu B800. Można to sprawdzić nawet w WinXP w linii poleceń, wpisując kod:
    Code:
    debug
    
    -d b800:0
    B800:0000  4D 07 69 07 63 07 72 07-6F 07 73 07 6F 07 66 07   M.i.c.r.o.s.o.f.
    B800:0010  74 07 20 07 57 07 69 07-6E 07 64 07 6F 07 77 07   t. .W.i.n.d.o.w.
    B800:0020  73 07 20 07 58 07 50 07-20 07 5B 07 57 07 65 07   s. .X.P. .[.W.e.
    B800:0030  72 07 73 07 6A 07 61 07-20 07 35 07 2E 07 31 07   r.s.j.a. .5...1.
    B800:0040  2E 07 32 07 36 07 30 07-30 07 5D 07 20 07 20 07   ..2.6.0.0.]. . .
    B800:0050  20 07 20 07 20 07 20 07-20 07 20 07 20 07 20 07    . . . . . . . .
    B800:0060  20 07 20 07 20 07 20 07-20 07 20 07 20 07 20 07    . . . . . . . .
    B800:0070  20 07 20 07 20 07 20 07-20 07 20 07 20 07 20 07    . . . . . . . .
    -
    Polecenie wyświetla dokładnie to samo co jest na ekranie w oknie cmd na samym początku.
    Napisałem na tamtejszym forum oraz priva do xKVtor o schemat kabla i program.

    P.S. Jeśli chodzi o sposób z dyskietką to działa bez problemu w MS VirtualPC 2007 (bios AMI). Skompilowałem plik s2f_001.asm za pomocą TASM 5.0, wyciąłem z otrzymanego pliku s2f_001.EXE blok 512 bajtów zaczynając od sygnatury 55AA, poprawiłem sumę kontrolną na 00 i podmieniłem moduł 13502.bin w VirtualPC 2007. Za pomocą Virtual Floppy Disk zmieniałem dyskietki wirtualne. Po wejściu do BIOS VPC należy wcisnąć PrintScreen 2x (czerwona dioda na ikonie dyskietki powinna mignąć też 2 razy)
    Jak odebrać dane ekranu BIOS'u przez kabel LPT na drugim komputerze?
    Niestety z dwoma innymi moimi płytami głównymi (BIOS AWARD) działa tylko w DOS'ie lub w momencie wyświetlania konfiguracji PCI:
    Jak odebrać dane ekranu BIOS'u przez kabel LPT na drugim komputerze?
    Po dodaniu nagłówka (czytaj to) Plug and Play ($PnP) nadal to samo.
    Znalazłem też świetny programik do robienia zrzutów ekranu pod DOS'em - SNARF. Po uruchomieniu ładuje się do pamięci RAM. Po wciśnięciu kombinacji klawiszy Alt+S możemy zapisać zawartość ekranu na dysk lub dyskietkę (program chyba sam wykrywa gdzie może zapisać) jako bitmapę (plik BMP) w kolejnych plikach. Autor udostępnia program wraz z kodem źródłowym w asemblerze (SNARF.ASM). Fajnie by było wstawić taki program do BIOS'u :-)

    0
  • #5 18 Paź 2013 23:00
    Gelip
    Poziom 28  

    Wprawdzie temat dotyczy odbioru przez kabel LPT ale należy tutaj wspomnieć o możliwości odbioru przez port COM i kabel nullmodem - czytaj to. Udało mi się to z BIOS'em AWARD na płycie głównej Gigabyte GA-K8NE:
    Jak odebrać dane ekranu BIOS'u przez kabel LPT na drugim komputerze? Jak odebrać dane ekranu BIOS'u przez kabel LPT na drugim komputerze?
    a także na Abit BF6 oraz po podmianie romu karty graficznej w MS VPC 2007:
    Jak odebrać dane ekranu BIOS'u przez kabel LPT na drugim komputerze?

    Co więcej - dzięki SGABIOS można nie tylko wyświetlać dane ale również sterować zdalnie :-)

    Swego czasu AWARD oferował Preboot Management Solutions - rozszerzenie BIOS'u wielkości 9KB umożliwiające zdalne sterownie ustawieniami CMOS.
    Istnieją także produkty z BIOS'em AWARD które mają zaimplementowaną taką funkcję np. Watchguard Firebox X lub ADLINK cPCI-6841
    Jak odebrać dane ekranu BIOS'u przez kabel LPT na drugim komputerze?

    0