When it comes to my daily routine Often I find the most difficult part for me right now is the evening Going to sleep Shutting everything down in a way that that works and it gets me ready for the next day because Every part of our day Except sleeping it seems like we have some kind of control over it. We can choose what to do now Of course, it's not to say it's easy to just make ourselves do whatever we Should do and don't feel like doing and not do the things we feel like doing but shouldn't do That's of course those are their own challenges and not to minimize those but there's something special about sleeping because We can't make ourselves go to sleep. We can't Apply discipline and say I'm just gonna like make myself do it even though I don't feel like it going to sleep is something that happens passively to us so we can we can take actions to prepare for sleep and You know shut down shut down the bright lights shut down the intense stimulation control what and when we eat dinner and The conditions of the bedroom the temperature the light the sound All these things we can do to prepare for Good sleep, but in the end we have to kind of let it happen to us and That I find that I find harder because often I don't feel like going to sleep in the evening It takes the day Throughout the day, you know, I'm warming up My head is filling with all the new things happening in the day and I have lots circulating in my mind and then Before I know it. It's the evening and oh, it's time to go to sleep so I can start again tomorrow And well, I don't feel like it. I you know, I've just gone gone gone rolling Why is the day so short? Now maybe working harder during the day and you know, there's all there's ways maybe as I learn to make better use of my days Then I'll become more used to this cycle and just Be ready to say okay, I've done everything I can do in that day and I'm ready to sleep so There's all kinds of factors involved but one thing that I find is helpful for this is to remind myself That when I'm going to sleep when I'm ending the day I'm not really Just stopping everything. It's not like all the progress. I do during the day You know, I go through the day progress do things useful things and then I stop and Then start up again the next day in some way. It's like this and when it comes to active directed activity. I am stopping all activity and We'll be picking it up the next day but it's not like everything stops because Some part of our mind and some part of ourselves is continuing to work at all times Could call it the subconscious whatever that means. We know whatever parts of ourselves that are not Directly consciously Controlled and we're not directly aware of but you know our emotional states our sense of who we are These sort of foundations of our habits and our behavior There's something going on even when we're not working It's like we we work all day and do useful things and Somehow advance whatever we're working on but then it's like overnight. It's like this It's like something is setting in it's like we make we sort of mold ourselves. We make a new shape of ourselves and then It sets it It solidifies every whatever we do in that day Overnight it it's like almost like it sinks in it becomes more part of who we are Whether good or bad we Spend the day whatever we spend the day doing that's something that we're kind of adding to our identity to our way of being and When we wake up the next day a Little bit of that yesterday is Baked in or settled in or Solidified into ourselves so we spend a day doing useful things and Getting closer to what we want then we'll find we wake up the next day. We are a little bit closer and If we do bad things and get further away from a good result. Well, that's what we'll wake up into So I like to think about this and think that When I go to sleep when I shut things down in the evening there's This necessary kind of work going on in the background like a digestion Settling that is happening Out of everything I did that day and that work is going on all the time This is not something that ever stops I think So Whatever we do It needs time to settle in become built into ourselves and That seems to be what's happening overnight so one thing I like it's one thing to look forward to as as I'm sleeping while I'm going to wake up as a slightly different person and that Action of that happening is going to happen as I sleep overnight so I find this an interesting way of looking at sleep and non-action and as usual I'd love to hear what you think about this


Weaponizing Windows shell codes is modern 32-bit shell code. We have a lot of content to cover, so we are going to try to go a little bit more quickly than we would prefer. My co-speaker is Tarek. He is a former graduate assistant of mine. And he is currently an offensive security engineer at 23andMe. And he enjoys shell coding. My name is Dr. Brahmo Brizendine. I am the director of the former director of the Vrono Lab. And that deals with exploitation and research. I'm also the creator of the Jop Rocket, which deals with jump-oriented programming. And I am a current professor at the University of Alabama in Huntsville. And I have a PhD in cyber operations. So our talk really concerns Windows shell code. And typically, the traditional way in which we invoke malicious functionality in shell code is with what we call Windows APIs. And it's a very familiar process. We do some peb walking. And then we traverse the PE file format. Typically, our shell code will be utilized for exploitation, as well as for malware. Our research deals with utilizing Windows syscalls and shell code. And that's something that's very, very different from Linux syscalls, if you are at all familiar with that. So we're looking specifically at 32-bit shell code running on Wow64. So Wow64 is a mechanism by which we can do 32-bit applications on a 64-bit architecture. And our goal is to try to achieve 100% functionality through pure syscalls. And it's something that has only very rarely been done in shell code. A quick history on syscall usage in shell code. So egg hunters are very well known. They've been around 15, 20 years. And traditionally, we use an egg hunter to check and see if memory is valid and then try to locate a tag such as Starfall or Woot Woot. And typically, that uses just one syscall. Now, the single exception to that, and we looked long and hard to try to find something that was more complex, was a syscall shell code from 2005. And that utilized four syscalls as a mechanism to establish persistence. And it did that by using a hard-coded value for the syscall pushed into EAX. Now, problem with syscalls is a problem of portability. So syscalls, traditionally, in the Windows environment, at least, there's a great deal of variants. So Windows 10, for instance, there's more than 13 different OS builds or releases. And for each of these, there are different syscall values for the same syscall. And that can make it extremely difficult to use a particular syscall simply because we don't know the correct value. So it's not always reliable. And that's why people typically have not used that in shellcode. So a little quick history of shellcalls in the modern era. So there was a report by Hod Gavriel in 2018 about a very sharp uptick in direct syscall usage and malware. And that included even dual loading of NTDOL and also, additionally, use something that was kind of like a variation on Hell's Gate. It would look for the move op code and then parse the syscall value. So that then led directly to several syscall tools, the first being Dumpert, which was a PLC tool that used pre-computed syscall tables to determine the correct syscall values for the OS build. That was followed up very quickly by syswhispers. And that generated a 64-bit header and assembler files that could be used to work in a Visual Studio project. So that's very well known. And it uses a 64-bit path to determine the OS build. Hell's Gate came about later on. And that was a way to dynamically determine the OS build as opposed to using pre-computed syscall values from existing syscall tables. It worked well for a period of time, but the problem is EDR is able to detect that and to overwrite certain critical parts of the syscall functions. Hell's Gate is a refinement and response to that that allows us to extrapolate and to figure out what a modified syscall is by looking at the preceding or the following syscall and adding a subtracting 1. And that uses a technique developed by a guy called Elephant Seal. He figured out the syscalls, if you sort them by function addresses, then you can deduce the system or the syscall ID by incrementing by 1. So he developed his tool, Freshly Calls, to implement that. About a month later, we had syswhispers2 that integrated a similar technique. And so that is extremely well known, very famous tool. Syswhispers3 is a recent variation that has some additional functionality. So one of the kind of secret sauces of sorts for these is this idea that the syscalls are going to be incrementing by 1. So if that works, then great. But the problem is that underline assumption is now wrong because Microsoft has introduced mitigation. And I found this myself by creating some syscall tables for recent OS builds of Windows 10 and Windows 11. And what they've done is we can look at Windows 7. So Windows 7, 3, 4, 5, 6, clearly incrementing by 1. But we look at Windows 10 and we have 4, 5, 6, 7. But oh, look, lo and behold, somebody has inserted some other bytes in front of that. So it's no longer incrementing by 1, which is tragic. And it repeats itself dozens of times throughout modern OS builds. So what does it mean? Well, it means we got to get a little bit more creative. So what you could do is you could dual load NTDLL. And then you could do a modified Hell's Gate on that. The problem, though, is that some EDR can detect Hell's Gate being loaded. But fundamentally, it's important to bear in mind here that with modern OS builds, syscall values no longer increment by 1. So any of the tools that utilize the sorting by address technique are no longer 100% reliable. They may work 60%, 70% of the time, but then they will fail at other times because some of them are just simply not incrementing by 1. And so that affects freshly calls. It affects syswhispers too. And Hell's Gate, among others. So let's talk about reverse engineering of Windows syscalls. So we can look at Windows 7 while 64. And this is inside NTDLL. So an NTDLL function for NTAllocateVirtualMemory. And it's loading 15 into EAX. So 15 into EAX is the value for syscall value for NTAllocateVirtualMemory for one particular OS build. We then make a dereference call to fsc0. fsc0 points to a far jump.  So that means it's going to transition from 32-bit mode to 64-bit mode. So we actually have 64-bit code inserted into a 32-bit process. And this is something we couldn't directly follow in a debugger if you wanted to. So the fsc0 is important to remember here. Windows 10, we've switched things up a bit. So now we have an NTDLL offset that will then point to our syscall, a function called while64Transition. And then that will lead us then to the far jump to transition from 32-bit to 64-bit mode, and then eventually to the real underlying syscall. The good news, though, is we don't need to use that. We could instead just use the fsc0 method. That still works. And in fact, it's actually easier to use in this version. Windows 11, well, at least from the user mode perspective, it's virtually identical, some different function names. But it's pretty much doing the same thing. And guess what? The Windows 7 backwards compatibility method of invoking it with the fsc0, that also works too. So let's figure out how we can build some syscall shellcode. So we need to determine first the OS release, because if we don't have the correct OS build, then everything else that we do will fail, because we'll be calling the incorrect functions, or syscalls. So we can figure this out through introspection, and we can do that by a process called walkingthepeb. We get that from FS30. And then in this case, we're going to go to the OS build number, which will be at offset AC. And then that can allow us to determine, conclusively, the OS build will give us a hex value. We don't actually need to determine the OS major version or minor version. We can if we like. But if we're using Windows 10 and 11 or Windows 7 separately, then it's just not necessary, because the OS build itself is unique. However, if we are combining them, meaning we're using Windows 10 and 11, as well as Windows 7, then we do absolutely need to determine the OS major version. So turning it into shell code, we just simply use to get the offset of the peb. So FS30, the process environment block. And then we can do the offset AC, which will then enable us to get the OS build, which in this case is 21H2. It's the latest version of Windows 10. So when we actually call the syscall, we need to create a small little function. And this is a function that will be part of the assembly. So Windows 7 method is a little bit more convoluted. The Windows 10 and 11 is more succinct. And if we're combining both of them, then we need to programmatically determine which we are going to use. And we can do that fairly simply by looking at the OS major version. So what we are doing here is we're using what we call syscall initializer. So we will capture the OS build.  And then we check to see which version it is.  And then we can then dereference the elements from the syscall array through EDI. So EDI will be a persistent pointer to the syscall array. And if we're combining 10 and 11, then we also will check the OS major version and that will be located at EDI minus four.  And then that will allow us to dereference it from EDI. So EDI plus four, plus eight, plus C can enable us to access those values at runtime that will correspond to the correct OS build. So there's an example of how we can do that. So no hard coded values, just simply dereferencing EDI. And so by doing this, then we will have the correct values whether it's Windows seven, 10 or 11. The pointer to the syscall array is something we need to maintain. So we'll push EDI onto the stack before pushing our parameters. Then we'll do our syscall and then we'll do a stack clean up and then we'll pop the pointer back into EDI. And so therefore we can maintain the integrity of the syscall array pointer. So one tool that I made, and this is kind of a bonus thing because we didn't advertise it, is this called Shell Wasp. And it's available on our GitHub. Be well at Shell Wasp. And it'll also be in the slides you can download. And so this automates building a template for syscall shellcode. And it supports nearly all user mode syscalls. It addresses the portability problem, builds out the syscall array. And it's very simple to utilize and select syscalls. You can do that through the user interface, through a config file, you can rearrange it. You can select the desired OS releases as well. And then the final result here is we can see that it does indeed create a template. So these are initialized as zeros. And that's kind of your job to go through and to figure out the values to put on them. It's something that TARC will be talking about very briefly or very shortly here. But that also provides the parameter names and types. And it takes care of managing the syscall array and all of that. So if you're doing something very complex, all of that is taken care of for you. And without further ado, we'll then introduce TARC, who is going to give us an excellent example. Hello, everyone. So here I'm going to be talking about process injection shellcode using system calls. So here I have a list of all the APIs I'm going to use here in this shellcode. And we're going to start with the first one, which is anti-query system information. So the purpose of this API is to give all the necessary information about the running processes in the background. So the reason we do this is we need to get the process ID or the process number of the targeted process that we are using to inject our shellcode into. So this API has a system information class and it has many other classes. But the system information class is telling the API what kind of information you need from the operating system. So here I'm using system process information, which is equivalent to five, the value of in hex. So this is telling the operating system we only interested in information about running processes. Once we get that, so we can parse through each process and we can get the process name and the process ID. So this is what the system process information structure looks like. The first element is called next entry offset, which is pointing to the next process. And the other one is called image name, which is the process name. And that's the one that we are interested in because we know the process ID is changing, but the process name, it doesn't change. So we need to look for a process by looking up its name. And the last one at the bottom, it's called unique process ID or the process ID. And this is the one that we're doing all of that to get. Here we have the system information, system process information. This is just an example, a process called system. It's a unique code process name. So make sure when you're doing this, a unique code strength has no bytes between each character. At the top, the next process is at offset zero. This is what we use to go through each process in the data that we get. Offset three C has the process name and offset four E four has the process ID. So the way this works is we don't know how much data all the processes running in the background would be. So we can allocate arbitrary value using something like NT allocate virtual memory. And we call the NT query system information and that might not give us a success value as a return. So what we do here is we allocate more memory, which is like, let's say 2000 in hex or something. And then we call the same API again. Once we get a successful value back, that means we have all the data that we want that we can parse through each process using the same thing that I just discussed here, the process ID and the name and all of that. Once we have the process ID, we can move forward with the NT open process. A very straightforward, it takes four arguments. One of them is called object attributes. The object attributes here is another structure that we're not kind of like we're not using most of it. We're just, we just need the length. Everything else should be zeroes. Like the redirect, re-directory object name, all of that could be used for other stuff, but not for this case. And we also have the client ID or PC client ID here. This is the process ID we just obtained. So we will use that. We also have the desired access, which is all access, one on five Fs in hex. And the variable at the top, the process handle, this is to receive the handle for the process. Once we are done and we opened the process, we have a handle we can keep going with the NT allocate virtual memory. This API is like the Godfather of the virtual alloc and all its variants. It's very similar to virtual alloc. The only difference here is the base address, like the second argument, it's in and out. Like this variable will be used to get back the allocated address in memory. And we will use that later to write our shell code. The process handle, the one that we just got before, and the zero bits are just zeros. It's kind of optional here. So we have the region size, which is the size of the shell code. We have the allocation type and the protect very similar to virtual alloc. This is an example of what it looks like. The first one is the protect, the page, execute, read and raw, what kind of permissions you need to get and the type, the reserve or commit or both. And the rest of the things here, took the size of the shell code and what I just discussed. And finally we invoke the system code to make it happen. Next, we allocated some memory in the remote process. Now we need to write our data there. We need to write the shell code, which is amusing interpreter shell code here. To this in this case. So here very straightforward, same thing. We have the process handle, we have the base address, which is the pointer of the allocated space in the remote process. We have the buffer, which is a pointer to the shell code that we have in our C program, like the interpreter shell code. And the size of the shell code, it's a number of bytes to write. And the last one is optional. This is the number of bytes you get back. Like how many writes you were able to successfully write to the remote process. Once we're done, this is like the shell code same thing. We invoke the system code to make it happen and write the interpreter shell code to the remote process. And here we, once we have the shell code written to the remote process, we spawn a thread from the process using int create thread of the extended version of it. In this API, yeah, it takes 11 arguments, but actually the last six arguments are zeros. They're optional and we don't need them in this case. We're only interested in the first five, the P handle of the thread. This is like a handle, like a variable to receive a handle for a thread, which is not really going to be used. The second one is the desired access. Same thing, we're using all access, which is one and five Fs in hex. And we have the object attributes, same thing as the NT open process. We're only using the length and we're not using anything else in this structure. And then we have the process handle that we keep using all the time. And then we have the LP start address, which is an interpreter shell code address that we were able to write to the remote process. This is what it looks like in shell coding. This is an example. So the shell code pointer to the, I'm using a tool called cryptool.exe. You can use anything else you want. Just make sure when you're doing this, if you compiled your file using 32-bit and you wanna inject something into another process, make sure the process has 32-bit architecture, otherwise you will get access violation. So now we have two separate shell codes. One is for system code shell code and the other one is the interpreter shell code that is hiding in your C program. But now we need to combine those shell codes together so we can use them like if you're leveraging vulnerability or something, and if you want to execute them at once. So here at the top, I have the green part at the top. This is just used to get the beginning of the interpreter shell code. I'm using the cold pop technique here just to get the address of the interpreter shell code and then I jump down all the way down to the green part at the bottom, which is the start of the system call shell code. So now once you have this large shell code, a combination between system call shell code and interpreter is sandwiched between them, we need to execute it somehow. So you can execute this in memory if you have a vulnerability or you can just have a C program if you're running a malware and you can use a shell code tester if you want, but if you do that you will still use some kernel 32 APIs. So I wrote this execution skeleton to do that so you can avoid kernel 32 APIs. It's equivalent to the one that you can use virtual alloc and then mem copy. This one's still using the same system calls. You're still using int allocate and int write to write the shell code to memory. And then the last line at the bottom is jump to this place and start executing. So it's demo time. So this is the tool I just started and then now I'm gonna start it in the bugger just to show you the stuff, how it works into the bugger. So here I'm using the cryptool.exe, the one that I just mentioned. And this is a debugger x32 debug. So the first breakpoint is where we get the actual cryptool.exe. Like we found the process here at the right side and then now we can parse through the process and we get the process ID. This is just to verify the process ID that I got is the same using task list. Convert the hex to a decimal so we can get just to verify it's the same process. The second breakpoint will be when we allocate the memory into the remote process. Here we have the allocated space at 1-8-E-4-0s. We open process hacker to make sure it's the same. It's there. We have the read write execute permissions. And the last part here just showing the Windows defender is up and running and we run it and we get metropeter shell back. And as you can see here, Windows defender is just taking a nap. It's not doing anything.


Isn't it funny how the left-wing media is constantly accusing the right-wing media of being fever-swamp conspiracy theorists despite the fact that they themselves are constantly concocting conspiracy theories? Well, we have another funny but stupid example today from MSNBC's answer to Alex Jones, Chris Hayes, a guy that looks like the inspiration for the cannibal in Sin City. So this all started a few days ago during one of Trump's Task Force briefings, where the president set the bar for success at 100k deaths. So then a few days later, Dr. Fucci and Bricks revised their numbers, their predictions down to 60k. Since theoretically this would reflect well on the administration, all the so-called journalists out there have to explain it away by concocting conspiracy theories and then present them as legitimate reporting. After the good news about a lower death toll, Chris Hayes couldn't resist giving his professional analysis. The most cynical interpretation of all this, one I can't quite bring myself to accept, is they rolled out the model showing 100k deaths after they knew it would be less than that. So, they could anchor everyone to that number and take a victory lap when only tens of thousands died.  Does Chris Hayes have any idea how many people die every year from heart disease? So yeah, going from the doomsday predictions of multiple hundreds of thousands down to 60k or less is quite good. But I also don't say anybody taking any victory laps, that's just more proof of Chris Hayes' deep bias. We'll get right back to exposing this latest media con job, but first I have an important message for all my viewers. The world we live in today is in flux, filled with a flood of information that's often as much gossip as fact. Making it hard to know what the real situation is, making it easy for people to panic and make bad decisions. The only way not to get caught up in that chaos is to have a plan allowing you to avoid dealing with empty store shows, long lines, and in the worst case, desperate people. Use today to prepare. A great place to start is storing food in your home. I'm prepared and I ordered even more recently. With this unprecedented emergency, orders are being delayed, sometimes eight weeks or more. I urge you to add your order to mind today. Take action so you're ready for what's coming and save $70 on a two week emergency food kit. When you go to my special website, preparewithdronetech.com. Those that know what's coming are preparing today. Go to preparewithdronetech.com. That's preparewithdronetech.com. Second, is he accusing Dr. Bricks and Dr. Fucci of somehow being in on this conspiracy to make Trump look good? Really? Neither of them seemed like people who would go along with such a scheme. A scheme, by the way, that would also have to involve the CDC. Yeah, okay, remember this the next time they accuse Trump of not listening to the experts. Unbelievably, or maybe not so much, there were some people on Twitter supporting this tweet. How about this Florida Democrat candidate for Congress?  Instead of it actually being from the experts. This, if five people died as a result of his lies and incompetence, it is an outrage. Not letting this clown move the goalpost, sorry. Trump moved no goalpost.  Or how about Josie Duffy Rice, who said 100% correct and more cynically, not a bad political strategy. A terrible strategy for the human soul, but that ship has sailed. Not a bad political strategy. This is all literally a fantasy that was dreamed up in your damaged brains. Or how about the co-creator and executive producer of Medical Police on Netflix? That was quite honestly what I assumed was happening from the start. He's a used car salesman at heart and he's negotiating to a number he can live with. I just, I can't even get over the fact that these people don't understand that it's not Trump coming up with these projections. These models are created by the so-called experts. The same experts that use self-loving dipshits keep saying Trump isn't listening to. So it wasn't all support for his tweet and in fact, now that I'm looking, he's getting ratioed pretty badly. And he's trying to weasel out of it by saying, I said I can't bring myself to accept it. But he's been very, very weird about coming in under the model in this unnerving, disassociated way. You think it's weird that he wants the total amount of deaths that come in at a lower number? What's weird is how you so-called journalists seem to want the number to be much higher. What Hayes is doing here is manufacturing paranoia where we don't need it right now. So here we have a so-called journalist spreading misinformation and conspiracy theories on Twitter. And we know that if he was from Fox News, there would be a national uproar from all the media outlets, but instead it's predictably quiet. Even Mediate.com writers have taken notice with Caleb Howe pointing out what we all know too well. Quote, this incident did not provoke widespread dragging or condemnation from others in the media. As in, the kind of firestorms such a conspiracy theory tweet would engender were Hayes from a different network. He's refuting to Fox News' Brett Hume, who's currently being savaged in the media and on Twitter for supposedly spreading misinformation by claiming death toll numbers were being overinflated.  But it's crickets when it comes to the left-wing propaganda is Chris Hayes. Just a side note, the Hollywood Reporter did a drooling puff piece on this 16th place, bottom of the barrel hack, on the exact same day that Hayes posted this tweet saying, it weighs on me tremendously. Very few people in the world, ever in the history of human beings on the planet, have ever had the scale of platform that I have. Your ranked 16th place!  That's all for this episode, please hit that like button, share and subscribe. And if you subscribe, hit that notification bell as well so you're alerted to all my new content. If you agree with my mission and you'd like to support this channel, you can do so on one of these platforms. You can find all the links in the description or pinned comment. Thanks for watching, keep coming back.


What an exciting moment this is, and after nearly five years of work with all the most patriotic Africans and African institutions, and several in the local technology and entertainment ecosystem, we arrive at the launch of the IDICE program, the investment in digital and creative enterprises program. As you've all heard, the program is a government initiative to promote innovation and entrepreneurship in the digital technology and creative industries, and especially targeted at job creation. What you may not have been told is the incredible effort that Dr. Akimumi Adishino, president of the AFDP, put into this to make it happen. The thinking around this came from a discussion he and I had in 2018, I think it was in South Africa, on how to leverage technology and industry for jobs for young people. And he told me at the time that the AFDP was already thinking along the lines of committing some funding to some iteration of the idea. The fruit of that discussion and the hard work of many is what we've witnessed here today. The fund, as we've been told, is $618 million, out of which the AFDP provides $170 million. The Jean-Français de développement provides $100 million, and the Islamic Development Bank will provide $70 million in co-financing. The BOI, who represents the federal government, will provide $45 million as a counterpart contribution to be availed through loans for qualifying startups. And as we've heard from the president of the AFDP, we expect by leveraging this fund another maybe $270 million from private sector institutional investors. I think it's important to mention that private capital has usually been ahead of government effort, and I think the private sector ought to be commended for being so innovative, especially here in Nigeria. The last few years, we've seen a consistent rise in venture capital investments in Nigeria's technology ecosystem in particular. For example, I think it was the Disrupt Africa's 2022 Tech Funding Report, which says that Nigeria was the best-funded country in Africa for the second year running, with a minimum of 180 startups, making approximately 30 percent of Africa's funded ventures and raising approximately $1 billion, substantially ahead of all other countries on the continent on both counts. This influx of private capital has enabled startups to expand operations and create new jobs while contributing significantly towards our own GDP growth. There are, of course, thousands of startups that have used private funds or debt that goes unrecorded, and I think they probably constitute the majority in our country. I think it's now imperative to commence a coordinated approach towards innovation on the continent, bringing together all stakeholders to coordinate efforts at scaling up investments and building programs that provide the right enabling environment and produce talent pipelines that support the growth of innovation on the continent. But we must even do more. We must provide more support for startups and small businesses, and investors must provide more funding. This is why the investment in digital and creative enterprises program is important. It brings together the public sector and our development partners, the AFDP, as you've heard, the Islamic Development Bank, the Frank Development Agency, to design a program that supports innovation access across critical pillars, including policy infrastructure, access to finance, and talent. These pillars have been identified as being critical to the growth and sustenance of innovation on the continent. As a government, we have sought to provide support to the innovation ecosystem over the last eight years. In 2018, we established the Technology and Creativity Advisory Group, and the advisory group brings together stakeholders in the technology and creative industries to contribute directly to policy formulation, articulation, and design of the technology and creative sectors of our economy. As part of the work of the advisory group, which has the Honourable Minister of Communications and Digital Economy, the Honourable Minister of Finance, the Minister of Industry, Trade and Investments, and the Minister of Information and Culture. As members, the group has influenced various government policies for the growth of the economy. For instance, the Ministry of Communications and Digital Economy, working with NICLA, has established a Centre for Artificial Intelligence and Robotics. The Ministry has also led the coordination of our partnership with Microsoft to increase Nigeria's technology talent pipeline by training five million Nigerians in various technology skills. Just last October, the President signed Nigeria's Startup Bill into law, making it the Nigeria Startup Act. The Act that now provides a legal and institutional framework for the development of startups in Nigeria and also provides an enabling environment for growth of startups in the country. One key area of government support is funding, venture capital funds to provide seed and early stage funding to technology startups. For example, the government set up the Nigeria Investment Growth Fund to provide funding and technical assistance to startups in the country. The Bank of Industry also has a one billion, I think it's a ten billion, nollywood fund or nolly fund, as it's called, to support film production, and we have recently upgraded and renovated the National Theatre, positioning it to become Africa's creative hub. Similarly, as chairman of the National Economic Council, I've engaged with the state governments on issues of expanding access to broadband infrastructure in Nigeria. Through these engagements, many state governments have worked with us in various capacities, including by reducing and harmonizing the cost of provision and also the cost of right of way in their own states. Just last week, as part of this continued engagement, Ocean State has waived the right of way charges for fiber infrastructure in the state, joining a host of other states that have done the same or reduced their fees significantly. This would, of course, in the near future bring down the cost of providing broadband infrastructure in individual states and increase access to broadband, which of course is critical for the growth of a digital economy. With regard to the creative industry, the federal government has also taken action to include the sector amongst those that could benefit from the government's pioneer status. So today, any entertainment company can benefit from pioneer status. In other words, it has several tax breaks, tax holidays when they start their businesses. And of course, some of these incentives, especially fiscal incentives, can still be negotiated. Efforts are also underway to tackle piracy in terms of intellectual property and copyright and to secure financial resources to support the sector and also to enable the building of required infrastructure of facilities. The I-Dice program, as we've said, will be off-cited by the POI, the Bank of Industry, and supported by our partners here today. And those partners, as you have heard already, are AFDB, Islamic Development Bank, and the French Development Agency. Microsoft also, as part of our partnership, signed in 2020, has also committed to supporting the program with technical assistance, knowledge sharing, and capacity building, and particularly focusing on the talent pipeline. So again, we are lucky to thank Microsoft for being there for us practically all the time. I believe that over the tenure of this program, we will see significant additional support and investments from other partners and stakeholders across the sectors, leading to an increase in the growth of startups and of course, the growth of unicorns, new unicorns, and training more talent on the continent. Thank you all very much for listening.


Everybody for a steer ripping a box of 20 22 Star Wars finest for Dallas P. Here we go Dallas Let's pull a super here. We go or sketch Yeah, the mixer is Happy Halloween everybody. I've been eating candy all day Such a great day Been hammering them take fives. I love to take five so much. I bring him to share I bought a big bucket of candy to share with everybody here Couldn't put the Reese's take fives in there.  All right Here we go It's like a new world bringing with these on our fracter Admiral Ackbar Obi-Wan Hello there Got hunter Boba Fett Mandalorian insert and a blue Dryden Voss 43 of 150 Dryden Voss Paul Betney God refractor Beaumont Kin Sandoola Belze Tafar so we have an auto coming in this hack I would assume Got gold Gold BB-8 13 out of 50 nice BB And a green wave Princess Leia auto number six out of 99. It is Julie Dolan is Princess Leia He's gold BB-8. Oh good. Good mini box there. Let's see really low number hit this time What's up Chris? refractor Poe Dameron hell of a pilot Okatan a Catch from Bad Batch Babu Frig Hey, I do not know what Marvel snap is unfortunately the Valon Hess Sup cave. Yeah, Roku on Smith on the move Refractor General Leia, Organa and a gold Adigalea 21 of 50 couple of golds one in each mini box so far Come on.  Thanks again, Dallas. We appreciate it. We'll get it right out to you