Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

executable name sucks #1

Open
m4b opened this issue Feb 26, 2017 · 31 comments
Open

executable name sucks #1

m4b opened this issue Feb 26, 2017 · 31 comments
Labels

Comments

@m4b
Copy link
Owner

m4b commented Feb 26, 2017

Current Candidate(s)

  • bingrep (no rename)
  • binocular
  • bing

bg cannot be used without path prefix because of bg for job backgrounding in bash/posix.

so we need to choose a better one. i'm thinking two letters (lets jump on the grep shortname bandwagon renaissance we're in the middle of).

Some candidates:

  1. binocular
  2. binlens
  3. od (ObjDump)
  4. ng (biNGrep)
  5. ig (bInGrep)
  6. bd (BinDump)
  7. bing (BINGrep)
  8. bgrep

Or also any other name :P

@m4b m4b added the question label Feb 26, 2017
@IWriteThings
Copy link

I would like to recommend 'bing' (binGrep) for no other reason than the obvious.

@m4b
Copy link
Owner Author

m4b commented Jun 6, 2017

This is clearly and obviously the best name currently suggested. Thank you 💃

@m4b
Copy link
Owner Author

m4b commented Jun 6, 2017

On the other hand, I don't want to awaken the beast of Redmond and have them lock up the bingrep repo in piles of cease and desist orders for years to come... 🤔

@saghm
Copy link

saghm commented Jun 11, 2017

Not sure if it's taboo to ask this, but is there a reason that bingrep itself isn't in consideration? I know that shorter names are generally considered more valuable, but I think that a) seven letters isn't really that long, especially given tab completion b) users can always make an alias if they find they're needing to save a few keystrokes c) there's a much lower change of collision in naming (like what was run into with bg and d) users are less likely to forget what the correct command is if they don't use this very often (whereas options 1-4 are things that I'd personally never remember).

Obviously, I'm not a stakeholder in this in any way, and I'm honestly not sure how often I'd need to use this (very awesome!) tool given the type of things that I work on, but I thought it might be worth putting in my two cents since this is still an open question.

@ryancnelson
Copy link

"od" has been a Unix program name for literally decades : https://en.m.wikipedia.org/wiki/Od_(Unix)

@rjtobin
Copy link

rjtobin commented Jun 11, 2017

As per the Hacker News discussion (https://news.ycombinator.com/item?id=14530054), "less" seems like a better analogy than "grep" (since this utility does not search).

"binless" was suggested over there.

@m4b
Copy link
Owner Author

m4b commented Jun 11, 2017

@saghm No worries, there's no taboos here :) I think I'm actually in agreement you; also bingrep isn't like ag or rg or whatever that you use it very frequently.

@ryancnelson lol whoops; so clearly i'm great at selecting names which already exist

@rjtobin hehe I like binless too actually, and yes it's more like less I suppose. Really it's like a colorized objdump

@liotev
Copy link

liotev commented Jun 11, 2017

The name "bingrep" and the description ("like grep but for binaries") are a bit misleading (this tool is not like grep, in that it does not search for a pattern). The name "binless" would not be precise too, because "less" pages the output, while "bingrep" does not. May be "bincat" would be best, because it is more like "cat" for binaries.

@madnight
Copy link

It doesn't really seem like grep to me. grep takes 2 inputs: a text and a search string. bingrep only takes one input, a binary. Without a search string it's hard to really say this is like grep.
It seems similar to objdump but with somewhat differing information and with coloring.
https://news.ycombinator.com/item?id=14530054

suggestion: do not name it grep

@Foorack
Copy link

Foorack commented Jun 11, 2017

I agree with that it should not be called grep if it does not work the same way. Bincat sounds good to me. 😀

@liotev
Copy link

liotev commented Jun 11, 2017

On second thoughts, the man page for 'cat' says that it 'concatenates files', besides printing them out to the standard output, while 'bingrep' works with one file only. So may be 'bincat' would not be the best name either.

@madnight
Copy link

madnight commented Jun 11, 2017

bindump
binocular
binge

@adarqui
Copy link

adarqui commented Jun 11, 2017

If you go the "binary cat" route, I suggest "bat". Then you can have a nice bat (mammal) logo, of a bat in the dark using it's sonar to highlight things in its (binary) environment. Or maybe a bat hanging upside down with special rust goggles on, with "binary cat highlighted output" seen in the reflection. 8|

peace

@Rurik
Copy link

Rurik commented Jun 11, 2017

binxray
binparse
binocular +1

@o0101
Copy link

o0101 commented Jun 11, 2017

> bless
> bmore
> bview
> bc
> bsee
> binlens
> binl
> xray
> god // good octal dump
> bread
> b2

@adarqui
Copy link

adarqui commented Jun 11, 2017

^^ binlens is cool.

@rafael747
Copy link

bincat or bcat

@m4b
Copy link
Owner Author

m4b commented Jun 11, 2017

bc already an executable on unix.

@madnight @dosaygo-coder-0 Ohhh I really like binocular and also binlens!

I have a suggestion that no one will like: polykleitos

Not only is it really long and hard to type, definitely not a unix executable name, but, he was one of the preeminent athenian sculptors.

Why is this relevant you say?

Well - fun fact: did you know that it was recently discovered that the austere beauty of the sculpted marble of antiquity was actually painted; indeed, with colors a modern aesthetic might perceive as "gaudy".

So, if you're still with me, the binary is that austere marble, and the painter is this tool, wrapping it in gaudy and glorious reds and greens and blues.

Anyway; I'm putting binocular and binlens on the list, they're pretty fun. As for grep criticisms, I can always add a search string functionality/etc to retcon the hell out of this issue :D Also the coloring is just the first step, eventually I hoped to replace some of the functionality of https://github.com/m4b/rdr and put it here, making bingrep less of a misnomer.

Unfortunately I'm pretty busy so that will have to be put on the backburner, unless some enterprising soul wants to start adding some interesting search functionality (one thing very recently I wanted was a reverse of the map search in rdr, e.g., a "who calls" function that searches every binary on your system for a given symbol, and outputs every binary that calls/imports that function, and the list of libraries that export that function, and their offset)

I suppose one could add a pager functionality too, which would be fun little project; I usually do bingrep foo | less -r though.

@m4b m4b mentioned this issue Jun 11, 2017
@nvzqz
Copy link

nvzqz commented Jun 13, 2017

I'm a fan of both binocular and bincat

@bgupta
Copy link

bgupta commented Jun 13, 2017

what about ss, sstr, sstrings or superstrings

as in https://en.wikipedia.org/wiki/Strings_(Unix) not https://en.wikipedia.org/wiki/Superstring_theory

@stuartpb
Copy link

stuartpb commented Jun 14, 2017

I suggest binford (Binary In Nicely Formatted Object Rainbow Display), or maybe just binf.

binocular is pretty good, too.

@m4b
Copy link
Owner Author

m4b commented Jun 14, 2017

Nailed it: bingrep: Bingrep Is Not GREP

@stuartpb
Copy link

What about food (Formatted Object Dump)?

@eagleusb
Copy link

binlens is cool ! Finding a logo would be very easy. binocular is great too though.

@madnight
Copy link

OP could start a survey

@m4b
Copy link
Owner Author

m4b commented Jul 9, 2017

Thanks for everyone's input :)

I'm going to keep the name as bingrep for now. I'm doing this for a number of reasons, mostly:

  1. this will just sit here unresolved unless i make a decision
  2. it will be confusing for users to build bingrep but have a different name
  3. this is one of the hardest problems in CS ;)

We can always retcon the name by adding search functionality; specifically, I usually do this with bingrep:

bingrep <some_binary> | grep "some_function_name"

I'd like to remove that grep step, and allow:

bingrep "some_function_name" <some_binary>

and this will return every matching case in every section (i.e., _DYNAMIC, symtable, string table, etc.).

Specifically, I usually have to scroll up, or page the bingrep output just because I want to see if the symbol is in the dynamic symbol table (e.g., exported), or whether it's a regular symbol, etc., so I think this functionality makes sense and aligns with this projects goals (search through binaries and make their output easily human readable).

I don't have the time right now to work on this, but I'll merge anything that accomplishes this in a reasonable manner :)

Again, thanks everyone for their input, was very fun :)

@m4b m4b mentioned this issue Jul 9, 2017
@hawkw
Copy link

hawkw commented Jul 10, 2017

"Obvious solution" to the "Bingrep is not GREP" problem: keep the name, but it's pronounced "bing-rep". ;)

@madnight
Copy link

madnight commented Jul 10, 2017

okay i think we have to accept that name ... but as general advise, never irgnore the community, this is your top 1 issue in respect to subscribers and you decided to do nothing .. fair enough, but keep in mind that doing nothing on high prio issues is one of the worst choices in many cases (not in all : )

@syreal17
Copy link

Bingrep Is Not GREP is a name change. Just awkward if you actually give it GREP-like qualities later. (Which it would be sweet if it had some of the power of YARA, like searching for hex values with wild cards e.g. "45 60 ?? AF")

@m4b
Copy link
Owner Author

m4b commented Jul 15, 2017

@syreal17 I'm adding search features now. See #13

Would love your feedback over there

@AbeOwitz
Copy link

binspec

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests