Tag: syndicated

  • A New Word: Guiltwrights

    giltwrights  – n. the imaginary committee of elders that keeps a running log of your mistakes, steadily building their case that you’re secretly a fraud, a coward, a doofus, and a douche – who would’ve revoked your good fortune years ago had they not been hampered by their own bitter squabblings over proper grammar and spelling.

    I have anxiety at times about the mistakes I make. I tend not to dwell for too long, but I do sometimes find myself wondering if there are others who’d find me lacking, fire me, stop being a friend, etc. if they knew how many times I’ve made mistakes.

    Across my career, and across decades, I’ve learned to admit mistakes often and expect them. I’ve learned that I am frail and faulty, and I have to accept that. I also need to try to not make easily-preventable mistakes, or big ones, but accept that those might happen.

    I don’t think I’m often concerned about the guiltwrights at my age, but I did feel they were watching me often in my teens and 20s.

    From the Dictionary of Obscure Sorrows

  • TryHackMe Advent of Cyber

    I posted that I was thinking about the AdventOfCode this year, but wasn’t sure I’d spend the time. Someone then posted a link to the TryHackMe advent calendar.

    I decided to give it a try.

    There’s a fairly long (10min) video intro and then you sign up.

    Day 1

    One of the good things was that the video has some spoilers to help you solve the challenge. If you skipped the video, watch it now. Or try.

    There are three questions we need answered, and we then have to fool the AI/ML chatbot. The video shows how, but essentially you need an email address, a server room password and a project name.

    The interesting thing is this shows how a poorly secured and trained chatbot might disclose this information. For the email address, you just ask. For the password, you need to find an employee’s name and then tell the chatbot you’re that person and need the password. It seems silly, but I bet this works on some chatbots people have created with wizards or templates and not secured or limited the training data.

    The last one is interesting, you ask the machine to go into maintenance mode and you get the name of a project. Getting into the maintenance side of applications or mainframes used to be a way to attack them. Unfortunately, too many people didn’t secure many early systems and this was too easy.

    Day 2

    Day 2 is about using Jupyter notebooks. A good portion of the tutorial is helping you understand how notebooks work. Hopefully you’ve read my article on notebooks. If not, this helps you figure out how to use them. It also has a short tutorial on some python that you use to perform data analysis on a csv. While many of us might like to do this in SQL, the experience in python isn’t bad.

    This ends up helping you understand how to count, summarize, and group data in python.

    Day 3

    This day was interesting. Now we are learning about some security tools. In this case, we learn about hydra, which is a tool to brute force logins against a web page. This is a fantastic tutorial that should teach you that unlimited retries on a page without some timer is a bad idea. This should also help you understand that you need to track failed logins and do something about them, especially from weird IPs.

    Day 4

    Continuing on, we learn how to use cewl to create customized wordlists and then use those to brute force in a smarter way.

    Again, scary for a non-security person. These tools are likely good for security folks, but terrifying in that perhaps criminals use them every day.

    Summary

    The first few days of the challenge were interesting and it was neat to spend some time thinking about the world from a cybersecurity point of view.

  • Removing a PowerShell Array Element–#SQLNewBlogger

    I saw an article on this and realized I had no idea how to do this, so I decided to practice a bit. I don’t work with PoSh arrays a lot, but with more and more DevOps work needing complex scripting, PoSh is a better environment for me than bash. At least for now.

    This post looks at the basics of creating an array and then removing elements.

    Another post for me that is simple and hopefully serves as an example for people trying to get blogging as #SQLNewBloggers.

    Creating a PoSh Array

    Creating an array in PowerShell is relatively easy. I use a variable and the @ sign, enclosing the elements inside parenthesis with comma separation. In code, that looks like this:

    $servers = @("server1", "server2", "server3")

    or this:

    $numbers = @(1,2,3,4,5,6,7,8,9,10)

    If I were to reference an array, I’d get results like this:

    PS E:\Documents\git\sqlsatwebsite> $servers
    server1
    server2
    server3

    PS E:\Documents\git\sqlsatwebsite> $numbers[2]
    3

    
    

    As you can see, I can get all elements or a single element with an index inside brackets. Note that the array is zero indexed as the index of 2 returns the third element.

    In code, I might use other variables to represent the index or maybe to store the results of an array. If I were trying to brute force the removal of an element, I might decide to copy items one at a time (iterating through the index and skipping the copy if I reached an item to skip.

    Removing an Element – Kind of

    The way to remove this is deceptively simple. The article referenced above shows the easy way, which is to set an element to $null. I’d have never thought of that, as I’d assume this would leave the element, but change the key.

    If I want to remove 5, I’d set $numbers[4]=$Null. Crazy, but let’s see this work. First, I’ll iterate the array, printing each index and the value with this code:

    for ($i = 0; $i -lt $numbers.Length; $i++) {

    Write-Host $i : $numbers[$i]

    
    

    }

    When I run this, I see these results:

    0 : 1
    1 : 2
    2 : 3
    3 : 4
    4 : 5
    5 : 6
    6 : 7
    7 : 8
    8 : 9
    9 : 10

    Now, I’ll run this:

    $numbers[4]=$null

    Now we re-run the iteration and see these results:

    0 : 1
    1 : 2
    2 : 3
    3 : 4
    4 :
    5 : 6
    6 : 7
    7 : 8
    8 : 9
    9 : 10

    Hmmm, the element is gone and isn’t. Nothing has moved, and in fact, the value of 6 remains in index 5. If I try to get element at index 4, I get this:

    2023-12-01 13_34_55-Window

    It’s not there, but the spot is held. That’s somewhat what I’d expect.

    Removing an Item – The Better Way

    PowerShell has a lot of flexibility in how variables work and how queries work. I found another blog that helped me understand a few things and experiment. Look at this code:

    $numbers = $numbers | Where-Object { $_ -ne 5}

    If I run my iterator on $numbers now I see:

    0 : 1
    1 : 2
    2 : 3
    3 : 4
    4 : 6
    5 : 7
    6 : 8
    7 : 9
    8 : 10

    That works much better, since I create a new array.

    Arrays in PowerShell are funny things, and the docs show some of the methods available don’t change the size of an array, they just operate on it. There isn’t a remove method, which is interesting. There is a Remove-Item cmdlet, but even the docs say assigning $null is faster. However, it doesn’t get the indexing right.

    If you have a better method, let me know.

    SQL New Blogger

    I spent about 10-15 minutes experimenting in PowerShell on various code elements trying to understand how different methods change the array. I read some docs, and ended up taking another 15 minutes to write this post and copy over some code.

    This was fun, but it also showcased some learning and methodology. You could easily do the same thing, with PowerShell, T-SQL, or any other coding or scripting you do at work. Show how you experiment and learn.

  • Using ThinOptics to Read Data

    As I’ve aged, I find myself struggling to read many things in my life. It started with difficulties seeing menus, but moved on to other areas. During the pandemic, I was coaching kids and taking stats. I realized at one point I couldn’t tell if I’d made 3 or 4 marks on the page to represent some action.

    Soon after, I got some reading glasses and started wearing them to do certain things. Over time, I’ve found that I needed these more and more for all sorts of computer work.

    I’ve actually ended up purchasing a few pairs and stashing them in various coats, bags, and cars. I’ve liked these slim ones with a hard case the best, but I still sometimes forget them, especially in the summer when I don’t wear a coat.

    Recently, I realized that I am struggling to read the labels in grocery stores, where I often run inside and forget my readers in the car. After we had a good laugh, my wife realized that I am a bit frustrated with my eyes and the inability to consume data in my daily life.

    ThinOptics

    My wife has taken pity on me, and decided to help me. She got me a pair of ThinOptics, which are in a case that sticks to my phone. You can see what I got in the mail below:

    These are flexible bodies that slip into a case that is always on my phone. I wasn’t sure this would work well, but I find I can still charge my phone wirelessly as well as pay with NFC despite the case being attached to the back of my phone.

    What’s more, they are always with me.

    I still prefer the slim REAVEE readers, and carry those in my bag, but I find the ThinOptics are very convenient. They do grab my nose a bit and feel like they are scratchy at times, but it’s not too bad.

    If you are struggling to read as you get older, you might check them out and see if they help you as much as they’ve helped me.