10 Minute Barbarian Mac OS
The Ten Minute Barbarian. Posted on June 26, 2017. Our gaming sessions took place in the society of our college. The room was advertised and theoretically anyone could join in. During one particular session, we were playing the Mines of Phandelver module and had cleared the building of all monsters, except for one. Time-saving Shortcuts increasing productivity in Plex for MacOS. Save and use Keyboard Shortcuts. Yours - HotKeysWorld.com.
Welcome to first post in the “Know Your Tools” series!
Without further ado…
10 Minute Barbarian Mac Os 7
Have you ever wondered if/how *nix command line utilities may differ across distributions? Perhaps it never even occurred to you that there was even a possibility the tools were any different. I mean, they’re basic command line tools. How and why could/would they possibly differ?
Well, I’m here to say… thy basic command line utilities art not the same across different distributions. And, the differences can range from those that can cause a simple nuisance to those that can cause oversight of critical data.
Rather than going into aspects of this discussion that have already been covered such as how Linux and BSDgenerallydiffer, I would instead like to focus on a few core utilities commonly used in/for DFIR artifact analysis and some caveats that may cause you some headache or even prevent you from getting the full set of results you’d expect. In highlighting the problems, I will also help you identify some workarounds I’ve learned and developed over the years in addressing these issues, along with an overarching solution at the end to install GNU core utilities on your Mac (should you want to go that route).
Let’s get to it.
Grep
Grep is one of the most useful command-line utilities for searching within files/content, particularly for the ability to use regular expressions for searching/matching. To some, this may be the first time you’ve even heard that term or “regex” (shortened version of it). Some of you may have been using it for a while. And, nearly everyone at some point feels like…
Amirite?
Regardless of whether this is your first time hearing about regular expressions or if you use them regularly albeit with some level of discomfort, I HIGHLY suggest you take the time to learn and/or get better at using them – they will be your most powerful and best friend for grep. Though there is a definite regex learning curve (it’s really not that bad), knowing how to use regular expressions translates directly to performing effective and efficient searches for/of artifacts during an investigation.
Nonetheless, even if you feel like a near master of regular expressions, equally critical to an expression’s success is how it is implemented within a given tool. Specifically for grep, you may or may not be aware that it uses two different methods of matching that can highly impact the usefulness (and more important, validity) of results returned – Greedy vs. Lazy Matching. Let’s explore what each of these means/does.
At a very high level, greedy matching attempts to find the last (or longest) possible match, and lazy matching attempts to find the first possible match (and stops there). More specifically, greedy matching employs what is called backtracking and look-behind’s but that is a separate discussion. Suffice to say, using an incorrect, unintended, and/or unexpected matching method can completely overlook critical data or at the very least provide an inefficient or invalid set of results.
Now having established some foundational knowledge about how grep searches can work, we will drop the knowledge bomb – the exact same grep expression on Linux (using GNU grep) may produce completely different or no results on Mac (using BSD grep), especially when using these different types of matching.
…What? Why?
The first time I found this out I spent an inordinate and unnecessary amount of time banging my head against a wall typing and re-typing the same expression across systems but seeing different results. I didn’t know what I didn’t know. And, well, now I hope to let you know what I didn’t know but painfully learned.
While there is an explanation of why, it doesn’t necessarily matter for this discussion. Rather, I will get straight to the point of what you need to know and consider when using this utility across systems to perform effective searches. While GREEDY searches execute pretty much the same across systems, the main difference comes when you are attempting to perform a LAZY search with grep.
We’ll start with GREEDY searches as there is essentially little to no difference between the systems. Let’s perform a greedy search (find the last/longest possible match) for any string/line ending in “is” using grep’s Extended Regular Expressions option (“-E”).
(Linux GNU)$ echo “thisis” grep -Eo ‘.+is'
thisis
(Mac BSD)$ echo “thisis” grep -Eo ‘.+is'
thisis
Both systems yield the same output using a completely transferrable command. Easy peasy.
Note: When specifying Extended Regular Expressions, you can (and I often do) just use “egrep” which implies the “-E” option.
Now, let’s look at LAZY searches. First, how do we even specify a lazy search? Well, to put it simply, you append a “?” to your matching sequence. Using the same search as before, we’ll instead use lazy matching (find the first/shortest match) for the string “is” on both the Linux (GNU) and Mac (BSD) versions of grep and see what both yield.
(Linux GNU)$ echo “thisis” grep -Eo ‘.+?is'
thisis
(Mac BSD)$ echo “thisis” grep -Eo ‘.+?is'
this
Here the fun begins. We did the exact same command on both systems and it returned different results.
Well, for LAZY searches, Linux (GNU) grep does NOT recognize lazy searches unless you specify the “-P” option (short for PCRE, which stands for Perl Compatible Regular Expressions). So, we’ll supply that this time:
(Linux GNU)$ echo “thisis” grep -Po ‘.+?is'
this
There we go. That’s what we expected and hoped for.
*Note: You cannot use the implied Extended expression syntax of “egrep” here as you will get a “conflicting matchers specified” error. Extended regex and PCRE are mutually exclusive in GNU grep.
Note that Mac (BSD), on the other hand, WILL do a lazy search by default with Extended grep. No changes necessary there.
While not knowing this likely won’t lead to catastrophic misses of data, it can (and in my experience will very likely) lead to massive amounts of false positives due to greedy matches that you have to unnecessarily sift through. Ever performed a grep search and got a ton of very imprecise and unnecessarily large (though technically correct) results? This implementation difference and issue could certainly have been the cause. If only you knew then what you know now…
So, now that we know how these searches differ across systems (and what we need to modify to make them do what we want), let’s see a few examples where using lazy matching can significantly help us (note: I am using my Mac for these searches, thus the successful use of Extended expressions using “egrep” to allow for both greedy and lazy matching)…
User-Agent String Matching
Let’s say I want to identify and extract the OS version from Mozilla user-agent strings from a set of logs, the format of which I know starts with “Mozilla/“ and then contains the OS version in parenthesis. The following shows some examples:
- Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36
- Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2226.0 Safari/537.36
- Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36
- Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36
Greedy Matching (matches more than we wanted – fails)(Mac BSD)$ echo 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36' egrep -o 'Mozilla.+)'
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko)
Lazy Matching(Mac BSD)$ echo 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36' egrep -o 'Mozilla.+?)'
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1)
Searching for Malicious Eval Statements
Let’s say I want to identify and extract all of the base64 eval statements from a possibly infected web page for analysis, so that I can then pipe it into sed to extract only the base64 element and decode it for plaintext analysis.
Greedy Matching (matches more than we wanted – fails)(Mac BSD)$ echo 'date=new Date(); eval(base64_decode('DQplcnJvcl9yZ=')); var ua = navigator.userAgent.toLowerCase();' egrep -o 'eval(base64_decode(.+)'
eval(base64_decode('DQplcnJvcl9yZ=')); var ua = navigator.userAgent.toLowerCase()
Lazy Matching (matches exactly what we want)(Mac BSD)$ echo 'date=new Date(); eval(base64_decode('DQplcnJvcl9yZ=')); var ua = navigator.userAgent.toLowerCase();' egrep -o 'eval(base64_decode(.+?)'
eval(base64_decode('DQplcnJvcl9yZ=“))
There you have it. Hopefully you are now a bit more informed not only about the differences between Lazy and Greedy matching, but also about the difference in requirements across systems.
Strings
Strings is an important utility for use in extracting “human-readable” strings from files/binaries. It is particularly useful in extracting strings from (suspected) malicious binaries/files to attempt to acquire some insight into what may be contained within the file, its capabilities, hard-coded domains/URL’s, commands, … the list goes on.
However, not all strings are created equal. Sometimes, Unicode strings exist within a file/program/binary for various reasons, those of which are also important to identify and extract. By default, the GNU (Linux) strings utility searches for simple ASCII encoding, but also allows you to specify additional encodings for which to search, to include Unicode. Very useful.
By default, the Mac (BSD) strings utility also searches for simple ASCII encoding; however, I regret to inform you that the Mac (BSD) version of strings does NOT have the native capability to search for Unicode strings. Do not ask why. I highly encourage you to avoid the rabbit hole of lacking logic that I endured when I first found this out. Instead, we should move on and instead just be asking ourselves, “What does this mean to me?” Well, if you’ve only been using a Mac to perform string searches using the native BSD utility, you have been MISSING ALL UNICODE STRINGS. Of all the pandas, this is a very sad one.
So, what are our options?
There are several options, but I personally use one of the following (depending no the situation and my mood) when I need to extract both Unicode and ASCII strings from a file using a Mac (BSD) system:
1. Willi Ballenthin’s Python strings tool to extract both ASCII and Unicode strings from a file
2. FireEye’s FLOSS tool (though intended for binary analysis, it can also work against other types of files)
3. GNU strings*
*Wait a minute. I just went through saying how GNU strings isn’t available as a native utility on a Mac. So, how can I possibly use GNU strings on it? Well, my friends, at the end of this post I will revisit exactly how this can be achieved using a nearly irreplaceable third-party package manager.
Now, go back and re-run the above tools against various files and binaries from your previous investigations you performed from the Mac command line. You may be delighted at what new Unicode strings are now found 🙂
Sed
Sed (short for “Stream editor”) is another useful utility to perform all sorts of useful text transformations. Though there are many uses for it, I tend to use it mostly for substitutions, deletion, and permutation (switching the order of certain things), which can be incredibly useful for log files with a bunch of text.
For example, let’s say I have a messy IIS log file that somehow lost all of its newline separators and I want to extract just the HTTP status code, method, and URI from each line and output into its own separate line (restoring readability):
…2016-08-0112:31:16HTTP200GET/owa2016-08-0112:31:17HTTP200GET/owa/profile2016-08-0112:31:18HTTP404POST/owa/test…
Looking at the pattern, we’d like to insert a newline before each instance of the date, beginning with “2016-…”. Lucky for us, we’re on a Linux box with GNU sed and it can easily handle this:
(Linux GNU)$ sed 's/ (.+?)2016/1n2016/g' logfile.txt
2016-08-0112:31:16HTTP200GET/owa
2016-08-0112:31:17HTTP200GET/owa/profile
2016-08-0112:31:18HTTP404POST/owa/test
...
You can see that it not only handles lazy matching, but also handles ANSI-C escape sequences (e.g., n, r, t, …). This statement also utilizes sed variables, the understanding of which I will leave to the reader to explore.
Sweet. Let’s try that on a Mac…
(Mac BSD)$ sed 's/(.+?)(.+)/1n2016/g' logfile.txt
2016-08-0112:31:16HTTP200GET/owa2016-08-0112:31:17HTTP200GET/owa/profile2016-08-0112:31:18HTTP404POST/owa/test
… Ugh. No luck.
Believe it or not, there are actually two common problems here. The first is the lack of interpretation of ANSI-C escape sequences. BSD sed simply doesn’t recognize any (except for n, but not within the replacement portion of the statement), which means we have to find a different way of getting a properly interpreted newline into the statement.
Below are a few options that will work around this issue (and there are more clever ways to do it as well).
1. Use the literal (i.e., for a newline, literally insert a new line in the expression)(Mac BSD)$ sed ’s//*Press Enter*
> /g'
2. Use bash ANSI-C Quoting (I find this the easiest and least effort, but YMMV)(Mac BSD)$ sed 's//'$'n/g’
3. Use Perl(Mac BSD)$ perl -pe ‘s n g'
Unfortunately, this only solves the first of two problems, the second being that BSD sed still does not allow for lazy matching (from my testing, though I am possibly just missing something). So, even if you use #1 or #2 above, it will only match the last found pattern and not all the patterns we need it to.
“So, should I bother with using BSD sed or not?”
Well, I leave that up to your judgment. Sometimes yes, sometimes no. In cases like this where you need to use both lazy matching and ANSI-C escape sequences, it may just be easier to skip the drama and use Perl (or perhaps you know of another extremely clever solution to this issue). Options are always good.
10 Minute Barbarian Mac Os Update
Note: There are also other issues with BSD sed like line numbers and using the “-i” parameter. Should you be interested beyond the scope of this post, this StackExchange thread actually has some useful information on the differences between GNU and BSD sed. Though, I’ve found that YMMV on posts like this where the theory and “facts” may not necessarily match up to what you find in testing. So, when in doubt, always test for yourself.
Find
Of all commands, you might wonder how something so basic as find could differ across *nix operating systems. I mean, what could possibly differ? It’s just find, the path, the type, the name… how or why could that even be complicated? Well, for the most part they are the same, except in one rather important use case – using find with regular expressions (regex).
Let’s take for example a regex to find all current (non-archived/rotated) log files.
On a GNU Linux system this is somewhat straight forward:
(Linux GNU)$ find /var/log -type f -regextype posix-extended -regex '/var/log/[a-zA-Z.]+(/[a-zA-Z.]+)*'
You can see here that rather than using the standard “-name” parameter, we instead used the “-regextype” flag to enable extended expressions (remember egrep from earlier?) and then used the “-regex” flag to denote our expression to utilize. And, that’s it. Bless you, GNU!
Obviously, Mac BSD is not this straight forward, otherwise I wouldn’t be writing about it. It’s not exactly SUPER complicated, but it’s different enough to cause substantial frustration as your Google searches will show that the internet is very confused about how to do this properly. I know. Shocking. Nonetheless, there is value in traveling down the path of frustration here so that you don’t have to when it really matters. So, let’s just transfer the command verbatim over to a Mac and see what happens.
(Mac BSD)$ find /var/log -type f -regextype posix-extended -regex '/var/log/[a-zA-Z.]+(/[a-zA-Z.]+)*'
find: -regextype: unknown primary or operator
Great, because why would BSD find use the same operators, right? That would be too easy. By doing a “man find” (on the terminal, not in Google, as that will produce very different results from what we are looking for here) you will see that BSD find does not use that operator. Though, it still does use the “-regex” operator. Easy enough, we’ll just remove that bad boy:
(Mac BSD)$ find /var/log -type f -regex '/var/log/[a-zA-Z.]+(/[a-zA-Z.]+)*
(Mac BSD)$
No results. Ok. Let’s look at the manual again… ah ha, to enable extended regular expressions (brackets, parenthesis, etc.), we need to use the “-E” option. Easy enough:
(Mac BSD)$ find /var/log -E -type f -regex '/var/log/[a-zA-Z.]+(/[a-zA-Z.]+)*'
find: -E: unknown primary or operator
Huh? The manual says the “-E” parameter is needed, yet we get the same error message we got earlier about the parameter being an unknown option. I’ll spare you a bit of frustration and tell you that it is VERY picky about where this flag is put – it must be BEFORE the path, like so:
(Mac BSD) $> find -E /var/log -type f -regex '/var/log/[a-zA-Z.]+(/[a-zA-Z.]+)*'
/var/log/alf.log
/var/log/appfirewall.log
/var/log/asl/StoreData
/var/log/CDIS.custom
/var/log/corecaptured.log
/var/log/daily.out
/var/log/DiagnosticMessages/StoreData
/var/log/displaypolicyd.log
/var/log/displaypolicyd.stdout.log
/var/log/emond/StoreData
/var/log/install.log
/var/log/monthly.out
/var/log/opendirectoryd.log
/var/log/powermanagement/StoreData
/var/log/ppp.log
/var/log/SleepWakeStacks.bin
/var/log/system.log
/var/log/Tunnelblick/tunnelblickd.log
/var/log/vnetlib
/var/log/weekly.out
/var/log/wifi.log
Success. And, that’s that. Nothing earth shattering here, but different and unnecessarily difficult enough to be aware of in your switching amongst systems.
So, now what?
Are you now feeling a bit like you know too much about these little idiosyncrasies? Well, there’s no going back now. If for no other reason, maybe you can use them to sound super smart or win bets or something.
These are just a few examples relevant to the commands and utilities often used in performing DFIR. There are still plenty of other utilities that differ as well that can make life a pain. So, now that we know this, what can we do about it? Are we doomed to live in constant translation of GNU <—> BSD and live without certain GNU utility capabilities on our Macs? Fret not, there is a light at the end of the tunnel…
If you would like to not have to deal with many of these cross-platform issues on your Mac, you may be happy to know that the GNU core utilities can be rather easily installed on OS X. There are a few options to do this, but I will go with my personal favorite method (for a variety of reasons) called Homebrew.
Homebrew (or brew) has been termed “The missing package manager for OS X”, and rightfully so. It allows simple command-line installation of a huge set of incredibly useful utilities (using Formulas) that aren’t installed by default and/or easily installed via other means. And, the GNU core utilities are no exception.
As a resource, Hong’s Technology Blog provides a great walk-through of installation and considerations.
You may already be thinking, “Great! But wait… how will the system know which utility I want to run if both the BSD and GNU version are installed?” Great question! By default, homebrew installs the binaries to /usr/local/bin. So, you have a couple options, depending on which utility in particular you are using. Some GNU utilities (such as sed) are prepended with a “g” and can be run without conflict (e.g., “gsed” will launch GNU sed). Others may not have the “g” prepended. In those cases, you will need to make sure that /usr/local/bin is in your path (or has been added to it) AND that it precedes those of the standard BSD utilities’ locations of /usr/bin, /bin, etc. So, your path should look something like this:
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
With that done, it will by default now launch the GNU version installed in /usr/local/bin instead of the standard system one located in /usr/bin. And, to use the native system utilities when there is a GNU version installed with the same name, you will just need to provide their full path (i.e., “/usr/bin/<utility>”).
Please feel free to sound off in the comments with any clever/ingenious solutions not covered here or stories of epic failure in switching between Linux and Mac systems 😃
/JP
Список игр для ZX Spectrum и его клонов:
#
- 007: Licence to Kill
- 007: Live and Let Die
- 007: Living Daylights, The
- 007: Spy Who Loved Me, The
- 007: View to a Kill, A
- 100 km Race
- 10th Frame
- 11-A-Side Soccer
- 15 OS
- 15, The
- 16-OS Puzzle
- 180
- 180! Darts
- 1942
- 1943: The Battle of Midway
- 1960's Locospotter
- 1984
- 1984 Locospotter
- 1985 — The Day After
- 1994 Locospotter
- 1994 — Ten Years After
- 1999
- 19 Part 1: Boot Camp
- 19 Part 2: Combat Zone
- 2003: A Space Oddity
- 20-20 Vision
- 2088
- 20 Tons
- 2112 AD
- 2 Player Soccer Squad
- 3D
- 3DC
- 3D Construction Kit
- 3-Deep Space
- 3D-Interceptor
- 3-D Noughts and Crosses
- 3D-OXXO
- 4 Gewinnt
- 4 Minute Warning
- 4 on a Row
- 4 Soccer Simulators
- 4x4 Off-Road Racing
- 51
- 5 in a Row
- 66
- 720 Degrees
- 737 Cockpit
- 747 Flight Simulator
- 750cc Grand Prix
- 7.5, Las
- 7 Card Stud
- 7x7
- 8-Letter Anagrams
- 911 TS
- 9-Hole Golf
A
- Aaargh!
- Abadia del Crimen, La
- Abe's Mission: Escape
- Abu Simbel Profanation
- Abwehr
- Abyss
- Academial Patience
- Academy
- Accelerator
- Accidente
- ACE
- ACE 2088
- ACE 2: The Ultimate Head to Head Conflict
- Ace Low
- Ace of Aces
- Acme Glass Cube
- Acorazado, El
- Acorralado
- Acro Jet
- Acrojet — Bonus Game With Breakthru
- Action Biker
- Action Farce 2
- Action Fighter
- Action Force
- Action Force 2
- Action Reflex
- Action Stations
- Acua-Tor
- Ad Astra
- Addaladda
- Addams Family, The
- Adder Attack
- Adder Game
- Addictaball
- Adidas Championship Football
- Adidas Championship Tie-Break
- Adivinalo
- Admiral Graf Spee
- Advanced Lawnmower Simulator
- Advanced Lawnmower Simulator 2
- Advanced Patience
- Arc
- Advanced Pinball Simulator
- Advanced Soccer Simulator
- Advance to Mayfair
- Advent
- Adventure Island
- Adventurer
- Adventurer’s Nightmare
- Adventurer, The
- Adventures of Sid Spider, The
- Adventures of St. Bernard, The
- Adversary
- Aegean Voyage
- Aerea
- Aeromash
- African Trail Simulator
- Afterburner
- Aftermath
- Afteroids
- After the War
- Agent Orange
- Agent-X
- Agent-X 2
- Ag Piton
- Ah Diddums
- Ahhh!!
- Ahorcado, El
- Air Attack
- Airbase Invader
- Airborne Ranger
- Airbrush
- Aircraft
- Air Defence
- Air Fire
- Airline
- Airliner
- Airport '82
- Air-Raid
- Airspeeder
- Air Traffic Control
- Airwolf
- Airwolf 2
- Ajedrez
- Ajedrez
- Ajedrez Karpov Profesional
- Akcionar
- Akcionar 2
- Akerico
- Aknadach
- Aladdin’s Cave
- Alarma en la Base
- Alaska
- Alcatraz Harry
- Alcatraz Harry 2: The Doomsday Mission
- Alchemist
- Ale Hop
- Alfa 1
- Alger
- Alhambra Tales
- Ali Baba
- Ali-Bebe
- Alien
- Alien 8
- Alien 99
- Alien Attack
- Alien Bank
- Alien Blaster
- Alien Block
- Alien Command
- Alien Curse
- Alien Destroyer
- Alien Evolution
- Alien Fiend
- Alien Highway
- Alien Insects
- Alien Kill
- Alien Maze
- Alien Mine
- Alien Rain
- Alien Rupture
- Aliens
- Alien Storm
- Aliens US
- Alien Swarm
- Alien Syndrome
- All-American Basketball
- All or Nothing
- All Systems Go
- All Time Great Tour 1
- All Time Great Tour 2
- Almacen, El
- Almacen Lunar
- Alma de Guerrero
- Alo Bao
- Alpha 1
- Alpha-Raid
- Alpine Games
- Altered Beast
- Alternative World Games
- Alvin and the Chipmunks
- Amaurote
- A-Maze
- Amazing!
- Amazing Maze, The
- American 3D Pool
- American Football
- American Tag Team Wrestling
- American Turbo King
- America’s Cup, The
- Amo del Mundo
- Amoto’s Puf
- Amtrak Rail Pass
- Amusement Park 4000
- Anaconda
- Anagrams
- Anagrams against the Clock
- Anarchy
- Andeskydning
- Android 1: The Reactor Run
- Android 2
- Androide
- Android Pit Rescue
- Androids
- Andromeda
- Andromeda Chess
- Andromeda Thropy
- Andy Capp
- Anfractuos
- Angel, El
- Angel Nieto Pole 500cc
- Angleball
- Angler
- Anglia Rover
- Anglo Scot
- Anikman
- Anillos, Los
- Annals of Rome
- Ano Gaia
- Anoms
- Another Brick
- Another Brick on the Wall
- Another Brick on the Wall 2
- Antares
- Antares
- Ant Attack
- Antics
- Ant KO
- Anto Aereo
- Antteroo
- Apache Raid!!
- APB
- Apocalypse
- Apocalypse Expansion Volume 1
- Apocalypse Expansion Volume 2 — Chapter 1
- Apocalypse Expansion Volume 2 — Chapter 2
- Apocalypse Novamaps
- Apollo 2
- Appel Vanger
- Apple Jam
- Apprentice
- Aquaplane
- Aquarius
- Aquasquad
- Arachno Joe (minigame)
- Arachnophobia
- Aracnidos
- Araneus
- Arantxa Sanchez Vicario Tenis
- Arany Pince
- Arbatax
- Arcade Creator
- Arcade Flight Simulator
- Arcade Fruit Machine
- Arcade Trivia Quiz
- Arcade Trivia Quiz Question Creator
- Arcade Wizard
- Arcadia
- Archaeologist, The
- Archaic
- Archeo
- Archon
- Archon 2: Adept
- Arc of Yesod, The
- Arctic Antics
- Arctic Fox
- Arcturan Saga, The
- Ardennes
- Area 51
- Arena
- Arena!
- Arena 3000
- Argo
- Argon
- Arkanods
- Arkanoid 2: Revenge of Doh
- Arkanoid Editor
- Arkarum
- Arkos
- Armageddon Man, The
- Armalyte
- Army Moves
- Arnhem
- Arrgghhh
- Artillery
- Artist 2K4
- Artura
- Asaroth — Angel of Death
- Ascensor, El
- Ascot
- Ashes, The
- Asirus Settler, The
- Aspar GP Master
- Assassin
- Assault Course
- Asterix and the Magic Cauldron
- Asteroides
- Asteroids Ahead
- Asteroidy
- Astro
- Astro 1
- Astroball
- Astro Blaster
- Astroclone
- Astrocode
- Astro Marine Corps
- Astronaut
- Astronut
- Astroplaner
- Astro Scramble
- Astro-Scramble
- Astro-Wars
- A.T.A.C.
- Ataqua a la Ciudad
- Ataque a la Flota
- Ataque de Naves
- A-Team, The
- Atenas
- Atentado
- Aterriza como Puedas
- Aterrizaje en Saturno
- ATF
- Athena
- Athlete
- Atic Atac
- Atlantis
- Atom Ant
- Atomic Robo-Kid
- Atomix
- Atomix
- Atomix 2: Hexagonia
- Atomreaktor
- Atoms
- ATP Tour Simulator
- Atracador, El
- ATRAM
- Atrog
- Attack of the Alien Waters
- Attack of the Empire
- Attack of the Killer Tomatoes
- Attack of the Mushroom People
- Attack of the Mutant Zombie Flesh Eating Chickens
- Attack on New York
- Attactics
- At the Tapes
- ATV Simulator
- Auf Wiedersehen Monty
- Auf Wiedersehen Pet
- Austerlitz
- Austerlitz 1805
- Australian Games
- Australian Rules Football
- Autobahn
- Auto Chef
- Auto Concentration
- Autocrash
- Automania
- Automonopoli
- Autorennen
- Autostopista Galactico
- Avalanche
- Avalon
- Avatar, El
- Aven
- Averges
- Averno
- Aviatak
- Awari
- Axons
- Azatoth
- Aztec
- Aztec: Hunt for the Sun-God
B
- Babaliba
- Babszem Jatek
- Baby Frog
- Backgammon
- Back on the Burgle!
- Backpackers Guide to the Universe
- Back to Skool
- Back to the Future
- Back to the Future Part 2
- Back to the Future Part 3
- Bac-Pac
- Badlands
- Baile de los Numeros, El
- Bailemos
- Ballade du Lutin, La
- Ballblazer
- Ball Breaker
- Ball Breaker 2
- Ball by Ball
- Ball Crazy
- Ballista
- Ballooning
- Baltic Patrol
- Bananablip and Spacemanblip
- Bananaby
- Banco, El
- Bandera
- Bandersnatch
- Bandit
- Banger Racer
- Bangers & Mash
- Bangkok Knights
- Barbarian
- Barbarian 2: The Dungeon of Drax
- Bar Billiards
- Barchou
- Bard’s Tale, The
- B.A.R.F.
- Bargain Basement
- Barman, El
- Barmy Burgers
- Baron
- Baron Rojo
- Baron, The
- Barquitos
- Barreldrop
- Barrels and Ladders
- Barriles
- Barrow Quest
- Barry McGuigan World Championship Boxing
- Baseball
- Base Invaders
- Basic Rally
- Basil the Great Mouse Detective
- Basket
- Basketball
- Basketbear
- Batalla Naval
- Bat Attack, 3D
- Batcode
- Batman
- Batman the Caped Crusader
- Batman - The Movie
- Batman - The Puaj Edition
- Battle
- Battle 1917
- Battle Axe
- Battlecars
- Battle Command
- Battle Field
- Battlefield Germany
- Battle for Midway, The
- Battleground
- Battle of Britain
- Battle of Broken Bridge, The
- Battle of the Bulge
- Battle of the Planets
- Battle of the Toothpaste Tubes
- Battle Ships
- Battleships
- Battle Stations
- Battle Valley
- Battle Zone
- Batty
- Bazam
- Bazooka Bill
- BBC Mastermind
- BBC Mastermind Quizmaster
- BC2: Grog's Revenge
- BC Bill
- BC's Quest for Tires
- Beach Buggy Simulator
- Beach Head
- Beach Head 2
- Beach Volley
- Beakers
- Beaky and the Egg Snatchers
- Beamrider
- Bear a Grudge
- Bear Bovver
- Bear Island
- Beastie Feastie
- Beasts on the Steps
- Beatcha
- Beaver Bob in Dam Trouble
- Bedlam
- Beebul
- Beetlemania
- Beets 'n 'Eggs
- Begin 5: Multiple Choise Tester
- Begin: Noughts and Crosses
- Belagerung
- Bennie the Burglar
- Benny Hill's Madcap Chase!
- Bergwacht
- Bermuda Triangle
- Bestial Warrior
- Best of Speedway, The
- Betrayal
- Beverly Hills Cop
- Bewarehouse, The
- Beyond the Ice Palace
- BFX-1
- Biff
- Biff 2
- Big Bad John
- Big Ben Strikes Again
- Bigfoot
- Big Game Safari
- Biggles
- Big Match Soccer
- Bignose's American Adventure
- Big Run
- Bigtime
- Big Trouble in Little China
- Biljard
- Billardo
- Billy Bluebottle
- Billy Bong
- Billy the Kid
- Bimbo
- Bingo
- Binky
- Bionic Commando
- Bionic Ninja
- Birds and the Bees, The
- Birds, The
- Bird Strike
- Bismarck
- Bismark
- Bite the Dust
- Bitman
- Bitwa o Wyspe 2
- Bizmiller
- Biz, The
- Black Arrow
- Blackbeard
- Blackbird
- Black Crystal
- Black Friday
- Black Hawk
- Black Hole, The
- Blackjack
- Black Jack
- Black Jack 1
- Black Jack 2
- Black Lamp
- Black Magic
- Black Planet
- Black Tiger
- Blade Alley
- Blade Runner
- Blade Warrior
- Blaster
- Blastermind
- Blasteroids
- Blaze
- Blazing Thunder
- Blind Alley
- Blind Panic
- Blinky in America
- Blinky's Scary School
- Blip!
- Blip
- Blip Blop
- Blitz
- Blitz 3D
- Blitzkrieg
- Blob, The
- Blob the Cop
- Block
- Blockade Runner
- Block-Buster
- Blockbusters
- Blockbusters: Gold Run
- Blockbusters Question Master
- Block-Dizzy
- Block War 3000 AD
- Blokade
- Blood Brothers
- Blood & Guts
- Blood Valley
- Bloodwych
- Bloody
- Bloody Paws
- Blue Max
- Blue Riband
- Blues Brothers, The
- Blue Thunder
- BMX Freestyle
- BMX Jungle Bike
- BMX Kidz
- BMX Ninja
- BMX Racers
- BMX Simulator
- BMX Simulator 2
- BMX Trials
- Boatit
- Boat Run
- Bobby Bearing
- Bobby Charlton's Soccer
- Bobby Yazz Show, The
- Bob's Full House
- Bobsleigh
- Bodega, La
- Bodorrio Real
- Bodyswop
- Boggle
- Boid
- Boiler House
- Bolarinto
- Bolas
- Bolas, Las
- Bolera
- Bomb
- Bombardero
- Bombardero, El
- Bomb Ed
- Bombed Out
- Bomber
- Bomber 2
- Bomber Bob in Pentagon Capers
- Bomberman
- Bombermice
- Bombero
- Bombero, El
- Bombfusion
- Bomb Jack
- Bomb Jack 2
- Bombscare
- Bombuzal
- Bonanza Bros
- Bones
- Bongo
- Bonkers
- Booty
- Boovie
- Boovie 2
- Bopper's
- Borzak
- Bosconian '87
- Bossman
- Boss, The
- Boulder Dash 2: Rockford's Riot
- Boulder Dash 3
- Boulder Dash 4
- Boulder Dash Construction Kit
- Boulder Mix
- Bounce Panic
- Bounces
- Bouncing Berty
- Bounder
- Bounty Bob Strikes Back
- Bounty Hunter, The
- Bounzai
- Bowling 2000
- Bowls
- Bow, The
- Boxeo
- Boxer
- Boxer, The
- Boxform
- Boxing
- Boxing Manager
- Boxing Manager 2
- Boyerland
- Bozy-Boa
- Brad Blasts the Galactic Barbarians
- Brainache
- Brain Damage
- Brain Sport
- Brainstorm
- Brainwaves
- Brainzoff
- Brat Attack
- Brautrydjandinn
- BraveStarr
- Braxx Bluff
- Break-Away
- Breaker
- Break Neck
- Break Out
- Breakthru
- Brewery
- Brian Bloodaxe
- Brian Clough's Football Fortunes
- Brian Jacks Superstar Challenge
- Brickbat
- Brick Braker
- Brick, The
- Bricky Micky
- Bride of Frankenstein
- Bridge Master
- Bridge Player
- Bridge Player 2
- Bridge Player 3
- Bridge Player Galactica
- Bridge Tutor Advanced
- Bridge Tutor Beginners
- Brisca 1
- Brisca 2
- Brisca 3
- Briscola
- Bristles
- Britain Invaded!
- British Lowland
- British Super League
- Brix
- Brojke i Slova
- Bronx
- Bronx Street Cop
- Broodslayer
- Bruce Lee
- Bruce Tulloh's Marathon Training Program
- Brum-Brum
- Bryan Robson's Super League
- Bubble Bobble
- Bubble Buster
- Bubble Dizzy
- Bubbler
- Bubble Run
- Bubble Trouble
- Buccaneer
- Buccaneers
- Buck Rogers: Planet of Zoom
- Budokan
- Buergermeister
- Buffalo Bill's Wild West Show
- Bug
- Bug Blaster
- Bug-Eyes
- Buggy
- Buggy Blast
- Buggy Boy
- Buggy Ranger
- Bug Race
- Bugs Bunny
- Buho, El
- Build a City
- Builder, The
- Bulge, The
- Bulldog
- Bullion Raider
- Bull Run
- Bulls and Bears
- Bulls-Cows
- Bulls Eye
- Bully Embassy
- Bully's Sporting Darts
- Bump, Set, Spike!
- Bumpy
- Bundesliga
- Bunny
- Buran
- Burger Attack
- Burger Time
- Buriabeast
- Buscapar
- Bushido Warrior
- Busqueda en la Mina Maldita
- Bustout
- Butcher Hill
- Butch - Hard Guy
- Buzo, El
- Buzz Off!
- By Fair Means.or Foul
- Byte Bitten
- Byter
C
- C5 Clive
- Cabman
- Cactuar Racing
- Cactuar Racing 3
- Cactuar Racing Extreme
- Caesar's Travels
- Caesar the Cat
- Cagara
- Cage Match
- Caja Fuerte, La
- Calculadora
- California Games
- Calipse
- Call Me Psycho
- Camara Secreta
- Camelot Warriors
- Camionero, El
- Campos de Energia
- Canibales
- Cannibal Island
- Cannibals
- Cannon Ball
- Cannonball
- Canyon Warrior
- Capa
- Capitan Sevilla
- Capitan Trueno
- Capricornio 2
- Captain America
- Captain Blood
- Captain Dynamo
- Captain Fizz
- Captain Kelly
- Captain Planet
- Captain Pytron
- Captain Slog
- Caramelos
- Car Chase
- Card Games
- Cards
- Cards of Fate
- Cargo
- Caribbean Trader
- Car Journey
- Carlisle Powerbox
- Carlos Sainz
- Carnevale
- Carnival
- Carpet Capers
- Car Race
- Carrera Mortal
- Carrier Command
- Carriers at Midway
- Car-Slide-Race
- Cars Out!
- Casanova
- Cascade
- Cascamuelas
- Casey Jones
- Cashcade
- Cashdash
- Casino
- Casino 1
- Casino Royal
- Cassette 1
- Castillo Embrujado, El
- Castillo Maldito
- Castle Master
- Castle Master 2: The Crypt
- Castle Quest
- Castle Walls
- Catch 23
- Caterpilla
- Chase H.Q. 2: Special Criminal Investigation
- Chatbox
- Chefs Mate 2
- Chequered Flag
- Chernobil
- Chess
- Chess, 3D
- Chess Fig
- Chessfire
- Chess Master
- Chessmaster 2000, The
- Chess Nuts
- Chess Player, The
- Chess - The Turk
- Chess Tutor
- Chess Tutor 1
- Chevy Chase
- Chicago
- Chicago 30's
- Chicane
- Chicken
- Chickin Chase
- Chiller
- Chimera
- Chinatown
- Chinese Juggler, The
- Chinese Patience
- Chinos
- Chinos, Los
- Chip's Challenge
- Chip's Valley
- Chiron
- Chockman
- Cholo
- Chomp!
- Chopper Chase
- Chopper Rescue
- Chopper X-1
- Choy-Lee-Fut Kung-Fu Warrior
- Christmas Trivia Quiz, The
- Chronos: A Tapestry of Time
- Chubby Gristle
- Chuckie Designer
- Chuckie Egg
- Chuckie Egg 2
- Chuckman
- Chuck Yeager's Advanced Flight Trainer
- Cicibanova Abeceda
- Cid, El
- Cintas Locas
- Circus
- Circus Circus
- Circus Games
- Circus, Le
- Circus Maximus
- Cisco Heat
- Citadel
- City
- City-Bomb
- City Bomber
- City Cobra
- City Connection
- City Defence
- City Fighter
- City of Death
- City Slicker
- City, The
- CJ in Space
- CJ in the USA
- CJ's Elephant Antics
- Class 50 Fleet Manager
- Class 50 Rover
- Classic Axiens
- Classic Invaders
- Classic Muncher
- Classic Punter
- Classic Racing
- Classic Trainer
- Classic Trainer II
- Clerky
- Clever and Smart
- Cliff Hanger
- Clive in Exile
- Clock Chess '89
- Close-In
- Cluedo
- Cobra
- Cobra Force
- Coches Locos, Los
- Code Breaker
- Codebreaker
- CodeBreker
- Codename Mat
- Codename Mat 2
- Code-Woord
- Cofre Magico, El
- Coingame
- Coin It
- Colditz Escape
- Colditz Story, The
- Colin the Cleaner
- Coliseum
- Colliery, The
- Collision Course
- Collywobbles
- Colony
- Colorado Bill
- Coloris
- Colossus 4 Bridge
- Colossus 4 Chess
- Cosme
- Cosme y los Alienigenas
- Cosmic Chaos
- Cosmic Cruiser
- Cosmic Debris
- Cosmic Guerilla
- Cosmick Attack
- Cosmic Pirate
- Cosmic Raiders
- Cosmic Sheriff
- Cosmic Shock Absorber
- Cosmic Swarm
- Cosmic Wartoad
- Cosmos
- Costa Capers
- Cotton ZX
- Countdown
- Countdown to the Death
- Count Duckula
- Count Duckula 2
- Country Cottages
- Count, The
- County Cricket
- Coursemaster
- Coven
- Covergirl Poker
- Cow Boy
- Cowboy
- Cowboy Kidz
- Cowboy Shoot Out
- Cowboy Shootout
- Crabs
- Crack Down
- Crack It! Towers
- Crack-Up
- Craft Cruiser
- Craps
- Crash
- Crash It
- Crashout
- Crawler
- Crazy Balloons
- Crazy Billiards
- Crazy Bugs!
- Crazy Cars
- Crazy Cars 2
- Crazy Castles
- Crazy Caverns
- Crazy Chef
- Crazy Crane
- Crazy Er*Bert
- Crazy Golf
- Crazy House
- Crazy Kong
- Crazy Pingoin
- Crazy Race
- Creatures
- Cred Breaks Out
- Creepy Crawler
- Creepy Dungeons
- Creta
- Crete 1941
- Crevasse
- Crewe Powerbox
- Cribbage
- Cribb, The
- Cricket
- Cricket Averages
- Cricket Captain
- Cricket Challenge
- Cricket Coach
- Cricket Master
- Cricket Player Data Cassette 1960s
- Cricket Player Data Cassette 1991
- Cricket Player Data Cassette 1994
- Cricket Player Data Cassette All Time Greats 1
- Cricket Player Data Cassette All Time Greats 2
- Crime Busters
- Cristal Oscuro
- Critical Mass
- Crokatile Walz
- Cromwell at War 1642—1645
- Crooked Adventure
- Cross
- Crossbow
- Crossbow - Legend of William Tell
- Crossfire
- Crossing
- Crosswize
- Crossword Compiler
- Crotabin
- Crown Jackpot
- Crow Shoot
- Crozet
- Cruise Attack
- Cruise On
- Cruising on Broadway
- Crusade
- Crusader
- Crusoe
- Crux 92
- Cruz
- Cruz, La
- Crypt, The
- Crystal Castles
- Crystal Kingdom Dizzy
- Crystal Orb, The
- Crystals
- Cuatreros del Espacio, Los
- Cuatro en Raya, Las
- Cubeword
- Cubey
- Cubo Rubik
- Cuddly Cuburt
- Cudesni Mac
- Cue Boy
- Cueva de Naulen, La
- Cuevas de Snake, Las
- Cup Football
- Cup Manager
- Curro Jimenez
- Curse of Sherwood, The
- Curse of the Flying Pigmies
- Cursorspel
- Custard Kid, The
- Custodian
- Cyberball
- Cyberbig
- Cyberknights
- Cybernation
- Cybernoid
- Cybernoid 2: The Revenge
- Cyber Rats
- Cybertanks
- Cyberun
- Cyber Zone
- Cybex
- Cyborg
- Cybo Run
- Cybotron
- Cycles, The
- Cycle Trap
- Cyclone