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,862 other subscribers

Archive for February, 2022

Een “Hyp4” aanduiding bij het Kadaster gaat over eigendom, niet over hyopotheek (daar is “Hyp3”) voor

Posted by jpluimers on 2022/02/04

Ik schrok even toen ik in een uittreksel van het kadaster de aanuiding “Hyp4 2228/40 Leiden” vond: was de hypotheek niet afbetaald?

Toch wel: de aanduiding “Hyp4” gaat over eigendommen, niet over hypotheken. Er was geen “Hyp3” aanduiding bij dit perceel, dus de hypotheek was afbetaald en doorgehaald bij het Kadaster.

–jeroen

Posted in Uncategorized | Leave a Comment »

Creating shortcut URLs for hangout conversations with specific people: the GAIA ID

Posted by jpluimers on 2022/02/04

GAIA is the Google Accounts and ID Administration system, and the GAIA ID is the identifier to uniquely refer to an account on the Google platform.

With the GAIA ID, you can construct a Hangouts URL that identifies a discussion with that person.

Getting the GAIA ID for a user on hangouts

In the past, people Google Plus to obtain the GAIA ID. When searching to get the GAIA ID, most results use this method, but it does not work any more as Google Plus was shut down for personal use in April 2019.

To get your own GAIA ID, the easiest method is to follow the steps in [Wayback] Create direct link to Google Hangouts chat – Web Applications Stack Exchange:

The easiest way I know of right now to find Gaia ID is actually to go to get.google.com/albumarchive and the 21 numbers that reveal itself once you go to Album Archive will be your own and you can use it.

Once you get the id, it easy to create your hangout link.

https://hangouts.google.com/chat/person/[Gaia ID]

where [Gaia Id] = 1xxxxxxxxxxxxxxxxx (21 digits)

To get the GAIA ID from someone you had a hangouts conversation with [Wayback] How To Find The Google ID (Gaia ID) Of An Email, And The User’s Google Maps Reviews And Public Albums – Webint Master:

The easiest way to find the user’s GAIA ID is through the Hangouts web-app. enter https://hangouts.google.com/ and create a New Conversation in the contact area on the left.

Paste the email address you want to explore to the search bar. You’ll get the user card on Hangouts.

Right-click on the user’s card, and select Inspect. It will open you the developer tools of the site on the right.

Look for hovercard-oid (make sure the email you searched appears under it after hovercard-email) and copy the 21-digits ID.

Constructing the Hangouts URL with a GAIA ID

Now that you have the GAIA ID, you can construct the hangouts URL, for instance https://hangouts.google.com/?action=chat&pi=1xxxxxxxxxxxxxxxxxxxx for GAIA ID 1xxxxxxxxxxxxxxxxxxxx.

The https://hangouts.google.com/chat/person/1xxxxxxxxxxxxxxxxxxxx mentioned above will redirect you to https://hangouts.google.com/?action=chat&pi=1xxxxxxxxxxxxxxxxxxxx.

–jeroen

Posted in About, LifeHacker, Personal, Power User | Leave a Comment »

Here is the #OSINT At Home playlist of free videos to learn more about Open Source Intelligence

Posted by jpluimers on 2022/02/04

[Archive.is] Benjamin Strick on Twitter: “Hi. I regularly get asked for free training sessions & workshops and love sharing research skills, so I’ve made these tutorials on YouTube with more coming. I hope it helps. Here is the #OSINT At Home playlist: https://t.co/faJEPGT1j0 This video is a snippet of the content ✌️… https://t.co/t1Ec5UrkN8”

–jeroen

Read the rest of this entry »

Posted in LifeHacker, OSINT - Open Source Intelligence, Power User | Leave a Comment »

Chrome debugging tip: disabling framework/library code (from Minko Gechev on Twitter)

Posted by jpluimers on 2022/02/03

Cool tip: [Archive.is] Minko Gechev on Twitter: “Tooling tip: When debugging, you can prevent stepping into framework/library code by using blackboxing. In @ChromeDevTools: ‣ Open the script you don’t want to enter ‣ Right click → Blackbox ‣ Pain free debugging ✨… “

–jeroen

Read the rest of this entry »

Posted in Development, JavaScript/ECMAScript, Scripting, Software Development, TypeScript | Leave a Comment »

Samsung 980 Pro NVMe SSD serial in ESXi is in different byte order than the sticker

Posted by jpluimers on 2022/02/03

I installed three Samsung 980 Pro NVMe SSD devices in various ESXi rigs.

This is the serial numbers that ESXi came up with:

  1. Local NVMe Disk (t10.NVMe____Samsung_SSD_980_PRO_1TB_________________E824B311B1382500)
  2. Local NVMe Disk (t10.NVMe____Samsung_SSD_980_PRO_1TB_________________782DB311B1382500)
  3. Local NVMe Disk (t10.NVMe____Samsung_SSD_980_PRO_1TB_________________6F2DB311B1382500)

ESXi presents the serial number (actually the EUI64) in reverse byte order of what is on the device labels.

I had to look up what EUI64 was, and it is a kind of UUID (see Universally unique identifier – Wikipedia), but for hardware devices:

  • World Wide Name – WikipediaEach WWN is an 8- or 16-byte number, the length and format of which is determined by the most significant four bits, which are referred to as an NAA (Network Address Authority). The remainder of the value is derived from an IEEE OUI (or from Company Id (CID)) and vendor-supplied information. Each format defines a different way to arrange and/or interpret these components. OUIs are used with the U/L and multicast bits zeroed, or sometimes even omitted (and assumed zero). Though CID has U/L set to 1.The WWN formats include:
    • “Mapped EUI-64” formats manage to fit an EUI-64 address into an 8-byte WWN. Since the NAA is mandatory, and takes up a nibble, this represents a four-bit deficit. These four bits are recouped through the following tricks: First, two bits are stolen from the NAA by allocating NAAs 12, 13, 14, and 15 to all refer to the same format. Second, the remaining two bits are recouped by omitting the U/L and multicast bits from the EUI-64’s OUI. When reconstructing the embedded EUI-64 value, the U/L and multicast bits are assumed to have carried zero values.

  • [Wayback] Base NVM Express – Part One – NVM Express

    A namespace ID (NSID) is an identifier used by a controller to provide access to a namespace (handle to a namespace). An NVMe controller may support multiple namespaces that are referenced using NSID. EUI64 (8 bytes), NGUID (16 bytes) and UUID (128-bit) are globally unique namespace identifiers defined in the Base Specification.

  • [Wayback] VMware Docs: NVMe Devices with NGUID Device Identifiers

    For NVMe devices, ESXi generates device identifiers based on the information it retrieves from the devices. Generally, the NVMe devices support identifiers in EUI64 or NGUID formats, or use both formats. NGUID is a Namespace Globally Unique Identifier that uses the EUI64 16-byte designator format.

  • [Wayback] ESXI6.7 nvme ssd issue – VMware Technology Network VMTN

    Being a software engineer, I am disturbing by the way this software create the disk ID.

    According to the following table from VMware Docs we have some case that the software will not recognize the disk or lost disks.

    ID Formats Supported by Device Device Identifier Generated by Host
    EUI64 ID Format NGUID ID Format ESXi 6.7 and earlier ESXi 6.7 Update 2
    yes yes t10.xxx_EUI64 t10.xxx_EUI64
    yes no t10.xxx_EUI64 t10.xxx_EUI64
    no yes t10.xxx_controller_serial_number eui.xxx (NGUID) as primary ID

    t10.xxx_controller_serial_number as alternative primary ID

    so what if

    1. The NVMe SSD from the same company may use the same EUI64 for every NVMe SSD on the same interface (say using an ASUS Hyper M.2 X16 PCIe 3.0×4 Expansion card with 4 identical NVMe SSD). It is possible because of bad design from the SSD manufacturer, the EUI64 are all the same for the 4 NVMe SSD, under this case, the ESXI will only recognized one of the 4 disks (since the disk will be t10.xxx_EUI64, and EUI64 are the same for all 4 NVMe SSD, The “storage” “adapters” tab did show there are 4 interfaces (adapters), but the “stroage” “devices” will only show 1 disks.
    2. Why there is no “no, no” options?

    I understand that the NVMe standard 1.3 (for ESXi 6.7) is the base of how the NVMe SSD should be designed, but I think the software should be smart enough to cover the mistakes the hardware company may make and so it can recognized most of the NVMe SSD that is available from the market.

    I have the same issue in V7.0! Whatever happened to using something you know is unique like serial numbers or something based off the serial number!

    My two identical NVMe drives show up as one! Very odd how this one got through testing!

    Having same issue with the Asus hyper x16 m. 2 pcie card. I have 4 Intel 660p in it and it’s only showing 1. Even when I changed the bifurcation to x4x4x4x4 for that pcie slot. It actually show nothing. When in auto it shows 1. I’m using esxi 7 though. Trying to test out VMware horizon but esxi not detecting all the nvme in the Asus adapter.

  • [Wayback/Archive.is] linux.kernel: [PATCH 0/7] Implement NVMe Namespace Descriptor Identification

    This patchset implemets NVMe Namespace Descriptor Identification as of
    NVMe 1.3. The Namespace Descriptor Identification allows a NVMe host
    to query several Namespace Identification mechanisms, such as EUI-64,
    NGUID and UUID from the target. If more than one value is set by the
    target, it can transmit all set values to the host.

  • [Wayback] OS-6042: Need to handle NVMe devices with EUI64 values (SmartOS + ZFS)

    NVMe devices with namespaces with an EUI64 value do not attach to the system. It’d be good if these did.

  • [Wayback] ⚙ D19905 bhyve: Add EUI64 to NVMe device (FreeBSD)

    Add the EUI64 field (part of the Identify Namespace data) to NVMe devices to support UEFI drivers.

    The implementation will accept an IEEE Extended Unique Identifier (EUI-64) from the command line. If one isn’t provided, it will create one based on

    • The IEEE OUI reported in the Identify Controller data
    • The PCI bus, device/slot, function values
    • The Namespace ID
  • [Wayback] nvme-scsi: Use correct byte ordering for eui64 in Dev ID VPD – Patchwork
    NVME specifies an EUI64/NGUID in little-endian format, while SCSI
    specifies that the Device Identification VPD use big-endian for EUI
    formats. The current code copies this bytestream directly from the
    Identification Namespace page, meaning we just need to reverse the
    bytestream when passing it on to the VPD.

    This seems to hold true for NGUID devices, but Keith just pointed out to
    me that it may not hold true for EUI64 devices. It seems like that case
    needs byte swiveling within each field. So I'll NAK for now until I can
    figure out if that's the case.

    This will break existing setups that rely on VPD 0x83 for device
    identification (which I think includes older SuSE distros).
    
    And once you change the setup anyway please stop using this buggy
    SCSI emulation.

  • [Wayback] A Quick Tour of NVM Express (NVMe)

    • nguid, Namespace Globally Unique Identifier (NGUID) and, eui64, IEEE Extended Unique Identifier (EUI64) are assigned when the namespace is created and preserved across namespace and controller operations (e.g. reset, format).

These are pictures of the devices in the same order:

Read the rest of this entry »

Posted in ESXi6.5, ESXi6.7, Hardware, NVMe, Power User, SSD, Virtualization, VMware, VMware ESXi | Leave a Comment »

RegEx character classes in “Searching | Notepad++ User Manual”

Posted by jpluimers on 2022/02/03

I needed to search for IBAN numbers in documents and used this regular expression: [a-zA-Z]{2}[0-9]{2} ?[a-zA-Z0-9]{4} ?[0-9]{4} ?[0-9]{4} ?[0-9]{2} which supports the usual optional whitespace like in NL12 INGB 0345 6789 01.

It is based on a nice list with table of Notepad++ RegEx character classes supported at [Wayback] Searching | Notepad++ User Manual:

Character Classes
  • [set] ⇒ This indicates a set of characters, for example, [abc] means any of the literal characters ab or c. You can also use ranges by doing a hyphen between characters, for example [a-z] for any character from a to z. You can use a collating sequence in character ranges, like in [[.ch.]-[.ll.]] (these are collating sequence in Spanish).
  • [^set] ⇒ The complement of the characters in the set. For example, [^A-Za-z] means any character except an alphabetic character. Care should be taken with a complement list, as regular expressions are always multi-line, and hence [^ABC]* will match until the first AB or C (or ab or c if match case is off), including any newline characters. To confine the search to a single line, include the newline characters in the exception list, e.g. [^ABC\r\n].

Please note that the complement of a character set is often many more characters than you expect: (?-s)[^x]+ will match 1 or more instances of any non-x character, including newlines: the (?-s) search modifier turns off “dot matches newlines”, but the [^x] is not a dot ., so that class is still allowed to match newlines.

  • [[:name:]] or [[:☒:]] ⇒ The whole character class named name. For many, there is also a single-letter “short” class name, ☒. Please note: the [:name:] and [:☒:] must be inside a character class [...] to have their special meaning.
    short full name description equivalent character class
    alnum letters and digits
    alpha letters
    h blank spacing which is not a line terminator [\t\x20\xA0]
    cntrl control characters [\x00-\x1F\x7F\x81\x8D\x8F\x90\x9D]
    d digit digits
    graph graphical character, so essentially any character except for control chars, \0x7F\x80
    l lower lowercase letters
    print printable characters [\s[:graph:]]
    punct punctuation characters [!"#$%&'()*+,\-./:;<=>?@\[\\\]^_{
    s space whitespace (word or line separator) [\t\n\x0B\f\r\x20\x85\xA0\x{2028}\x{2029}]
    u upper uppercase letters
    unicode any character with code point above 255 [\x{0100}-\x{FFFF}]
    w word word characters [_\d\l\u]
    xdigit hexadecimal digits [0-9A-Fa-f]

    Note that letters include any unicode letters (ASCII letters, accented letters, and letters from a variety of other writing systems); digits include ASCII numeric digits, and anything else in Unicode that’s classified as a digit (like superscript numbers ¹²³…).

    Note that those character class names may be written in upper or lower case without changing the results. So [[:alnum:]] is the same as [[:ALNUM:]] or the mixed-case [[:AlNuM:]].

    As stated earlier, the [:name:] and [:☒:] (note the single brackets) must be a part of a surrounding character class. However, you may combine them inside one character class, such as [_[:d:]x[:upper:]=], which is a character class that would match any digit, any uppercase, the lowercase x, and the literal _ and = characters. These named classes won’t always appear with the double brackets, but they will always be inside of a character class.

    If the [:name:] or [:☒:] are accidentally not contained inside a surrounding character class, they will lose their special meaning. For example, [:upper:] is the character class matching :upe, and r; whereas [[:upper:]] is similar to [A-Z] (plus other unicode uppercase letters)

  • [^[:name:]] or [^[:☒:]] ⇒ The complement of character class named name or ☒ (matching anything not in that named class). This uses the same long names, short names, and rules as mentioned in the previous description.

–jeroen

Posted in Development, Notepad++, Power User, RegEx, Software Development, Text Editors | Leave a Comment »

Google Open Source Insights (hopefully by now more than just npm/golang/maven)

Posted by jpluimers on 2022/02/02

Interesting project at [Wayback] Open Source Insights

Open Source Insights is an experimental project by Google.

Hopefully by now it is supporting more than just npm/golang/maven and by the time it sunsets, other projects take over.

The introduction was some 9 months ago: [Wayback] Introducing the Open Source Insights Project | Google Open Source Blog

Via:

–jeroen

Posted in Development, Go (golang), JavaScript/ECMAScript, Node.js, Power User, Scripting, Security, Software Development | Leave a Comment »

ESXi: searching for “vim-cmd vmsvc/message” lead me to the “Managing ESXi Without VI Client” series of blog posts

Posted by jpluimers on 2022/02/02

Last week, I wrote about ESXi: on the console/ssh, when a moved VM pauses during power-on: show which VMs have messages waiting, then answer them.

The “vim-cmd vmsvc/message” – Google Search there lead me to this very interesting series of blog posts on managing ESXi Without VI Client.

It was written in the ESXi 4 and 5 era (for a time-frame, see [Wayback] VMware ESXi Release and Build Number History | virten.net) where VIC – the [Wayback] VMware Infrastructure Client, later named VC:  [Wayback] vSphere Client – ruled.

The series content holds remarkably well now that VIC/VC got first replaced by the [Wayback] vSphere Web Client (often called [Wayback] vSphere HTML 5 Client and started out of the [Wayback] ESXi Embedded Host Client fling).

Anyway, here are the posts in the series:

  1. [Wayback] Managing ESXi Without the VI Client – Part 1 – Virtual Machine and VPS Tutorials – initial setup and creating a VM
  2. [Wayback] Managing ESXi Without the VI Client – Part 2 – Virtual Machine and VPS Tutorials – add a license key, enable VM automatic startup and shutdown and unregister a VM
  3. [Wayback] Managing ESXi without the VI Client – Part 3 – Virtual Machine and VPS Tutorials – create a virtual switch and configure a firewall VM
  4. [Wayback] Managing ESXi without the VI Client – Part 4 – Virtual Machine and VPS Tutorials – install an update for ESXi
  5. [Wayback] Managing ESXi Without VI Client – Part 5 – Virtual Machine and VPS Tutorials – creating a datastore, then moving a VM between datastores

–jeroen

Posted in ESXi4, ESXi5, ESXi5.1, ESXi5.5, ESXi6, ESXi6.5, ESXi6.7, ESXi7, Power User, Virtualization, VMware, VMware ESXi | Leave a Comment »

pipe – Windows how to redirect file parameter to stdout? (Windows equivalent of `/dev/stdout`) – Super User

Posted by jpluimers on 2022/02/02

TL;DR:

  • Windows has CON: which is an equivalent for /dev/tty
  • Windows has no equivalent for /dev/stdout (the standard output stream)
  • There is a C# PipeServer.cs proof-of-concept that allows to simulate /dev/stdout through a temporary named pipe
  • Windows pipe names start with \\.\pipe\ for names on the local machine
  • The above for /dev/stdout on Windows also holds for /dev/stdin (the standard input stream)

All via [Wayback] pipe – Windows how to redirect file parameter to stdout? (Windows equivalent of /dev/stdout) – Super User.

Read the rest of this entry »

Posted in .NET, C#, Development, Software Development, Windows Development | Leave a Comment »

Hornbach has some very “special” limitations to “special characters” in passwords. I wonder why.

Posted by jpluimers on 2022/02/01

[Wayback] Jeroen Wiert Pluimers on Twitter: “”Too special” password character password woos at @HORNBACH_NL : [ Het wachtwoord moet minstens acht tekens lang zijn, en minstens een getal en een letter (a-zA-Z) bevatten. De volgende speciale tekens zijn toegestaan: !”#$%&'()*+,.:;?@_|} ] 1/”

I wonder what kind of parser they use, as these printable special ASCII characters are forbidden:

  • \-/[\]^`{~
  • space (0x20)
  • tab (0x9)
  • line feed (0xa)
  • carriage return (0xb
  • vertical tab (0xb)
  • form feed (0xc)

Seems no JSON or SQL to me: there I would expect other limitations.

What would break if you use them in other fields or pass them in an HTML POST-request?

I mean: these passwords should be salted and hashed immediately when the HTML-POST request is received, so certainly they would not be stored somewhere or passed many layers into code, right?

Oh, in order to activate an account there, you need to accept some 40+ A4 sized pages of legal stuff. Brave Dutch judge that will put these all in favour of Hornbach.

–jeroen

Read the rest of this entry »

Posted in Development, LifeHacker, Power User, Security, Software Development, Web Development | Leave a Comment »