LWN.net Logo

GPL enforcement: waiting for the Monsoon

GPL enforcement: waiting for the Monsoon

Posted Sep 26, 2007 18:46 UTC (Wed) by jengelh (subscriber, #33263)
Parent article: GPL enforcement: waiting for the Monsoon

From GARY-MM's forum post:

>Seems to me that some of you have just come out blatantly admitting you are reverse engineering the firmware - or trying to. How should we handle this?

Running strings on firmware is not considered reverse engineering, at least in Germany[1].

[1] http://www.jbb.de/judgment_dc_frankfurt_gpl.pdf (english), page 5, paragraph 6, "Plaintiff's copyright claim may also be based on the code strings identified by Plaintiff. Contrary to Defendant's claims, this evidence is not excluded."


(Log in to post comments)

GPL enforcement: waiting for the Monsoon

Posted Sep 27, 2007 0:57 UTC (Thu) by Ross (subscriber, #4065) [Link]

I totally agree.

In fact reverse engineering is a whole separate class of effort from running a single command. It is the opposite of normal engineering -- you take something that exists and trying to figure out how to make a set of requirements out of it (normally for the purpose of making a similar design and then implementing it).

strings is just a way to see what text is in a binary -- it tells you little or nothing about the internal structure, though, like in this case, it can tell you if there are similarities with well-known products. That's using it as more of a copy-detection tool than reverse engineering.

GPL enforcement: waiting for the Monsoon

Posted Sep 27, 2007 22:10 UTC (Thu) by giraffedata (subscriber, #1954) [Link]

It is the opposite of normal engineering -- you take something that exists and trying to figure out how to make a set of requirements out of it (normally for the purpose of making a similar design and then implementing it).

I don't think that's what is meant by reverse engineering. What you describe would be pretty useless, because the requirements are usually glaringly obvious. In typical engineering, you go from requirements to design, and then in manufacturing you go from design to implementation. Reverse engineering is like any other engineering, in that its goal is a design that fulfills certain requirements. But you get to it by starting with an implementation -- i.e. the reverse direction of normal.

In engineering a ballpoint pen, you start with requirements such as "must write upside down" and "must fit in a human hand" and end up with blueprints sufficient for the manufacturer to make one or more pens. Blueprints are the design. In reverse engineering a ballpoint pen, you take a manufactured pen and dismantle and measure to arrive at equivalent blueprints. You then give those to your own manufacturer to make identical pens.

strings is a great reverse engineering tool. It helps you see what pieces the system is made of -- what engineering choices went into it, so you could possibly make one yourself.

GPL enforcement: waiting for the Monsoon

Posted Sep 27, 2007 22:32 UTC (Thu) by jengelh (subscriber, #33263) [Link]

strings is more like taking a look at the pen and noticing that there's "Busybox" printed at the side (think of these self-advertising gifts companies hand out).

GPL enforcement: waiting for the Monsoon

Posted Sep 28, 2007 5:44 UTC (Fri) by sepreece (subscriber, #19270) [Link]

It's somewhere in-between. What you get from strings is not what's on the outside of the binary, but what's on the inside. Using it certainly *could* be part of a reverse-engineering effort. Whether it violates the EULA would depend on the exact terms of the EULA - if it says "reverse engineering" then you could argue intent; if it specifically says you agree not to look at the executable code, then you'd have a harder argument.

GPL enforcement: waiting for the Monsoon

Posted Sep 29, 2007 8:14 UTC (Sat) by jengelh (subscriber, #33263) [Link]

Mh, a text string in a binary is like a ink drop on paper -- it will be visible on both sides.

GPL enforcement: waiting for the Monsoon

Posted Sep 28, 2007 5:53 UTC (Fri) by Ross (subscriber, #4065) [Link]

I hope it wouldn't be useless, because that's what is usually being done.

If you are copying internal details that don't matter, just because you don't want to design them yourself, that's also reverse engineering, but it is probably also copyright infringement assuming the original is under copyright.

The point is, when you are doing this, it is because you have to be compatible for some reason -- to match an interface, protocol, connector type, etc. Some of the details of the original become requirements in the new design, because if they didn't match, your replacement part wouldn't work.

GPL enforcement: waiting for the Monsoon

Posted Sep 29, 2007 19:22 UTC (Sat) by giraffedata (subscriber, #1954) [Link]

I forgot about the reverse engineering to determine an interface protocol. I don't think my engineering terminology calls that interface protocol "requirements," though. Requirements I'm used to are something like "must read Microsoft Word documents," and then it is an engineering task to develop a design, which includes figuring out the Word document format, and you might do that starting with a finished copy of Word. The resulting design might be expressed in a functional specification, which would include the document format.

If you are copying internal details that don't matter, just because you don't want to design them yourself, that's also reverse engineering, but it is probably also copyright infringement assuming the original is under copyright.

To be copyright infringement, you'd have to copy the code verbatim, and then I don't see any engineering involved. If you just disassemble the code, understand how it's structured, and then write code that's structured the same way and does the same things, there's no copyright infringement. In fact, you can start with the original source code and do the same thing and you're still OK.

Patent infringement, maybe. If it's easier to analyze someone else's object code than to write code from scratch, you're probably dealing with some patentable innovation.

GPL enforcement: waiting for the Monsoon

Posted Sep 27, 2007 6:29 UTC (Thu) by ekj (guest, #1524) [Link]

Besides -- it's completely irrelevant if doing that constitutes "reverse engineering" or not.

First, reverse engineering isn't prohibited. There is no law forbidding you from trying to understand how something you own works.

If you agreed to an EULA wherein reverse engineering was prohibited, you *may* have had a problem if you a) live in a jurisdiction where such have any weigth whatsoever and b) if the company actually owned what they're "licensing" -- which fails to be the case here.

In any case, the firmware is freely downloadable completely without agreeing to any EULA, so that point is moot regardless.

Copyright © 2013, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds