16

I've been coming back to the same project a few times. It's essentially just a program that interacts with an API. Only problem is whenever I get back to it, I realize how annoying it is to debug through all the "too many requests" responses I get back from the API because it has a max of 200 requests per second.

On solution would be to filter out those responses but that just feels like the wrong move, so I'm guessing the better solution would be to put some sort of rate limiter on my program. My two questions are: does that seem like a good solution and if it is, do I embed the rate limiter in my program, i.e. using the ratelimit crate or would a better solution be to run my program in a container and connect it to a reverse proxy(I think) container and control rate limiting from there?

2

I've been trying to learn the fuzzing library LibAFL for a while now, but I never seem to be able to fully grasp the essential parts. I've read tutorials, followed along tutorials, read the whole LibAFL book (that's still under construction), and have read a few of the examples in the repo. You could say I'm still in tutorial hell, honestly.

I'm trying to write a simple fuzzer for a malware code sample (MooBot) and I've been trying to figure out two things: how to find the input that has the maximum run time for a function, and how to not run malware directly on my computer. One of them should be more important than the other, but given my lack of expertise in LibAFL right now, I'm focused on the former. For my example, I noticed that there's a custom trim function in MooBot that helps sanitize input:

void trim(char *str)
{
        int i, begin = 0, end = strlen(str) - 1;

    while (isspace(str[begin]))
        begin++;

    while ((end >= begin) && isspace(str[end]))
        end--;

    for (i = begin; i <= end; i++)
        str[i - begin] = str[i];

    str[i - begin] = '\0';
}

This is what I test in my harness. I know I could probably logic my way into finding the input that has the max run time, but I'm using this as an exercise for LibAFL and using the rust FFI. The problem is how to deal with feedbacks and observers. I currently have this with no observers:

let mut feedback = CrashFeedback::new();
let mut objective = CrashFeedback::new();

Which simply reports an input if it crashes the program. It works for inital fuzzing, but now that I'm trying to find an input that maximizes run time this won't work. I tried to figure if there was a maximization feedback that would work with the time observer, but the only feedback that maximizes anything is the MaxMapFeedback which doesn't seem compatible with the time observer.

What I'm envisioning is something like this:

let mut observer = TimeObserver::new();
let mut feedback = MaximizeFeedback::new(&observer);

I think the solution has something to do with MapFeedbacks, but I'm not exactly sure how they work.

[-] ExperimentalGuy@programming.dev 10 points 3 months ago

Dumb question but is that a real command line tool

[-] ExperimentalGuy@programming.dev 18 points 4 months ago

I think one thing to mention is that Rust is highly specific in what it does. In most of the examples you mentioned, string types, tokio::main, you can essentially just say that rust is more explicit. When initializing an integer variable in C using int, it's not specified what use the integer is or whether it's signed or not. i32, uint16_t you can see how it's specified. Using tokio::main before your main function just specifies that you're using the tokio asynchronous executor for your async code. In the case of string types, they all have different implementations which just help with being specific.

The reason I like Rust is because I know what's happening when I read it. Did I have to read the whole async book to understand how the tokio::main stuff works? Yes. But now I understand exactly how it works. The problem I have with using Javascript is that it doesn't have that high amount of explicitness(is that a word?). At the end of the day, if you're using it for a personal project or you're arguing for language supremacy, it really just comes down to personal preference.

18
Making malware (programming.dev)

This is going to sound fishy.

Recently getting into cybersecurity things and have been pretty interested in looking at malware and maybe making some myself to get the hang of it. Do you guys know any good repositories with malware to learn from? For example, if I wanted to make a credential stealing program, there's a lot of different programs that may have credentials that are valuable. Or, maybe writing a keylogger? I took a look at a rust crate that can record keystrokes but has kind of a weird (or at least not as easy) type system because of different OS implementations, but how do different types of malware consolidate those differences?

I guess the broader question I'm getting at specifically is looking at how already made programs get around different technical obstacles like detailed above.

Thanks

[-] ExperimentalGuy@programming.dev 15 points 4 months ago

That was such a cute lil post

27
Good Computer Handbooks (programming.dev)

I went to my local library today and noticed there's a lot of networking, cybersecurity, tcp/ip books from the early 2000s. Now, I want more modern versions of these types of handbooks. Does anyone know any good modern handbooks that deal with networking or network security standards?

Thanks :)

258
Car Privacy is Shit (programming.dev)

I wanted to get others' takes but it seems like the only real way to get a non-spying car is to get an older car without any sort of telemetrics. I saw a video about different car companies' security policies, well specifically the new Mental Outlaw video, and it just blew me away how even our cars aren't safe. Anyone got tips for how to anonymize their car?

[-] ExperimentalGuy@programming.dev 46 points 7 months ago

Is this like the shiny variant?

[-] ExperimentalGuy@programming.dev 8 points 7 months ago

I use vim bindings in vscode, but I'm trying to switch to neovim.

It's hard to talk about efficiencies without use cases but here's some that I like:

  • Compared to using mouse, text selection is just much easier in vim. Instead of accidentally highlighting an extra space and clicking somewhere on accident which gets rid of my selection, vim lets me go directly to the end of the word and be precise about where I'm selecting.
  • I remember before I used vim, I would count the number of times I hit the backspace or delete when I had heavily nested parentheses. With vim I just type the exact number I want, and if I were to undo that operation I also know exactly what was changed, whereas when counting there's always the possibility of miscounting or pressing delete without counting.
  • I don't have to scroll. I can jump 100 lines in less than a second. Instead of searching through long files to find where I left off, I just generally remember what line number I was at, then I can simply just jump back.
  • Forces me to type better. Before vim I had really shitty typing form(I don't know what it's actually called) but switching to vim shone a light on exactly how I was typing wrong, and now I type faster.
  • Using the % operator you can jump between brackets or parentheses. This comes in handy especially when you want to highlight the inside of a function call, or just jump to the end of a pair of brackets
66
Linux Server OSes? (programming.dev)

I've seen a lot of different enterprise and personal use distros for servers, but what do you guys use?

I'm planning on using Debian but was wondering if there are any other good free options to consider.

[-] ExperimentalGuy@programming.dev 11 points 10 months ago

What's pkhex

13

I've been looking around to find a good, privacy respecting way to sync my messages between phones. I decided I'm going to use SyncThing so I don't have to mess around with a server. The only problem with this is that I haven't been able to find any apps that work on modern Android that routinely backup and import messages from a file/folder into the messages database. Does anyone know any app that might do this?

[-] ExperimentalGuy@programming.dev 10 points 11 months ago

Namecheap bc I typed where to buy cheap domains and that was the first one.

So rude for not dropping the link for that duck in the post tsk tsk tsk

It's mostly not used in the US afaik. I've seen it in a lot of places in Europe and the middle east

[-] ExperimentalGuy@programming.dev 12 points 2 years ago

Im honestly considering getting a flip phone at this point it's kind of ridiculous.

[-] ExperimentalGuy@programming.dev 24 points 2 years ago

I mean a lot of the people on here seem a bit more on the technical side, so it'd make sense imo

9
Runtime Profiling in Rust (programming.dev)

I've been trying to find something that allows me to see performance visualizations in my rust programs, but I haven't found any so far. I'm looking for something that's like SnakeViz in Python, but for Rust. If there's a better way to get about doing this, I'm all ears.

view more: next ›

ExperimentalGuy

joined 2 years ago