Saturday, 4 November 2017

Xxd binära alternativ


Jag har försökt hela dagen för att få detta till jobbet. Vet någon hur man får grep eller något liknande för att hämta offsets av hex strängar i en fil Jag har en massa hexdumps som jag måste kolla på strängar och sedan springa igen och kontrollera om värdet har ändrats. Jag har försökt hexdump och dd, men problemet är för att det är en ström, jag förlorar min kompensation för filerna. Någon måste ha haft detta problem och en lösning. Vad kan jag göra För att klargöra har jag en serie dumpade minnesområden från GDB. Jag försöker att begränsa ett tal genom att leta upp alla platser som numret lagras, sedan göra det igen och kontrollera om det nya värdet lagras på samma minnesplats. Jag kan inte få grep att göra något för att jag letar efter hex-värden så att alla gånger jag har försökt (som en bazillion, ungefär) kommer det inte att ge mig rätt resultat. Hex-dumparna är bara färdiga binära filer, paternerna ligger inom float-värden vid larges så 8 byte. Mönstren förpackar inte de linjer som jag känner till. Jag är medveten om vad det ändras till, och jag kan göra samma process och jämföra listorna för att se vilken match. Hexdumparna slutar normalt (totalt) 100 megs-ish. Perl KAN vara ett alternativ, men vid denna tidpunkt skulle jag anta min brist på kunskap med bash och dess verktyg är den främsta syndern. Det är lite svårt att förklara produktionen jag får eftersom jag verkligen inte får någon produktivitet. Jag förutse (och förväntar mig) något i linje med: Vilket är den ganska bra standardutgåvan jag normalt skulle få med grep - URbFo ltsearchtermgt . gt ltoutputgt Problemet är att när jag försöker söka efter hex-värden får jag problemet om man bara inte söker efter hex-värdena, så om jag söker efter 00 borde jag bli som en miljon träffar, för det är alltid blankspace, men istället dess söker 00 som text, så i hex, 3030. Eventuella idéer jag kan tvinga den genom hexdump eller något av länken men för att det är en ström det kommer inte ge mig offsets och filnamn som det hittat en matchning i. Använda grep - b alternativ verkar inte heller fungera, jag försökte alla flaggor som verkade användbara för min situation, och ingenting fungerade. Med hjälp av xxd - u usrbinxxd som exempel får jag en utgång som skulle vara användbar, men jag kan inte använda den för sökning. Trevlig produktion, precis vad jag ser på, men det fungerar bara inte för mig i den här situationen. Det här är några saker jag har försökt sedan publicerat detta: Vilket format tar hex-dumparna? Gör de mönster som du letar efter linjer Finns det en förskjutning i början av varje rad Hur länge är mönstret du letar efter När mönstret ändras vet du vad det ändras till Hur stora är hex-dumporna Ansåg du att du använder Perl ndash Jonathan Leffler 12 juni 11 på 4:14 Vad jag faktiskt slutade använda för xxd var: xxd - ps - u - c 100000000000000000000 input. file gt output. fil för att bli av med överskridande information och ge mig rå hex. Detta gav mig ett sätt att använda grep för att söka i hexen själv, men när det returnerar en förskjutning, kom ihåg att dela offset med 2 för att få den faktiska förskjutningen. Tack så mycket för din hjälp Åh, och jag kan inte rösta än. ndash user650649 Jun 14 11 på 1:25 xxd har - g alternativ som hjälper dig att förhindra matchning över två byte. Dvs. använd xxd - g1 istället för xxd. ndash Ruslan 27 jan kl 14:09 Detta verkar fungera för mig: Output (cygwin binär): Så du kan greppa detta igen för att extrahera offsets. Men glöm inte att använda binärt läge igen. grep har en - P-omkopplare som tillåter att använda perl regexp-syntaxen tillåter perl regex att titta på byte med x. syntax. så du kan leta efter en given hex-sträng i en fil med: grep - aP xdf men utrustningen kommer inte att vara väldigt användbar, det är bättre att göra en regexp på hexdump-utmatningen. Grep - P kan dock vara användbart men bara hitta filer som matar en given binär mönster. Eller för att göra en binär fråga om ett mönster som faktiskt händer i text (se till exempel Hur man regexp CJK ideographs (i utf-8)) Vim är inte konstruerad för att redigera binära filer, men det är möjligt om det tas försiktighet för att undvika automatisk formatering som kan bryta en binär fil. Vim distribueras med xxd-verktyget som ger en bekväm metod att dumpa en binär fil till hex. Du kan redigera de utskrivbara hex-tecknen och använda xxd för att vända processen för att skriva en uppdaterad binärfil. Det är möjligt att automatisera hex-omvandlingen, men att veta hur det fungerar kommer att ge dig ett mer mångsidigt verktyg. Dumpning av en binär fil som hex Edit Du kan läsa en hex-dumpning från en binär fil till den aktuella bufferten. Följande kommando sätter in en hex-dumpning av filen sample. bin efter linjen som håller markören: Linjer som liknar följande skulle införas i bufferten: Den vänstra kolumnen visar offset för den första byten på varje rad. Mellanspalten visar byte i hex, i grupper om två (i exemplet är den första byten hex 00, följt av hex 01, 02, 03, 30, 31 etc). Den högra kolumnen visar eventuellt den utskrivbara texten (den sista byten på första raden är hex 47 som är ASCII-koden för G). Du kan läsa xxd-användarteksten i den aktuella Vim-bufferten med: Generera C-källa för en binär fil. Redigera I ett C-program kanske du vill ha en array som innehåller data som motsvarar innehållet i en binär fil. Följande kommando läser en dumpning av filen sample. bin. formaterad som C-källa: Använda samma binära fil som tidigare, skulle resultatet vara: Redigera binära filer Redigera Använd - b alternativet för att ställa in binärt läge innan du redigerar en binär fil, till exempel: Om du vill kan du visa icke-skrivbara tecken i hex , och du kan linda linjer: I normalläge, skriv g och Ctrl-G för att visa byte-numret vid markören eller skriv ett byte-nummer och gå sedan för att hoppa till den byte (till exempel 123go hoppar till byte nummer 123) . Den första byten i filen har byte nummer 1. Följande kommando ersätter bufferten med en hex-dump: Du kan redigera hex-byte och konvertera sedan filen till binär med kommandot: Kommandot ovan reverserar hex-dumpen genom att konvertera hex byte till binär (den skrivbara texten i den högra kolumnen ignoreras). Se även Redigera Referenser Redigera Kommentarer Redigera annonsblockeringsinterferens Detekteras Wikia är en fri att använda webbplats som tjänar pengar från reklam. Vi har en modifierad upplevelse för tittare som använder annonsblockerare Wikia är inte tillgänglig om du har gjort ytterligare ändringar. Ta bort den anpassade annonsblokkeringsregeln och sidorna laddas som förväntat. Förbättrad hex redigering skapade 160200732183 komplexitet 160basic32183 författare 160Fritzophrenic32183 version 1607.0 Många avancerade textredigerare gör det möjligt att redigera filer i ett hex-läge, särskilt användbart för redigering av binära filer. Vim tillhandahåller denna förmåga genom det externa programmet xxd, som vanligtvis ingår i standardfördelningar av Vim. Tyvärr är det inte-intuitivt och felaktigt att använda ett externt program för denna uppgift. En användare måste komma ihåg hur man kör filtret (: xxd för att konvertera till hex, 160: xxd - r för att konvertera tillbaka), måste komma ihåg att konvertera tillbaka från hex innan du sparar, kan inte konvertera skrivskyddade filer utan varningar och mer. Detta tips förbättrar användningen av xxd för att redigera hex-filer genom att lägga till en kartläggning och ett kommando för att enkelt växla fram och tillbaka mellan hex och icke-hex-läge och automatisera uppgifter som att konvertera tillbaka från hex-filtrerad form innan du sparar en fil. Ange enkelt och lämna hex-läge Redigering Om du anger följande kod i din vimrc kommer du att ge: Hexmode ex-kommandot för att växla till xxd hex-läge på eller av. Det kommer att hålla reda på vilket läge du är i, så du behöver inte. Detta ex-kommando är enkelt att kartlägga så här: Observera att ltC-Hgt redan är ett definierat kommando, så åsidosätta det med försiktighet (eller använd en annan vänstra sida till mappningen). Se 58help160CTRL-H. 58help160iCTRL-H. 58help160vCTRL-H. Du kan också behöva använda gvim för att skilja mellan ltC-Hgt och ltBSgt. Hantera automatiskt hex-läge Redigera Det skulle vara trevligt om användaren inte behövde komma ihåg att konvertera tillbaka från hex innan du sparade ändringar i en binär fil. Dessutom är vissa filer nästan alltid binära, det vore trevligt om Vim skulle hämta detta och automatiskt mata in ett lämpligt redigeringsläge. Hjälpfilerna för Vim innehåller följande råd för att automatisera hex-redigeringsfunktionerna för xxd-stil för Vim, för att automatisera omvandlingen och automatiskt mata in hex-läge för binära filer: Det finns några problem med detta tillvägagångssätt: Endast filer med a. binförlängning öppnas på det här sättet, även om du redigerar en fil i binärt läge (t. ex. med bin) Detta ställer in det binära alternativet för eventuella framtida dokument öppnade också. Om du t. ex. använder tabe eller om du har Vim inställd för att öppna nya filer i flikar. då öppnas några nya filer som öppnas i binärt läge. Om du väljer att redigera en binär fil utan xxd, försöker autofommandorna BufWrite att konvertera den med xxd - r ändå. Om du visar en fil i xxd-läge måste du ändra filen, så skrivskyddade filer kommer att varna dig om du försöker göra det, även om du inte gör några ändringar. Buffertar med nomodifierbar kommer att orsaka fel. Om du går tillbaka till redigering utan xxd, kommer filtypen fortfarande att vara xxd. Dessa problem kan lösas enligt följande: Utlösare på alla filer om de redigeras med binärt alternativ. Ändra den extensionsspecifika autocmd för att ställa in det binära alternativet. Använd setlocal istället för att använda det globala binära alternativet. Håll en variabel för varje buffert som spårar om filen är i xxd-läge. Återställ endast till icke-xxd innan du skriver om den här variabeln säger att vi är i lämpligt läge. Rensa den skrivskyddade flaggan tillfälligt när du övergår mellan xxd och nonxxd-läget, återställ det efteråt. Spara filtypen när du anger xxd-läge och återställ det när du lämnar. Nedan finns någon kod för din vimrc som gör allt detta med hjälp av kommandot vi definierar ovan: Detta gör att Vim automatiskt aktiverar hex-läge med det kommando som definierats tidigare när en fil öppnas i binärt läge och kommer automatiskt (lokalt) Ange binärt läge för. bin och. hex-filer (så. bin och. hex-filer öppnas automatiskt i hex-läge alltid). Andra förbättringar Redigera Det kan hända att du måste vidta åtgärder för att undvika att Hit ENTER fortsätter prompt om du använder det här tipset. Här är kommandon som ska användas för att starta någon fil (er) i hex-läge i en separat hex-editor Vim-server. Under Windows kan du enkelt lägga till dessa kommandon på din Skicka till-meny om du använder hela sökvägen för gvim. exe istället för vim. Ta bort alternativet - p och --remote-tab-silent om du inte vill ha flikgränssnittet. Den - c-inställda binären säkerställer att alla inställningar för tabbrett, wrap, etc. skrivs över efter att filen har slutförts. Starta i flikar i en ny dedikerad Vim hex-editor: vim - p - b - c set binär - servernamn HEXVIM ltfilesgt Starta i flikar i en befintlig dedikerad Vim hex-redaktör: vim - b - c set binär - servernamn HEXVIM --remote - tab-tyst ltfilesgt Referenser Redigera Kommentarer Redigera script666 ger liknande (och utökad) kapacitet, men jag har aldrig använt den och kan inte garantera att dess användbarhet är fullständig. Koden för att automatiskt gå in i hex-läge orsakar för mig: hjälpkommandon för att misslyckas för eventuella gzipped-hjälpfiler, så jag fixade det genom att lägga till den här biten av kod som jag har skapat ett git-repository på GitHub av den här koden och välkomnar andra uppdateringar. Tack Fritzophrenic för att göra denna plugin - Tyler Akins Ad Blocker-interferens upptäckt Wikia är en fri att använda webbplats som tjänar pengar från reklam. Vi har en modifierad upplevelse för tittare som använder annonsblockerare Wikia är inte tillgänglig om du har gjort ytterligare ändringar. Ta bort den anpassade ad blockeringsregeln (erna) och sidan laddas som förväntat.

No comments:

Post a Comment