TommyL Skrevet 31. januar 2015 Del Skrevet 31. januar 2015 Hei! Jeg er en total noob når det gjelder programmering. Siden jeg har søkt og søkt, men ikke finner noe svar på nettet (eller noe jeg skjønner noe av rettere sagt), prøver jeg her. Jeg trenger et program som søker opp antall steder en spesiell string finnes i en hex fil. En string på...ja la oss si 4 byte. Ikke nok med det, men også de neste 20 byte etter de 4. Og til slutt ende opp med en liste over alle stedene stringen finnes sammen med de neste 20 byte, som kan limes inn i word f.eks og sorteres. Håper dette gir noe mening. Er dette noe som er mulig å få til? Jeg har grunnleggende kunnskaper i linux, så et script skulle jeg sikkert få til å kjøre. Å lage det er noe verre. Setter pris på om noen kunne peke meg i riktig retning MVH Tommy Lenke til kommentar
Vakuum Skrevet 31. januar 2015 Del Skrevet 31. januar 2015 Det er ganske greit å få til, gitt at du kan litt programmering. Mitt tips er å starte med det enkle. Finn ut hvordan du kan laste en fil inn som et byte-array og hvordan du kan loope igjennom hver byte. Finn ut hvordan du kan finne en gitt byte sin index. (2.b: Finn ut hvordan du kan finne indexen til noe som består av 2 bytes) Finn slutten etter indexen du nettopp fant slik at du har startIndex og endIndex. Finn ut hvordan du kan kopiere det segmentet ut slik at du kan f.eks skrive det til en fil. Det er mye lettere om du bare skal lese filen som tekst og finne tekst. Å jobbe med bytes er gjerne litt mer komplisert. Lenke til kommentar
TommyL Skrevet 31. januar 2015 Forfatter Del Skrevet 31. januar 2015 (endret) Hei Vakuum! Fint å høre at det ikke er umulig! Mesteparten av dette gikk litt over hodet på meg... men man må jo gjøre en innsats selv også, så jeg skal ta utgangspunkt i rådene dine, og forsøke meg frem Kan jo hende jeg lærer noe i tillegg, hehe. Kan hende jeg spør igjen om jeg lurer på noe, tusen takk så lenge MVh Tommy Endret 31. januar 2015 av TommyL Lenke til kommentar
Vakuum Skrevet 31. januar 2015 Del Skrevet 31. januar 2015 Da ville jeg begynt med å lese tekst ut av en fil. Og heller gå over til bytes når du skjønner konseptet.F.eks lag en tekstfil med innholdet "En stor elefant glemmer aldri en kokt banan" og finn en måte å hente fram "glemmer aldri" på i språket du ønsker å bruke.Nybegynnertips: Ikke gjør veggen for høy. Dvs hvis noe er "umulig" så simplifiserer man og starter i det små. Så tar man erfaringene og jobber videre. Lenke til kommentar
TommyL Skrevet 31. januar 2015 Forfatter Del Skrevet 31. januar 2015 Tusen takk for gode råd! Skal forsøke litt Lenke til kommentar
Enthroner Skrevet 31. januar 2015 Del Skrevet 31. januar 2015 Et annet alternativ kunne være RegEx slik at du kan søke etter de fire første også ta med de neste 20 i en capture Lenke til kommentar
TommyL Skrevet 31. januar 2015 Forfatter Del Skrevet 31. januar 2015 Skal sjekkes ut! Takk til deg også Enthroner! Lenke til kommentar
Lycantrophe Skrevet 3. februar 2015 Del Skrevet 3. februar 2015 (endret) Et annet alternativ kunne være RegEx slik at du kan søke etter de fire første også ta med de neste 20 i en captureSom er mulig, men rimelig klønete når du ikke har linebreaks. Mulig grep -U hadde løst problemet. Endret 3. februar 2015 av Lycantrophe Lenke til kommentar
Karl Skapeland Skrevet 3. februar 2015 Del Skrevet 3. februar 2015 Jeg trenger et program som søker opp antall steder en spesiell string finnes i en hex fil. Er ikke alle filer hex-filer? Eller mener du en tekstfil med heksadesimale tall i? Lenke til kommentar
Djn Skrevet 3. februar 2015 Del Skrevet 3. februar 2015 Et annet alternativ kunne være RegEx slik at du kan søke etter de fire første også ta med de neste 20 i en captureSom er mulig, men rimelig klønete når du ikke har linebreaks. Mulig grep -U hadde løst problemet. Og regexp på vilkårlige binære data er vel også litt spennende. Det er kanskje bedre om man kan få dumpet det gjennom hexdump elns først så man har et mer begrenset tegnsett å forholde seg til? Lenke til kommentar
Enthroner Skrevet 3. februar 2015 Del Skrevet 3. februar 2015 (endret) Et annet alternativ kunne være RegEx slik at du kan søke etter de fire første også ta med de neste 20 i en captureSom er mulig, men rimelig klønete når du ikke har linebreaks. Mulig grep -U hadde løst problemet. Og regexp på vilkårlige binære data er vel også litt spennende. Det er kanskje bedre om man kan få dumpet det gjennom hexdump elns først så man har et mer begrenset tegnsett å forholde seg til? Med en "hex fil" som TS beskriver så regner jeg med det er en .hex på intel hex format. Dette er ASCII filer med et begrenset tegnsett : <- start of line A-F0-9 <- gyldige tegn \r <- carriage return \n <- newline Vil ikke tro det er problematisk å søke etter eks /B4DF00D/g ? Endret 3. februar 2015 av Enthroner Lenke til kommentar
Enthroner Skrevet 3. februar 2015 Del Skrevet 3. februar 2015 Her er et forslag: https://regex101.com/r/zO5rU6/1Bytt ut 60 med de bytes du vil matche, du sier det er fire så f.eks B4B3, dersom du vil hente ut de neste 20 så ender du opp med /(B4B3[A-E0-9]{20})/g Lykke til! Lenke til kommentar
Lycantrophe Skrevet 3. februar 2015 Del Skrevet 3. februar 2015 Om du kan anta det er det jo bare å kjøre på. Altså, regex (på vilkårlig binærdata) i utgangspunktet går kjempefint fordi du kan bygge tilstandsmaskinen direkte og hente ut bytestringen. Men off-the-shelf regex tools er stort sett basert på tekst, så det blir litt mer mas når du plutselig må forholde deg til vilkårlige newlines og ekstremt lange linjer. Lenke til kommentar
Djn Skrevet 3. februar 2015 Del Skrevet 3. februar 2015 Ja, det var det jeg tenkte på - det er ikke bare å dytte arbitrary bytes inn i re.match() eller egrep. Lenke til kommentar
asicman Skrevet 3. februar 2015 Del Skrevet 3. februar 2015 Hvis det er en binær fil og man ikke er så opptatt av ytelse kan man gjøre noe som od -w9999999999 -A none -t x1 filename | grep ... Det blir da en blank mellom hvert hex siffer som man må ta hensyn til. Lenke til kommentar
Djn Skrevet 3. februar 2015 Del Skrevet 3. februar 2015 (endret) Hvis det er en binær fil og man ikke er så opptatt av ytelse kan man gjøre noe som od -w9999999999 -A none -t x1 filename | grep ... Det blir da en blank mellom hvert hex siffer som man må ta hensyn til. Det er vel en rask | tr -d' ' | å bli kvitt? Endret 3. februar 2015 av Djn Lenke til kommentar
asicman Skrevet 4. februar 2015 Del Skrevet 4. februar 2015 Ja, eller at man bare skriver hex re med blank mellom hver byte. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå