Permalänk

skapa en krypterad json file

Hej jag undrar om någon här har erfarenheter om hur man skapar en encoded ,ja krypterad json file ? Jag ska skapa nya filer i terminalen ,Mac data ,lösenord och anteckningar .

bw get template item | jq ".name=\"My Login Item\" | .login=$(bw get template item.login | jq '.username=\"jdoe\" | .password=\"myp@ssword123\"')" | bw encode | bw create item

Så här ser det ut - men det är inte klart hur jag ska använda detta command .

Permalänk

Login-post:

bw get template item | \ jq '.name="Min Login" | .login.username="mittnamn" | .login.password="hemligtLösenord"' | \ bw encode | \ bw create item

Anteckning:

bw get template item | \ jq '.type=2 | .secureNote.type=0 | .notes="Mina anteckningar här" | .name="Min Anteckning"' | \ bw encode | \ bw create item

Är du bekant med följande kommand:
bw get template item | jq | bw encode | bw create item

Om inte, en snabb Google sökning kommer ge dig svaren du behöver. Är du osäker, återkom så hjälper jag dig ytterligare. Men försök först på egen hand.

Permalänk
Skrivet av simonkaufman:

Login-post:

bw get template item | \ jq '.name="Min Login" | .login.username="mittnamn" | .login.password="hemligtLösenord"' | \ bw encode | \ bw create item

Anteckning:

bw get template item | \ jq '.type=2 | .secureNote.type=0 | .notes="Mina anteckningar här" | .name="Min Anteckning"' | \ bw encode | \ bw create item

Är du bekant med följande kommand:
bw get template item | jq | bw encode | bw create item

Om inte, en snabb Google sökning kommer ge dig svaren du behöver. Är du osäker, återkom så hjälper jag dig ytterligare. Men försök först på egen hand.

Hej . Ja tack . ja. bw get template folder här folder ska inte ersättas med nånting ? Jag vet inte vad template är . Ja allt behöver man inte veta . Jag har kollat upp mitt terminal med % pkgutil --pkgs och jag ser att programmet org.nodejs.node.pkg är installerad .

Jag har zsh shell .

jq '.name="My First Folder"' jq är installerad ,men jag tror det är här som problemet kan vara ? . Template och jq som är oklar - annars hela command linen ser mycket enkelt ut .

Eller så först måste jag skapa en mapp i Finder och skriva in det folder namnet i "My First Folder" ,men troligen inte .Ja detta är lite knepigt . Ja jag ska studera lite och återkommer inom få dagar .

bw get template item | jq | bw encode | bw create item

Nej inte bekant med command linen .

Just detta bw get template item ,som jag inte förstår.

Har redigerat texten för att besvara frågan ,Är du bekant med följande command
Permalänk
Medlem
Skrivet av zeilinger:

Hej . Ja tack . ja. bw get template folder här folder ska inte ersättas med nånting ? Jag vet inte vad template är . Ja allt behöver man inte veta . Jag har kollat upp mitt terminal med % pkgutil --pkgs och jag ser att programmet org.nodejs.node.pkg är installerad .

Jag har zsh shell .

jq '.name="My First Folder"' jq är installerad ,men jag tror det är här som problemet kan vara ? . Template och jq som är oklar - annars hela command linen ser mycket enkelt ut .

Eller så först måste jag skapa en mapp i Finder och skriva in det folder namnet i "My First Folder" ,men troligen inte .Ja detta är lite knepigt . Ja jag ska studera lite och återkommer inom få dagar .

bw get template item | jq | bw encode | bw create item

Nej inte bekant med command linen .

Just detta bw get template item ,som jag inte förstår.

Jag tror vi behöver backa lite här. De kommandon du har listat är ett exempel för att skapa ett "item" i BitWarden genom BitWardens CLI (bw).

  • bw get template item - hämtar ut en JSON-mall för ett "item" i BitWarden. Docs

  • jq - en JSON processor som kan manipulera den JSON-mall som hämtas med bw get template item

  • bw encode - kodar resultatet i base64 (OBS: Detta är EJ kryptering, det är trivialt att få ut originaltexten)

  • bw create item - skapar upp ett "item" i ditt BitWarden vault utefter resultatet från tidigare kommandon

Jag skulle kunna förklara i detalj hur dessa kommandon interagerar, men innan jag gör det, använder du ens BitWarden? Din post säger att du vill skapa krypterade JSON-filer i terminalen, men det kommando du plockat fram sparar ett objekt i ett BitWarden Vault. Den kommer visserligen vara krypterad där, men det är inte riktigt vad du sagt att du vill göra. Du kommer inte få en fil lokalt av detta.

Om det du vill göra är att kryptera något lokalt är det mer lämpligt att använda gpg. Låt säga att du vill kryptera följande JSON.

{"hello": "there"}

Det kan du göra som följer:

echo '{"hello":"there"}' | gpg --symmetric --cipher-algo AES256 --armor --output encrypted.asc

Eller om du har en fil data.json

gpg --symmetric --cipher-algo AES256 --armor --output encrypted.asc data.json

Detta krypterar med AES256 (--symmetric --cipher-algo AES256), och sparar outputen i ASCII (--armor) i filen encrypted.asc (--output encrypted.asc). Du blir promptad för ett lösenord och får output i filen encrypted.asc stil med följande:

-----BEGIN PGP MESSAGE----- jA0ECQMK2Qo+CiGHyJ3/0kcBLeUminon6XFS9ge69O9AKNg7gNLlp7KxMqcT9ANP SRncBc9TI53XintsRx9uO2TU4ME38oyOu7etvdQzvkVrq51uZAvKfQ== =CrR1 -----END PGP MESSAGE-----

Dold text

Denna text kan du avkryptera med följande kommando.

gpg --decrypt encrypted.asc

Du kommer återigen bli promptad för lösenordet (om det inte tillfälligt sparats i exempelvis gpg-agent, då akvrypteras meddelandet direkt).

Låter detta mer i stil med vad du vill göra? Behöver du mer specifik hjälp är det bara att fråga.

Permalänk
Skrivet av SimpLar:

Jag tror vi behöver backa lite här. De kommandon du har listat är ett exempel för att skapa ett "item" i BitWarden genom BitWardens CLI (bw).

  • bw get template item - hämtar ut en JSON-mall för ett "item" i BitWarden. Docs

  • jq - en JSON processor som kan manipulera den JSON-mall som hämtas med bw get template item

  • bw encode - kodar resultatet i base64 (OBS: Detta är EJ kryptering, det är trivialt att få ut originaltexten)

  • bw create item - skapar upp ett "item" i ditt BitWarden vault utefter resultatet från tidigare kommandon

Jag skulle kunna förklara i detalj hur dessa kommandon interagerar, men innan jag gör det, använder du ens BitWarden? Din post säger att du vill skapa krypterade JSON-filer i terminalen, men det kommando du plockat fram sparar ett objekt i ett BitWarden Vault. Den kommer visserligen vara krypterad där, men det är inte riktigt vad du sagt att du vill göra. Du kommer inte få en fil lokalt av detta.

Om det du vill göra är att kryptera något lokalt är det mer lämpligt att använda gpg. Låt säga att du vill kryptera följande JSON.

{"hello": "there"}

Det kan du göra som följer:

echo '{"hello":"there"}' | gpg --symmetric --cipher-algo AES256 --armor --output encrypted.asc

Eller om du har en fil data.json

gpg --symmetric --cipher-algo AES256 --armor --output encrypted.asc data.json

Detta krypterar med AES256 (--symmetric --cipher-algo AES256), och sparar outputen i ASCII (--armor) i filen encrypted.asc (--output encrypted.asc). Du blir promptad för ett lösenord och får output i filen encrypted.asc stil med följande:

-----BEGIN PGP MESSAGE----- jA0ECQMK2Qo+CiGHyJ3/0kcBLeUminon6XFS9ge69O9AKNg7gNLlp7KxMqcT9ANP SRncBc9TI53XintsRx9uO2TU4ME38oyOu7etvdQzvkVrq51uZAvKfQ== =CrR1 -----END PGP MESSAGE-----

Dold text

Denna text kan du avkryptera med följande kommando.

gpg --decrypt encrypted.asc

Du kommer återigen bli promptad för lösenordet (om det inte tillfälligt sparats i exempelvis gpg-agent, då akvrypteras meddelandet direkt).

Låter detta mer i stil med vad du vill göra? Behöver du mer specifik hjälp är det bara att fråga.

Hej . Jag har ett Bitwarden konto ja.

Supporten hörde av sig ,men de är överbelastade så det är fördröjning på mina frågor iaf så är skrev han eller hon.

The bw create command requires encoded JSON as input, and bw get template is a helpful way to generate the correct structure before creating objects.

Here are some quick examples you can try:

Create a folder
bw get template folder | jq '.name="My First Folder"' | bw encode | bw create folder

Create a Login item
​bw get template item | jq '.name="My Login Item" | .login=$(bw get template item.login | jq '.username="jdoe" | .password="myp@ssword123"')' | bw encode | bw create item

Create a Secure Note
bw get template item | jq '.type=2 | .secureNote.type=0 | .notes="Contents of my Secure Note." | .name="My Secure Note"' | bw encode | bw create item

Men här

bw get template folder | jq '.name="My First Folder"' | bw encode | bw create folder

Om vi leker med detta, så vad är skelettet i det hela ? Jag menar vad är det som man ska överskrivas ?

Jag skrev så här ( jag skrev över '.name="My First Folder"' ) % bw get template folder | jq '. havet | bw encode | bw create folder

Och hela terminalen blev som ett julgran ,altså massa error . havet är namnet på min mapp eller folder .

Är detta command är ett självgående varelse eller ska man först preparera nånting för det ? Och vilka är de texten som ska överskrivas ?

<'.name="My First Folder"'> men om man ska överskriva detta så hade texten stått i vinkel tecken eller vad det nu kallas för <> ?

Jag tror inte att supporten kan vara hjälplig i detta längre ,då de har lättare saker att uträtta och många som skriver till de om helt enkla saker - det här är inte deras bord - som jag har känt på supporten .

Ja jag ska läsa noga vad du skrev tidigare .

I de här olika kommandon ,så skulle jag gärna vilja särskilja vilka är de texter som är absoluta ,dvs man får aldrig ändra på de , och de texter som man måste överskriva .

Den här commandon nedan använder jag för att skapa bilagor i min bw vault

bw create attachment --file /path/to/myfile.ext --itemid <itemid>

ser mycket enkelt ut ,men det tog månader innan jag förstod hur man använder det ,bara om man förstår vad som är vad som man kan använda en kommando .

men på slutet när allting var klar så ändå missade jag att göra ett tomt mellan slag mellan --file och /path och såklart allt gick åt vargarna ja

--file_ /path

Den här kommandon är nu väldokumenterad och används ganska ofta , men det där med

bw get template folder är mycket oklar .

Jag GPG är oerhört användbart ,jag använder det ganska ofta i finder ,inte i terminalen än .Också i iCloud mail använder jag minst några gånger / år .

Permalänk
Medlem
Skrivet av zeilinger:

Hej . Jag har ett Bitwarden konto ja.

Supporten hörde av sig ,men de är överbelastade så det är fördröjning på mina frågor iaf så är skrev han eller hon.

The bw create command requires encoded JSON as input, and bw get template is a helpful way to generate the correct structure before creating objects.

Here are some quick examples you can try:

Create a folder
bw get template folder | jq '.name="My First Folder"' | bw encode | bw create folder

Create a Login item
​bw get template item | jq '.name="My Login Item" | .login=$(bw get template item.login | jq '.username="jdoe" | .password="myp@ssword123"')' | bw encode | bw create item

Create a Secure Note
bw get template item | jq '.type=2 | .secureNote.type=0 | .notes="Contents of my Secure Note." | .name="My Secure Note"' | bw encode | bw create item

Okej, så du vill alltså skapa någon form av objekt i Bitwarden. Om du vill ha specifik hjälp behöver du beskriva mer utförligt vad du försöker göra, dvs, vilken typ av data du försoker spara i Bitwarden och hur du vill att den ska vara organiserad.

Din problembeskrivning faller en del in i X/Y-problemet. Jag rekommenderar att du läser denna tråd innan du ber om hjälp igen. Det kommer bespara både dig och eventuella hjälpredor en del tid!

Skrivet av zeilinger:

Men här

bw get template folder | jq '.name="My First Folder"' | bw encode | bw create folder

Om vi leker med detta, så vad är skelettet i det hela ? Jag menar vad är det som man ska överskrivas ?

Det är egentligen tre grejer du behöver greppa här:

  1. Pipes

  2. Bitwardens CLI (som har hygglig dokumentation här)

  3. jq (som har mycket utförlig dokumentation här)

Till att börja med är det inte ett kommando som exekveras ovan, utan fyra. De är sammanfogade med pipes (|), som tar utdatan från kommandot till vänster och ger det som indata till kommandot till höger. Du kanske är med på det redan, men jag ville förtydliga det eftersom det då blir rätt uppenbart hur du tar reda på exakt vad `bw get template folder` gör. Bara kör det för sig!

$ bw get template folder {"name":"Folder name"}

Det är alltså en mycket liten JSON-struktur med endast en attribut, "name". Andra templates, exempelvis för "item", ser annorlunda ut. Testa och se hur de ser ut!

Men då kan vi lägga på jq för att se hur det förändrar datan.

$ bw get template folder | jq '.name="My First Folder"' { "name": "My First Folder" }

Tillägget av `jq` skriver alltså över attributen "name" med ett nytt värde. Om du istället avstår från att specificera ett nytt värde och endast ger en path (i detta fall, bara `.name`) så plockar `jq` ut värdet för den nyckeln istället. Jag nämner detta då du glort en tabbe i detta avseende med .havet nedan.

$ bw get template folder | jq '.name' "Folder name"

Notera också att attributen vi vill "skriva över" inte behöver finnas i JSON-strukturen till att börja med, då syntaxen `.<key>=<value>` helt sonika lägger in detta nyckel-värde-par i strukturen.

$ echo '{}' | jq '.name="My First Folder"' { "name": "My First Folder" }

Då är det dags att lägga till `bw encode` och se hur det förändrar datan.

$ bw get template folder | jq '.name="My First Folder"' | bw encode ewogICJuYW1lIjogIk15IEZpcnN0IEZvbGRlciIKfQo=

Detta är exakt samma output som innan, men kodad i base64 som är lätt att skicka. Det är i min mening något underligt att ha ett CLI som tar base64-kodad data som input, men det är så de har valt att göra. Vi kan se att detta är just base64 då det är lätt att avkoda om vi pipear outputen vidare ett steg.

$ bw get template folder | jq '.name="My First Folder"' | bw encode | base64 -d { "name": "My First Folder" }

Hur som helst kan vi nu lägga till sista steget: att skapa upp mappen.

$ bw get template folder | jq '.name="My First Folder"' | bw encode | bw create folder {"object":"folder","id":<some-uuid>,"name":"My First Folder"}

Nu är just folder-strukturen extremt enkel, så vi skulle lika gärna kunna göra följande för samma utfall.

$ echo '{"name": "My First Folder"}' | bw encode | bw create folder

Andra strukturer, såsom den för "item", innehåller dock avsevärt mer data och det blir mer betydelsefullt att använda `bw get template`.

Testa dig fram enligt ovan så ska du nog lösa det du vill oavsett vilken form av objekt du vill skapa!

Skrivet av zeilinger:

Jag skrev så här ( jag skrev över '.name="My First Folder"' ) % bw get template folder | jq '. havet | bw encode | bw create folder

Och hela terminalen blev som ett julgran ,altså massa error . havet är namnet på min mapp eller folder .

Som en liten fotnot så ville jag bara säga att det underlättar om du tar med felmeddelanden också när du söker hjälp! Nu ser jag två fel här (öppnar en sträng med ' men stänger den inte vid `jq`), men du har också missförstått hur `jq` fungerar enligt det jag påpekade ovan med att plocka ut eller lägga in attribut.

Stavfel
Permalänk

% /bw get template folder
? Master password: [hidden]
{"name":"Folder name"}

% /bw get template folder | jq {"name":"dicing"}| bw encode | bw create dicing

zsh: command not found: jq
zsh: command not found: bw
zsh: command not found: bw
? Master password: [hidden]
node:events:496
throw er; // Unhandled 'error' event
^

Error: write EPIPE
at afterWriteDispatched (node:internal/stream_base_commons:159:15)
at writeGeneric (node:internal/stream_base_commons:150:3)
at Socket._writeGeneric (node:net:971:11)
at Socket._write (node:net:983:8)
at writeOrBuffer (node:internal/streams/writable:572:12)
at _write (node:internal/streams/writable:501:10)
at Writable.write (node:internal/streams/writable:510:10)
at writeLn (/snapshot/clients/apps/cli/build/bw.js:28772:20)
at VaultProgram.processResponse (/snapshot/clients/apps/cli/build/bw.js:29180:17)
at VaultProgram.<anonymous> (/snapshot/clients/apps/cli/build/bw.js:44707:18)
Emitted 'error' event on Socket instance at:
at emitErrorNT (node:internal/streams/destroy:170:8)
at emitErrorCloseNT (node:internal/streams/destroy:129:3)
at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
errno: -32,
code: 'EPIPE',
syscall: 'write'
}

Node.js v22.15.1

Lyckades inte att manipulera templatet jq bw bw not found

Jag tror att jag skriver fel ?

Bitwarden support skrev att han är inte så bra på CLI ,farao ? Jag fick en länk .haha den länken har jag läst många gånger -den är perfect för proffs - men inte för vanliga användare .

Ja jag vill lära mig dessa ,för det går inte att ladda up viktiga document via webben eller desktop - farao.

Ja iaf bilagor kan jag väl ,men inte hur man skapar nya object . Iaf jag fick de uppgifterna ovan. Ja jag har installerat Node.js v22.15.1 så det kan inte vara boven i dramat ?

$ bw get template folder | jq '.name="My First Folder"'
{
"name": "My First Folder"
}

Hur ska man skriva skriva detta ? efter jq ska man ta bort '.name="My First Folder"' och ersätta med {"name": "My First Folder"}

Permalänk
Medlem

Lite fler grejer att jobba igenom ser jag! Vi tar en sak i taget.

Skrivet av zeilinger:

% /bw get template folder
? Master password: [hidden]
{"name":"Folder name"}

Det här ser bra ut, det innebär iallafall att bw finns på din dator samt att du har ett giltigt konto. Det är dock en sak som är udda, och det är att du skriver /bw istället för bara bw. Det säger mig att du har en binär bw som ligger i roten till ditt filsystem, men som vi kommer se lite längre ner så ligger denna inte på din path. Det hör inte till vanligheterna att placera binärer i roten, men för att undvika orelaterad komplexitet så tar vi inte tag i det nu.

Notera dock att överallt som du ser bw i exempelkod måste du ersätta det med /bw, annars får du ett felmeddelande. Se spoilern längst ner i denna post för hur du kan göra så att bara bw fungera som kommando.

Skrivet av zeilinger:

% /bw get template folder | jq {"name":"dicing"}| bw encode | bw create dicing

zsh: command not found: jq
zsh: command not found: bw
zsh: command not found: bw

Nu gick det lite fort här och jag kan konstatera flertalet fel.

  • zsh: command not found: jq innebär att jq antingen inte är installerat, eller inte finns på din path

  • zsh: command not found: bw innebär samma sak som ovan, men vi vet redan att du har bw i roten till ditt filsystem och att vi kan snabbfixa detta genom att byta ut bw mot /bw

  • jq {"name":"dicing"} är fel på flera sätt

    • Syntaxfel: argumentet till jq måste inneslutas som en sträng pga specialtecken, dvs {"name":"dicing"} ska vara '{"name":"dicing"}'

    • Ovan är dock ändå inte ett giltigt argument till jq, vi tar det nedan! Men tänk på att innesluta komplexa argument på command line i explicita strängar.

Hur som, om du felsöker genom att endast lägga till kommando nr 2 (dvs jq) så blir det avsevärt lättare att förstå vad som går snett.

Först och främst, klargör om jq är installerat! Det skeppar inte med macOS. Baserat på ovan felmeddelande verkar det inte vara installerat. Du finner https://jqlang.org/download/.

Sedan, när du bygger upp komplexa pipeade kedjor med kommandon, se till att bara lägga till en pipe i taget. Du gick från att hämta templaten till att slänga ihop alla fyra kommandon, och det blev fel i samtliga av de tre kommandon du lade till. Ta ett steg i taget! Vi börjar med att bara lägga på jq.

$ bw get template folder {"name":"Folder name"} $ bw get template folder | jq '.name="My First Folder"' { "name": "My First Folder" }

Om vi stannar där, och du studerar endast dessa kommandon noggrant, vad behöver du ändra för att få värdet "My First Folder" i output att bli "dicing" istället?

För att vidare illustrera jq in action.

# vårt basobjekt $ bw get template folder {"name":"Folder name"} # sätter attributen name till "Lars" $ bw get template folder | jq '.name="Lars"' { "name": "Lars" } # sätter attributen name till "Sven" $ bw get template folder | jq '.name="Sven"' { "name": "Sven" } # ett mer komplext exempel som även lägger till attributen age med värde 22, bara för att illustrera hur du manipulerar flera värden med ett jq-kommando # OBS: Notera att pipen mellan name och age ligger INUTI strängargumentet till jq $ echo '{}' | jq '.name="Sven" | .age=22' { "name": "Sven", "age": 22 }

Ta ett steg i taget och gå tillbaka till exemplen om du kör fast. Ändra en sak i taget och se till att du förstår varje steg. Detta kommer hjälpa dig när du behöver editera de mer komplexa mallarna senare, exempelvis med det kommando för item som du visade i din första post.

I nedan spoiler tipsar jag dig om hur du bör installera CLI-program på din dator.

Program bör inte ligga i roten till ditt filsystem, och de bör finnas på din PATH s.a. du ex bara kan skriva bw för att köra programmet. Jag har själv aldrig ägt en Mac, men mina kollegor använder Homebrew för att installera CLI-program, och det kommer att se till att programmen hamnar på din PATH.

Om du inte är med på vad jag menar med PATH kan du läsa på om det på många platser på nätet, exempelvis här.

Dold text
Lade till en liten fotnot om att installera CLI-program
Permalänk

Ja jag vet inte om du har fått mina svar ,jag hittar inte mina svar nånstans .

Jag skrev att att jag hittade paketet ,men att Apple tillåter mig inte att öppna eftersom sändaren går ej att identifiera .

which jq
jq not found
Såklart jag har inte jq ,inte som en användbar jq ,. brew gick inte Monterey är för gammal.

”jq-macos-amd64” kan inte öppnas eftersom det kommer från en oidentifierad utvecklare.

Ja jag fick ladda ner Macport för Monterey och använda sudo port install jq ,so efter

which jq
/opt/local/bin/jq

så fick jag dessa meddelanden

process
Permalänk
Medlem
Permalänk

Ja jag fick nerladdat via Macport - men farao jag är fortfarande osäker på detta iaf

på command which jq /opt/local/bin/jq

så ser jag att den är nu aktiv .

Permalänk
Skrivet av clnr:

/bw get template folder | jq '.name="ankblomma"'
? Master password: [hidden]
{
"name": "ankblomma"
}

fick ut detta svar , det verkar som att jq command krypterade mappen ankblomman ?

Ska kolla vad du skrev och försöka gå vidare me command linen

Permalänk
Hedersmedlem
Skrivet av zeilinger:

/bw get template folder | jq '.name="ankblomma"'
? Master password: [hidden]
{
"name": "ankblomma"
}

fick ut detta svar , det verkar som att jq command krypterade mappen ankblomman ?

Ska kolla vad du skrev och försöka gå vidare me command linen

Det enda det där kommandot gör är att skriva ut texten som du ser där. "bw get template folder" skriver ut texten med tomt namn till terminalen, jq ändrar namnet till "ankblomma" och skriver det till terminalen.

Det är när man lägger till flera kommandon med | bw efter, som i exemplena ovan, som det faktiskt ändrar något i Bitwarden.
I princip så formaterar du argumentet till ett kommando som sedan skall skickas till Bitwarden (t ex kommandot bw create folder) , men nu skrivs det argumentet till skärmen istället.

Visa signatur

Asus ROG STRIX B550-F / Ryzen 5800X3D / 48 GB 3200 MHz CL14 / Asus TUF 3080 OC / WD SN850 1 TB, Kingston NV1 2 TB + NAS / Corsair RM650x V3 / Acer XB271HU (1440p165) / LG C1 55"
NAS: 6700K/16GB/Debian+ZFS | Backup (offsite): 9600K/16GB/Debian+ZFS