aboutsummaryrefslogtreecommitdiff
path: root/cmd/enc/enc.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-09-18 19:17:50 +0200
committerDimitri Sokolyuk <demon@dim13.org>2016-09-18 19:17:50 +0200
commit3ff749c98c4593ff35b2f82de222db9f97954f29 (patch)
treebcf452f4c58f9e65e3c1d4b8cb0034b798c1a2b7 /cmd/enc/enc.go
parentdab8960e11bcbd102469881f3e1f9a75abadb896 (diff)
Move to cmd
Diffstat (limited to 'cmd/enc/enc.go')
-rw-r--r--cmd/enc/enc.go45
1 files changed, 45 insertions, 0 deletions
diff --git a/cmd/enc/enc.go b/cmd/enc/enc.go
new file mode 100644
index 0000000..5f7a987
--- /dev/null
+++ b/cmd/enc/enc.go
@@ -0,0 +1,45 @@
+// Decrypt Graphtec files
+package main
+
+import (
+ "bytes"
+ "crypto/cipher"
+ "crypto/des"
+ "flag"
+ "fmt"
+ "io/ioutil"
+ "log"
+)
+
+var (
+ magic = []byte{0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99}
+ key = []byte{0x32, 0x5d, 0xbc, 0x97, 0xa8, 0xa1, 0x26, 0x08}
+ zero = []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+ file = flag.String("file", "Graphtec.enc", "file name")
+)
+
+func main() {
+ flag.Parse()
+
+ f, err := ioutil.ReadFile(*file)
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ if !bytes.Equal(f[:8], magic) {
+ log.Fatal("bad magic")
+ }
+
+ block, err := des.NewCipher(key)
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ data := f[0x88:]
+ mode := cipher.NewCBCDecrypter(block, zero)
+ mode.CryptBlocks(data, data)
+
+ size := len(data)
+ size -= int(data[size-1:][0])
+ fmt.Print(string(data[:size]))
+}