MCPcopy
hub / github.com/moonD4rk/HackBrowserData / restoreCmd

Function restoreCmd

cmd/hack-browser-data/restore.go:16–71  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

14)
15
16func restoreCmd() *cobra.Command {
17 var (
18 keysPath string
19 dataDir string
20 dataZip string
21 browserName string
22 category string
23 outputFormat string
24 outputDir string
25 compress bool
26 )
27
28 cmd := &cobra.Command{
29 Use: "restore",
30 Short: "Decrypt copied profile data using exported master keys",
31 Example: ` hack-browser-data restore --keys keys.json --data-zip data.zip
32 hack-browser-data restore --keys keys.json --data-dir ./data -b chrome -c cookie
33 hack-browser-data restore --keys keys.json --data-dir ./chrome-userdata -b chrome
34 ssh origin "hack-browser-data dumpkeys" | hack-browser-data restore --keys - --data-zip data.zip`,
35 RunE: func(cmd *cobra.Command, args []string) error {
36 resolvedDir, cleanup, err := resolveDataDir(dataDir, dataZip)
37 if err != nil {
38 return err
39 }
40 defer cleanup()
41
42 browsers, err := loadRestoreBrowsers(keysPath, resolvedDir, browserName)
43 if err != nil {
44 return err
45 }
46 if len(browsers) == 0 {
47 log.Warnf("no browsers to restore from the supplied keys and data")
48 return nil
49 }
50 categories, err := parseCategories(category)
51 if err != nil {
52 return err
53 }
54 return extractAndWrite(browsers, categories, outputDir, outputFormat, compress)
55 },
56 }
57
58 cmd.Flags().StringVar(&keysPath, "keys", "", "keys file from dumpkeys (use - for stdin)")
59 cmd.Flags().StringVar(&dataDir, "data-dir", "", "copied profile data dir (archive layout, or one browser's User Data with -b)")
60 cmd.Flags().StringVar(&dataZip, "data-zip", "", "zip produced by the archive command (alternative to --data-dir)")
61 cmd.Flags().StringVarP(&browserName, "browser", "b", "", "restore only this browser (optional; must match a vault in --keys)")
62 cmd.Flags().StringVarP(&category, "category", "c", "all", "data categories (comma-separated): all|"+categoryNames())
63 cmd.Flags().StringVarP(&outputFormat, "format", "f", "json", "output format: csv|json|cookie-editor")
64 cmd.Flags().StringVarP(&outputDir, "dir", "d", "results", "output directory")
65 cmd.Flags().BoolVar(&compress, "zip", false, "compress output to zip")
66
67 _ = cmd.MarkFlagRequired("keys")
68 cmd.MarkFlagsMutuallyExclusive("data-dir", "data-zip")
69
70 return cmd
71}
72
73func loadRestoreBrowsers(keysPath, dataDir, browserName string) ([]browser.Browser, error) {

Callers 1

rootCmdFunction · 0.85

Calls 6

WarnfFunction · 0.92
resolveDataDirFunction · 0.85
loadRestoreBrowsersFunction · 0.85
parseCategoriesFunction · 0.85
extractAndWriteFunction · 0.85
categoryNamesFunction · 0.85

Tested by

no test coverage detected