Czy mogę zapisać te dokumenty na umierającej maszynie przed zapomnieniem?

49

Najpierw spowiedź: nie, nie zrobiłem kopii zapasowych, które powinienem mieć.

Po drugie, sytuacja:

Mam Dell XPS 9550 z dyskiem SSD z Fedorą 25 .

Pracowałem nad plikiem i próbowałem go zapisać, gdy powiedziano mi, że próbuję zapisać w systemie plików tylko do odczytu . Okazuje się, że mój system plików jest teraz tylko do odczytu i wszędzie są błędy we / wy .

Udało mi się zapisać niektóre pliki, wysyłając je e-mailem do siebie przez otwartą przeglądarkę internetową, ale to się zawiesiło i nie mogę go ponownie uruchomić. Ale nadal mam pliki zainteresowania otwarte w edytorze. Nie mogę nigdzie zapisać plików, ale mogę skopiować ich zawartość. Gdybym tylko znalazł sposób na eksfiltrację zawartości pliku, mógłbym zaoszczędzić miesiące pracy.

Ale istnieją pewne okropne ograniczenia. Próbowałem włożyć dysk USB, ale żadne urządzenie go nie reprezentuje, a mountpolecenie umiera z powodu awarii. Mogę spróbować ssh do innego komputera, ale dostaję „błąd magistrali” i umiera. ping, dmesg, ifconfigŻadna z tych prac. Ale mam vimi lessi lsi może pojawiać nowe bashinstancje.

Nie lynx, nie firefox, nie google-chrome. Nie ma napędu DVD.

Zasadniczo wygląda na to, że mój dysk SSD zmarł. A może cała płyta główna. Wciąż mam w pamięci dokumenty o dużej wartości, mam adres IP i połączenie sieciowe, mogę uruchomić kilka losowych poleceń i mieć 3500 więcej na ścieżce, którą mógłbym wypróbować.

cati gccwydaje się, że działa. Mogę pisać do plików w / tmp. Mam działającą ipythoninstancję, która nadal działa.

Więc ... to, co próbowałem do tej pory, zawiodło. Ale czuję, że wciąż istnieje tysiąc możliwości. Czego nie rozważam? Jak mogę usunąć te pliki z mojego umierającego komputera?

Musi być jakiś sposób.

AKTUALIZACJA : Nowe rzeczy:

  • Utraciłem połączenie sieciowe z powodu mojej własnej głupoty.
  • Napisałem skrypt Pythona do zastąpienia cpicp -r
  • O ile nie znajdę jakiegoś sposobu na utworzenie /devwpisu dla karty SD lub napędów USB, moim najlepszym sposobem na uzyskanie danych wydaje się być ekran i ewentualnie głośniki / kabel audio.
  • Piszę skrypt, aby spróbować odczytać pliki i wyświetlić, które z nich są czytelne.

Sugestie wciąż bardzo mile widziane!

AKTUALIZACJA 2 : Nowsze rzeczy:

  • Na umierającym komputerze napisałem skrypt w języku Python, który odczyta plik po kawałku i spróbuje przekazać te fragmenty poprzez flashowanie ekranu jednym lub drugim kolorem. Obecnie próbuje stworzyć dwubitowy kod, w którym czerwony, zielony, niebieski i biały reprezentują dwubitową parę. Jednak to nie działa tak dobrze, więc mogę po prostu przełączyć się na dwa kolory i zrobić po jednym.
  • Na moim drugim laptopie (zaufanym starym Thinkpadzie, który zrezygnowałem z tego nowego XPSa) napisałem skrypt, który czyta z kamery internetowej przy użyciu biblioteki OpenCV Python. Chodzi o to, aby dekodować kody wysyłane przez inny komputer. Problem polega na tym, że liczba klatek na sekundę z kamery wynosi około 15 klatek na sekundę, co oznacza, że ​​gdybym miał doskonały, bezbłędny transfer, moja maksymalna szybkość przesyłania danych wynosiłaby 30 bitów na sekundę, tj. 225 bajtów na sekundę. To 324 tys. Dziennie.
  • Na konającym XPSie mogę tarspakować pożądane pliki do jednego archiwum, które ma 1,7 MB. Niestety gzip, bzip2, xz, lzopi cokolwiek kompresji narzędzia są niedostępne. ALE za pomocą zlibmodułu Pythona mogę skompresować ten plik do 820 KB. Biorąc pod uwagę ten rozmiar, prawdopodobnie mógłbym wysłać tę rzecz w ciągu kilku dni.
  • Ponieważ ta metoda przesyłania prawdopodobnie będzie bardzo podatna na błędy, zamierzam zaimplementować kody Hamminga na XPS, aby dodać pewną korektę błędu podczas przesyłania danych.
  • Prawdopodobnie pojawią się komplikacje, ponieważ tak się dzieje, ale przynajmniej wydaje się, że w jakiś sposób jest możliwe uzyskanie tych danych!
  • Ponieważ nadal jest to dość podły sposób przesyłania danych, przyjrzałem się bardziej sterownikom szeregowym USB. Moduły Próbowałem załadować ( usb-serial-simple, usb-debug, safe-serial) daje błąd wejścia / wyjścia. Nie sądzę, żeby był wbudowany w jądro, ponieważ nie ma żadnych urządzeń / dev / ttyUSB *.

Dzięki za dotychczasowe sugestie - wiem, że to nie jest nawet dobrze zdefiniowane pytanie, ponieważ nie wiecie z góry, które programy / pliki można odczytać, czy nie. Nadal otwarte na lepsze sugestie niż to podejście wideo!

AKTUALIZACJA 3 : Najnowsze rzeczy

  • Mam kamerę internetową PS3 Eye i po wyłączeniu automatycznego wzmocnienia i ekspozycji z powodzeniem odczytuję dane z XPS, choć z błędem 1 bajta na sekundę. To wielki sukces --- pierwsze dane zostały wyekstrahowane! Ale tempo jest zbyt wolne, aby uzyskać 820 KB w rozsądnym czasie, a poziom błędu jest zbyt wysoki.

Jedna bitowa transmisja z zegarem

  • Problem polega na tym, że pisanie do terminala jest zbyt wolne. Aktualizacje ekranu nie są niczym natychmiastowym, dzięki (myślę) powolności urxvtemulatora terminala, do którego mam dostęp.
  • Odkryłem, że mam dostęp do kompilatora Rust na XPS. Przepisałem skrypt transmisji za pomocą Rust, aby sprawdzić, czy poprawi to szybkość odświeżania terminala, ale to nie pomogło.
  • Ponieważ raczej nie będę w stanie zwiększyć liczby klatek na sekundę, będę musiał zwiększyć ilość danych na ramkę. Moje obecne podejście wygląda mniej więcej tak:

transmisja sieciowa

Prawa połowa wciąż jest sygnałem zegarowym, miga i gaśnie, aby zaznaczyć nadejście nowych klatek. Ale lewa strona jest teraz siatką, w której każda komórka jest oznaczona czerwonym kwadratem w rogu, a następnie zielona komórka po prawej i w dół od czerwonego kwadratu jest włączana i wyłączana, aby wskazać nieco. Czerwone kwadraty powinny pozwolić komputerowi odbierającemu skalibrować lokalizację komórek. Nie mam jeszcze żadnych danych w ten sposób, ale nad tym pracuję.

  • Ktoś zasugerował, żebym zajął się pisaniem kodów QR zamiast tych ad hoc wzorców kolorów. Ja też przyjrzę się temu i być może zastosuję to zamiast tego podejścia gridowego. Korekta błędów byłaby dobrą wygraną, podobnie jak możliwość korzystania ze standardowych bibliotek do dekodowania.
  • Dowiedziałem się, że mam dostęp do libasound (biblioteki dźwięków ALSA), ale nie do plików nagłówkowych z nim powiązanych ( alsa/asoundlib.hlub cokolwiek innego). Jeśli ktoś wie, jak korzystać z biblioteki współużytkowanej bez nagłówków, lub może pomóc mi napisać odpowiedni nagłówek, aby umożliwić mi generowanie wyjścia audio, to mógłbym uzyskać dźwiękowy sposób na wydobycie plików.
  • Alternatywnie, jeśli ktoś mógłby mi pomóc w manipulowaniu urządzeniami USB bez dostępu do libusb, to może mógłbym coś z tym zrobić?

Idąc naprzód!

AKTUALIZACJA 4 : wyprodukowano wyjście audio!

Użytkownik Francesco Noferi wykonał świetną robotę, pomagając mi korzystać z biblioteki ALSA wspomnianej w poprzedniej aktualizacji. Kompilator C miał problem, ale używając kompilatora Rust mogłem użyć FFI do bezpośredniego połączenia libasound. Odgrałem teraz sporo moich danych przez dźwięk i to brzmi jak muzyka dla moich uszu! Nadal muszę ustanowić prawdziwy kanał komunikacji, ale mam nadzieję. W tym momencie moim zadaniem jest w zasadzie wdrożenie modemu, więc jeśli ktoś ma jakieś wskazówki na temat dobrych sposobów na zrobienie tego, jestem cały uszu. Idealna modulacja, którą łatwo wdrożyć ręcznie i demodulacja, do której istnieje istniejąca biblioteka, której mogę użyć. Ponieważ teoretycznie może to przebiegać bezpośrednio przez kabel audio, a nie przez sieć telefoniczną możemy zrobić znacznie lepiej niż 56 kb / s lub cokolwiek, co było w normie, ale w praktyce kto wie, co otrzymamy.

Dziękuję wszystkim, którzy śledzą tutaj i at / r / techsupportmacgyver i at / r / rust, którzy wnoszą tak wiele doskonałych sugestii. Wkrótce zaimplementuję ten „modem”, a potem skończę z epilogiem. Myślę, że mógłbym gdzieś umieścić swój kod, aby inni zdesperowani ludzie mogli z niego skorzystać w przyszłości - może nawet repozytorium dziwnych narzędzi do filtrowania, które można łatwo wpisać ręcznie w umierającą maszynę? Zobaczymy co się stanie.

AKTUALIZACJA 5 : Dużo czasu zajęło mi zmaganie się z ALSA i moim tanim urządzeniem przechwytującym audio StarTech USB (brak wbudowanej linii w odbierającym laptopie) i wielu fałszywych zaczyna próbować zrolować własny protokół transmisji, ale w końcu pod radą niektórych Moi entuzjaści krótkofalarstwa, moi przyjaciele, wdrożyłem protokół linii RTTY działający z prędkością 150 bodów, co w praktyce daje mi około 10 bajtów na sekundę. Nie jest super szybki, ale jest dość niezawodny. I prawie gotowe jest przesyłanie mojego pliku 820 KB, zweryfikowanego przy użyciu sum kontrolnych CRC32 (przy użyciu funkcji crc32 z Pythonazlibmoduł, do którego mam dostęp). Więc ogłaszam zwycięstwo i chcę jeszcze raz podziękować! Spędzę trochę więcej czasu na znajdowaniu kolejnych plików, które można odczytać i które mogę przenieść, ale podstawa jest już gotowa. Praca ze wami wszystkimi była fajna!

AKTUALIZACJA KOŃCOWA :

Na maszynie do umierania:

$ tar cf ./files
$ ./checksum.py ./files.tar 9999999
Part 1 checksum: -1459633665
$ ./zlib_compress.py ./files.tar
$ ./checksum.py ./files.tar.z 9999999
Part 1 checksum: -378365928
$ ./transmit_rust/target/debug/transmit ./files.tar.z
Transmitting files.tar.gz over audio using RTTY
Period size: 2048
Sample rate: 44100
Samples per bit: 294
Sending start signal.
Transmitting data.
nread: 2048
nread: 2048
...
nread: 2048
nread: 208
Transmission complete. Sending hold signal.

Na maszynie ratunkowej:

$ minimodem --rx -8 --rx-one -R 44100 -S 915 -M 1085 --startbits 3
            --stopbits 2 --alsa=1 150 -q > ./files.tar.z
$ ./checksum.py ./files.tar.z
Part 1 checksum: -378365928
$ ./zlib_decompress.py ./files.tar.z
$ ./checksum.py ./files.tar
Part 1 checksum: -1459633665

:-)

Josh Hansen
źródło
4
Powiązane:  Unix Recovery Legend .
G-Man mówi „Przywróć Monikę”
2
Przejdź do katalogu, w którym masz pliki, i wydaj polecenie python -m SimpleHTTPServer. Teraz udostępniasz pliki za pośrednictwem serwera HTTP na porcie 8000 . Otwórz przeglądarkę na innym urządzeniu w tej samej sieci i wpisz następujące polecenie: http://<IP address>:8000i zacznij pobierać wszystko, co możesz.
jcbermu
2
Świetny kawałek maniaków, który tu masz. Chciałbym móc głosować dwa razy.
Kamil Maciorowski
1
Co powiesz na schłodzenie pamięci RAM w celu zmniejszenia lotności i przeniesienie jej do alternatywnego XPS? en.wikipedia.org/wiki/Cold_boot_attack
root
1
Trochę nie na temat, ale byłoby wspaniale, gdybyś mógł powiązać powiązane wątki reddit, abyśmy mogli zobaczyć, co tam jest sugerowane.
Bob

Odpowiedzi:

15

oto przykładowy program libasound z wystarczającymi definicjami, aby uzyskać podstawowe 2-kanałowe wyjście wav 44,1k wav bez nagłówków.

EDYCJA: Właściwie nie jestem pewien, czy zwykłe zrzucenie danych jako wav działałoby, ponieważ szum podczas nagrywania mógłby łatwo je uszkodzić, ale prawdopodobnie możesz zrobić coś w rodzaju fali sinusoidalnej bitów o wysokiej częstotliwości, która jest bardziej niezawodna

EDYCJA 2: jeśli aplikacja jest obecna i działa, możesz jej również użyć i po prostu napisać program, który generuje surowy dźwięk i potokuje go do aplikacji lub cokolwiek, co może odtwarzać dźwięk

EDYCJA 3: zmodyfikowałem go, aby w ogóle nie używał żadnych nagłówków

jeśli -lasound się nie kompiluje, dodaj -L / path / where / libasound / is / location

/*
    gcc alsa_noheader.c -lasound
    cat stuff.wav | ./a.out
*/

typedef unsigned int uint;
typedef unsigned long ulon;

int printf(char*, ...);
void* malloc(long);
long read(int fd, void* buf, ulon count);

int snd_pcm_open(void**, char*, int, int);
ulon snd_pcm_hw_params_sizeof();
int snd_pcm_hw_params_any(void*, void*);
int snd_pcm_hw_params_set_access(void*, void*, int);
int snd_pcm_hw_params_set_format(void*, void*, int);
int snd_pcm_hw_params_set_channels(void*, void*, uint);
int snd_pcm_hw_params_set_rate_near(void*, void*, uint*, int*);
int snd_pcm_hw_params(void*, void*);
int snd_pcm_hw_params_get_period_size(void*, ulon*, int*);
long snd_pcm_writei(void*, void*, uint);
int snd_pcm_prepare(void*);
int snd_pcm_drain(void*);
int snd_pcm_close(void*);

int main(int argc, char* argv[])
{
    void* pcm;
    void* params;

    int rate;
    int nchannels;
    ulon frames;
    void* buf;
    int bufsize;
    long nread;

    snd_pcm_open(&pcm, "default", 0, 0);
    params = malloc(snd_pcm_hw_params_sizeof());
    snd_pcm_hw_params_any(pcm, params);

    /* 3 = rw_interleaved */
    snd_pcm_hw_params_set_access(pcm, params, 3);

    /* 2 = 16-bit signed little endian */
    snd_pcm_hw_params_set_format(pcm, params, 2);

    /* 2 channels */
    nchannels = 2;
    snd_pcm_hw_params_set_channels(pcm, params, nchannels);

    /* sample rate */
    rate = 44100;
    snd_pcm_hw_params_set_rate_near(pcm, params, &rate, 0);

    snd_pcm_hw_params(pcm, params);
    snd_pcm_hw_params_get_period_size(params, &frames, 0);

    bufsize = frames * nchannels * 2;
    buf = malloc(bufsize);

    /* read file from stdin */
    while (nread = read(0, buf, bufsize) > 0)
    {
        if (snd_pcm_writei(pcm, buf, frames) == -29)
        {
            printf("W: underrun\n");
            snd_pcm_prepare(pcm);
        }
    }

    snd_pcm_drain(pcm);
    snd_pcm_close(pcm);

    return 0;
}
Francesco Noferi
źródło
Głosowałem za tobą i myślę, że zasługujesz na mnóstwo uznania za to niesamowite podejście! Oto problem: dostaję błędy We / Wy we wszystkich czterech plikach dołączanych, których chcesz użyć. Więc muszę to obejść. Mogę przejść do wstępnego przetwarzania na drugim laptopie, ale to daje plik 63K, 11k zgzipowany. Jeśli uda mi się znaleźć sposób na uzyskanie danych w celu XPS to jest to wykonalne, ale nie jestem podekscytowany wpisując je ręcznie. Skompilowany plik ma rozmiar 10,4 KB lub 2,4 KB. Dochodzę do miejsca, w którym mógłbym wpisać go ręcznie, ale błędy byłyby trudne do wykrycia.
Josh Hansen
1
Zredagowałem program, aby w ogóle nie używał żadnych nagłówków, spróbuj tego
Francesco Noferi
gccdał mi „Błąd magistrali” (który pojawia się przy niektórych programach, ale tak naprawdę nie rozumiem.) Na szczęście mam kompilator Rust, który działa, więc korzystając z możliwości FFI Rust, zaimplementowałem twój kod powyżej za pomocą Rust. Kompiluje się i działa, ale wciąż nic nie słyszę. Ale nie jestem pewien, czy głośność jest większa - może być wyciszona. Ale nie mogę uruchomić alsamixer / xfce4-mixer, żeby to sprawdzić. Chcę bezpośrednio użyć alsalibu, aby upewnić się, że głośność jest większa. Dziękuję bardzo za twój wysiłek!
Josh Hansen,
1
miło słyszeć, że to działa! dla głośności, oto program, który wylicza domyślne ustawienia miksera urządzenia i maksymalizuje je wszystkie: gist.github.com/008f0c3acdbcae886a19868a0554987b . jeśli nadal masz problemy, być może będziesz musiał napisać coś, aby wyliczyć wyjścia audio i ich wpisy w mikserze, aby upewnić się, że naprawdę jest zepsuty, a nie tylko wyprowadzany na niewłaściwe / wyciszone urządzenie. może również spróbować dodać sprawdzanie błędów do programu wyjściowego audio, aby sprawdzić, czy to błąd. błąd magistrali oznacza „próbował uzyskać dostęp do pamięci, która prawdopodobnie nie mogłaby tam być”, więc być może uszkodzone biblioteki
mapowały
Okazało się, że głośność była większa, ale tak naprawdę nie wysyłałem żadnych bajtów do głośników --- jakoś nie rozumiem, jak wczytywane do bufora w Rust, zawsze czyta 0 bajtów. Ale używając niektórych zbudowanych przeze mnie bajtów byłem w stanie wytworzyć wyjście audio! To jest świetne, wydaje się, że jest to dobra droga do usunięcia danych w przyjemny, czysty sposób. Teraz nadszedł czas, aby dowiedzieć się o strategiach modulacji / demodulacji, abym mógł to zrobić inteligentnie. Bardzo dziękuję za twoją pracę nad tym - bardzo doceniam!
Josh Hansen
3

Czy działa Twój HDMI lub inny port wyjściowy? Jeśli tak, możesz użyć urządzenia do przechwytywania ekranu, aby nagrać je jako wideo i przetworzyć później. W ten sposób nie jest ograniczany liczbą klatek na sekundę kamery.

użytkownik169884
źródło
2

Co powiesz na kodowanie szesnastkowe danych i wysyłanie ich na stronę do terminala?

Możesz dodać przedrostek z przesunięciem w pliku binarnym, aby łatwo można było ponownie wygenerować stronę (do ręcznej korekty?)

Następnie na innym komputerze użyj oprogramowania OCR do zeskanowania stron.

Terminal 80x25 dawałby 1000 bajtów na stronę (minus trochę miejsca na prefiks). W przybliżeniu na 1000 stronach można uzyskać swoje dane. Nawet jedna strona na sekundę to mniej niż 20 minut.

Kodowanie szesnastkowe jest łatwe do napisania, a także zapewnia surową formę korekcji błędów (istnieje tylko 16 prawidłowych symboli).

Jan
źródło
1

czy możesz skonfigurować połączenie sieciowe? ssh może być trochę za dużo, ale jeśli możesz używać NetCata na 2 komputerach, możesz być w stanie przesyłać dane. jeden w trybie wysyłania, jeden w trybie słuchania. Jeśli wszystko, co musisz zrobić, to przesłać tekst, to „mogłoby” być rozwiązaniem.

edytuj: nieważne, po prostu przeczytaj, że straciłeś także połączenie sieciowe ..

Xzenor
źródło
1
Myślę, że twoja odpowiedź zasługuje na to, żeby tam być. ncnie ma żadnych innych zależności niż działający stos sieciowy, który miał OP, dopóki go nie wysadził. To drastycznie zmniejsza szanse, że plik wykonywalny się nie uruchomi. Jeśli ktoś napotka podobny problem, jest to zdecydowanie przydatne rozwiązanie.
zneak
0

Państwo może być w stanie wysłać do siebie z linii poleceń, w tym wysyłania plików.

Coś jak:

$ mail -s "Hello World" user@yourmaildomain.com < /tmp/urgentFileToSave.txt

powinno działać.

Kilka innych przykładów: http://www.binarytides.com/linux-mail-command-examples/

Mccalex
źródło
Niestety mailnie należy do (zasadniczo przypadkowej) kolekcji programów, które mogę uruchomić. Plus straciłem połączenie sieciowe :-(
Josh Hansen
Ojej. OK, pozostały mi cattylko pliki i robienie zdjęć za pomocą telefonu komórkowego.
mcalex,
Może do tego dojść!
Josh Hansen
0

Czy Python może uzyskać dostęp do portu wyjścia audio? Możesz spróbować przenieść dane przy użyciu tego - zobacz to lub tamto .

lukeg
źródło
Nie sądzę, że mam zainstalowane biblioteki audio Pythona, więc prawdopodobnie nie. Ale w / dev / snd znajdują się urządzenia ALSA. alsa-lib jest zainstalowany, ale nie sądzę, żebym go mógł przeczytać. Czy jest jakiś sposób na bezpośrednie pisanie na urządzeniach audio?
Josh Hansen
@ user17219 Czy na pewno nie ma ossaudiodevdostępnej biblioteki w instalacji Pythona? Powinien to być standardowy moduł w Linuksie i FreeBSD, jeśli poprawnie przeczytam dokumentację. import ossaudiodevpracował w moim Ubuntu od razu po wyjęciu z pudełka.
lukeg
właściwie masz rację, że jest obecny, ale niestety nie ma go w pamięci, więc nie mogę go odczytać --- próbuje odczytać moduł z dysku, co powoduje błąd we / wy :-( To był doskonały sugestia
Josh Hansen
@ user17219 to szkoda. tldp.org/HOWTO/Alsa-sound-6.html - ten link pokazuje, że możesz spróbować po prostu cat- przesłać plik do /dev/snd/pcm...urządzenia.
lukeg
Próbowałem, ale dostałem kilka dziwnych błędów. Myślę, że urządzenia pcm zmieniły się od czasu napisania tego dokumentu, ponieważ istnieją teraz warianty * p i * c. Próbowałem cating /dev/randomna wszystkie z nich, ale bezskutecznie.
Josh Hansen
0

Możesz usunąć dysk SSD ze swojego komputera i dd/ photorec/ etc na innym działającym komputerze.

Oto instrukcja serwisowa Dell dla 9550 - patrz rozdział „Wyjmowanie dysku SSD”. Po usunięciu dysku można uzyskać zewnętrzną obudowę USB M.2 i podłączyć dysk do innego komputera w celu odzyskania danych.

DankMemes
źródło
3
-1. W takim przypadku twoja rada może pogorszyć sprawę. Przede wszystkim nie możemy mieć pewności, które pliki zostały przypisane do dysku SSD, mogą znajdować się w pamięci podręcznej. Niektóre pliki nawet nie zostały w ogóle zapisane: „Ale nadal mam interesujące pliki otwarte w edytorze. Wydaje mi się, że nie mogę nigdzie zapisać plików, ale mogę skopiować ich zawartość”. Następnie istnieje ryzyko, że dysk SSD nie będzie już inicjowany; działa teraz, ponieważ został zainicjowany przed awarią. Twoje rozwiązanie oznacza na pewno utratę zawartości pamięci RAM, a być może zawartości dysku SSD. Obawiam się, że byłby to zamach stanu .
Kamil Maciorowski,
0

Długie ujęcie, ale niektóre dystrybucje mają wbudowane protokoły radiowe. Jednym z powszechnych jest fldigi. Spróbuj, który fldigi.

Jeśli masz to lub inne, konwertują tekst na dźwięk, zwykle używając pewnej odmiany kluczowania z przesunięciem fazowym. Sygnał wyjściowy trafia do głośników / słuchawek i jest odbierany przez stabilny komputer w tym samym pokoju, umieszczony na mikrofonie. (Eliminuje to radiotelefony z szynką, które transmitują i odbierają dźwięk przez fale radiowe).

JimR
źródło
0

Podejście do kodów QR może być dobre. Możesz zmieścić jak najwięcej na ekranie i odświeżyć je, gdy tylko terminal na to pozwoli. Następnie nagraj ekran XPS za pomocą kamery (zamiast korzystania z kamery internetowej) i po prostu pracuj nad odszyfrowaniem zapisanego wideo. Pomocne może być nawet użycie funkcji nagrywania w zwolnionym tempie.

Ezhik
źródło
0

Świetny program :) Mam 1 sugestię: możesz również odczytać dane z ekranu za pomocą fotodiody podłączonej do karty dźwiękowej drugiego komputera

Milo O'h
źródło
Lub podłącz wyjście audio do wejścia zewnętrznej karty dźwiękowej (aby wyeliminować szumy). Zainspiruj się tutaj: chdk.wikia.com/wiki/Obtaining_a_firmware_dump
Milo O'h
Samo pytanie i kilka wcześniejszych odpowiedzi omawiają przechwytywanie obrazu na ekranie za pomocą kamery. Czy twoje podejście byłoby lepsze? A może gdziekolwiek tak blisko? Jeśli tak, proszę wyjaśnić. Nie odpowiadaj w komentarzach; edytuj swoją odpowiedź, aby była jaśniejsza i bardziej kompletna.
G-Man mówi „Przywróć Monikę”