Heksaeditoria
-
- Viestit: 70
- Liittynyt: 28.9.2004 klo 1.26
Heksaeditoria
Viesti Kirjoittaja aimo munkki »
Tarpeena olisi, että lähdekansiossa on n. 1200 tiedostoa mitkä pitäisi avata heksaeditoriin yksitellen ja jokaiseen peistata neljä ensimmäistä koodiriviä jotka on kopioitu yhdestä lähdetiedostosta. Kaikkiin tiedostoihin peistataan sama koodinpätkä. Peistauksen jälkeen tiedosto talletaan joko samalla tiedostonimellä toiseen kansioon, tai sitten lisätyllä tiedostonimellä lähdekansioon.
Guukelilla etsien ei ole moista sattunut kohdalle, ei Mac saati Windouz ympäristöön.
Jos joku tietäis...
-
- Viestit: 2505
- Liittynyt: 23.11.2004 klo 20.02
- Paikkakunta: Oulu
Viesti Kirjoittaja tkt »
Koodi: Valitse kaikki
cat alku.txt tiedosto.txt > tiedosto2.txt
--Ari
-
- Viestit: 70
- Liittynyt: 28.9.2004 klo 1.26
Viesti Kirjoittaja aimo munkki »
Komentojonojakin varmasti voi tehdä. Ne jotka sen taitaa.
Nuo 1200 tiedostoa on kuvia joissa header rikki.
tkt kirjoitti:Onnistuisiko komentoriviltä?Tuostahan voi tarvttaessa tehdä myös komentojonon.Koodi: Valitse kaikki
cat alku.txt tiedosto.txt > tiedosto2.txt
--Ari
-
- Viestit: 1014
- Liittynyt: 6.11.2004 klo 19.35
Viesti Kirjoittaja nobu178 »
Onnistuu. Tallenna se lisättävä koodipätkä työpöydälle hexaeditorilla vaikkapa koodi.hex-nimellä. Siirrä lähdekansio työpöydälle ja anna sille nimi vaikkapa LAHDE. Lisäksi luo TULOS-niminen kansio työpöydälle. Sitten kirjoita (kopioi) seuraava rivi Pääte-ohjelmassa ja enter:aimo munkki kirjoitti:Onnistuuko? Tekeekös tuo muuta kuin vaihtaa tiedoston nimen?
Komentojonojakin varmasti voi tehdä. Ne jotka sen taitaa.
Nuo 1200 tiedostoa on kuvia joissa header rikki.
tkt kirjoitti:Onnistuisiko komentoriviltä?Tuostahan voi tarvttaessa tehdä myös komentojonon.Koodi: Valitse kaikki
cat alku.txt tiedosto.txt > tiedosto2.txt
--Ari
Koodi: Valitse kaikki
for i in Desktop/LAHDE/*; do cat Desktop/koodi.hex $i > Desktop/TULOS/$(basename $i); done
-
- Viestit: 70
- Liittynyt: 28.9.2004 klo 1.26
-
- Viestit: 6
- Liittynyt: 12.2.2008 klo 9.04
- Paikkakunta: Espoo
Viesti Kirjoittaja vmac »
Emacsin saa hexa-moodiin painamalla: esc + x
ja kirjoittamalla hexl-mode.
Vähän aiheen sivusta:
Hexadumppien luomiseen on macissa - ja muissa unixeissa - kätevä komento: xxd
Samalla komennolla (jollain optiolla) saa hexadumpin muutettua myös takaisin binääriksi.
Voi olla kätevä esim. lopputuloksen tarkistukseen.
-
- Viestit: 109
- Liittynyt: 29.5.2006 klo 23.41
- Paikkakunta: Kuopio
Viesti Kirjoittaja muikku »
Vim löytyy Macille kans...vmac kirjoitti:... Emacsilla, joka on saatavilla myös Mac:lle.
http://en.wikipedia.org/wiki/Editor_war

-
- Viestit: 1014
- Liittynyt: 6.11.2004 klo 19.35
Viesti Kirjoittaja nobu178 »
Ehkä voisi miettiä, onko tässä tapauksessa mielekästä ehdottaa emacsin tai Vimin käyttöämuikku kirjoitti:Vim löytyy Macille kans...vmac kirjoitti:... Emacsilla, joka on saatavilla myös Mac:lle.
http://en.wikipedia.org/wiki/Editor_war

-
- Viestit: 109
- Liittynyt: 29.5.2006 klo 23.41
- Paikkakunta: Kuopio
Viesti Kirjoittaja muikku »
1. Ketjun aloittaja kysyi heksaeditoria. vmac oli kyllä ensimmäinen vastaaja, joka ehdotti edes jotain editoria. Aikaisemmat vastaajat olettivat, että heksaeditori oli jo käytössä.nobu178 kirjoitti: Ehkä voisi miettiä, onko tässä tapauksessa mielekästä ehdottaa emacsin tai Vimin käyttöä
2. Jos joku ehdottaa Emacsia, niin pakko on heittää Vimillä perään. Jos satuit katsomaan tuota linkkiä, niin ehkä hoksasit, että puoliksi leikilläni. Mutta itse olen Vimiä käyttänyt menestyksekkäästi binäärin editointiin tarvittaessa, enkä muuta satu tietämään. Tämä ihan siksi, että käytän Vimiä kaikessa koodinväännössä.
Siis sekä Emacs että Vim käy heksaeditointiin. Tosin on myönnettävä, että jos ei ole aikaisemmin käyttänyt, niin tätä varten ei kannata ruveta opettelemaan.
Vimissä muuten heksaeditointi tehdään juuri tuota vmac:n mainitsemaa xxd:tä hyväksikäyttäen. Tai ainakin minä olen tehnyt. Saattaahan siellä olla muitakin tapoja...
-
- Viestit: 1014
- Liittynyt: 6.11.2004 klo 19.35
Viesti Kirjoittaja nobu178 »
Ei kai se editori ketjun aloittajalle ole pääasia, vaan se, miten tuon eräajon voi hoitaa. Ainakin itse ketjun aloituksesta ymmärsin, että aimolla on jonkinlainen hexaeditori käytössä.muikku kirjoitti: 1. Ketjun aloittaja kysyi heksaeditoria. vmac oli kyllä ensimmäinen vastaaja, joka ehdotti edes jotain editoria. Aikaisemmat vastaajat olettivat, että heksaeditori oli jo käytössä.
Juuri tätä tarkoitin. Minusta aimon kommenteista käy ilmi, ettei todennäköisesti ole mielekästä tyrkyttää hänelle emacsia tai vimiä.muikku kirjoitti: Siis sekä Emacs että Vim käy heksaeditointiin. Tosin on myönnettävä, että jos ei ole aikaisemmin käyttänyt, niin tätä varten ei kannata ruveta opettelemaan.
Kyllä ymmärsin viestisi kirjoitetun leikkimielellä, mutta tuollaisen sodan voisi käydä muualla. Muistaakseni ohjelmointiosastossa on jo pitkään ollut tämäntapaiseen sotaan tarkoitettu ketju. Voisit ehkä kirjoittaa tänne UNIXiin perehtymättömillekin aukeavalla tekstillä, miten vimillä toi eräajo hoidetaan.2. Jos joku ehdottaa Emacsia, niin pakko on heittää Vimillä perään. Jos satuit katsomaan tuota linkkiä, niin ehkä hoksasit, että puoliksi leikilläni. Mutta itse olen Vimiä käyttänyt menestyksekkäästi binäärin editointiin tarvittaessa, enkä muuta satu tietämään. Tämä ihan siksi, että käytän Vimiä kaikessa koodinväännössä.
(Editoitu jälkikäteen hiukan asiallisemmaksi)
-
- Viestit: 70
- Liittynyt: 28.9.2004 klo 1.26
Re: Heksaeditoria
Viesti Kirjoittaja aimo munkki »
Se, mitä en osannut ilmaista on että, koodi.hex -riveillä (4 riviä) pitäisi KORVATA kohdetiedoston neljä ensimmäistä riviä (viallinen pätkä). Eli, koodi.hex -rivit kirjoitetaan kohteen rivien paikalle, ei eteen.
Onnistuukohan korvaaminen tuolla päätetempulla? Käskyriviä pitäis kaiketi jotenkin muuttaa??aimo munkki kirjoitti:... ja jokaiseen peistata neljä ensimmäistä koodiriviä jotka on kopioitu yhdestä lähdetiedostosta. Kaikkiin tiedostoihin peistataan sama koodinpätkä..
aimomäntti
Ai niin, oon tutustunut heksaeditoriin Hex Fiend :n parissa. Ja koodauksessta en käytännössä, enkä teoriassa, tiedä kovinkaan mitään.
-
- Viestit: 1014
- Liittynyt: 6.11.2004 klo 19.35
Viesti Kirjoittaja nobu178 »
Koodi: Valitse kaikki
for i in Desktop/LAHDE/*; do xxd $i | perl -0777e '$popo=<>;$popo=~ s/^.*?\n.*?\n.*?\n.*?\n//; print $popo;' > Desktop/LAHDETXT/$(basename $i .jpg).txt; done
Seuraavaksi teet ensin työpöydällesi vaikkapa LAHDEHEX-kansion ja kopioit seuraavan komentojonon Pääte-ohjelman ikkunaan ja enter.
Koodi: Valitse kaikki
for i in Desktop/LAHDETXT/*; do xxd -r $i > Desktop/LAHDEHEX/$(basename $i .txt).hex; done
Koodi: Valitse kaikki
for i in Desktop/LAHDEHEX/*; do cat Desktop/koodi.hex $i > Desktop/TULOS/$(basename $i .hex).jpg; done
Toivottavasti tämä auttaa.
-
- Viestit: 109
- Liittynyt: 29.5.2006 klo 23.41
- Paikkakunta: Kuopio
Viesti Kirjoittaja muikku »
Hommahan näyttää olevan muuten hanskassa, mutta kannattaa aimon tarkistaa, että käyttämänsä heksaeditorin rivi sisältää yhtä monta tavua koodia kuin xxd-esityksen rivi. Ainakin jälkimäistä voi säätää. Ja aina ensin varmuuskopio alkuperäisestä datasta jne...
-
- Viestit: 1249
- Liittynyt: 24.3.2005 klo 23.32
Viesti Kirjoittaja Sleepperi »
Koodi: Valitse kaikki
for i in LAHDE/*; do
cp koodi.hex TULOS/$(basename $i);
tail -c +$(cat koodi.hex | wc -c | tr -d '[:space:]') $i >> TULOS/$(basename $i);
done
Kun tailin argumentti oli tuon sisärimpsun sijaan +5, niin tämä koodi hitsasi juuri halutulla tavalla kaksi tekstitiedostoa yhteen neljännen rivin kohdalta. Sitten pitäisi vielä soveltaa binäärille, joten ideana oli tuossa sisärimpsussa laskea heksakaman pituus tavuina tailia varten.
-
- Viestit: 1014
- Liittynyt: 6.11.2004 klo 19.35
Viesti Kirjoittaja nobu178 »
Sori, että olin tyly sinua kohtaan tossa ylhäällä. Ei ollut tarkoitus haastaa riitaa enkä väitä olevani itsekään aina johdonmukainen tässä asiassa. Minusta emacsin ja vimin käytön ehdottaminen tuntui kuitenkin tämän ketjun ongelman ratkaisemisen kannalta irrelevantilta ottaen huomioon aimon vastaukset ja varsinkin, kun ei ole näytetty, miten toi eräajo hoidettaisiin niillä editoreilla. Ja kuten tiedät, näiden editoreiden käyttö vaatii aikamoista opettelua, jos ei ole UNIX-maailma tuttu entuudestaan. Ne komentojonot, jotka kirjoitin ylhäällä, eivät vaadi ainakaan opettelua tai niiden ymmärtämistä, kunhan noudattaa ohjeita, jotka mielestäni ovat aika helppoja. Komentojonot jaoin osiin, koska niistä UNIX-aloittelijoidenkin on helppo nähdä, missä järjesyksessä mikin etenee. Yhden pitkän komentojonon analyysi ja editointi on mielestäni huomattavasti vaativampi juttu. Pari kohtaa niistä komentojonoista editoimalla ja kopioimalla ne Päätteen ikkunaan homma hoituu. Kärjistäen sanottuna ei tarvitse tietää UNIXista mitään. Siinä se ero.muikku kirjoitti:OT: kun nobu haluat muiden opastavan UNIXiin perehtymättömillekin aukeavalla tekstillä, niin noudatatko mielestäsi itse samaa linjaa? Ei millään pahalla
Käytän itsekin niitä editoreita (no, rehellisesti sanottuna enimmäkseen emacsia. Olen siis vihollisesi
![Iso hymy [:D]](./images/smilies/icon_biggrin.gif)
EDIT: Ja tietysti Sleepperi ehti kirjoittaa tommoisen PITKÄN. Kärsiköön hän itse siitä
![Kieli [:P]](./images/smilies/icon_razz.gif)
-
- Viestit: 70
- Liittynyt: 28.9.2004 klo 1.26
Viesti Kirjoittaja aimo munkki »
Alkutilanne LAHDE-kansiossa. Rivit 0000 - 0030 pitää vaihtaa:
0000000: ffef ff01 0000 0000 7f02 df01 8002 e001 ................
0000010: 7cfe 107c fe10 7cfe 107c fe10 7cfe 107c |..|..|..|..|..|
0000020: fe10 7cfe 107c fe10 7cfe 107c fe10 7cfe ..|..|..|..|..|.
0000030: 107c fe10 7cfe 107c fe10 7cfe 107c fe10 .|..|..|..|..|..
0000040: fe04 5000 fe7c aa55 aa55 0000 f0f0 b5bc ..P..|.U.U......
0000050: bdb5 a2b9 f0f0 f0f0 88f0 9191 9eca a7b7 ................
0000060: a3c8 c4d0 c2c0 c0c4 d0d8 b3d9 c9df c7c2 ................
0000070: c1df c2c0 c0c3 1c00 1c1c 1c1c 1c1c 1cc2 ................
0000080: c1ff 0fcd ff7f cdff c1e3 c1ff 8381 c2ff ................
0000090: c1f0 c7ff c1fc 0fc1 ffc2 0003 ceff c1fc ................
00000a0: 7f79 c4ff c1e7 c1ff c1c9 c2ff c1cf c1f3 .y.............. jne...
for i in Desktop/LAHDE/*... poistaa neljä riviä alusta. txt näyttää:
0000040: fe04 5000 fe7c aa55 aa55 0000 f0f0 b5bc ..P..|.U.U......
0000050: bdb5 a2b9 f0f0 f0f0 88f0 9191 9eca a7b7 ................
0000060: a3c8 c4d0 c2c0 c0c4 d0d8 b3d9 c9df c7c2 ................
0000070: c1df c2c0 c0c3 1c00 1c1c 1c1c 1c1c 1cc2 ................
0000080: c1ff 0fcd ff7f cdff c1e3 c1ff 8381 c2ff ................
0000090: c1f0 c7ff c1fc 0fc1 ffc2 0003 ceff c1fc ................
00000a0: 7f79 c4ff c1e7 c1ff c1c9 c2ff c1cf c1f3 .y.............. jne...
Seuraavaksi:
for i in Desktop/LAHDETXT/* ...lisää neljä riviä nollia. hex näyttää:
0000000: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0000010: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0000020: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0000030: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0000040: fe04 5000 fe7c aa55 aa55 0000 f0f0 b5bc ..P..|.U.U......
0000050: bdb5 a2b9 f0f0 f0f0 88f0 9191 9eca a7b7 ................
0000060: a3c8 c4d0 c2c0 c0c4 d0d8 b3d9 c9df c7c2 ................
0000070: c1df c2c0 c0c3 1c00 1c1c 1c1c 1c1c 1cc2 ................
0000080: c1ff 0fcd ff7f cdff c1e3 c1ff 8381 c2ff ................
0000090: c1f0 c7ff c1fc 0fc1 ffc2 0003 ceff c1fc ................
00000a0: 7f79 c4ff c1e7 c1ff c1c9 c2ff c1cf c1f3 .y.............. jne...
Sitten:
for i in Desktop/LAHDEHEX/* ...lisää ne halutut neljä riviä (koodi.hex -file työpöydällä) noitten nollarivien eteen. Nyt kuva ei avaudu Photoshoppiin ennenkuin kuin nollarivit poistaa Hex Fiendillä ja tallentaa uudestaan.
Tuloskansioon siis putkahtaa tiedosto jossa rivit 0000 - 0030 sisältävät halutun korjauksen, mutta rivit 0040 - 0070 sisältävät nollia jotka pitää poistaa välistä jotta kuva aukeaisi.
Oonkohan nyt esittänyt tän riittävän sekavasti?!? Ja kyllä, harjoittelut tehdään kopioiduilla tiedostoilla. Alkuperäiset on koskematta.
Kiitos asiaan paneutumisesta! Nyt koisaamaan.
-
- Viestit: 1014
- Liittynyt: 6.11.2004 klo 19.35
Viesti Kirjoittaja nobu178 »
Ensimmäinen komentojono on sama:
Koodi: Valitse kaikki
for i in Desktop/LAHDE/*; do xxd $i | perl -0777e '$popo=<>;$popo=~ s/^.*?\n.*?\n.*?\n.*?\n//; print $popo;' > Desktop/LAHDETXT/$(basename $i .jpg).txt; done
Koodi: Valitse kaikki
xxd Desktop/koodi.hex > Desktop/koodi.txt
Koodi: Valitse kaikki
for i in Desktop/LAHDETXT/*; do cat Desktop/koodi.txt $i > Desktop/LAHDEHEX/$(basename $i .txt).hex; done
Koodi: Valitse kaikki
for i in Desktop/LAHDEHEX/*; do xxd -r $i > Desktop/TULOS/$(basename $i .hex).jpg; done
-
- Viestit: 109
- Liittynyt: 29.5.2006 klo 23.41
- Paikkakunta: Kuopio
Viesti Kirjoittaja muikku »
Mutta yleisön pyynnöstä otetaan tämä vim:llä. Yllättäen tämä ratkesi ilman ensimmäistäkään säännöllistä lauseketta.
Oletetaan, että aimolla on se tiedoston alku tiedossa koodi.bin. Tästä saa heksakoodin komennolla
xxd koodi.bin > koodi.hex
Koodi.hex kopioidaan muokattavien tiedostojen kanssa samaan hakemistoon. (Siis ilmeisesti koodi.bin on _tasan_ 64 tavua pitkä, koska xxd:n oletusesitys on 16 tavua per rivi.)
Seuraavaksi tehdään vim:lle komentotiedosto hexedit.vim, ja kopioidaan se muutettavien tiedostojen kanssa samaan hakemistoon. hexedit.vim:
:%!xxd
:1,4 ! cat koodi.hex
:%!xxd -r
:write
:quit
Tuossa siis toinen rivi tekee itse jutun eli korvaa neljä ensimmäistä riviä tiedoston koodi.hex sisällöllä. Nyt tiedostot saadaan muutettua komentotulkista seuraavalla komennolla (suoritetaan siinä hakemistossa missä muokattavat tiedostot ovat):
for i in *.jpg; do vim -s hexedit.vim $i; done
Tässä siis oletus, että tiedostot ovat .jpg -loppuisia. Jos ei, niin komentoa pitää muuttaa siltä osin. Huomatkaa myös että ne vim-komennot on tiedostossa hexedit.vim. Kaikki muut on päätteeltä shell-komentoja. Vimiä ei siis käytetä interaktiivisessa moodissa lainkaan.
-
- Viestit: 70
- Liittynyt: 28.9.2004 klo 1.26
Viesti Kirjoittaja aimo munkki »
Tuntuu käsittämättömältä että tuolleen lyhyellä merkkirivillä saa asioita tapahtumaan. Vaan kai noissakin on oma logiikkansa kun taitaa asian.
Merkeillä on merkityksensä. Seuraavassa merkkirivissä on ilmeinen virhe...
"Hoitakaa tiski" ...ei ole koulun jälkeen komento toiminut. Jos koodia korjaa hieman...
"Hoitakaa tiski; 10 ee" ...on ilmeisesti parempaa, laajennettua koodia ja johtaa tulokseen. Vain muutama merkki eroa...
Pitää yrittää tutustua koodaamisen saloihin - mistähän aloittas

Kiitos - AM
nobu178 kirjoitti:Ok. Muutetaan komentojen järjestys....
- Yleiset aiheet
- ↳ Ajankohtaista Apple-maailmasta
- ↳ Käyttöjärjestelmät
- ↳ Ohjelmat
- ↳ Yleiskeskustelu
- Mac ja oheislaitteet
- ↳ Yleiskeskustelu laitteista
- ↳ MacBook, MacBook Pro ja MacBook Air
- ↳ iMac
- ↳ Mac mini
- ↳ Mac Pro ja Mac Studio
- ↳ Ongelmia Macin kanssa?
- iPhone, iPad ja Apple Watch
- ↳ iPhone-, iPad- ja Apple Watch -laitekeskustelu
- ↳ iPhone-, iPad- ja Apple Watch -ohjelmat sekä iOS
- ↳ Ongelmia iPhonen, iPadin tai Apple Watchin kanssa?
- Huviksi ja hyödyksi
- ↳ Off-topic
- ↳ Kuva ja graafinen suunnittelu
- ↳ Audio ja musiikki
- ↳ Video, televisio ja elokuvat
- ↳ Pelit ja pelaaminen
- ↳ Ohjelmointi, skriptit ja palvelimet
- ↳ Tietoturva ja varmuuskopiointi
- ↳ Verkot, mobiilidata ja muut puhelimet
- ↳ Retronurkka
- ↳ Foorumin ylläpito
- Kauppapaikka
- ↳ Myydään Mac
- ↳ Myydään iPhone, iPad ja iPod
- ↳ Myydään muut Applen tuotteet
- ↳ Myydään muuta tietotekniikkaa
- ↳ Ostetaan Mac
- ↳ Ostetaan iPhone, iPad ja iPod
- ↳ Ostetaan muut Applen tuotteet
- ↳ Ostetaan muuta tietotekniikkaa
- ↳ Vaihdetaan, annetaan, työtä haetaan ja tarjotaan
- ↳ Kauppapaikan keskustelu ja hintavinkit