from sacred_font@infosec.pub to programming@programming.dev on 06 Jun 08:02
https://infosec.pub/post/47574180
cross-posted from: infosec.pub/post/47574072
Hello lemmings, I made a program to ping every IPv4 address and collect data on respondents. I am almost done, but I want feedback on things I should change or how I can improve my current record of 5,000 pings / second.
I am currently aware that I need to properly parse the data I receive on the receive socket, since it’s possible the TTL router messages might be confused as replies. ICMP is used on networks to inform other machines of network problems.
One issue I’m aware of is the tuning that has to go into maximizing throughput while also avoiding a total system freeze. My code seems to spend too much time opening sockets that it leaves no room for the actual OS. My only fix currently is limiting the CPU time to the ping timeout I used.
The overall program works like this: It keeps a linked list / pool of task objects. All objects are initially in the “free list” and then when they become associated with a socket, they move to the “active list”. The program first checks for updated sockets with
epollwhich results in like 5% of sockets giving a response. It then closes any tasks that have timed out via linked list in O(1) each. The slow part is when it creates new sockets, since it doesn’t really know when to stop, besides when the non-blocking socket informs it that it would block. I implemented a time limit on sending that is currently the maximum of the ping timeout. To increase throughput it seems like I need to streamline how I send ICMP packets.
#programming
threaded - newest
I read the Readme however I couldn’t figure out if you actually creating an image I mean png, jpeg etc.
also if you dont want to render stuff you can just use graphviz :)
Be less spammy. Or just wait for your ISP to block you because of suspicious behaviour.