 Hello internet, my name is John Hammond, and this is a video to showcase the 310 Bitcoin challenge This was released on the internet about a week ago, just over a week ago, eight days ago now, by an anonymous individual who posted on reddit explaining that he had originally bought into the Bitcoin scene when it was just getting started and now he wanted to share some of the love So he created this puzzle or the 310 Bitcoin challenge where you're given a single picture or just an image and there is 310 Bitcoin hidden somewhere, somehow within the picture. There are three other connected addresses that contain 0.1, 0.2, and 0.31 Bitcoin respectively and so far you can see the timeline where just today at the moment of my recording I think five hours ago of the 310 Bitcoin funds were found, discovered, and taken. So that is if you just do a quick Google search here 310 Bitcoin that is just over two million dollars, at least United States currency. So that's pretty crazy and kind of incredible. Cool, cool puzzle and I can showcase at least just a little bit of the first two pieces, the 0.1, 0.2 segments of this challenge. I am eagerly awaiting to hear the solution for the 310 Bitcoin or two million dollar treasure and bounty. That's pretty awesome but so far I would like to showcase this. The internet has been going in a little bit of a frenzy. Not a whole lot, not a big one, but you are seeing some news articles that are flying a little bit and I thought I would take advantage of this and totally jump on the train and bandwagon. So I'll try and showcase what I can. The background really that's just necessary is that this individual is kind of nicknamed PIP and there's so far been an online community that's come from it. Within the Reddit post you can see lots of links and information discussion and articles that have kind of come from it and kind of through that also some Google Docs pages that actually have solutions leaked and visible and that's what I will try and showcase and go through here along with a Discord server that will showcase some of this cool stuff. If we go ahead and take a look at the challenge, this website here is simply bitcoinchallenge.codes. You're given this kind of prompt here. There's 310 bitcoin to be found and this is the image that we have to work with. So far everything but the decimal 3.1 or 0.31 bitcoin has been found and solved. So I can zoom in here and you can download this PNG image. What I'm going to do is copy this link. Actually just open in a new tab. You know we'll just download whatever grab the link and let's open up a terminal so I can start to work with it. I'm going to make a directory to work and I'll call this 310 BTC and I will W get to download the image. Now that it is downloaded we can go ahead and just view it and make sure it is what we expect and it is exactly that. You can do a little bit of reconnaissance just kind of exploring this because this looks weird, right? It seems to be stained glass I think. There's a little bit more discovery as to how this image originally came to be, what was it actually made of, etc. What do these numbers mean, right? What do the numbers mean, Mason? There's just plenty of letters and other kind of strange things in pieces of the page. Down at the very bottom it explains a little bit of the address and the actual bitcoin wallet that you may need, signature here and some seemingly hexadecimal values or values from 0 through 9 and A through F representing base 16, not just base 10 like we're used to seeing in the real world I guess. And there's the simple bitcoin logo. So we could explore that a little bit more but the first thing that I would kind of recommend doing and what seemed to lead to some kind of rabbit hole or a little bit of fruition was actually exploring the image in a tool called StegSolve. So if you haven't heard of StegSolve before it is available online you can just go ahead and download it. It is actually visible in a repository here where you can go ahead and the second link I think has a better... Oh it does have a W get link so we can simply download it as that. I'll paste that in StegSolve.jar. It is a Java archive so you will run it as Java tag jar. Open up StegSolve, you can hit O to open the challenge.png and it's too big to view all in one. That's totally fine. You can still move the arrow keys or click through these panes here and kind of explore different ways to view the image like a color inversion X or as you can see up in the top left. And each individual plane or each significant or each specific bit in a binary the binary bits that make up the bytes that create the colors and the pixels and the and what is in the picker and what is in the image. If you get to the last bit in the alpha plane you'll see that there is one line that actually has a little bit of information or something seemingly odd. I can't zoom in on this but we know that it's there and we can go ahead and save this if we wanted to. Also we have a QR code that we can save and explore. So I will do that. I will go ahead and save as originally it will give this to me in a bitmap. I want to see if I can get it to a PNG. So I'll use ImageMatic to convert it. But let's just call it like output and I'll stop StegSolve. So output is now just a bitmap. Let's go ahead and see if we can convert it to outputs.png. Cool. Did that happen for me? It did. Let's try it. Okay. EOG output.png and you can see if we zoom in here there is a steady line of seemingly pixels black or white. So we can assume that this may be some kind of message or some kind of encoding. You may want to look at Morse code maybe maybe that's a major reaction what you think of or in fact it may be binary. So we will have to carve this out. Also we have the QR code. So let's go ahead and say and see if we can take a look to actually determine what this is. I'm going to see if I can just take a screenshot of this. I might just have to cut it out. In fact I'll do that. Let's open up Pinta is a fine image editor that I've been working with and I will go ahead and open the 310 Bitcoin get our output and let's just try and copy this segment of the QR code here. Okay now I'll create a new image that's about that size and I can paste it in. I will go ahead and save this as QR code.png and I'll try and evaluate it or scan it with Z bar image and it gives us a link to bitcoinchallenge.codes register tack 310. Okay if we view this link it looks like it will allow us to register while it's possible to solve the riddle without registering. At this point I'd love to hear from you why I'd love to know who wins this challenge. So we can enter our name and our email address and it asks what is the SHA-256 hash of the data you've got so far. So SHA-256 of all the data on a single line. We don't have that just yet we aren't quite there. So let's keep moving. I know just because I've kind of followed through this this this puzzle and explored a little bit more that what we're seeing in that line in output.png is something that we can explore but it's not going to be our first our first piece of the puzzle. The 0.1 bitcoin actually finds its solution somewhere else so I will showcase that a little bit. Let's actually take a look at the image one more time and if I zoom in at this message down at the very very bottom all of these hexadecimal numbers 511, B20 or 332 etc. I'm going to go ahead and write these down just so I can kind of explore them and I'll open that up in supposedly just a script. We'll call it notes.py or something. So I'm going to write this in Python. Python is kind of my weapon of choice here. I'm going to use a shebang line so my Linux system will know how to handle it if I just mark it executable and let's go ahead and write these down. I'm going to pause the video so you don't really have to particularly watch all this but that is just a process of what I'm doing. I'm going to be putting these together and I don't need them case sensitive. I don't particularly care and I'll just return the video once it's I'll return back to the video once I'm done writing these. Okay so now that those are all written down hopefully I didn't make any mistakes that's just all going to act as one string in the notes that I'm working with here. Another peculiar thing that you may find if you just stare at the image long enough is it just a little bit above this segment of the page? You can see just barely and I'm going to zoom in a little bit here this date October 2nd 2018 and that is as we know so far the start date of the challenge and when this puzzle really got kicked off online. So October 2nd 2018 or oct 2018 2018 we can play with that a little bit and I am please bear with me for some suspended disbelief and that I'm just going to associate to the solution here but this will take a little bit of fuzzing or just poking around to explore with it but the real notion that we have here currently is a key of 2018102 so 2008 October 2nd. What you may notice is that now these are essentially all data that we can work with right like well this may look like decimal numbers I mean obviously it is there are no hexadecimal numbers in there it may still work as a shift within a hexadecimal range so actually I'm just going to change the name of this variable as to string and let's say that hexadecimal can be the values that we would expect to see in a hexadecimal format right so zero one through nine and then a b c d e f so zero one through nine and then a being 10 b being 11 c being 12 and so on until we reach 15 and in base 16 so if we were to consider this a shift cipher or we were to tinker with it a little bit we can go in one of two directions right if we were to iterate one to the next just take that position minus the index of the other as we loop through each character or each digit here we could essentially find something new maybe maybe we'll have an interesting bit of information here let's try and do that I'm going cold so please forgive me if I'm going wrong here I'm going to check for i in range of length of the string and that will allow me to get the character that I'm currently looking at within the string if I say string i and then the key character I'll just change this to your car or how about string care and key care can be key i modulus the length of the key so we will wrap around the key over and over and over again depending on how far we are in the string so now what I can do is I can get the index in where it would be in hexadecimal and then I can subtract the difference and I would essentially be doing the shift I would essentially be subtracting the position and determining where the next character would be if I were to shift them in a specific way so it's hard for me to at least try and explain verbally but hopefully you'll see this in code here what I can do is now that I know the index I have the string character and I actually have the value I can say string index can equal hexadecimal so what I where I would expect to find it in the hexadecimal set dot index of string character same thing with the key index so I can take the string index where I found let's say five and where I found let's say two for the key and I can subtract them I can say that the new character can be or let's say new care index can be the string index minus the key index all mod the length of the hexadecimal so now the new character will be at that position in hexadecimal at that index so I can print out new character and I'll just use a comma here to separate them so now I know that I have those individual pieces let's go ahead and create a string for them so let's just say new string I'll create it as an array in Python so that I can easily append it and then join it at the end let's say new string will append with the new character and then after the loop I can go ahead and print out new string I'll join together okay so now we have hexadecimal it looks like 310 310 310 that just repeats a lot seemingly to tell us that we're right I think seemingly to say that well you've got a little bit of information in that and that seems to be trustworthy I think this is peculiar now though because this doesn't look like anything that could be particularly useful for us but what I want to do is see it in those same three digit chunks just as we had in the original image they're kind of in these boxes so maybe if we put them in threes we'll have better luck let's go ahead and do that I'm going to just create another for loop for I in range length of new string I'll start at zero and it'll actually move by three so that we can say list or new list can be the new string at index I to index I plus three we can add that to our new list so now let's check out what the new list is oh let's actually oh I should create that string as a string sorry let's say new string can equal that string I'll join together so now it won't be cut up okay now we have those three tens and those those sets of threes all put together let's go ahead and experiment with those if we were to actually just get the three tens removed so three four five six of them we can cut those out and now we just have those original let's view those as what they could be in in decimal right let's do some list comprehension let's say int of x base 16 for x in each of those so saying that each individual entry in that new list let's convert it or let's consider it to be hex what is it when it's decimal 426 252 813 et cetera et cetera you may notice and this is something that I didn't particularly know to begin with but a lot of these are peculiar numbers especially in regards to bitcoin because they are under the number 2048 so I had to learn a little bit about this and hopefully I can show you but this is something called bit 39 and I don't know a whole lot here I am binomians and authority as to what this stuff is but bit 39 is an example of a seed phrase or at least as kind of the the encoding that may be necessary necessary for it a seed phrase is a list of words which store all the information needed to recover a bitcoin wallet wallet software typically generate a seed phrase and instruct the user to write it down on paper and if the user's computer breaks or their hard drive comes corrupt or whatever the case may be these this set of words or the numbers that kind of associate with it for bit 39 will essentially be able to restore their bitcoin wallet for them so generally a seed phrase only works with the same wallet software that created it the bit 39 English word list has each word being uniquely identified by the first four letters which can be useful when space to write them is scarce so bit 39 word list let's check this out this is a github repo that explains a little bit more of what bits are and holy cow bit 39 and monocode for generating terministic keys there's a standard let's go ahead and check it out that folder bit 39 bit 39 in English that's what I speak we have 2049 lines so checking all this out 2048 at the very very end okay so maybe these numbers would associate with the words and that is how we could recover the bitcoin wallet let's go and do that what i'm going to do is actually download this i'll put this in our directory that we're working with and now we can go ahead and say that okay decimals and let's open up let's do a with statement because people like to yell at me for using context managers with open english.txt that's the file name for each of those as handle we can say contents can equal handle.readlines and what i'm going to do is actually just strip these and make sure they don't have any crap in them because they're very annoying readlines is not my favorite function x.strip for x in handle.readlines so if i were to check out contents now we'd have all of those words each one on the line so we could kind of index with what those words may be now we don't know if these are zero based or not this that might be a tricky point i'm going to assume that they are not zero based they're just referencing by line so we should subtract one from what we're looking for let's get the first one so i can verify personally let's say context.index of or context decimals zero let's print that out it's crystal and i want to add one to it so it should be i'm sorry we should minus one it should be cry okay so if we were to determine all of these words here we could simply do that we could say for index in decimals let's print contents at that specific index so now we have oh again let's minus one on that cry buyer grain say vault sign lyrics rhythm music fury horror mansion and that is the first string that we want to be working with here that is what we are using as our bip 39 string for this bitcoin wallet now that we have that string i want to save it and move on to the original other portion that i was discussing so let's just say first string dot text next let's review those original pixels that we thought we saw in the output dot png file that was the alpha channel like the least significant bit in the alpha channel that looked like it had some information that we could pull out of it just at this specific line so let's open this in a image editor i'm just going to use gem peer to go ahead and view what that line is actually on let's check it out output dot png that original file i'll zoom in here and just with a single pixel i want to check out that's online y of 310 you can see it down on the very bottom of my screen here so now we can carve out each of those pixels if i were to kind of scroll all the way at the very very end when will this finish it looks like it goes until about 2798 so maybe 2800 xx position looks like the rest of it is not necessary that's that's not carved out of the image so let's go ahead and try and dig those out what i'm going to do is again work with python i'll create a new script this time i'll just call it like pixel carve or something and we can go ahead and cut it out with the python image library so i'll get my shebang line started again and we can say from pill capital you can import image capital i here so now let's go ahead and image dot open output dot png let's just create an image object for that so we can work with it and be sure to close it for good memory management or whatever and let's go ahead and get the data out of it let's just say image dot load and we want line to be 310 that we saw and we want max width to be let's say 2800 because i think that's a fine rare number like even number that it may be expecting so we can do this now we can go ahead and carve all these out let's say for x in range of max width let's go ahead and print out the data at the position of x and line or the specific y that we're working at let's just we can probably call that y as well so x and y let's see what data we get we are getting 0 to 255 0 to 255 etc etc etc and well let's go ahead and carve that let's say 255 is white correct and 0 is black so let's actually we can probably go ahead and just create a new list for this let's just say new string as we've done before let's say new string dot append if this data is equal to 0 new string dot append 1 and let's actually just make it a string so we can work with it as binary and if it is a 255 we can convert to it as a 0 so now at the end of it all let's check out the string new string all put together lots of binary okay let's see if we can get a message out of this let's convert it to hexadecimal and i do want that to oh i'm sorry let's actually we want that to be considered a binary number to begin with so let's take all this and consider it two now we have a decimal number let's go ahead and convert that to hex and let's see if we could handle it let's go ahead and say two cut off so the zero x is removed from the very start to negative one so we remove the l at the very very end and now let's go ahead and decode that from hex and it looks like we have what could potentially be base 64 so in python we could if we wanted to go ahead and import base 64 and then we can say or we don't even need to do that we can just simply decode it as base 64 following that looks like it says salted and then there's a lot of garbage or binary data that we won't exactly be able to see your process but this salted string just at the very very start tells us that maybe this is some encrypted data that's been put together with open ssl or another toolkit to go ahead and encrypt some information so now we've got another lead we track down that specific salted version of information the base 64 string that was hidden in the image and now speaking of the image let's actually take one more look at it because i think there's another interesting tidbit that we may not be looking here is that those numbers that i mentioned earlier these letters here that are kind of scattered across the picture what do they really mean how do they how do they correlate well we're kind of curious and just wondering what these curves are are they particularly doing if we were to copy them or kind of it looks like they're only on one half of the image and not on the other or maybe some stray oddities off on the side but what if we were to kind of mirror them or flip them so let's go ahead and try that what i'm going to do is open this again in gimp check out challenge dot png opened up just fine and let's go ahead and try and select some of these curves here i don't know how well i'll be able to do this in fact i'm not very confident that i will be able to do a very good job of it but let's try it so what i've been doing is just kind of adjusting the threshold on the quick select tool and trying to see if i can get at least remnants of the curve and then i don't i'm not particularly worried if i get some extras like the lines that kind of follow it because as long as the oh boy as long as the original like thick line is there on its own man that one may be harder to get let's try and tone down the threshold no still getting too much i think i got just enough of it to kind of move on i know there's one up here trying to avoid selecting the entire image and just the pieces that i would like to see again i'm just adjusting the threshold and trying to find a sweet spot where i can select enough of the curve enough of what i'm looking for so that i'll be able to select it and work with it and so far that's all i see i've been holding shift that whole time to just kind of keep track of the selections i've already made and what i'm going to do now oh it looks like i missed a tiny one dang it zoom in a bit to kind of uh fine tune some of these sorry i know this is painstaking and awful and probably very boring to watch but hopefully our efforts will be rewarded not by two million dollars but something not even not even close to it not even not even okay at this point i feel like i've covered enough of them that i can confidently kind of control x and copy one of them so that i can now paste them in another layer create a new layer specifically for those images and then what i'll do is i'll go ahead and create that layer as a new layer and what i'm going to do is i'm going to transform this layer i'm gonna select the entire thing where i just have the curves visible right or the pieces of it that i am kind of curious about and what i'm going to do with that entire layer once i have it selected i am going to make sure that it is the same image size that i want so i'm going to layer to image size and then i'm going to go ahead and transform this layer i'm gonna right click it and say layer transform flip horizontally so now both of those are visible and it looks like i just about have some lines correlating in fact it looks like it's not quite there but if i were to drag this just a little bit some of these numbers look like they're trying to refer to one another looks like there is a grouping that is potentially being displayed here with some of these letters and symbols you can see kind of just over on the top left over here and i'll change the color so maybe it's a little more visible i'll try and change the size but l and three looks like they're coupled now with that with that line moved over and zero and two looks like they would be covered or oh and two maybe i think this this d over here should be circled and so it should have been on seven so seven l three zero two seven and five eight four five you can see it's connected to an eight can actually do a four and looks like they're trying to connect a nine and an f so if we're to put those together let's take just take note of those you don't need them in a specific script but we can say l three zero nine or i'm sorry zero and two those were connected um it was seven that was on its own because the the d circle over there zero and two are connected from just that faint line there nothing over on the far side five eight and four as we saw and nine and f okay so let's go ahead and put these in notes or a new script where we don't need to go through all this but let's keep track of these because we can if we wanted to determine any of the possible permutations of these letters there aren't a whole lot of them all these letters numbers and symbols these these characters here there aren't a whole lot of options that can kind of come from this but we don't know what logic or really where in the picture they should be organized or should be ordered so we could permutate them and just do whatever we wanted to and I'll do that with iter tools so from iter tools import permutations let's say p or letters how about that can equal all of these as a string let's just do p's can equal permutations of letters and then for p in p's you could literally just print p and there will only be so many of these that where we could actually possibly feasibly work with like far too try and python notes dot pie these are all the potential possibilities we could work with again if you wanted to you could hook this up in whatever way that you wanted to really get a hit and verify with it but I'm going to again suspend this belief here please bear with me just jump to the known and public solution after we kind of comment this permutations stuff out we don't even need anymore uh we can find that eventually the password or what we're looking for in this put together is the I guess I'll yeah we'll just call it password because that is what it is is simply l three seven nine f four eight five zero two so a specific permutation of these letters here but that is the password that we're specifically looking for so now that we have the decoded data or we we have the base 64 decoded data that we know is SSL encrypted let's see if we can go ahead and decrypt it with for some reason potentially this thing this string or association of things that we may now know to be perhaps a password so I'm going to go ahead and try that what I'm going to do is actually take this output as a variable and I'm going to create a written word file for it or just just a file to put it in let's just call it encrypted dot text with the right mode and let's go ahead and write to it the output so once I run this now I should have a file excuse me I should have a file encrypted dot text and we can go ahead and decrypt this given our password now so we have let's see open SSL that's the command and what we're going to be working with to try and decrypt this and the mode that we're going to end up doing a lot of this in and being bitcoin and the cryptography system that it uses is a yes 256 cbc or I think it's cipher blockchain and then md for md5 the mode that we're going to be working with and the data tack d taking in our encrypted dot text and we'll put it in out as decrypted dot text and then it needs to know a password which we will use as this given and it will successfully decrypt so check out what we have here now we have a decrypted dot text and we can display that on the screen well done now find something really interesting here looks like we got a good hit this is this is the real thing this is the bitcoin challenge and we're given again a same kind of message as we as we've seen previously in the original image so we can work with our same note script to go ahead and decrypt this just as usual what I'm going to do is actually copy this and I'll go ahead and put in sublime text I'll cut it up remove all the new line characters remove all the spaces I don't need a space in there and let's go ahead and make this lower so string can be this dot lower and let's go ahead and after we have worked with the bit 39 string that that whole file we can go ahead and put together the the contents that we're seeing here so let's go ahead and print this debris slim immune lock actual tide gas vapor fringe pull flat glance giggle giggle giggle okay giggle looks like we don't need um let's get until pull flat and maybe that is something necessary now again stuff we can put together with our string and as I've come to find out this should go ahead and decrypt what you need for the wall for the 0.2 bitcoin looks like I forgot the word lance in here too now we have enough for the bitcoin wallets but I'm still curious as to what really is in this register page when it's asking for the shot 256 hash of the data that we've got so far so there's a little bit more left to do from that uh that I want to showcase and that we can figure out what this register hash is because we're so close to collecting all of the data but there is one more piece there's one more thing that we just haven't looked at just yet because we kind of got carried away with some of our other leads if we go ahead and run steg solve one more time I'm going to go ahead and check out okay let's look at the challenge dot png just as we'd seen before we can look through this we're looking at the alpha plane etc great the least significant bit there has the qr code and some other information that we can see in that line that we've decrypted already but if you check out the red plane go all the way to zero or I'm sorry not the red plane but as you kind of explore through more of these individual planes um steg solve will go ahead and display the image with with that specific filter or shades that your lens that you're looking at it through and as you get to finally viewing the gray bits the gray bits also have a little bit of information displayed except the qr code is missing this isn't the exact same lenses we'd seen before in the alpha channel and this time it goes all the way to the very very end though the full width of the page so let's go ahead and save this let's save this as solve dot bitmap is perfectly fine and let's go back to our command line and let's go ahead and move or convert solved dot bitmap to I guess I'll call it just gray bits dot png so now let's go back to our script pixel carve and let's try and work with this a little bit let's actually comment out the code that we have just now or at least I suppose let's let's just change the line where we open up a new image and let's just change rather than output we'll use gray bits and then we're still looking at line three one zero but we can go all the way to the very very end now of the image so let's just do image dot size one here so that's the that's the max width I'm sorry zero because that's width and height so now we can check out what we have of our new string if I were to print out new string as binary we have a lot of information okay interesting let's go ahead and see what our hex is if I go ahead and print that output after we've converted all that doesn't look like anything useful to us particularly so let's try and let's go I try and go through some of these steps in a baby steps away now that we have it in binary let's go ahead and convert it to a decimal and let's get that in hex just as we've done before and if we wanted to we could go ahead and carve some of the stuff out let's say zero to go from cut out the zero x to positions in all the way to negative one that does not look like something that we could particularly see as real English okay bomber but what do we have here how long is this string to begin with we are viewing the correct that is the correct line let's verify let's go double check let's open up gimp let's check out gravid stop png I'm gonna zoom in here just as we've done before switch to the pencil I'll change the size way down low this is again at 310 okay so we're seeing things just as we should and if we go all the way to the very very end it is all there so we've got information maybe we are not interpreting this the way that we should because that is not a lead that we would expect let's consider if the gray bits are wrong but the gray bit if we saw in steg solve that those gray bits are denoting that there it's not it's not fully understanding okay let's I'm sorry I hope let's open up the original challenge image that gray bits is showing something that we that we had seen in kind of a line in full red right actually I want to move back to that but it's taking a long time to load these pictures here it's funny how the alpha plane completely like will like invert all those so we have full blue we have full green and full red you can see that that same kind of line is still kind of prevalent so maybe it is the red pixels that we're seeing some piece out of let's I want to I want to get the least significant bit from from red here so what I'm going to end up doing is actually just opening the original challenge and then let's not view these but let's actually print out data x y and let's comment these out so yeah you can see that in a bit that the least significant bit here 254 that's not a full it's not full red it's obviously trying to change something here I think I I see even one rather than a straight zero so black so if the red channel is being peculiar so let's let's sniff out just that least significant bit portion let's get zero okay so now we're getting the red channel as we saw and let's go ahead and convert that to binary good looks like we're seeing the least significant bit as zero just about always because of just how oh no okay it is going to one sometimes so let's go ahead and just okay index the negative one get the last the last value it looks like we just have a lot of zeroes at the very very end so that is strange but let's let's let's see that can be data right or color so let's change the let's get a same copy of this loop as we've done before let's say if color is equal to zero um because actually yeah we don't even need this loop we can just simply append that as a string to because we're just getting a zero or one so we don't need to determine what those things are let's just do new string that append the string of color and now let's print out what our string may look like ones and zeros good and a lot of zeros at the end so maybe there's just something not particularly there how many how much is this 144 and what's the size of this image image dot size the width that we saw earlier was 2094 okay so you subtract 144 from that and you got 220 28 not obviously not 28 but 2800 2800 so just as we saw with the original alpha colors those all those are all bits that match up so maybe we maybe they must go together maybe if we were to X or them together so let's go ahead and try that I'm going to say that this is the string that we're receiving so we want to do both these procedures right we need we need kind of both of these we need both the alpha and what we're seeing from the red channel so let's say that this is red channel and I'm going to have to duplicate some of this code this kind of sucks but we can remove a lot of this so that will get us the red channel and what we've seen before from output output dot png that's going to give us alpha so if I were to print alpha am I printing the red channel what's going on oh my max width is now wrong because the max width was 2800 as we saw okay good so we don't need to change some of those but now we have alpha and the red channel we're getting from those specific things so red channel we only want until up to 2080 just as we saw so we can X or these together right let's do that let's say for i in range or let's just actually carve these together red channel can equal that position good we don't need alpha to be modified so for i in range length of red channel or alpha doesn't matter because in this case we're just going to 2080 so r can equal int of red channel at that position and a can equal alpha at that position so new can equal r x word with a and then let's just say final as a string that or a list that will convert to a string to handle this we can do final dot append new and at the final end of the for loop we will print out the final and we're getting an issue because final oh final is expecting strings here so let's just convert that to a string and we have a lot of ones at the very end that's weird why is that maybe that's maybe it's wrong we do we have to flip these bits so we can do that we can say final can equal this let's flip the bits so let's do final dot replace all zeros can be replaced with just a pipe just as a temporary thing let's make sure that we save these changes so update the variable as we do this replace all the ones with zeros and now replace all the pipes with ones so now we have new final after we've replaced them all perfect and let's go ahead and try and determine what this is let's do int final to so that's binary now and now we converted to decimal let's go ahead and try this as hexadecimal which now we have some more information that maybe might decode are you okay let's try let's say okay all these zeros are still on the way so let's cut those out can I do that print final and let's get all the way to the last set of zeros so that is 840 characters up to negative 840 so now we don't have those characters we've carved them out all those zeros can go away and we can do final as a number again just as we were doing before let's try that convert that to hex great let's carve out the zero x and the l at the very end let's try and decode that to hex and oh what is this we have a data here in this is there something like in this is that maybe that's some kind of file let's just say data let's try and open something and let's write it let's write our data to it so that's done once we've run the script now we have a new file called something we can check out file something it is gzip compressed data okay okay awesome let's try and gunzip that so we can extract it gunzip something oh it needs to know that it is a gzip file so let's gunzip that unexpected end of file what does that mean um is the final stuff important let's let's try this one more time let's run so now we don't have to have uh i i didn't cut out all those pieces at the very end maybe that padding is necessary let's try and move something to something dot gunzip good let's try and gunzip that and it worked it worked okay now we now we just have something itself file something ascii text more base 64 all right let's decode that and it salts it again so now we have a new string that we have to work with boy but wait a minute well we already have maybe what we could use from the original strings that we've been working with this these these letters that we got from connecting those curves and the lines on the original image we could roll through these permutations and try them again we could just pipe them into that a s decryption command that we had worked with before to try test them as we needed to um and that is what i would recommend that is how it should be done to actually to test and determine if you can decrypt it again just going to kind of move through this for the sake of showcasing a solution and i'm going to show that the second password that we have now seen is password to discovered was zero two l three f nine five eight four seven so that is the second password and that is what we can use to go ahead and decrypt what we were receiving from this second encrypted data so uh two encrypted dot text and then we can go ahead and open ssl command region both as we've just done before to to encrypted to out to decrypted it wants to know a password we will paste in what we have just far it should run successfully and now we have this command to decrypted and we get the result here it says bitcoin challenge so we know we've got the right thing it says you're either very very close or working in the right direction here you go there's this okay so what we have right now is enough to put together what is necessary to determine the shot 256 hash for the registration page so the way that i'm going to end up doing this is actually catting out first string dot text and we don't need all the second portion that we got out of it so actually i'm gonna go ahead and open that up and let's save that as first string just as we've seen yes but let's save this as i'm sorry a second string as well because we don't need to concatenate these in this case we just want fury horror mansion and that is going to be our second string or first i'm sorry i don't know why i'm getting these confuses because i'm saving them in a strange way in a stupid way okay now in our command line we can cat out first string and we can cat out the decrypted data from the first one and let's actually remove all of the new line characters in that and let's go ahead and remove from the second one all of the new line characters in that and let's bring this to shot 256 some and now we have a potential shot 256 string except i did this wrong because i want all of that to go to shot 256 them and that as one full output as the new lines are moved from all the things that we've received so far that is the shot 256 hash that we can go ahead and give to the registration site so i'm going to say my name i am john hanan my email address is this and we can paste in that shot 256 hash go ahead and submit take a little bit of time and it says perfect this is a very special hash so awesome this is everything that i was able to accomplish there's no way i could probably figure out the solution for the 310 uh the full two million dollars worth of bitcoins but i did certainly want to showcase what i could follow through and kind of understand uh from the solutions that have been been publicized and showcase them and show you how you can do them and also solve them especially if you're into this this puzzle solving this catch the flag cyber security computer science mindset so thank you so much for bearing with me i know this has been a super long video um but we did work through what's necessary for bip 39 to determine the strings here what you need for the wallets to actually go ahead and get the 0.1 bitcoin or the 0.2 bitcoin and actually retrieve a little bit of of cool stuff so thank you so much for for sticking with me i hope you learned a little bit it's been very very cool and i and i hope this has been worthwhile thing to show the internet i want to end this video with a quick shout out and some love for the people that support me on patreon thank you guys so much i can't say this enough each and every one of you is really what makes this channel possible what motivates me what supports me and what makes this a potential like life endeavor for me i would love to be able to quit my job don't do that fight like nine to five rat race anymore and piece together some cool stuff to show the internet um so hey if i could ever turn this into a livelihood it's incredible and it's all thanks to you so i can't say it enough one dollar a month on patreon will give you a special shout out just like this at the end of your video five dollars or more on patreon will give you early access to everything that released on youtube before it goes live because i like to create some kind of hey i know youtube is going to be releasing this stuff like gradually like maybe on a daily upload schedule if i have a lot of stuff prepared in the backlog but if sometimes i don't right now honestly i've been in a funk i don't have a whole lot of things recorded trying to bank through some pico ctf 2018 and make some other cool things prepared for you um but in the off chance i do and maybe it'll sunday come super duper helpful whatever five dollars a month on patreon a little bit of incentive but it's really i i'm grateful for whatever you can do to help me as a dude as a guy just try and put money on the table so thanks for watching if you made it this far you're the best because i know this is a bit of crazy long video it's been really weird to do but hope you enjoyed if you did like this video please do like comment and subscribe join me on discord there's a link in the description uh our discord server is full of ctf players so capital flag programmers hackers computer scientists engineers cool cool people you can hang out with me and other awesome dudes uh and get into the scene a little bit more it's just a just an awesome way to do it so thanks for watching guys i love you i'll see the next video later