t3rm1n4l / megacmd

A command-line client for mega.co.nz storage service
455 stars 75 forks source link

"BAD ATTRIBUTE" when listing #65

Open xiconet opened 9 years ago

xiconet commented 9 years ago

Hello, I see megacmd allows "segmented" downloading and i'd love to be able to use it. Unfortunately, this is what I get when trying to list items in some account:

Root: seems OK, the two existing folders are shown.

$ megacmd list mega:/
mega:/Jazz In Paris/                               0          2014-12-28T09:22:51+01:00
mega:/Les tresors du Jazz/                         0          2015-01-03T17:17:00+01:00

But if I try to list one of these folders:

$ megacmd list "mega:/Jazz In Paris/"
mega:/Jazz In Paris/#001 - Louis Armstrong - The Best Live Concert Vol. 1 (1965)/ 0          2014-12-28T09:43:52+01:00
mega:/Jazz In Paris/#002 - Louis Armstrong - The Best Live Concert Vol. 2 (1965)/ 0          2014-12-28T09:53:21+01:00
mega:/Jazz In Paris/BAD ATTRIBUTE/                 0          2014-12-29T02:35:46+01:00
mega:/Jazz In Paris/BAD ATTRIBUTE/                 0          2014-12-29T03:26:03+01:00
mega:/Jazz In Paris/BAD ATTRIBUTE/                 0          2014-12-29T04:14:56+01:00
mega:/Jazz In Paris/BAD ATTRIBUTE/                 0          2014-12-29T05:04:40+01:00
mega:/Jazz In Paris/BAD ATTRIBUTE/                 0          2014-12-29T05:42:54+01:00
mega:/Jazz In Paris/#017 - Toots Thielemans - Blues Pour Flirter (1961)/ 0
    2014-12-29T06:37:06+01:00
mega:/Jazz In Paris/BAD ATTRIBUTE/                 0          2014-12-29T07:14:16+01:00
mega:/Jazz In Paris/#021 - Don Byas - Laura (1950-1952)/ 0          2014-12-29T07:57:47+01:00
mega:/Jazz In Paris/BAD ATTRIBUTE/                 0          2014-12-29T08:52:13+01:00
mega:/Jazz In Paris/BAD ATTRIBUTE/                 0          2014-12-29T09:35:44+01:00
mega:/Jazz In Paris/#029 - Pierre Michelot - Round About A Bass (1963)/ 0
   2014-12-29T10:19:28+01:00
mega:/Jazz In Paris/#030 - Oscar Peterson & Stephane Grappelli Quartet, Vol. 1 (1973)/ 0          2014-12-29T10:57:13+01:00
mega:/Jazz In Paris/BAD ATTRIBUTE/                 0          2014-12-29T11:39:21+01:00
mega:/Jazz In Paris/BAD ATTRIBUTE/                 0          2014-12-29T12:20:30+01:00
mega:/Jazz In Paris/BAD ATTRIBUTE/                 0          2014-12-29T12:59:51+01:00
mega:/Jazz In Paris/BAD ATTRIBUTE/                 0          2014-12-29T13:52:11+01:00
mega:/Jazz In Paris/BAD ATTRIBUTE/                 0          2014-12-29T14:42:21+01:00
mega:/Jazz In Paris/BAD ATTRIBUTE/                 0          2014-12-29T15:26:37+01:00
mega:/Jazz In Paris/BAD ATTRIBUTE/                 0          2014-12-29T16:12:23+01:00
mega:/Jazz In Paris/#052 - Dizzy Gillespie - Cognac Blues (1952•1953)/ 0
  2014-12-29T17:01:29+01:00
mega:/Jazz In Paris/BAD ATTRIBUTE/                 0          2014-12-29T18:15:58+01:00
mega:/Jazz In Paris/BAD ATTRIBUTE/                 0          2014-12-29T18:58:08+01:00
mega:/Jazz In Paris/BAD ATTRIBUTE/                 0          2014-12-29T20:18:57+01:00
mega:/Jazz In Paris/BAD ATTRIBUTE/                 0          2014-12-29T21:09:15+01:00
mega:/Jazz In Paris/BAD ATTRIBUTE/                 0          2014-12-29T23:09:18+01:00
mega:/Jazz In Paris/BAD ATTRIBUTE/                 0          2014-12-30T00:27:14+01:00
mega:/Jazz In Paris/BAD ATTRIBUTE/                 0          2014-12-30T00:54:20+01:00
mega:/Jazz In Paris/BAD ATTRIBUTE/                 0          2014-12-30T01:52:29+01:00
mega:/Jazz In Paris/BAD ATTRIBUTE/                 0          2014-12-30T02:29:59+01:00
mega:/Jazz In Paris/BAD ATTRIBUTE/                 0          2014-12-30T03:12:27+01:00
mega:/Jazz In Paris/BAD ATTRIBUTE/                 0          2014-12-30T03:46:01+01:00
mega:/Jazz In Paris/BAD ATTRIBUTE/                 0          2014-12-30T20:37:45+01:00
mega:/Jazz In Paris/BAD ATTRIBUTE/                 0          2014-12-30T21:58:47+01:00
mega:/Jazz In Paris/BAD ATTRIBUTE/                 0          2014-12-30T22:32:32+01:00
mega:/Jazz In Paris/BAD ATTRIBUTE/                 0          2014-12-30T23:10:16+01:00
mega:/Jazz In Paris/BAD ATTRIBUTE                  48401      2014-12-31T00:37:33+01:00
mega:/Jazz In Paris/#006 - Peanuts Holland, Buck Clayton, Charlie Singleton - Club Session (1953-1955)/ 0          2014-12-31T00:42:54+01:00
mega:/Jazz In Paris/BAD ATTRIBUTE/                 0          2014-12-31T02:01:06+01:00
mega:/Jazz In Paris/BAD ATTRIBUTE/                 0          2014-12-31T03:02:1

What surprises me is that some sub-folders do appear, while all names are (apparently) of the same form and come from the same source. Moreover, all have been uploaded with the same tool. So what is it that makes a "bad attribute"? I used a self-compiled version on a machine running WinXP-sp3. Same problem when using either the native cmd.exe or git-bash.

mgcrea commented 9 years ago

You need to compile latest binary from git (requires go-1.3). Confirmed to work.

xiconet commented 9 years ago

I have the same problem with an executable compiled with go 1.4, according to the instructions you provide: git clone https://github.com/t3rm1n4l/megacmd.git cd megacmd make

xiconet commented 9 years ago

Guess I'll have to learn a bit more about about the Go language. Thanks for the code anyway.

xiconet commented 8 years ago

Well, here I come again after learning some go confirmed NOT to work:

in file utils.go

func decryptAttr (...) {
    ...

    if string(buf[:4]) == "MEGA" {
        str := strings.TrimRight(string(buf[4:]), "\x00")

        fmt.Println("str:", str)  // this is the debug statement I added

        err = json.Unmarshal([]byte(str), &attr)

    }
        return
}

megacmd list mega:/ > output

example output, as seen in Notepad++

str: {"n":"Weather Report - Live in Tokyo (1972)"}  // OK, correctly listed
str: {"n":"Herbie Mann"} NUL DC3 NUL EOT NUL S SOH SI   // This will throw BAD ATTRIBUTE

This shows that the decoded attributes are (very often in my case) followed by non NUL characters, and explains why the downstream function returns BAD ATTRIBUTE

xiconet commented 8 years ago

Should be easy to fix, some regexp perhaps?

JosePineiro commented 8 years ago

The solution a this bug: 1- Download the package go- mega and put in local directory. 2 - Edit utils.go file 3 - Find the line: str := strings.TrimRight(string(buf[4:]), "\x00") 4 - Replace for line: str := string(buf[4:strings.Index(string(buf), "\x00")])