Pertama, sebuah pengakuan: tidak, saya tidak melakukan backup yang seharusnya saya miliki.
Kedua, situasinya:
Saya memiliki Dell XPS 9550 dengan disk solid state yang menjalankan Fedora 25 .
Saya sedang mengerjakan file dan mencoba untuk menyimpannya ketika saya diberitahu bahwa saya mencoba menyimpan ke sistem file read-only . Ternyata sistem file saya hanya-baca sekarang dan ada kesalahan i / o di semua tempat.
Saya dapat menyimpan beberapa file dengan mengirim email kepada saya melalui browser web terbuka, tetapi itu macet dan saya tidak dapat meluncurkannya kembali. Tapi saya masih punya file menarik terbuka di editor. Sepertinya saya tidak dapat menyimpan file di mana saja, tetapi saya dapat menyalin kontennya. Kalau saja saya bisa menemukan cara untuk mengekstrak isi file, saya bisa menyelamatkan diri dari pekerjaan berbulan-bulan.
Tetapi ada beberapa keterbatasan yang mengerikan. Saya mencoba memasukkan USB drive, tetapi tidak ada perangkat yang muncul untuk mewakili itu, dan mount
perintah mati dengan segfault. Saya dapat mencoba ssh ke komputer lain, tetapi saya mendapatkan "bus error" dan mati. ping
, dmesg
, ifconfig
, Tidak ada yang sesuai. Tapi saya punya vim
dan less
dan ls
dan bisa menelurkan bash
contoh baru .
Tidak lynx
, tidak firefox
, tidak google-chrome
. Tidak ada drive DVD.
Pada dasarnya sepertinya SSD saya sudah mati. Atau mungkin seluruh motherboard. Saya memiliki dokumen yang nilainya sangat besar dalam memori, saya memiliki alamat IP dan koneksi jaringan, saya dapat menjalankan beberapa perintah acak dan memiliki 3500 lebih di jalur yang dapat saya coba.
cat
dan gcc
sepertinya berhasil. Saya dapat menulis ke file di / tmp. Saya memiliki ipython
instance berjalan yang tampaknya masih berfungsi.
Jadi ... apa yang saya coba sejauh ini telah gagal. Tapi saya merasa masih ada seribu kemungkinan. Apa yang tidak saya pertimbangkan? Bagaimana saya bisa mendapatkan file-file ini dari komputer saya yang sekarat?
Pasti ada jalan.
UPDATE : Hal baru:
- Saya kehilangan koneksi jaringan saya karena kebodohan saya sendiri.
- Saya menulis skrip Python untuk menggantikan
cp
dancp -r
- Kecuali saya menemukan cara untuk membuat
/dev
entri untuk kartu SD, atau untuk drive USB, maka taruhan terbaik saya untuk mengeluarkan data sepertinya adalah layar dan mungkin kabel speaker / audio. - Saya sedang menulis skrip untuk mencoba membaca file dan output mana yang dapat dibaca.
Saran masih sangat diterima!
UPDATE 2 : Hal-hal yang lebih baru:
- Di komputer yang sekarat saya menulis skrip Python yang akan membaca file sedikit demi sedikit dan mencoba menyampaikan bit-bit itu dengan mem-flash layar satu warna atau lainnya. Saat ini sedang mencoba untuk melakukan kode dua-bit di mana merah, hijau, biru, dan putih semuanya merupakan pasangan dua-bit. Ini tidak bekerja dengan baik, jadi saya mungkin hanya beralih ke dua warna dan melakukan sedikit demi sedikit.
- Di laptop saya yang lain (Thinkpad tua yang terpercaya yang saya berikan untuk XPS baru yang panas ini) saya menulis sebuah skrip yang berbunyi dari webcam menggunakan OpenCV Python library. Idenya adalah untuk memecahkan kode yang dikirim oleh komputer lain. Masalahnya adalah framerate dari kamera kira-kira 15 frame per detik, yang berarti jika saya memiliki transfer yang sempurna dan tanpa kesalahan, kecepatan data maksimum saya adalah 30 bit per detik, yaitu 225 byte per detik. Itu 324rb per hari.
- Pada XPS yang sekarat saya dapat menggunakan
tar
untuk mengemas file yang diinginkan ke dalam satu arsip, yaitu 1,7 MB. Sayangnya,gzip
,bzip2
,xz
,lzop
dan apa pun kompresi utilitas tidak tersedia. TETAPI menggunakanzlib
modul Python saya bisa mengompres file ini ke 820KB. Mengingat ukuran itu, saya mungkin bisa mengirim barang ini dalam beberapa hari. - Karena metode transfer ini cenderung sangat rawan kesalahan, saya akan menerapkan kode Hamming pada XPS untuk menambahkan beberapa koreksi kesalahan saat saya mengirimkan data.
- Kemungkinan akan ada komplikasi karena itulah yang terjadi, tetapi setidaknya tampaknya entah bagaimana layak untuk mengeluarkan data ini!
- Karena ini masih merupakan cara yang cukup sial untuk mengirim data, saya melihat lebih ke driver serial USB. Modul Saya sudah mencoba untuk beban (
usb-serial-simple
,usb-debug
,safe-serial
) memberikan i / o error. Saya juga tidak berpikir itu bawaan untuk kernel, karena tidak ada perangkat / dev / ttyUSB *.
Terima kasih atas saran semua orang sejauh ini --- Saya tahu ini bahkan bukan pertanyaan yang jelas karena kalian tidak tahu sebelumnya program / file mana yang bisa dibaca atau tidak. Masih terbuka untuk saran yang lebih baik daripada pendekatan video ini!
UPDATE 3 : Hal-hal terbaru
- Saya mendapatkan webcam PS3 Eye dan, setelah menonaktifkan penguatan dan eksposur otomatisnya, saya berhasil membaca data dari XPS, meskipun dengan kesalahan 1 byte per detik. Ini adalah kesuksesan besar --- data pertama di-exfiltrasi! Tapi nilainya terlalu lambat untuk mengeluarkan 820KB saya dalam waktu yang wajar, dan tingkat kesalahannya terlalu tinggi.
- Masalahnya adalah penulisan ke terminal terlalu lambat. Pembaruan layar tidak seperti instan, terima kasih (saya pikir) untuk lambatnya
urxvt
emulator terminal yang saya akses. - Saya menemukan bahwa saya memiliki akses ke compiler Rust di XPS. Saya menulis ulang skrip transmisi menggunakan Rust untuk melihat apakah itu akan meningkatkan kecepatan refresh terminal, tetapi tidak membantu.
- Karena saya tidak mungkin dapat meningkatkan framerate, saya harus mencoba meningkatkan berapa banyak data yang saya dapatkan per frame. Pendekatan saya saat ini terlihat seperti ini:
Setengah bagian kanan masih berupa sinyal jam, yang berkedip-kedip untuk menandai kedatangan frame baru. Tapi kiri sekarang adalah kotak di mana setiap sel ditandai dengan kotak merah di sudut, dan kemudian sel hijau di kanan dan ke bawah dari kotak merah dinyalakan dan dimatikan untuk menunjukkan sedikit. Kotak merah harus membiarkan komputer penerima mengkalibrasi di mana sel berada. Saya belum mendapatkan data dengan cara ini, tapi itulah yang saya kerjakan.
- Seseorang menyarankan agar saya melihat ke dalam penulisan kode QR alih-alih pola warna ad hoc ini. Saya akan melihat itu juga, dan mungkin mengimplementasikannya daripada pendekatan grid ini. Koreksi kesalahan akan menjadi kemenangan yang menyenangkan, serta dapat menggunakan perpustakaan standar untuk memecahkan kode.
- Saya belajar bahwa saya memiliki akses ke libasound (perpustakaan suara ALSA), tetapi tidak ke file header yang terkait dengannya (
alsa/asoundlib.h
atau apa pun). Jika ada yang tahu bagaimana memanfaatkan pustaka bersama tanpa tajuk, atau dapat membantu saya menulis tajuk yang tepat untuk membiarkan saya menghasilkan output audio, maka saya bisa memiliki cara berbasis audio untuk mengeluarkan file. - Bergantian, jika seseorang dapat membantu saya memanipulasi perangkat USB tanpa akses ke libusb maka mungkin saya bisa melakukan sesuatu dengan itu?
Bergerak kedepan!
UPDATE 4 : output audio diproduksi!
Pengguna Francesco Noferi telah melakukan beberapa pekerjaan hebat membantu saya memanfaatkan perpustakaan ALSA yang disebutkan dalam pembaruan sebelumnya. Kompiler C memiliki masalah, tetapi dengan menggunakan kompiler Rust saya dapat menggunakan FFI untuk memanggil langsung ke libasound
. Saya sekarang telah memainkan banyak data saya melalui audio dan itu terdengar seperti musik di telinga saya! Masih perlu membuat saluran komunikasi yang nyata, tapi saya merasa sangat berharap. Pada titik ini pekerjaan saya pada dasarnya adalah untuk mengimplementasikan modem, jadi jika ada yang punya panduan tentang cara yang baik untuk melakukan itu saya semua telinga. Idealnya modulasi itu mudah diimplementasikan dengan tangan dan demodulasi yang ada perpustakaan yang bisa saya gunakan. Karena ini dapat langsung melalui kabel audio dan tidak melalui jaringan telepon, secara teoritis kita bisa melakukan jauh lebih baik daripada 56kbps atau apa pun standarnya pada hari itu, tetapi dalam praktiknya siapa yang tahu apa yang akan kita dapatkan.
Terima kasih kepada semua orang yang mengikuti di sini dan di / r / techsupportmacgyver dan di / r / rust berkontribusi begitu banyak saran bagus. Akan menerapkan "modem" ini segera dan kemudian saya akan menyelesaikan ini dengan sebuah epilog. Saya pikir saya mungkin meletakkan kode saya di suatu tempat untuk digunakan orang lain yang putus asa di masa depan --- bahkan mungkin repositori alat exfiltrasi aneh yang mudah diketik ke dalam mesin sekarat dengan tangan? Kita akan lihat apa yang terjadi.
UPDATE 5 : Butuh waktu lama untuk bergulat dengan ALSA dan perangkat audio capture StarTech USB murah saya (tidak ada garis bawaan pada laptop penerima), dan banyak yang salah mulai mencoba untuk menggulung protokol transmisi saya sendiri, tetapi akhirnya di bawah saran dari beberapa Teman-teman penggemar radio Ham saya, saya menerapkan protokol garis RTTY berjalan pada 150 baud, yang dalam praktiknya memberi saya mungkin sekitar 10 byte per detik. Ini tidak super cepat tetapi cukup dapat diandalkan. Dan saya hampir selesai mentransfer file 820KB saya, diverifikasi menggunakan checksum CRC32 (menggunakan fungsi crc32 dari Pythonzlib
modul, yang dapat saya akses). Jadi saya menyatakan kemenangan, dan ingin mengucapkan terima kasih sekali lagi! Saya akan menghabiskan lebih banyak waktu untuk menemukan file lebih lanjut yang dapat dibaca dan yang dapat saya transfer, tetapi yayasan sudah ada. Sudah menyenangkan bekerja dengan Anda semua!
PEMBARUAN AKHIR :
Di mesin sekarat:
$ 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.
Di mesin penyelamat:
$ 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
:-)
python -m SimpleHTTPServer
. Sekarang Anda berbagi file melalui server http di port 8000 . Buka browser di perangkat lain di jaringan yang sama dan ketikkan yang berikut:http://<IP address>:8000
dan mulai unduh semua yang Anda bisa.Jawaban:
inilah contoh program libasound dengan definisi yang cukup untuk mendapatkan output wav standar 2-channel 44.1k tanpa header.
EDIT: Saya sebenarnya tidak yakin apakah langsung membuang data seperti yang akan bekerja, karena kebisingan saat merekam dapat dengan mudah merusaknya, tetapi Anda mungkin dapat melakukan sesuatu seperti gelombang sinus bit pada frekuensi tinggi yang lebih dapat diandalkan
EDIT2: jika aplay hadir dan berfungsi, Anda juga dapat menggunakannya dan hanya menulis sebuah program yang menghasilkan audio mentah dan menyalurkannya ke aplay atau apa pun yang dapat memutar audio
EDIT3: memodifikasinya untuk tidak menggunakan header sama sekali
jika -lasound tidak dikompilasi, tambahkan -L / path / di mana / libasound / berada / berada
sumber
gcc
memberi saya "Bus error" (yang didapat dengan beberapa program tetapi tidak benar-benar mengerti.) Untungnya, saya memiliki compiler Rust yang berfungsi, jadi dengan menggunakan kemampuan FFI Rust, saya menerapkan kode Anda di atas menggunakan Rust. Ini kompilasi dan berjalan, tapi saya masih tidak mendengar apa-apa. Tapi saya tidak begitu yakin apakah volumenya naik --- mungkin dimatikan. Tapi saya tidak bisa menjalankan alsamixer / xfce4-mixer untuk memeriksa. Saya mencari menggunakan alsalib secara langsung untuk memastikan volumenya naik. Terima kasih banyak atas usaha Anda dalam hal ini!Apakah HDMI atau port tampilan keluar lainnya berfungsi? Jika demikian, Anda dapat menggunakan perangkat tangkapan layar untuk merekamnya sebagai video dan memprosesnya nanti. Dengan demikian tidak dibatasi oleh framerate webcam Anda.
sumber
Bagaimana dengan Anda hex-encode data Anda dan output halaman per halaman ke terminal?
Anda dapat menambahkan awalan dengan offset di biner sehingga Anda dapat dengan mudah membuat ulang halaman (untuk koreksi manual?)
Kemudian di komputer lain gunakan beberapa perangkat lunak OCR untuk memindai halaman.
Terminal 80x25 akan menghasilkan 1000 byte per halaman (minus beberapa ruang untuk awalan). Jadi dalam sekitar 1.000 halaman Anda bisa mendapatkan data Anda. Bahkan pada satu halaman per detik, itu kurang dari 20 menit.
Pengkodean hex mudah untuk ditulis dan juga menyediakan bentuk baku koreksi kesalahan (hanya ada 16 simbol yang valid).
sumber
dapatkah Anda mengatur koneksi jaringan? ssh mungkin agak terlalu banyak tetapi jika Anda dapat menggunakan netcat pada 2 mesin Anda mungkin dapat mentransfer data. satu dalam mode pengiriman, satu dalam mode mendengarkan. Jika semua yang perlu Anda lakukan adalah mentransfer teks maka ini 'bisa' menjadi solusi ..
edit: nevermind, baca saja bahwa Anda juga kehilangan koneksi jaringan ..
sumber
nc
tidak memiliki dependensi selain dari tumpukan jaringan yang berfungsi, yang OP miliki sampai ia meledakkannya. Itu secara drastis mengurangi kemungkinan bahwa eksekusi tidak akan dimulai. Jika orang lain mengalami masalah yang sama, itu pasti solusi yang berguna.Anda mungkin dapat mengirim email sendiri dari baris perintah, termasuk mengirim file.
Sesuatu seperti:
harus bekerja.
Beberapa contoh lebih lanjut: http://www.binarytides.com/linux-mail-command-examples/
sumber
mail
tidak ada di antara kumpulan program (pada dasarnya acak) yang bisa saya jalankan. Ditambah lagi, saya kehilangan koneksi jaringan saya :-(cat
file dan ambil foto dengan ponsel Anda.Bisakah Python mengakses port audio-out Anda? Anda dapat mencoba mentransfer data menggunakan itu - lihat ini atau itu .
sumber
ossaudiodev
perpustakaan yang tersedia di instalasi Python Anda? Ini harus menjadi modul standar di Linux dan FreeBSD, jika saya membaca dokumentasi dengan benar.import ossaudiodev
bekerja di Ubuntu saya di luar kotak.cat
- menyimpan file ke/dev/snd/pcm...
perangkat.cat
ing/dev/random
ke dalam semua dari mereka tetapi tidak berhasil.Anda dapat menghapus SSD dari mesin Anda dan
dd
/photorec
/ dll di mesin lain.Inilah manual layanan Dell untuk 9550 - lihat bagian untuk "Melepaskan solid-state drive". Setelah Anda melepaskan drive, Anda bisa mendapatkan penutup USB M.2 eksternal dan memasang disk ke mesin lain untuk memulihkan data Anda.
sumber
Tembakan panjang, tetapi beberapa distro memiliki protokol radio ham built in. Salah satu yang umum adalah fldigi. Coba fldigi yang mana.
Jika Anda memiliki ini atau yang lain, mereka mengubah teks menjadi audio, biasanya menggunakan beberapa variasi penguncian fase-shift. Outputnya masuk ke speaker / headphone Anda, dan diterima oleh komputer yang stabil di ruangan yang sama, terdaftar pada mikrofonnya. (Ini menghilangkan radio ham yang mengirim dan menerima audio melalui gelombang udara).
sumber
Pendekatan kode QR bisa baik. Anda dapat memuat sebanyak mungkin di layar, dan menyegarkannya segera setelah terminal Anda memungkinkan. Kemudian rekam layar XPS dengan kamera (bukan menggunakan webcam), dan hanya bekerja menguraikan video yang Anda simpan. Mungkin akan membantu untuk menggunakan penangkapan gerak lambat sekalipun.
sumber
Pertunjukan hebat :) Saya punya 1 saran: Anda juga dapat membaca data dari layar menggunakan dioda foto yang terhubung ke kartu suara komputer lain
sumber