Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
IGE-XAO
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

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

Gelip 09 Jan 2012 14:18 3306 4
  • #1
    Gelip
    Level 32  
    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.
    Ethernet jednoparowy (SPE) - rozwiązania w przemyśle. Szkolenie 29.09.2021r. g. 11.00 Zarejestruj się za darmo
  • IGE-XAO
  • #2
    szafarz
    Level 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.
  • IGE-XAO
  • #4
    Gelip
    Level 32  
    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:
    Quote:
    Собственно, первоначальная идея состояла в том, чтобы:

    * соединить 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 :-)
  • #5
    Gelip
    Level 32  
    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?