Where is SAMPing?

This post is over a year old, the information may no longer be up to date.

SAMPing has now been released online because I lost the source :). You can get it here.

I started SAMPing in February 2017 as a tool to assist my team at Getronics, I made this in my free time so when I left Getronics I had the benefit of keeping all IP rights and it came with me. As time went on, the source code of SAMPing got moved around from place to place, an iCloud Drive, a QNAP Server, and eventually ended up on GitHub in January 8 2019 where it lay inactive until April 7 2020.

But the story is a bit more complex than it sounds, at Getronics we had access to customers environments and we managed their Snow Estate entirely, including their agents. It made sense to have a tool that helped us do that, a quick way of deploying agents without needing to use things like Group Policy or SCCM as well as a plethora of other useful and not-so-useful features. Without the requirement of manging an entire estate bit-by-bit when moving to my new job, the need for SAMPing was no longer there, the development of the tool dwindled down to non-exsistant and it slowly fell into an inactive state.

Then came April 2020 when I started developing it again, I quickly realized that I am a very different person coding-wise than I was in 2017 when this tool was started, it wouldn’t be as easy as just going in and updating a few things to make it 2020 ready and release it online, at this point SAMPing is stuck in 2017 because of how bad the code is and the amount of work it will take to make it even remotely production ready again.

Below is an example Function that would open the Snow Inventory Agent Directory that is on a machine, it had to be compatible with Snow Inventory 3 Clients which didn’t have the %snow_agent% environmental variable so the code is a mess. There’s a lot of functions like this and at this point it’s better to start again than to try and update them.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
    Shared Function SnowFolderOpen(ByVal MachineName As String)
        Try
            ''Check if we have acess to the desired machine
            File.Create("\\" + MachineName + "\c$\samping-temp.txt").Close()

            ''If we have access to the machine, then read the directories to find out which version of SNOW we have installed then set the SNOWConfig Location as so
            If (Directory.Exists("\\" + MachineName + "\c$\Program Files\INVENTORYCLIENT\")) Then

                SnowInformation = "\\" + MachineName + "\c$\Program Files\INVENTORYCLIENT\"
                'SnowInformation(1) = "client.ini"

            ElseIf (Directory.Exists("\\" + MachineName + "\c$\Program Files (x86)\INVENTORYCLIENT\")) Then

                SnowInformation = "\\" + MachineName + "\c$\Program Files (x86)\INVENTORYCLIENT\"
                'SnowInformation(1) = "client.ini"

            ElseIf (Directory.Exists("\\" + MachineName + "\c$\Program Files\Snow Software\Inventory\Agent\")) Then

                SnowInformation = "\\" + MachineName + "\c$\Program Files\Snow Software\Inventory\Agent\"
                ' SnowInformation(1) = "snowagent.config"

            ElseIf (Directory.Exists("\\" + MachineName + "\c$\Program Files (x86)\Snow Software\Inventory\Agent\")) Then

                SnowInformation = "\\" + MachineName + "\c$\Program Files (x86)\Snow Software\Inventory\Agent\"
                'SnowInformation(1) = "snowagent.config"

            Else
                SnowInformation = "Snow is not installed."
            End If

            ''Delete the file that was created on the machine
            File.Delete("\\" + MachineName + "\c$\samping-temp.txt")

            ''Return the array of data
            Return SnowInformation
        Catch ex As Exception
            If ex.ToString.Contains("System.UnauthorizedAccessException") Then
                SnowInformation = "You do not have permission to access this device."
            Else
                SnowInformation = "Unknown Error" + vbCrLf + vbCrLf + ex.ToString
            End If

            Return MsgBox(SnowInformation)
        End Try
    End Function

So in conclusion, where is SAMPing? Right now, it’s sitting in an archived GitHub repo. I might release it as is one day, or I’ll do what it deserves and re-write the entire thing, SAMPing is basically my code child and one of the first proper applications I ever made and watching it waste away on the internet depresses me sometimes.

One day, I hope to release it to the world.