, 00:00:03:27 , NICOLAS OBERLI: Hi, DEF CON.
, 00:00:04:22
, 00:00:06:04 ,How many of you have ever used
, 00:00:08:00 ,a vending machine?
, 00:00:08:10
, 00:00:09:25 ,(Chuckles).
, 00:00:10:07
, 00:00:12:04 ,Who has ever wanted to hack them?
, 00:00:13:06
, 00:00:14:19 ,All right.
, 00:00:16:21 ,So this talk is for you.
, 00:00:16:29
, 00:00:18:24 ,So just to introduce myself, I'm
, 00:00:22:17 ,a security engineer from Switzerland.
, 00:00:26:05 ,No, I don't speak Swedish, but many Americans think we speak
, 00:00:29:04 ,Swedish in Swiss, but no.
, 00:00:30:11 ,I speak French.
, 00:00:30:19
, 00:00:31:22 ,Excuse my English.
, 00:00:33:20
, 00:00:36:19 ,I love old video games.
, 00:00:37:01
, 00:00:41:14 ,I brew and I love beer and as he said, I'm a N00b speaker.
, 00:00:43:25 ,So if you have any questions it would be great.
, 00:00:45:09
, 00:00:47:17 ,How did I get there?
, 00:00:48:22
, 00:00:52:21 ,Some years ago I created a MAME cab machine.
, 00:00:56:21
, 00:01:00:02 ,I play video games with this.
, 00:01:00:16
, 00:01:03:11 ,And to be more realistic, or to take money
, 00:01:07:29 ,from my friends that came to play at home (Laughter).
, 00:01:13:29 ,I started I searched and I bought a coin acceptor on an auction site
, 00:01:19:08 ,and this is the tale of what I did with this.
, 00:01:20:10
, 00:01:24:19 ,So first of all, any kind of machines that accept coins
, 00:01:31:13 ,or bills are used every day, especially, I think in casinos or in Vegas.
, 00:01:35:06 ,Like ATMs, vending machines, slot machines, et cetera,
, 00:01:39:13 ,and there are multiple devices that are used to process money
, 00:01:41:26 ,and give money back.
, 00:01:42:06
, 00:01:47:24 ,For instance, coin and bill acceptors, they are used to count coins and bills,
, 00:01:51:25 ,they can detect if you insert a false coin or a coin
, 00:01:57:16 ,from another country, et cetera, et cetera, and it uses different methods
, 00:02:03:25 ,to recognize the money for the weight, for the size, even visually.
, 00:02:04:25 ,Yeah.
, 00:02:08:09 ,There are many ways to recognize that, and it's used to sense
, 00:02:12:05 ,if the coin has been accepted to the main board and
, 00:02:15:22 ,the main board needs to process the events that
, 00:02:21:04 ,a coin has been inserted and it's the machine that's processed that you
, 00:02:25:15 ,have entered, for instance, $1 or et cetera.
, 00:02:27:12
, 00:02:32:19 ,Other devices are coin hoppers that are used to give money back.
, 00:02:36:26 ,When you need to get the change so it's pretty much
, 00:02:43:02 ,like a big tray that's operates using some commands and gives you
, 00:02:46:29 ,the money, coin by coin, back.
, 00:02:53:18 ,So if you need to receive back, like, $1 and this contains quarters, it
, 00:03:01:02 ,will tell it to give back four coins to get your change back.
, 00:03:03:23
, 00:03:09:23 ,All of this stuff communicates with several protocols, they are parallel,
, 00:03:16:03 ,serial, and another protocol is MDB and the last one is ccTalk.
, 00:03:19:12 ,As all of these protocols are very vendor specific.
, 00:03:25:17 ,So one can only do ccTalk or only serial devices.
, 00:03:27:29 ,So you need to check whether you get
, 00:03:32:06 ,the right protocol you want to use.
, 00:03:36:08 ,So since I didn't know about this, I just received the my coin acceptor
, 00:03:41:06 ,and it was ccTalk and this is what we will be talking about.
, 00:03:43:04
, 00:03:47:09 ,So ccTalk is a name for coin control talk.
, 00:03:49:25 ,It's a semi proprietary protocol, it's maintained
, 00:03:52:25 ,by Money Controls in England.
, 00:03:56:14
, 00:03:59:25 ,It's available on ccTalk.org, but some parts
, 00:04:04:20 ,of specs are only available after signing an NDA.
, 00:04:08:10 ,So you just have parts of the information, but not everything.
, 00:04:11:20 ,So you have to find something and check this.
, 00:04:13:01
, 00:04:15:00 ,How does it work?
, 00:04:18:02 ,It's simply a request and response protocol.
, 00:04:20:10 ,So just send a request.
, 00:04:23:13 ,The device sends you a response, and that's it.
, 00:04:23:26
, 00:04:26:10 ,It uses a UART data transmission.
, 00:04:29:01
, 00:04:33:01 ,At 9.6k, and TTL signals.
, 00:04:33:06
, 00:04:38:17 ,Each device is on a bus and it has its own device.
, 00:04:39:04
, 00:04:42:14 ,One is the controller and two is the coin acceptor and 14
, 00:04:45:23 ,is a coin hopper, et cetera, et cetera.
, 00:04:48:14 ,So on the same bus, you have all the devices that can communicate
, 00:04:50:16 ,between each other.
, 00:04:54:16
, 00:04:59:29 ,A frame a sys talk frame looks like this.
, 00:05:02:28 ,You have one bite for the destination address, one bite
, 00:05:06:23 ,for the data length, one bite for the header.
, 00:05:07:14
, 00:05:09:09 ,I talk about this later.
, 00:05:09:15
, 00:05:11:02 ,Several bytes of data.
, 00:05:16:06 ,It depends on what comment you will send to the device and a checksum.
, 00:05:20:24 ,The header is the comment that you will send to a device, and
, 00:05:26:03 ,if the header is equal to zero, it means it's a response.
, 00:05:29:23 ,So you don't actually have a response to what.
, 00:05:35:01 ,So you need to know what you asked to get the correct answer.
, 00:05:35:09
, 00:05:37:23 ,The check sum is a simple check sum.
, 00:05:41:21 ,It's just a complement to 255 of the hold packets.
, 00:05:43:23
, 00:05:47:18 ,So all of these headers are commands, as I said and
, 00:05:53:02 ,from the documentation you can find, you have the list of all the headers
, 00:05:56:17 ,and you have, for instance, all the headers and
, 00:06:01:04 ,the corresponding commands and if you get the documentation,
, 00:06:06:01 ,you have all the data unique to send, when sending a request, and
, 00:06:11:26 ,all the data that comes back so you can actually see or understand what's going
, 00:06:14:00 ,on on the bus.
, 00:06:14:14
, 00:06:21:00 ,For instance, you have a simple command that is sent.
, 00:06:23:18 ,You can see it's a sample poll.
, 00:06:27:17 ,So it's kind of like a ping for a device on the bus.
, 00:06:27:29
, 00:06:32:18 ,That is sent from the address 1, so it's normally the main board.
, 00:06:32:26
, 00:06:35:06 ,To a device at address number two.
, 00:06:38:12 ,Normally a coin acceptor and if you send this, you
, 00:06:43:24 ,will probably see a packet like this on the same bus which is a response,
, 00:06:45:23 ,zero to what?
, 00:06:46:24 ,We don't know.
, 00:06:47:04
, 00:06:50:23 ,From device, to device at address one.
, 00:06:54:04 ,So just, again, just by looking at those packets,
, 00:07:00:19 ,at the response you cannot know exactly a response to what it is.
, 00:07:05:01 ,You have to sniff the bus all with the request to actually see
, 00:07:09:12 ,the response and know exactly what it is.
, 00:07:09:20
, 00:07:13:15 ,The second packet here is ahead of F6 and X which
, 00:07:15:21 ,is request manufacturer I D.
, 00:07:20:07 ,and in the response you have an NRI, it's the manufacturer
, 00:07:23:02 ,of the device I bought.
, 00:07:25:29
, 00:07:28:19 ,So I have been able to ping this device
, 00:07:32:04 ,to know some information about this.
, 00:07:34:09
, 00:07:39:04 ,Now, I want to actually know if there was a coin entered,
, 00:07:44:22 ,if it was correct, if it was one franks or two francs.
, 00:07:45:16
, 00:07:50:04 ,So you have header, number 229, that you just send
, 00:07:55:21 ,to a coin acceptor and you receive back 11 bytes.
, 00:07:56:05
, 00:08:00:24 ,The first byte is the counter and you have five groups
, 00:08:03:28 ,of two bytes a result.
, 00:08:05:01
, 00:08:09:22 ,The counter is actually every time the device has a new event,
, 00:08:14:13 ,like you inserted a coin, the coin was accepted, was refused,
, 00:08:18:14 ,et cetera, this counter is incremented.
, 00:08:21:08 ,So for the main board, you have to actually know which was the state
, 00:08:23:20 ,of the counter and if there's an increment,
, 00:08:26:20 ,you know that there was a new information and you have
, 00:08:28:09 ,to pass it.
, 00:08:30:02
, 00:08:33:18 ,The results are sent in two bytes as I said.
, 00:08:38:04 ,Normally the first result contains what is called the validation channel.
, 00:08:44:07 ,On coin acceptors, you have what is called validation channels,
, 00:08:51:03 ,it's normally 16 ways or kind of coins it can recognize.
, 00:08:57:17 ,So it can make the device learn 16 different coins.
, 00:08:57:29
, 00:09:03:13 ,And each one of these is assigned an ID, and it's that ID that is sent
, 00:09:05:21 ,in the response.
, 00:09:07:04
, 00:09:11:20 ,So there's a nice trick there because since you only have the ID,
, 00:09:15:04 ,the coin acceptor only knows an ID.
, 00:09:19:21 ,It doesn't snow which kind of piece of coin or its value.
, 00:09:22:10 ,It only knows an ID and the main board needs to correlate
, 00:09:27:04 ,the ID with the actual value of the coin that has been inserted.
, 00:09:28:18 ,We will check that after.
, 00:09:29:26
, 00:09:33:14 ,The second byte contains the error code.
, 00:09:37:14 ,So if it's a bad coin, if it was an error recognizing the coin or
, 00:09:40:23 ,in the coin was accepted, the problem is that
, 00:09:44:19 ,all of these codes are vendor specific.
, 00:09:48:24 ,So if you buy different kind of coin acceptors, they won't be
, 00:09:54:06 ,the same error codes or error IDs, et cetera, and even sometimes
, 00:09:57:07 ,the two bytes are swept.
, 00:10:00:02 ,So you really need to have the documentation or you
, 00:10:04:03 ,will have lots of trouble when doing this.
, 00:10:06:09
, 00:10:11:03 ,So for my initial project, I implemented the ccTalk protocol
, 00:10:17:22 ,on a teensy, a small tiny device and it simply pulse a coin acceptor.
, 00:10:19:10
, 00:10:26:11 ,As soon as there's a new coin inserted, it will send key strokes to MAME
, 00:10:32:00 ,the emulator to insert the credits in the name.
, 00:10:41:18
, 00:10:45:00 ,So here you have the board.
, 00:10:48:11
, 00:10:51:21 ,You have the Teensy right here.
, 00:10:51:29
, 00:10:53:24 ,You have the coin acceptor there.
, 00:10:55:18
, 00:11:05:01 ,And if I put some money, the game will see that you see, if I put two francs.
, 00:11:06:13 ,There are two credits there.
, 00:11:12:02
, 00:11:13:23 ,Et cetera.
, 00:11:14:21
, 00:11:20:23 ,So that way I had the first part of my my first project was nearly done.
, 00:11:23:02 ,So I was able to put it into the my MAME cab
, 00:11:25:16 ,and it was working.
, 00:11:27:20
, 00:11:30:29 ,I thought that's a simple project.
, 00:11:34:18 ,It only uses the coin acceptor I bought, et cetera,
, 00:11:41:14 ,and many other machines that use those kind of protocols, et cetera.
, 00:11:44:24 ,But the problem is that it's difficult to track those responses.
, 00:11:45:03
, 00:11:47:12 ,You cannot see them because the header is always equal
, 00:11:51:15 ,to zero and you don't know which answer is to which request.
, 00:11:51:29
, 00:11:54:18 ,And I didn't find any open source info for ccTalk.
, 00:11:55:02
, 00:12:00:18 ,So I created two tools which I call cc sniff and cc pass that are used
, 00:12:05:17 ,to sniff data on a ccTalk bus and the other one is used to parse
, 00:12:10:08 ,the data that you sniffed so you can pretty easily understand
, 00:12:14:17 ,and learn exactly what happens on the bus.
, 00:12:17:15
, 00:12:21:21 ,If you want to have a look can everyone see correctly?
, 00:12:22:03
, 00:12:23:18 ,Yeah?
, 00:12:24:00
, 00:12:25:00 ,All right.
, 00:12:26:23 , AUDIENCE MEMBER: (Inaudible).
, 00:12:40:00 , NICOLAS OBERLI: I cannot zoom anymore.
, 00:12:41:00 ,Maybe if I do this.
, 00:12:42:08 ,It's a little bit bigger.
, 00:12:43:08 ,Maybe you will see?
, 00:12:44:08 ,Better?
, 00:12:45:09 ,I cannot, sorry.
, 00:12:45:15
, 00:12:52:22 ,Well, so you have on the upper side, the packets all the packets list that you
, 00:12:54:24 ,can select.
, 00:12:54:29
, 00:12:58:14 ,And when you select the packets, you can see on the bottom the header,
, 00:13:02:27 ,the corresponding function directly so we don't need to check on the table,
, 00:13:04:14 ,et cetera.
, 00:13:08:03 ,You have the raw end of the packet and if you take some other packets
, 00:13:12:06 ,like the one I showed you before, the request manufacturer ID,
, 00:13:14:20 ,when you check the response, you have
, 00:13:18:16 ,an automatic payload decoding and it's the same for nearly
, 00:13:22:06 ,all of the ccTalk packets and responses.
, 00:13:24:12
, 00:13:28:07 ,Again, if you check the we prefer credits and codes, so
, 00:13:31:09 ,the one used Hi, everybody!
, 00:13:33:01 ,(Applause) You know the drill.
, 00:13:39:04
, 00:13:42:20 ,Can I have a lucky audience member volunteer?
, 00:13:42:25
, 00:13:44:10 ,you sir.
, 00:13:49:03
, 00:13:52:24 ,Oh, I just meant to get to watch us.
, 00:13:57:24
, 00:14:00:17 ,We have been doing this all day.
, 00:14:03:08
, 00:14:05:14 ,Here you go, sir.
, 00:14:06:17 ,Is your first DEF CON?
, 00:14:07:17 , No, sir.
, 00:14:08:15 , Oh!
, 00:14:12:19 , All right, anyway, cheers!
, 00:14:25:17
, 00:14:27:04 , NICOLAS OBERLI: Cheers!
, 00:14:28:04 , Cheers!
, 00:14:29:15 ,(Applause) Don't worry.
, 00:14:33:13 ,We will see you tomorrow.
, 00:14:33:24
, 00:14:37:01 , AUDIENCE MEMBER: (Inaudible).
, 00:14:40:00 , NICOLAS OBERLI: Okay.
, 00:14:40:10
, 00:14:42:25 ,Where were I?
, 00:14:43:25 ,Woo!
, 00:14:44:25 ,So, yeah, okay.
, 00:14:47:24 ,So as I said, this is read prefer packets.
, 00:14:51:29 ,So I get the data, the status and I have all the details
, 00:14:57:23 ,they encounter, which is zero because it was starting.
, 00:14:58:02
, 00:15:01:05 ,And all the results are zero but with this tool,
, 00:15:04:24 ,you can pretty much get any information about what happens
, 00:15:08:06 ,and what's happening on the ccTalk bus.
, 00:15:09:15
, 00:15:13:22 ,That's cool, but, okay, so now, I can read on the bus, but, yeah,
, 00:15:17:13 ,why not write directly on the same bus like, for example,
, 00:15:22:04 ,telling the main board, hey, okay, I'm the coin acceptor.
, 00:15:26:22 ,I received a new coin and now a new coin and now another new coin.
, 00:15:27:02
, 00:15:28:13 ,That could be pretty great.
, 00:15:29:13 ,Oh, God!
, 00:15:31:22 ,I'm so sorry.
, 00:15:36:01
, 00:15:37:10 ,All right.
, 00:15:39:00 ,So you see the point.
, 00:15:39:06
, 00:15:41:09 ,The problem is that you only have one wire
, 00:15:43:15 ,for the whole bus.
, 00:15:47:21 ,So if as an attacker, you will receive the requests,
, 00:15:51:09 ,the device also receive the same requests and
, 00:15:54:02 ,the response directly.
, 00:15:56:14 ,So if we try to respond just before him or just after him,
, 00:15:58:08 ,it won't work.
, 00:15:58:15
, 00:16:01:19 ,We have many chance that we will jam the signal,
, 00:16:04:22 ,and make things quite worse.
, 00:16:05:10
, 00:16:09:22 ,Fortunately, in somewhere deep in the documentation, we have what
, 00:16:13:11 ,is called multi drop commands, which is normally used
, 00:16:16:26 ,by the controller to to solve addressing conflicts,
, 00:16:21:04 ,like if you have two or three coin acceptors, you can set them
, 00:16:23:16 ,different addresses.
, 00:16:23:29
, 00:16:28:07 ,And it's simply just a comment that you use 251 address
, 00:16:34:10 ,change and you give as a parameter the new address to the device.
, 00:16:38:03 ,So you just send that packet and the device will say, okay, fine.
, 00:16:40:10 ,Now, my new address is the one you sent.
, 00:16:40:20
, 00:16:44:03 ,And what is great is there is absolutely no checks made
, 00:16:48:19 ,on the device or on the main board that I tested.
, 00:16:48:29
, 00:16:53:20 ,So you can just connect to the bus and just send one little packet
, 00:16:55:19 ,to change it.
, 00:16:56:08
, 00:16:59:29 ,And then you get his address.
, 00:17:02:22 ,If I show this, you have the main board there which
, 00:17:04:21 ,is address one.
, 00:17:06:12 ,The device at address two.
, 00:17:09:21 ,It sends credit read, and credit responses, et cetera.
, 00:17:10:07
, 00:17:13:29 ,I just get on the bus like I take the address
, 00:17:20:00 ,like 77 and just send a packet address change to the device.
, 00:17:20:11
, 00:17:24:06 ,It will tell actually the address 99, for example, and I check
, 00:17:28:08 ,the address too and the main board will continue to ask me
, 00:17:34:01 ,instead of the coin acceptor my status and that way I can respond.
, 00:17:35:18 ,I got a new coin.
, 00:17:38:15 ,A new coin again, again, again, again.
, 00:17:39:06
, 00:17:40:29 ,That's pretty great.
, 00:17:44:22 ,But since it's on one wire, you have to be really careful
, 00:17:48:10 ,about the timing because if you write something
, 00:17:53:10 ,if the device another device was also writing on the same bus, it
, 00:17:58:21 ,will collide and normally the bus will stop and the machine will reset
, 00:18:04:04 ,or there will even be I could test it, an alarm ringing on the machine
, 00:18:07:09 ,and you have to run quickly.
, 00:18:07:21
, 00:18:09:08 ,I won't say more.
, 00:18:09:14
, 00:18:13:25 ,So you really have to check for the silence and in the specs,
, 00:18:20:02 ,it's indicated that the device needs to be pulled every 200 milliseconds.
, 00:18:20:12
, 00:18:23:07 ,So as the packet needs about 8 milliseconds to be sent,
, 00:18:26:23 ,that's normally enough time for us to do.
, 00:18:27:19
, 00:18:32:06 ,So the thing is, to sum it up, to hijack a device on the bus,
, 00:18:37:15 ,you have to scan this bus to search for a silence period.
, 00:18:37:29
, 00:18:39:25 ,Prepare the injection.
, 00:18:41:24 ,Create the address change packet.
, 00:18:41:29
, 00:18:46:22 ,Wait for the silence, just send the packets in your silence window,
, 00:18:52:05 ,and then directly take the address of the device who wants to inject
, 00:18:55:25 ,and start respond instead of it.
, 00:18:59:18 ,And then when you finish, that's also pretty cool to just set
, 00:19:04:15 ,the address back so the device is at its old address and you can just
, 00:19:07:14 ,leave and everything works.
, 00:19:10:26 ,And, again, you need to do this while the bus is in use.
, 00:19:12:06 ,It's quite complicated.
, 00:19:12:17
, 00:19:15:11 ,So I created a cool called ccJack which auto mats
, 00:19:17:28 ,the hijacking process.
, 00:19:19:14 ,It creates a device.
, 00:19:19:23
, 00:19:24:16 ,It scans the bus and reads every packet that passes on the bus,
, 00:19:29:21 ,and each packet which is directed to the device one to inject,
, 00:19:34:08 ,he will recall the device and the response.
, 00:19:37:23 ,So as soon as he will take over or hijack the device, it
, 00:19:41:03 ,will start responding by the last response,
, 00:19:44:27 ,the actual real device used to send.
, 00:19:47:09 ,So normally, it will be pretty much transparent so
, 00:19:52:00 ,the main board won't fire an alarm or something like this.
, 00:19:52:14
, 00:19:55:12 ,It also uses a bus pirate to sniff and inject.
, 00:19:56:22
, 00:20:01:16 ,And one of the coolest examples I have is to inject coins.
, 00:20:02:02
, 00:20:05:10 ,So as soon as the coin injector is hijacked,
, 00:20:08:29 ,just start incrementing the counter.
, 00:20:13:06 ,As I said, the counter is whenever there is a new event.
, 00:20:17:14 ,So just put one coin, if it's accepted, that's okay.
, 00:20:20:05 ,Hijack the device and start incrementing the counter
, 00:20:24:10 ,and it will see that there's a new event that is the old one that
, 00:20:28:25 ,is a new coin has been inserted, et cetera, et cetera.
, 00:20:29:12
, 00:20:34:29 ,Another thing that's used also on the same machine is that if there
, 00:20:41:02 ,is a glitch like if the the counter value is lower than the one that is set
, 00:20:46:16 ,on the main board, there will also be an alarm and, again, you have
, 00:20:48:24 ,to run quickly.
, 00:20:51:06
, 00:20:52:26 ,So as a demo.
, 00:20:54:18 , AUDIENCE MEMBER: (Inaudible).
, 00:20:57:22 , NICOLAS OBERLI: Maybe after.
, 00:20:58:22 ,I don't know.
, 00:20:59:23 ,It's up to you.
, 00:21:01:10
, 00:21:06:17 ,I wanted to do a live demo, but my coin acceptor just crashed
, 00:21:11:06 ,in the speaker room like 20 minutes before.
, 00:21:13:25 ,So I have this deal.
, 00:21:14:29
, 00:21:20:05 ,So what we have here is a shell, obviously, and here it's
, 00:21:27:17 ,the main emulator, that I will use to actually show you what happens.
, 00:21:27:25
, 00:21:31:10 ,So the tool ccJack needs several arguments.
, 00:21:35:22 ,You give it the interface, so the bus pirates, the source address
, 00:21:40:21 ,of the device to hijack and the destination you want to send
, 00:21:47:00 ,the device to and a time to sniff the packets so it will listen.
, 00:21:50:19 ,Like I said, it will listen to all the responses, et cetera,
, 00:21:53:15 ,and record the new events.
, 00:21:53:20
, 00:21:57:05 ,I just inserted two or three credits.
, 00:21:58:14 ,So I have two credits now.
, 00:22:05:01
, 00:22:09:02 ,And if I send this, I will change the address of the device
, 00:22:11:03 ,at address two.
, 00:22:14:06 ,So the coin acceptor, I will send it to address number seven.
, 00:22:14:12
, 00:22:16:01 ,Hit send.
, 00:22:20:07 ,So now the device the actual device is on address number 7,
, 00:22:26:13 ,and I took its place and respond at its place to the main board.
, 00:22:31:08 ,If I look at the values, I see that I have actually learned
, 00:22:35:05 ,an unsearchable request 229, so the request
, 00:22:40:19 ,the coin acceptor status and the responses for yeah, it's 01
, 00:22:46:06 ,is counselor and 07 was the new coin was accepted.
, 00:22:50:01
, 00:22:53:12 ,So what I will do is change the address.
, 00:22:55:05
, 00:23:00:02 ,Let's say at 2201, I will add two new coins.
, 00:23:00:07
, 00:23:02:02 ,So I will change the payload.
, 00:23:02:13
, 00:23:06:25 ,And now I will have two new credits, great.
, 00:23:07:01
, 00:23:11:25 ,And what I found also is if I do that again, that will work
, 00:23:16:29 ,and normally in the specs, if the counter increments too much,
, 00:23:22:18 ,like the if it increments in 10 to 10, normally it only needs to get
, 00:23:26:20 ,the last five results, the ones that are actually
, 00:23:29:01 ,in the response.
, 00:23:29:09
, 00:23:31:16 ,But as I found in several machines that I tested,
, 00:23:34:23 ,is that you can just put whatever value.
, 00:23:37:00 ,It will just check the last response codes.
, 00:23:40:05 ,So let's put FF as the counter value.
, 00:23:44:00 ,So we increment it by 200 and what happens?
, 00:23:52:20
, 00:23:54:12 ,(Applause) Yeah?
, 00:24:03:04
, 00:24:05:10 , AUDIENCE MEMBER: Does the counter decrease when you
, 00:24:06:26 ,use credits.
, 00:24:07:01
, 00:24:09:11 ,Does the counter on the mother board decrease?
, 00:24:10:23 , NICOLAS OBERLI: No, no, afterwards, it's another counter that
, 00:24:12:21 ,is in the main board.
, 00:24:16:01 ,That's only a counter for the coin acceptor.
, 00:24:17:02 ,That's it.
, 00:24:17:25
, 00:24:19:12 ,All right.
, 00:24:24:25 ,So since it's nearly over, I will get through it more quickly.
, 00:24:28:24 ,So as the acceptor is offline, so we are we have injected.
, 00:24:31:11 ,So we are able to send commands to it.
, 00:24:35:29 ,So we can change the validation path.
, 00:24:39:05 ,So we can just say the path normally that is allowed
, 00:24:41:16 ,for the $1 coins.
, 00:24:42:11
, 00:24:44:00 ,That existing right?
, 00:24:45:09 , AUDIENCE MEMBER: Yeah.
, 00:24:49:20 , NICOLAS OBERLI: So you just tell the coin acceptor to change
, 00:24:55:09 ,to learn a new coin, and you set the validation pass of the $1
, 00:25:00:27 ,and you just put several quarters or cents, et cetera, and it
, 00:25:09:13 ,will learn this new coin and you actually put this new coin, you will see it at $1.
, 00:25:11:20
, 00:25:13:29 ,So it works.
, 00:25:15:00 ,That's great.
, 00:25:20:29
, 00:25:25:04 ,(Applause) The other thing that is great is you have several path
, 00:25:29:08 ,for the money, like when the coin is not accepted, normally, it
, 00:25:31:29 ,will give it back to you.
, 00:25:33:17 ,So you can try it for several times
, 00:25:36:15 ,before dropping the coin.
, 00:25:38:15 ,And you can also change that.
, 00:25:40:17 ,So just invert the two.
, 00:25:42:17 ,So when the coin is not recognized, it will get in the machine and
, 00:25:45:29 ,if the coin is accepted, it will get it back to you.
, 00:25:49:05 ,So as soon as you as you win, you just play again.
, 00:25:50:06 ,That's great!
, 00:25:50:29
, 00:25:55:05 ,There are many possibles and, again, there are absolutely nothing,
, 00:25:57:29 ,no authentication, nothing.
, 00:26:00:02 ,You just have to be connected on the bus.
, 00:26:00:08
, 00:26:04:13 ,Regarding protection and the security.
, 00:26:05:27 ,There are several things.
, 00:26:06:06
, 00:26:10:01 ,You can provide a PIN code on the device.
, 00:26:13:09 ,The only problem is that the PIN code feeds to be sent
, 00:26:16:24 ,in clear text to actually be used.
, 00:26:18:23 ,So just sniff the bus.
, 00:26:22:19 ,Check for header 218 that is provide PIN code to a device
, 00:26:25:23 ,and just read the four digits that are
, 00:26:28:15 ,inside and that's it.
, 00:26:32:03 ,You can help by just pulling the power cord and repower
, 00:26:36:03 ,the machine and it resets the PIN code.
, 00:26:43:13
, 00:26:45:16 ,There's also encryption.
, 00:26:50:03 ,I didn't put a lot of time on.
, 00:26:53:05 ,This there are two encryption method I used.
, 00:26:53:17
, 00:26:59:03 ,One is proprietary, a 24 bit key and the other is a desk description.
, 00:27:03:25
, 00:27:05:17 ,So you can put it.
, 00:27:05:22
, 00:27:08:20 ,But the problem is that it's a different header.
, 00:27:11:00 ,So you still can request the device using
, 00:27:14:24 ,the unencrypted headers and while the machine is in use
, 00:27:18:13 ,with the encrypted, the encrypted one.
, 00:27:19:14 ,So, why not?
, 00:27:21:04
, 00:27:25:13 ,I decided yesterday I was working in the Caesar's and there was
, 00:27:27:16 ,an open machine.
, 00:27:31:07 ,So just to show you exactly where (Applause)
, 00:27:36:15 ,You see here the machine is just opened.
, 00:27:37:15 ,Yeah.
, 00:27:39:29 ,And the bill acceptor is just right here.
, 00:27:41:17 ,I don't know if it's a ccTalk one.
, 00:27:42:26 ,I didn't test it.
, 00:27:45:24 ,I wanted to be there and not in jail or something.
, 00:27:47:16 , AUDIENCE MEMBER: (Inaudible).
, 00:27:52:23 , NICOLAS OBERLI: To so it's just there.
, 00:27:53:00
, 00:27:57:21 ,You can put you on wire.
, 00:28:00:27 ,Normally, it's fourth one.
, 00:28:03:18 ,It should be that red one there, but I'm not sure.
, 00:28:04:24 ,(Laughter).
, 00:28:05:01
, 00:28:09:22 ,So, yeah, normally, these machines if they use the ccTalk bus,
, 00:28:14:13 ,you can just get into them something there.
, 00:28:15:01
, 00:28:16:12 ,All right.
, 00:28:17:12 ,Other things.
, 00:28:18:12 ,I will get quickly.
, 00:28:19:14 ,Sorry.
, 00:28:26:14 ,Other things that might be good points of research is the encryption supports.
, 00:28:32:00 ,There are many things you can do there, because 24 bits is a bit weak.
, 00:28:32:21
, 00:28:37:02 ,You can also dump the internal memory of devices.
, 00:28:40:29 ,You can upload the firmware and you can pretty much many,
, 00:28:46:15 ,many many things with those and that's just the start.
, 00:28:46:23
, 00:28:51:17 ,So in conclusions, the specific protocols are quite fun
, 00:28:53:16 ,to analyze.
, 00:28:54:16 ,It's quite easy.
, 00:28:57:05 ,You can find really fun things to do with this.
, 00:28:58:03
, 00:29:02:12 ,You definitely need to look more in depth in ccTalk
, 00:29:09:20 ,because since it's money related, you have interest in applications, right?
, 00:29:09:26
, 00:29:16:06 ,And just get a bus pirate, it's a fun tool for hardware hacking
, 00:29:19:25 ,and pretty much all stuff.
, 00:29:22:03 ,CcTools are available on my GitHub account.
, 00:29:27:03 ,And I will post several items on my website.
, 00:29:28:06
, 00:29:29:18 ,And that's it.
, 00:29:30:18 ,Many thanks.
, 00:29:33:08 ,(Applause) If you have any questions, just come by.
, 00:29:38:08