The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

  • My Flickr Stream

  • Pages

  • All categories

  • Enter your email address to subscribe to this blog and receive notifications of new posts by email.

    Join 1,861 other subscribers

Archive for the ‘C’ Category

MAC-Telnet: Open source MAC Telnet client and server for connecting to Microtik RouterOS routers and Posix machines via MAC address.

Posted by jpluimers on 2017/08/22

Found out about this a while ago:

MAC-Telnet – Open source MAC Telnet client and server for connecting to Microtik RouterOS routers and Posix machines via MAC address.

Source: haakonnessjoen/MAC-Telnet: Open source MAC Telnet client and server for connecting to Microtik RouterOS routers and Posix machines via MAC address. [Fork]

Background:

Earlier, I wrote about a Wireshark plugin for dissecting Mac-Telnet packets. Now I have created an open source application for connecting to a RouterOS router.

Source: RouterOS Mac-Telnet application for Linux users | Håkon Nessjøen [WayBack]

My previous post was about RouterOS Mac-Telnet application for Linux users where I talked about the MAC-Telnet client I created for Linux users.

Source: MAC-address based Telnet server in Linux | Håkon Nessjøen [WayBack]

–jeroen

Posted in C, Development, Internet, MikroTik, Power User, routers, Software Development | Leave a Comment »

What is the right way to convert into UNIX timestamp from the date and time in C/C++? – Stack Overflow

Posted by jpluimers on 2017/08/16

Thanks R.. for answering this:

POSIX has a formula for exactly what you want:

http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_15 [WayBack]

tm_sec + tm_min*60 + tm_hour*3600 + tm_yday*86400 +
    (tm_year-70)*31536000 + ((tm_year-69)/4)*86400 -
    ((tm_year-1)/100)*86400 + ((tm_year+299)/400)*86400

This works whenever you have a broken-down time in GMT, even if the underlying system’s mktime, etc. functions do not use the same format time_t as “Unix timestamps”.

If your original time is in local time, you can use mktime and gmtime to convert it to GMT using the system’s notion of timezone rules. If you want to apply your own timezone offset rules, just do that manually before using the above formula.

Source: What is the right way to convert into UNIX timestamp from the date and time in C/C++? – Stack Overflow [WayBack]

For testing and more examples: Epoch Converter – Unix Timestamp Converter [WayBack]

Hopefully this will help me getting better implementations for these:

–jeroen

Posted in Algorithms, C, C++, Development, Software Development | Leave a Comment »

wintee/wintee at master · jpluimers/wintee

Posted by jpluimers on 2017/03/28

I salvaged one of the many incarnations of wintee: wintee/wintee at master · jpluimers/wintee

So I’ve another tee implementation apart from my C# port of tee.

–jeroen

via: cmd – Displaying Windows command prompt output and redirecting it to a file – Stack Overflow

Posted in C, Development, Software Development | Leave a Comment »

Bash on C steroids… Tavis Ormandy: Just when you thought we couldn’t take this any further…

Posted by jpluimers on 2016/11/12

Calling C libraries from bash with virtual automatic data conversion based on symbol info in the .so files.

Source: Tavis Ormandy: Just when you thought we couldn’t take this any further…

Via: From the I wish it was PHP Dept: Calling native C functions from arbitrary shared libraries, using auto-generated marshaling relying on implementation details of bash associative arrays for member order preservation. “There’s enough data in the compiler debugging data for us to reconstruct the original types, so we parse it and translate it into a format that can be used in bash – It’s surprising how well this works!” The surprising thing is that works at all. – Kristian Köhntopp – Google+

–jeroen

Posted in bash, C, Development, gcc, Scripting, Software Development | Leave a Comment »

Cool little trick to show all the preset variables for your GCC/Clang compiler

Posted by jpluimers on 2016/08/30

Thanks David Berneda for sharing this a while ago:

Cool little trick to show all the preset variables for your GCC/Clang compiler:

clang -E -dM - < /dev/null

I’ve always wondered how to get these. Some are kind of surprising, especially since there are 320 of them, at least on my system.

On my system (Mavericks, I wish the sw_vers console tool would tell that): 170 lines.

Read the rest of this entry »

Posted in Apple, C, C++, Development, Mac OS X / OS X / MacOS, OS X 10.9 Mavericks, Power User, Software Development | Leave a Comment »

Blast from the past Windows 2003 Service Pack 1..2 era hotpatching

Posted by jpluimers on 2016/02/12

For a short while (from Windows 2003 Service Pack 1 till Windows 2003 service pack 2) some updates used Windows Hotpatching.

Some links on the how/why and how to abuse it:

All because of this little post:

Hier ein Einblick in die Denkweise von Leuten, die Software auf CD-ROM verteilen und bei denen Release Zyklen in Monaten und nicht Minuten gemessen werd… – Kristian Köhntopp – Google+

–jeroen

 

Posted in C, Development, History, Software Development, The Old New Thing, Windows Development | Leave a Comment »

Building and running upc_keys.c on Mac OS X

Posted by jpluimers on 2016/01/27

Even after the SpeedTouch password algorithms were disclosed 2008, ISPs keep using weak algorithms to generate their default WPA/WPA2 passwords in their routers:

A short while ago, blasty published code to generate the WPA2 passwords for UPC routers. Even though Ziggo now owns UPC, a lot of  this UPC equipment is still in use. I guess it won’t be for long that similar code for Ziggo routers will be published too.

The code at https://haxx.in/upc_keys.c is easy to download, build and run on a Mac OS X machine even when you don’t have Xcode installed (use the “xcode-select –install” trick):

wget https://haxx.in/upc_keys.c
gcc -O2 -o upc_keys upc_keys.c -lcrypto
./upc_keys UPC0053284 5
./upc_keys UPC0053284 24

–jeroen

Posted in *nix, *nix-tools, Apple, C, Development, gcc, Mac, Mac OS X / OS X / MacOS, MacBook, MacBook Retina, MacBook-Air, MacBook-Pro, MacMini, OS X 10.10 Yosemite, Power User, Software Development | Leave a Comment »

On Epsilon, MachineEpsilon, and relative differences – via: I was wondering, that what is the closest value to the Zero floating point can have – G+

Posted by jpluimers on 2015/10/07

A long time ago, there was an interesting discussion here: I was wondering, that what is the closest value to the Zero floating point can have.

Recently I needed to do some calculations on series where getting close to zero could become a problem.

  • Math seems to have an Epsilon of 1E-12.
  • Sytem.Types has Epsilon of 1E-30 and Epsilon2 of 1E-40.
  • XE4+ FMX has IsEssentiallyZero and IsNotEssentiallyZero for Single values.

In practice it depends a lot on what you are doing. Sometimes absolute Epsilons are best, but at other times relative difference is much more applicable.

Then there is also a Machine Epsilon: a way to derive an Epsilon from a data type that works in all languages and platforms.

–jeroen

Posted in .NET, Algorithms, C, C#, C++, Delphi, Development, Floating point handling, Software Development | 1 Comment »

Rudy’s Delphi Corner – Pitfalls of converting, on converting from C/C++ to Delphi

Posted by jpluimers on 2015/09/02

If ever in need to translate C/C++ headers or code to Delphi, this refernece by Rudy Velthuis – a dentist with a strong interest in programming – is the best I could find: Rudy’s Delphi Corner – Pitfalls of converting.

It is written in a pretty version agnostic way, and covers the vast majority of conversion topics.

And it has been updated over time numerous times.

–jeroen

Posted in Borland C++, C, C++, C++ Builder, Delphi, Delphi 2005, Delphi 2006, Delphi 2007, Delphi 2009, Delphi 2010, Delphi 7, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Delphi XE6, Delphi XE7, Delphi XE8, Development, Software Development | 10 Comments »

Windows Kernel object names are optional. Don’t give them a name unless you intend them to be shared. (via: The Old New Thing)

Posted by jpluimers on 2015/07/01

Very interesting:

Kernel object names are optional. Don’t give them a name unless you intend them to be shared.

–jeroen

via: [WayBackYou can name your car, and you can name your kernel objects, but there is a qualitative difference between the two – The Old New Thing – Site Home – MSDN Blogs.

Posted in .NET, C, C++, Delphi, Development, Software Development, The Old New Thing, Windows Development | Leave a Comment »