Hi, my name is Sandra Betakis and I'm going to be your instructor for this course. I have spent years working with Microsoft Technologies going way back to DOS before we ever had the hopes of Windows and certainly before we ever had hopes of working through technologies like Office 365 and SharePoint sites. With this experience in seeing all of the technologies grow and not just grow but grow together, we're now at a point where all of the experience of working through Word and Excel in PowerPoint and online apps can be brought together. In my professional career, I don't just stand here and teach it, I can honestly tell you that I deploy all of these technologies to all my customers and I spend a lot of time not only creating content but migrating them over, importing all the data in and then giving it some sort of workable form to send them forward. It's a pleasure to take not only my favorite programs and share them with you but to also share some great ideas that I found along the way. In this module, we're going to go through an Office 365 overview for end users. If you're brand new to Office 365, as I imagine you are taking this class, we're going to introduce you to all the different components. Now, we won't have a time in this module to go through a deep dive of every single component but the purpose and focus rather being what is it all about, what are all the tiles and what are the different applications that we get to choose from. So we will mention how you use email, what OneDrive is all about, what SharePoint is all about but also and just as importantly, how they all work together. So you'll focus on getting each and every one of those applications with a little bit of meaning and then later on in the course we can take a look at each one of the applications a little deeper. So let's first start off with defining what is Office 365. In its simplest form, Office 365 is Outlook and Email. It is OneDrive for document storage. We have Delve and Video which are both new. We even have something called Sway that was added and we have SharePoint. And some of these apps literally can say have been out for less than a couple of weeks. So when you look at all of these, you've got all these little apps bundled in your online community. However, if let's say you run Microsoft Project, a totally separate software package and you decide to integrate it, you will see that you can enable Project. You can also enable a program called CRM. In fact, there's a few dozen of them, but they're all built to work directly with Office 365, its users, its email recipients, etc. So in this particular case, we're not going down that path. We're really going to talk about the core of what it is. So first off, we have Outlook. If you have Outlook installed in a local machine, you know that Outlook has email, a calendar, people, which is your contacts, and also Skype for Business. Skype for Business is usually a different application that can be installed side by side with Outlook. However, the functionality is also an Outlook where you can right click on someone in the Outlook window and actually send them an instant message. So that's different and yet integrated as well. We have OneDrive. OneDrive actually gives you two different features. It gives you web apps. I can connect online and I can write an entire paper and never actually save anything local on the computer and not have Office on the computer. So you have your Word, Excel, PowerPoint, and OneNote. OneDrive also allows you to download those desktop applications or to edit the files in a locally installed version of those applications. And of course, OneDrive is your storage. Now I say that very carefully because the storage mechanism and the retrieval mechanism for those documents technically is done in SharePoint. It just doesn't say SharePoint when you're in it, but that's the technology behind it. Online, we now have Delve. We have Video. We've even recently added something called Sway, which you may or may not have enabled for your users. And again, we'll look at each one of those separately as we do our tour. SharePoint is an online website presence where you have team sites. Maybe it's per person or per department. Maybe it's a company team site. We have public sites where you could actually do your entire website. And we have sites you follow, which basically are bookmarks of web pages. All of this is integrated in Office 365 and for that subscription price, whether you're on the smaller packages or the highest enterprise package, you will find that you have access to all of this. When you sign up for Office 365, there are home categories. There are small business categories. And then there also is enterprise categories. I thought about putting a slide up that says your packages are P1, P2, P3, small business, maybe E1. But the problem is Microsoft has been adding, changing, modifying all sorts of subscription information. And I think that really your best place to go is online to Office365.com. Look at products and there's usually a link that says compare all plans. That's really where you want to go for the information because they could change tomorrow for all we know. What you do have to understand is the basis of this course is based off of the enterprise version and it is based on the E3 subscription. The E3 subscription is the Cadillac of Office 365. It has everything. But there's actually versions up there that only have the software but no email. There are also packages up there that have email and no additional software. So you really want to make sure you go up to the site and you find the link for compare all plans so that you know you're going to get what you need. So assuming that everyone is on E3, we have email, we have calendar, we have people. And if you've ever used Outlook on a computer it's the exact same thing. We have news feeds. Now this is the interesting one because even though this is a recent screenshot, that depends 100% on how the back end of Office has been configured as to whether or not you have a news feed available to you. Also you can replace news feed with Yammer if you have a Yammer license. And there's a new one coming out that the tile is there but the programming is not called enterprise social or social enterprise something along those lines where it's really pulling the news feed the Yammer and everything else in together. But what you're looking at here is what I'll call the Facebook of Office 365 where you're doing social engagements. OneDrive is technically your storage. It's online storage for all your documents and within OneDrive you can actually create the documents using your online applications. You'll find all your SharePoint sites here. You'll find your task list here which, again, tasks are part of the Outlook suite. When you get to OneDrive, OneDrive allows you to use applications. Now the online version of Word Excel and PowerPoint as well as OneNote are not full versions. They are what I would consider 30% of the program which is the most popular 30%. You can get up there and create very elaborate documents but there are just going to be some features that won't be available on an advanced level that you have to install it on the local computer and use the full version. Admin is where you spend a lot of time setting up Office 365 and maintaining your users.  I'm noticing that I'm getting a little bit messy here. So let's clean up that slide. You have Delve which is brand new but I find quite interesting. I call the master recent files list, who you've been working with, what you've been working with, what types of files you've been editing. They're all there for you to go back and work with. You have the YouTube of Microsoft. It's video, looks and acts very similar. And of course, if that's not enough apps for you, we always have the 365 Store. Office 365 has all sorts of extras and add-ons. If you like Microsoft Project and you are a project manager, there's also Project Online for an additional cost. We also have Microsoft Dynamics CRM. This is to maintain all your customer databases, your billing, your invoicing. It's all in there. We also have Yammer. That's a third-party add-on. Yammer used to be a company all by itself, but now if you want to count on Yammer, you can actually use that account over here on Office 365 and integrate it together. What I have seen newly added, first off, is something called DELV. And when I say newly added, we're talking within the last week or two that I see it appear under our subscriptions. DELV is what I call a tile-based summary. So if you look at this screenshot, you will see that we have our home button and then you have me. Well, if me is active, you're going to see that recently you were looking at the Contoso proposal and you're also updating the employee handbook. So it basically presents you with the online version of what you've been working on. Now, this isn't the recent files that you have on a local installed computer with Microsoft Office. This is assuming that you're working with all these files online while logged in to Office 365. If, let's say, you are working on the employee handbook with another person and you can see that there are other user accounts listed with these. Maybe you both have permission and you're working together. Then you'll find that they're also listed here. So I have a chance to click on their name, look at their profile, read the About Me, see what other things that they're working on that I might have permission to. So you don't have to understand location. It doesn't matter where the employee handbook is located, whether it's in my OneDrive or someone else's, that's a quick link to open it right back up. Also, Dove allows you to look at emails, different profiles, different documents, and you can add anything to that board you wish to add. We have also recently added video. And under video, we have an intranet website portal. I think, really, it looks exactly like YouTube. It is not YouTube, just to be clear. But in YouTube, you know you've got channels, you've got people posting videos, and you can play them and you can share them. You can add them into your own playlists. Exact same thing here. So nowadays, a lot of people are communicating by video. We're learning by video. We're sending messages by video. We're doing reports by video. So as we are all creating this content, we can create channels and have people browse those channels and take the training that way. So it could be executive communications, recording of classes, meetings, presentations, training, sending. Again, anything you wish to put up there is fine as long as it's in video format. So let's talk about how to sign on to your Office 365. What I find wonderful is I have more help requests on how to sign in than I do once they're actually in. So that means the utility is good. You just have to be clear on where your account is. So Microsoft has a long history of Microsoft accounts back to Hotmail. So your Hotmail email account, there was MSN email accounts for a long time. Now there's Outlook accounts. Regardless, all of those are the beginning of Microsoft. So now as you log in, let's say you have an Outlook account, that's a private account, and then your company goes to 365, it's going to recognize that you have an account on two different platforms. The Work School account is completely separate from the Microsoft account. These are the personal ones, as I said, like the equivalent of the old Hotmail.  And if and only if you also have a personal Microsoft account, you're going to be presented by this choice. Now if you're signing in for work and you know your domain name is in there, you always want to pick work or school account always. And they say school accounts because Microsoft is now giving Office 365 to all of the college students for free. So most colleges and universities are also using 365. So again, if it's a work-based account, you're always going to pick the top one. If you pick the bottom one on accident and you continue to log in, it won't give you anything that you expect. So understand that's probably what went wrong. In terms of the URL, I always always always just go direct to Office365.com and I look for sign in at the top right. You will find a whole bunch of URLs. One of them is portal.microsoft.com, I believe. There's office.com. There's tons of them and all roads here lead to Rome. So I just go directly to that one and it always works. But if you have a different URL and the screens look the same, you're probably in the same spot. And you'll see even here, I typed in office365.com and you'll see the URL as soon as I hit enter immediately changed to office.microsoft.com. How to find help is very, very easy. If you are in the login screen, meaning when you first log on to Office365, you will have your profile picture and then right next to it is a big question mark. That is help. So what you want to do is give it a click and it's going to bring you right into this particular spot where you can search help for anything you wish. You can go to the community and of course these are just your legal and privacy disclaimers. So this is really more of a community where people are talking and submitting and really helping each other out or of course you can simply just search help by clicking right here and it's going to try to lead you to the right article. There's a lot of defaults in Office365 that you get to set. So we're going to look here in Office365 we click on the gear, we click on options and when you do so notice right here you can start setting some defaults on how you want your programs to work. Now these particular options are going to in this case be specific to outlook and you'll see I've got items like automatic processing or the email accounts that will be pulled in. So even though I have an Office365 account which is Sandra and my domain I can also pull in a lot of other emails. So an example I have a Gmail account I use for other functions. I have a couple other alias accounts that I use for other functions. I can actually go into connected accounts and I can add them all in so all my mail pulls into one location. Some of the other defaults that you'll look at we have ones like clutter. So what clutter is all about is in my email every day and I know I'm not alone I have two types of email. Some is sent specifically to me and I'll call them from humans meaning someone is communicating with me and I can actually type the message and then the other ones are newsletters or the equivalent. Something that I've subscribed to something that's an advertisement something from a service that I run maybe it's a Microsoft Office365 automatic email telling me about a new feature. Regardless they separate that and they have regular mail and then anything that falls in this category is called clutter I like to take the feature because I read all of this first and once I'm done reading this I can then move on to this time permitting. You can also set defaults and whether or not you want read receipts different settings for when you reply you can look at how you're going to do junk email reporting and they're just setting up some defaults for how you're going to use Office365. News feeds is an interesting topic I like to bring it up in terms of typing of this class they're actually doing some changes with news feeds so you might need to look at the subscription as you have it and figure out where it is or how are you going to use it and what I really mean about that is Office365 always had a tile for news feeds then we have Yammer which is basically a news feed social network for business Microsoft buys out Yammer and then in the options for whoever set up Office365 either news feeds or Yammer and it was an actual choice that allowed someone to use one or the other company wide meaning it's a company wide decision now they have social engagement which is also something that's coming in so we'll talk about what the feature is and say that you really can find it in a lot of places sometimes now we have a utility called Delve and Delve absorbed a lot of the news feed options but if you're using the SharePoint sites in Office365 you can put a news feed right in there as well so the concept is exactly the same you just might find on your subscription it lands in a different place so they do move it around it is very handy you can communicate have news feeds have blogs for each user and in this is a case that in the news feed area there's always going to be an about me whatever you have an about me is going to be your public profile for anyone who looks you up or communicates you with a news feed so you might want to find that and make sure the about me says exactly what you want it to say about you so let's talk a little bit about status or presence information when someone logs in if they're available and I say if because we haven't gone through the different statuses yet there is a colored bar to their left of their picture that is currently their status now if you get an email from that person it actually is going to be a little square in whatever color represents it next to their name and what it's trying to tell you is if that person is available nowadays you can actually use either Skype for Business sometimes you can use the online version of Skype for Business or even an Outlook Web Access you'll find there are some different ways where you can instant message someone so you want to see if they're available now if in this case Sandra Batakis had a calendar appointment and she was in a meeting from 1 to 2 and it's 1.30 automatically it's going to list this as busy so you're going to see red not necessarily blue in fact the next time you put something in your calendar Office 365 you'll see there's a field that says show times as in the default is busy which directly writes to this right here in your status so I can look up at any time see who's busy who's not busy we do have the do not disturb you can manually set your own to do not disturb be right back you can appear away and if you've been logged into Office 365 for a period of time but you haven't done anything essentially your connection is idle it's going to actually look like you're away anyways and you'll see that as well now if you log into Office 365 you know your profile picture appears here the status bar is right there if you click on the status bar you will actually get the menu that you see right here and what I want you to pay attention to is if you don't want to play that game at all click on sign out of I.M and if you decide it's time to communicate you can actually click in the same spot and it turns to sign in to I.M so you hear the term SharePoint quite often and I know people have all heard the term when I communicate I talk to my customers about 365 and still not a lot of people understand what it is I personally love SharePoint and it has to offer and spend a good portion of my time in it either creating sites for people or using them for my own business a SharePoint site is an actual web page think of it as a personal web page or better yet a personal web site which means potentially more than one page it is a company based website where you can share data now you could have a little bit of panic thinking I don't know how to write a website that's what's great about SharePoint if you want to insert a list or a blog, if you want a list of pictures or picture library or document library to put a whole bunch of documents it literally is easy as clicking a mouse going to the insert menu and choosing it there is a little bit of knowledge on the design in what types of objects you can put in but for the most part it is very end user friendly SharePoint by default has two sites it has a public site and a team site the team site is your company intranet and the public site can be turned into a company based website obviously there will be some customization before that happens sites can also be created by an employee who has the right permission a lot of the sub sites that are created can be by individual employee it can be by department or it can be certain types of company information like the help desk


Internal Revenue Service IRS tax news IRS Mississippi storm victims qualify for tax relief April 18th deadline other dates extended to July 31st. Obviously this storm spells trouble for Mississippi and this is a time we need to come together as one team. So there should be only one all-inclusive eye when we spelled Mississippi at this time. M-I-S-S-I-S-S-I-P-P-I for you podcasters out there there was only one eye on the screen because like I spelled Mississippi with only one eye. Okay okay Phil I know I know this is serious Phil and okay it's no time for five decade old spelled Mississippi with one eye jokes okay I see I see and I should learn I should learn from the commander-in-chief how to open a serious and troubling topic properly. My name is Joe Biden. I'm Dr. Joe Biden's husband and I ate Jimmy's ice cream chocolate chip. I came down because I heard there was chocolate chip ice cream. By the way I have a whole refrigerator full upstairs I think I'm kidding cut. Wow that was educational let me let me try it again let me do another intro people we're going to show both intros because we made two intros intro number one and intro number two and my producer said I had to choose either one or two so because I thought they were both good I chose two intros so so here's the second one after learning the best style from the from the commander-in-chief of course you know good day Mississippi storm victims I like eating ice cream even in the rain even in the rain I like eating ice cream you think I'm kidding but I'm not yeah they make me use a plastic spoon though when I eat ice cream in the rain in case the lightning strikes which pisses me off and you know what when I get pissed off I like to piss off something else usually usually the bathroom rug into the can because it makes me feel better but but it doesn't stop me from from eating my ice cream consumption I just I just keep eating while somebody takes care of all the complicated parts of the process honestly like the only reason I'm here is because they bribed me with ice cream treat after I after I read this thing in front of me so let's get this over with dear Mississippians my heart weeps for your chocolate chip I mean oh so hold on a second I got distracted my heart my heart weeps for your problem I are 2023 dash 60 March 28 2023 Washington Mississippi storm victims now have until July 31st 2023 to file various federal individual and business tax returns and make tax payments the internal revenue service announced today the IRS is offering relief to any area designated by the federal emergency management agency otherwise known as FEMA FEMA there's a link to that here as a result of tornadoes and severe storms that occurred on March 24th and 25th this means that individuals and households that reside or have a business in I'm not going to say these correctly these names but I'll say them for comic relief there'll be a link to this in the description so you can get more detail about it but Carol Humphries Monroe and Sharkey counties qualify for tax relief other areas added later to the disaster area will also qualify for the same relief the current list of eligible localities is always available on the tax relief in disaster situations page there's a link to that here if you want to check that out as they update things the tax relief postpones various tax filing and payment deadlines that occurred starting on March 24th 2023 as a result affected individuals and businesses will have until July 31st 2023 to file returns and pay any taxes that were originally due during this period this includes 2022 individual income tax returns and various business returns due on April 18th among other things this means that eligible taxpayers will have until July 31st to make 2022 contributions to their IRAs IRAs and health savings accounts the July 31st deadline also applies to the quarterly estimated tax payments normally due on April 18th and July 15th July 31st deadline also applies to the quarterly payroll and excise tax returns normally due on April 30th 2023 in addition penalties on payroll and excise tax deposits due on or after March 24 and before April 10th will be abated as long as the tax deposits are made by April 10th 2023 the disaster assistance and emergency relief for individuals and businesses page there's a link to that here has details on other returns payments and tax related actions qualified for the additional time some affected taxpayers may find that they need more time to file beyond July 31st deadline if so the IRS urges them to request the additional time electronically before original April 18th deadline two free and easy ways to do this are through either IRS free file or IRS direct pay both available only on irs.gov irs.gov visit irs.gov forward slash slash extension for details there's a link to that here after April 18th and before July 31st disaster area taxpayers can file their extension requests only on paper the IRS automatically provides filing and penalty relief to any taxpayer with an irs address of record located in the disaster area therefore taxpayers did not need to contact the agency to get this relief so clearly if it's going to apply automatically if your address is in the the locality hopefully that's the plan at least however if an affected taxpayer receives a late filing or late payment penalty notice from the irs that has an original or extended filing payment or deposit due date falling within the postponement period the taxpayers should call the number on the notice to have the penalty abated in other words it should be automatic but if they mess it up and they give you a penalty that should have been abated or not given then you should call the number on the page not the 800 number because that might take forever to get in through to them even though they have hired a bunch of new people to get on the phones but they're still complaining about the phone thing so you want to call the number on the notice and you might be more likely to get a hold of someone in addition the irs will work with any taxpayer who lives outside disaster area but whose records necessary to meet a deadline occurring during the postponement period are located in the affected area so obviously those taxpayers will not have an address on record within the area but may still qualify for the relief and therefore would have to contact and let the irs know in some way shape or form in order to get the extension taxpayers qualifying for relief who live outside the disaster area need to contact the irs at 8665 625227 this also includes workers assisting the relief activities who are affiliated with a recognized government or philanthropic organization individuals and businesses in a federally declared disaster declared disaster area who suffered uninsured or unreimbursed disaster related losses can choose to claim them on either the return for the year the loss occurred in this instance the 2023 return normally filed in early 2024 or the return for the prior year this is the 2022 return normally filed in 2023 that's an important distinction to make because obviously the disaster happening in the current year 2023 would mean to get tax relief you would think it would happen on the 2023 return which you wouldn't file until April 15th or whatever by 2024 but maybe you need the relief faster in which case you might get a benefit if you're allowed to file for the relief in the prior year 2022 in in this case also you might have a situation or might want to think about whether or not your income would be higher in prior year or in the current year given the fact that the disaster oftentimes could lower peaceful's income if you have a lower income then you'll be paying less taxes and you would think the tax benefit might not do you as much good as applying it to the higher income year which possibly could have been the prior year because you didn't have the disaster in the prior year now if you haven't filed the prior year tax return because it's due by April 17 18th of the current year then obviously you can go forward with that but if you already filed it then you might need to look into whether or not you could amend the prior year tax return would be the general idea okay that said be sure to write the FEMA declaration number which is 4697 dr on any return claim in a lawsuit publication 547 for details there's a link to that publication here the tax relief is part of a coordinated federal response to the damage caused by these storms and is based on local damage assessments by FEMA the information on disaster recovery visit disaster assistance.gov there's a link to that here there'll be a link to this in the description


Hello everybody! Watch this video to find out how to add a new drive and expand an existing RAID array without losing data. In this video, I'm going to show you how to expand a hardware RAID build on a controller or NAS and how to expand a software RAID in a Linux operating system. When RAID runs out of free space, it is time to consider available options to expand your storage. It means adding more drives to the array, if such option is supported by the service hardware. Otherwise, you can rebuild the array with the drives of larger capacity. If a server has a free slot for another HDD, then you can expand the existing RAID system without losing any data at all. In a minute, we'll explore how to add a hard disk to an array based on a controller or build on a NAS storage system with the example of a QNAP unit. How to do it on a software Linux base grid created with the help of MDADM and LVM utilities or on the array created with the means of better-of-est file system? In our channel and blog, you will find solutions to any problem from installing an operating system or configuring it to fixing possible bugs and errors or optimizing mobile gadgets. Our specialists will answer any questions you ask in your comments under the videos or articles. For starters, let's see how to add a new disk to a hardware RAID based on a dedicated controller. Some controllers support adding new hard disks to the existing RAID 5 and 6 systems, which allows to expand the disk array in order to have more storage space for your files. In our example, we'll be expanding a RAID 5 with 3 drives to get a RAID 5 with 4 drives. Let's begin with connecting the new drive to the server. After that, go to the controller's bias or RAID management utility. Keep in mind that some controllers may not support adding new drives, so it's always a good idea to check your storage device manual for details. All the data on the new drive will be erased. Also, we recommend creating a backup copy of important files stored on your RAID. In the RAID management utility window, select the controller and then the array that needs to be expanded. Look to the right to find and select the option Expand Array. After that, choose the drive to add to the array and click Save. It starts the array expansion process and you can see the status here. Wait until the rebuilding is complete. When it's over, some unused space will appear in your array and you should add it to the logical drive. Select the logical drive you want to extend and click Extend Logical Drive on the right. Choose the maximum size here or set another value and then click Save. After that, the process of rebuilding the array begins. When it's over, the array capacity will increase. Meanwhile, all your data on the array disks will be left intact. If a specific drive doesn't appear on the list, it might be unsuitable for adding to the array. For example, its capacity could be lower than that of any other drive within the array. Or the drive was not formatted for this operation. It can also belong to another disk array or was configured as a hot swap drive. Now, let's explore how it can be done with a NAS device. If your NAS storage has an empty slot for one more HDD, you can easily expand the capacity of your virtual drive by adding a new hard disk. To do it, connect the hard disk to the NAS, boot it and open the Storage Management Panel. After that, open the menu and access Storage Manager – Storage Pool. Click on the Action button and select Add Disk from the list. In the window that opens, add the new disk to the existing array and click Next. When you do that, there will be a warning that all information on the disk is going to be erased. Click OK to confirm this action. At the next stage, check the properties and click Apply. It starts the initialization process, but the disk will be available even now, so you can continue working with the storage. When the initialization is over, the last step is to expand the rate. To do it, open Volume, then go to Action, Configure, and in the window that opens, enter the necessary size and click OK. Wait until the expansion operation is over and check the data that was stored on the disks. As you can see, all the files are still there. Now let's explore how to add a drive to MDRAID 5 without losing data stored on the disk array. In Linux Subunter, I have built a software RAID 5 consisting of three disks using the MDADM utility. I need to add another hard disk of the same size to this array. For starters, we have to prepare a disk. Let's identify the disk that needs to be added and type this command. After that, I have to create a partition on the disk. N stands for New, P stands for Primary, and 1 stands for Partition Number. Leave other settings without changes and press Enter twice. Record changes by pressing W button. Now that the disk is partitioned, add it to the existing RAID 5 array by using disk command. Check the RAID. As a result, the disk was added as a spare device. To expand the array with this new disk, you need to type the following command. This command tells the system that the RAID makes use of four hard disks. This way, the command initializes RAID rebuilding since the information has to be spread across all the hard disks. This process takes some time, so wait until it is over. To have its status displayed, there is a special command. The actual reshaping process will be shown here. Now, the RAID consists of four hard disks, but its size is still equal to 100 GB. To be able to use the 50 GB available on RAID 5, you'll have to change the file system size. First, run the integrity check. After the separation is completed without errors, the file system can be extended. You can do it with the help of the tool called Resize to FS. Mount the disk and check it. The partition has been extended, and you can see that all the files are still there. Now, let's find out what can be done to another type of software RAID built with the LVM utility. I have an LVM RAID 5 consisting of three hard disks, and I'd like to add one more. In this case, it should be prepared and partitioned. I'm going to show you how to do it with the fdisk utility. For partitioning, type the following command. And specify the disk name here. N stands for new, P stands for primary, and 1 stands for partition number. Leave other settings without changes and press Enter twice. Record changes by pressing the W key. After that, create a virtual disk on this HDD by using another command. And then use this virtual disk to extend the VG1 group with this command. Check the properties of the virtual group. And finally, type the command to expand the RAID 5 logical volume. Then extend the file system on the logical volume. Open the disk utility and check the RAID properties. As you can see, now the RAID consists of four hard disks. As we open the disk, you can see that the files remain unchanged. There is one RAID system created with the help of BF file system. It consists of three hard disks, and we are going to add another hard disk of the similar size. The files stored on this RAID will not be raised. To expand the software BF RAID, we'll use the command BF device add. To add a storage device to the mounted file system, run this command. After the device is added, it is recommended to balance the BF file system. To do it, type this command in the terminal. When we check the RAID, with the disk utility, you can see that the size has increased. And the files stored on the disk RAID have not been raised. Summing up, we have just explored several ways of expanding a RAID. Following our video tutorial, you'll be able to save the data which is stored on your RAID system. But even if your RAID has crashed, and you have lost access to the files stored on that disk RAID, you will always be able to restore them with the help of the specialized tool – Hetman RAID Recovery. In our previous videos, we have studied in detail the process of recovering data from all RAID types mentioned in this video, so just check the links in the description below. And that is all for now. Hopefully, this video was useful. Remember to click the Like button and subscribe to our channel. Leave comments to ask questions. Thank you for watching. And good luck.


Så hvad skal jeg sige om? Det er bare en vurskning, så du kan få ud nu, hvis det ikke interesserer dig i hvilken måde. Jeg har en stærke beslutning for at finde sikkerheden, fordi det er fint, og nogle gange pagerer billeder. Jeg tror, det er bedre, hvis du kan finde dem, når du er sikkerheden, hvilket betyder at gøre nogle fussing normalt. Jeg gør en serie af problemer, som jeg incinerede, når jeg var tænkt til at fuss i dette case Adobe Reader. Håbentlig gode solutier, og hvis de ikke er gode, kan nogen anden give mig bedre solutier, og så er det bare et sted-by-sted guide på, hvordan du kan finde sikkerheden i stedet. Så hvis vi ser at fusses som et sted, så er der nogle ting, du må have, når du vil gøre en fussing-kampagne. Men du må have en sådan sort af indsynning til at være færdig til noget, der passer indsynning. Det indsynning, hvilket indsynning du genererer, har til at være færdig til hvilket sted, som passeren expecter. Du vil være lidt videre, bedre, bedre nu, fantastisk. Okay. Du skal bruge en indsynning- og deliverings-kampagne, hvor du kan færdige indsynning. Der er en and på min computer. Du skal bruge en indsynning- og deliverings-kampagne, hvor du kan færdige den genererende indsynning til din target, og du vil skabe din target så meget, som kan, fordi mere skabninger betyder mere testkabel, så og så. Du er nødt til at bruge en indsynning til færdige indsynning, så du kan se, hvis din genererende indsynning har færdiget en færdig, så du kan færdige indsynning og simulige ting, og færdige indsynning, selvfølgelig. Så når vi ser på den stedet af færdige indsynning, og det selvfølgelig betyder noget som AFL, det er fantastisk, men det tænker også vores arbejde, og det er faktisk, at det fortæller, at det bliver kompliceret, at om du vil gøre ting, lad os sige, så godt som muligt. Så en af problemerne, ikke problemerne som sådan, men en af problemerne er, at modern færdige indsynning har evolvede into something extremely complex, so there's been in the later years, there's been almost like a revolution in how well fuzzers perform, and if you're not doing it the right way, maybe it's shit, but it doesn't have to be like that, because bugs are so plentiful that there's still room for doing it just good enough, right? You don't have to do input tracing and hit tracing and function coverage and feedback driven fuzzing and all that stuff, which is amazing, but also complicated. And this is what I refer to when I mean bug hunting for normal people, because you don't have to be God's gift to computers or Alan Turing to be able to write fuzzers to find bugs in actual contemporary software. You can just start simple and then just sort of make it up as you go and see where it takes you. So for Adobe Reader, the first problem you'll encounter is that once back in the day, it was enough to just download random PDF files off the internet and just do some random mutations in them and do some bitflipping and whatever, insert weird strings and that would be enough to find exploitable vulnerabilities where you smash a function point or something else, which could be sort of trivial to exploit. Excuse me. This is no longer the case. If you look at checkpoint research, they made a pretty good post called, I think it was 50 bucks in 50 days or something, where they fuzz a lot of the Adobe Reader binary content parsers using, I think it was Winifil, excellent article, but that sort of also took away, well, it took away at least 50 of the bugs in Adobe Reader, which is bad for us who else, the rest of us who wants to find bugs in it. So the solution for that problem is to take a step back and find out what else you can attack, which is not the binary parsers that checkpoint has fuzz to death. And I figured maybe I can just find unflippable functionality in the software, meaning that I can't just bitflip my way to a memory corruption and go, ooh, money, right? So instead of looking at that, you can look at the PDF spec. It's very long and not super interesting, but it gives you an idea of what the format actually supports, and in this case it's JavaScript. So it's been supporting JavaScript since around Y2K, and you cannot just bitflip JavaScript and find good bugs. You can find some, but nothing. The amount of compute cycles you need to do to just do blind mutation on JavaScript and hope to find bugs is through the roof.  So when we look at fuzzing, a very important part of it is the input generation, right? And I only have a limited idea on how to make smart, evil input. It's pretty easy when it's binding forward, because you can just flip bits and brute force your way to a solution, right? But in a textual context, it's not very easy to make smart, evil input. But some smart people, in this case the guys from Mozilla, I think, released some free tools with a proven track record. In this case, Dharma from Mozilla. Domato is from one of the guys at Google, and Redam says from some Finnish guy. For this one, I settled on Dharma, which is a generation-based context-free grammar fuzzer. And you can also use Domato if you're so inclined, but I had used Dharma before for something else. So it was natural to settle on this. And what is a generation-based context-free grammar fuzzer? It sounds complicated, but it's actually not, because this is a grammar file I made for Dharma. Just a same grammar. And as you can see here, I instructed to generate output. Output must consist of either first one or second one. It's going to pick one at random. First one, when we look at this, consists of the string first one, and then something which will be expanded, in this case a parameter and a parameter and a parameter. And then maybe with two parameters or with one or with none. And second one is the same, right? And then parameter pulls from the standard library inside Dharma, where it can put in a boolean, a digit, integers, all that stuff. So you don't need to come up with what could be bad data, right? The framework will handle that for you. So you basically just describe the constraints for your output in the grammar file, and Dharma will generate random, but well-formed input, provided you make a well-formed grammar file, right? Boom, boom, boom, yes. So this is what the grammar will output. So we can see that it, first iteration, it just picked the thing called first one with no parameters and second one, la la la. So subsequent executions of the first one will just keep generating well-formed, but malformed data, if that makes sense. So malicious in some sense, right? Cool thing about Dharma, it's written in Python. The standard library of edge cases is fairly extensive, so it covers all the, well, it covers integer overflows and all the edge case integers around where, if you increase by one, it goes negative and all that stuff. It's easy to extend the grammar as well, so you can just put in something like this, where you go overflow and then repeat. So this is like F, macro, which will expand the string ABCD, blah, blah, blah, blah, into a long string. And if you, I mean, it's really easy to modify the generators, which means that you can put in your own secret source, so even if you happen to write a grammar file, which is exactly identical to the guy next to you, if you extended some of the badness library, you have a chance of finding bugs that he won't find, right? You can steal the bad string library from something like Bufers, and I think that one stole most of it from Spike back in the day. Well, Bufers is the continuation of Solly, which stole the strings from Spike. Anyway, it's a good idea to ensure that this generated data is valid and monitor the output for syntax errors, because as you can see in the bottom here, I've generated some data, which is not valid, which means that the parser will actually, it will bail out because you cannot catch syntax errors. So you can catch, let's say, final and final exceptions and other things, but you cannot catch syntax errors, so you have to make sure that it's syntactically valid so that it's not being rejected by the initial parsing mechanism, which does some magic before it's executed, right? The next problem you're going to encounter is that Dharma and Tomato, they don't, in themselves, know anything about PDF-specific things, so you have to make all the PDF stuff yourself, right? And if you say, well, I'll just use the standard grammar and first the JavaScript engine, well, it's a waste of time in the Adobe Reader case, because it's Spider Monkey, which is the JavaScript engine from Mozilla, and it has been since, maybe it started with Reader DC, I don't know, but it's been like that for quite a while. It's, of course, a heavily modified Spider Monkey because all the PDF-specific JavaScript things are bolted on by Adobe afterwards, and you can, maybe if you follow the Spider Monkey bug tracker, maybe you can find, when they fix a bug, it's most likely not going to be fixed in the version that Adobe has imported, at least not instantly, so there's quite a bit of latency period there, where you can score some quick wins, maybe. So it's just a matter of finding something PDF-related and JavaScript from the JavaScript reference, write a grammar file, and away you go. If you look at the PDF JavaScript reference, it's been updated. It was updated in 21, after maybe 10 years of nothing. It's actually pretty well sorted into the Rural API and the properties and methods, so you can focus on complex or interactive parts, and you can actually just browse the table of contents, as I do here, and see that the annotation object has a bunch of properties, and then you go a bit down, and you see that it also has methods, so maybe that's an easy target to pick it. Well, I know it is. Then we come to the lines. The computer is lying, as usual, all the document is lying, because if you dump the search object from within the JavaScript console in Adobe Reader, you will see that, okay, I dumped the search object, and then when you compare it to the actual documentation, the search methods, according to the dog, is add index, get index, query, and remove index, but when you dump the object itself live, you will see that there's a method called getInth index, and there's also an undocumented property. Why is that good? Well, it's good, because it's either really old code, which is supposed to go away, but no longer maintained, and no longer kept in the table of contents, or it's new stuff, which may mean that since it's undocumented, it may be a good area to find bugs in, since nobody knows it exists. I've definitely found bugs in Adobe Reader, where the documentation didn't mention any, there were no references to some API it had, but it still worked. So if we go back to the Dharma stuff, and look at the annotation properties, and those are here, the alignment attachment, the AP, blah, blah, blah, all that stuff, you just define a grammar, where you say the error properties can be non-open error, blah, blah, blah, blah, blah. It's just, this is the, I would say this is one of the easiest ways of finding bugs, because you just have to sit and transcribe the documentation from the JavaScript reference into a grammar file that Dharma can understand, and then it's going to start generating malicious input that you can feed, and then bugs are going to reign. So it's pretty easy, and it's pretty fun. If you look at what the output from Dharma is for the annotation properties, it's going to look like this, for the set properties. So it's going to set a bunch of weird properties, do something with state models, and maybe it's going to change a logo, and then call a function, and then something bad is going to happen eventually. So this output is well formed, but nonsense. So next problem you're going to encounter, is that Adobe Reader is now, it's no longer just something which passes and does stuff. Since Reader DC, it's split up with the standard renderer and broker model, so the renderer is sandboxed and asks the broker process if it's allowed to do such and such and such, but it also means that there's multiple processes that talk IPC and PDF surrender in tabs, and so on and so on and so on. So you can't just start it twice and say, you run this input and you run that input, and if it crashes save it. A pretty easy solution is to first on OSX instead, because that one doesn't have a problem with spawning 20 simultaneous Adobe Readers, because well, POSIX I guess, or just use virtual machines for isolation and scaling. It's super preventive, but it's also cheap. If you want to make it so that you can run it over Reader multiple times in the same Windows instance, I mean you need to reverse it and find someone who knows what they're doing to sort of riverway that cannot run twice logic, it's not worth it because hardware is cheap, and if you find a solution to make it run twice, it's gonna get updated and you'll need to re-apply that solution with different offsets or whatever. It's a nightmare and it's not worth it. The next problem, when you start an application, there's a bunch of work being done in loading libraries and other boring disk IO. So I was thinking maybe you can just revout the JavaScript engine and first that one. Turns out it's extremely complicated, and it's not like there's javascript.tll, which exports a function called pastJavascript, sadly. So extremely complicated and I wanted something simple, not a six month revision project. So solution is to, well, just no solution right now. So what I ended up with is start the application only once and then instrument the GUI to avoid restarting the application. The good part about that is that you have a live PDF document with a DOM that you can interact with. So all of a sudden it don't on me that with this you're not fussing the JavaScript parsing, you're actually fussing the DOM itself, which is a lot more useful because that's where all the DOM interactions are what's going to lead to use after fees and all that stuff. And then I mean, yes, it is cheesy, but it works well. Just do periodic housekeeping.  We start the application and done, right? So how do you get the console? Well, you make your own console.pdf. DDA Stevens has made a few PDF tools, including one which can make a PDF which contains JavaScript that will be executed when you open it. And then, as the script, you just put in this console.show. So you can pop an interactive JavaScript console from the regular reader and not just the professional version, which you normally need to do JavaScript development. And this also works for Foxit. In the case of Adobe Reader, there's this Acro help object you can pass as an argument. I think they stopped maintaining it because it works for some things. And then it also definitely doesn't work for a lot of things. So the next problem is that you have the input and you know where to put it, so you can get rid of the startup overhead. But how do you get it there? Do you sit and copy paste the input you generated? No, you do not. You just use Python also and Piperclip. Doing it like this, where you generate the input externally, has a distinct advantage over indom fuzzling, because you have a precise log of all the DOM manipulations you attempt to perform. I made another fuzzle where I just do stuff, bunch of JavaScript, stick it in, execute it where it does DOM manipulations. And the problem is that when something goes wrong, you don't really know what went wrong, because logging is hard. So I made a really, this is the worst thing I've ever done. I think as a log function, I try to read a file where I get permission tonight, but it's still gonna log the input. So let's say my input is blah and here, then I'm gonna try to read a file called blah, and it's gonna fail, but it's still gonna show up in something like Procmon, so I can just do API monitoring and see that it gets accessed tonight by trying to read this file, but I still have the log of the stuff that I fed into it. So that's a way of doing fuzzlogging inside the DOM, but it's a nightmare and it's definitely trash. And it's also easy when you do the DOM manipulations from inside the DOM to end up in a situation where when your fuzzle lives in the DOM, your fuzzle can do a manipulation which destroys your fuzzle, right? Because then all of a sudden, RAND is no longer a function because you've destroyed it with your fuzzle, so not very good. So for the GUI automation, Python Auto, fantastic. You can write some Python code, you can attach to binaries, you can find the dialogues you need and just make it click all the buttons and do all the things. If you spawn it with Python Auto, it prevents easy debugging, but the solution is just to don't spawn it with Python Auto, you can just attach afterwards with the Python Auto application Connect, right? The next problem you're gonna have, and this is something you can only, this is something you can only find once you've found your first crash, right? Because if everything is working as intended, well, and the program is not crashing, then you'll never encounter these weird error dialogues, right? But then once you've found your first crash and your fuzzle says, well, continue, it's just gonna stall, so you need some handling of error dialogues as well. In the Foxit reader case, that's fun, because if you feed a bunch of script, it's gonna pop up this enter no more than 256 characters dialogue, but you can still keep feeding script to the console and it's just gonna get queued and then when you click OK, the next 200 lines of script are gonna get executed, so that makes it really weird and something you need to handle specifically. I just patched out the code to the message box in this case, because otherwise it was impossible to find out what part of the script actually caused the crashes in Foxit. Yes, next problem. Pywin Auto Windows GUI automation stops working after a while. I don't know if some handles are leaking or something. Just reboot the machine and it's a lot. I mean, rebooting wastes 15 seconds of your fuzzling runtime and trying to investigate why it fails. Well, you can waste days on it, right? And maybe you can't even do anything about it. If you use the 64-bit Pywin Auto for 32-bit apps, you're gonna have the problems arise more often, but you no longer need to maintain two different Python installations, because the reason Acrobat, well, I no longer need to maintain two different, because the reason Acrobat is now 64-bit, finally.  There's a maximum of 3200 lines of script, but the solution is to just generate your input in chunks and just feed it a thousand lines at a time. And this doubles as an easy fault indicator as well. And what I mean by that, I mean that if I cannot feed the data through the dialogue, my chunk of data, then something bad has happened and I can act accordingly and know that, well, something bad happened.  A lot of things. Well, running Adobe Reader under a debugger, while you're fuzzling it, is also a complete waste of time. And my solution to this was just don't do it, because when you look at the way it works, when I do the sequential input feeding, I feed it data and then eventually the app crashes. I'm no longer able to feed the data, so I know it is crashed and then I can just save that data, right? So there's no need to do this advanced fault detection at runtime using a debugger. If you're so inclined, you can also catch faults with mini-dumps, but in this case it's not needed, because if you cannot feed the script, you know that something is up and then you have a solution, right? Next problem, well, something you're going to find out when you want to combine the sequence of data into something that can reproduce the crash, is that the disk I owe, well, I used SQL super slow with the exit overhead, so as you can see, it takes like seven and a half seconds to concatenate a few files, do it in Python, it takes 0.06 seconds instead. So in this particular case, any solution would also just be to the data that you generate if you save it in decent filenames. You won't need to do this terrible batch loop, and then you can just get all the files into one. But this is something you're only going to find out when you actually start working on it and find out where the hangups are in your queue. Next problem, you have a crash, what is it? Can I sell it? Can I use it? What can I do with it? It's super hard and complicated and takes time and actual work, but you can use Skyline's bug ID for automatic triage of the walls. So if anybody remembers, there was this WinTPG plug-in called Bang Exploitable. I'd say this is Bang Exploitable on steroids times a lot, because this is actually very useful. It generates beautiful HTML reports and comes with some pageheap script, so you can enable pageheap for your app, or it has a bunch of defaults as well. It's free for test runs, you have to pay if you want to use it to make money. If you look at pageheap, the pageheap is useful because you set certain patterns in memory when allocating and freeing memory, etc., which means that once you start doing some memory overrides on the heap, it's more likely to cause a crash, or if you try to read from some data which has been freed, it's also going to crash instead of maybe reading something valid and continuing execution. So you get some slowdown with it, because it's a different allocator, but you get more bugs, and I think that's a great trade-off. If you look at a sample bug ID report, I think the meat of it is you have an access violation at this address, blah, blah, blah, blah, blah. And then when you look at the verdict from bug ID, it says that it might allow information disclosure, but then when you look at the disassembly down below, you can see that it's trying to read EAX into ESI, and then ESI into ECX, blah, blah, blah, blah, blah. And then it's going to call ESI. Okay, so we control, or at least EAX set to F0, F0, F0, F0, F0, which means that the memory has been freed, and then PageHeap has set this pattern for the freed memory, which means that while bug ID thinks that it's an out-of-bounds read, it's actually trying to de-reference some freed memory instead. So you still need to do some manual analysis to make sure that you're not missing out on Goodbox, because this looks to be a use of the freeway to just get some code execution instead. If you, the next problem, yes, you have 100,000 lines of JavaScript, and minimizing that into finding out what causes the crash is also a huge pain. You cannot really be sure which of the many, many lines are required for the crash. Of course, Common Sense says that since we're feeding the input sequentially into the reader, the last blob of data is what's causing the application to crash, but maybe it's dependent on, as well, it's most certainly dependent on the sequence of actions before that. The quick solution for that is also instead of trying to minimize by hand, which is sometimes easy, sometimes not, it's just to use lithium. So again, from Mozilla, line-based test case reducer. So here, yeah, this is the marketing material. It can reduce the 3,000 line. It's fun for a crash test case to treat the 10 lines in minutes faster than you can do by hand. And lithium works on interestingness tests, as it's described in the literature. So in my case, I'm interested in things that crash due to memory errors. So there's an interestingness test that's called crashes, right? And then you say you instruct lithium into monitoring the execution, and then just cutting out chunks from the line in the PDF. And when it has cut out chunks that cause the application to no longer crash, it throws out that and says, well, cut out something else instead, right? It supports these markers called DDBegin DDN, so you can stick it in to in front and after the JavaScript that you've injected into the PDF, so that you don't try to minimize and remove essential parts of the actual PDF file itself, which will just cause, well, the wrong kind of errors and not the stuff you're interested in. And you go away, that's fantastic, right? But then once you start looking and using lithium, you find out that maybe your fantastic use after free is now being reduced into a different bug, which causes a null point of the reference, right? And then all of a sudden your moneymaking input has turned into something useless instead. I just asked the guys' help what I do here, and they said, well, there's something called crashes at.py from some other project. It's not mainlined into lithium and probably never will, but you can use it anyway. With that, you can say, I want the call stack to look the same, so that when lithium reduces your JavaScript instead of just saying crash, good, keep reducing, if it sees that the call stack has changed, it's going to throw out that reduction so that you keep your good crashing input and not bad crashing input, right? So next problem, it's pretty hard to make something generic targeting different applications. Of course, that's what I didn't want to make, right?  I think some smart guy told me yesterday your code can be as terrible as you want, if it's just for you, you only have to make it nice when you give it to someone else, right? So just make all the temporary hacks, it's perfect. Of course, you can also use a modular approach and just make an application-specific GUI instrumentation harness. For eksempel, when I made all this, I made it for Adobe Reader, and it was like maybe there's some bugs and bugs as well, the only thing I need to redo is the GUI instrumentation part, and that's like seriously three minutes of work and then of course a few other changes, but it was pretty easy actually. Yes, if you do as if you read the Dharma documentation and do as you're supposed to do, you're going to run into some out of memory problems in Adobe Reader, when you keep adding annotations sadly, but you can just then select the instrumentation from within Dharma instead, and then this is the main fuzzing loop. This is basically all you need to do to generate data, feed it and lock faults, right? So the astute viewer here will notice the complete lack of exception handling, which works to my advantage, because if the thing, the abomination here trying to type keys into the JavaScript console, if that fails, then the app has crashed, right? And then the fuzzer will crash, and then something external will say, well, the fuzzer stopped feeding data, saved the input queue, and then start everything again.  That's not a problem at all. And then you use Dharma to generate your input based on this grammar, feed it using Python also, and just wait for the crashes to start raining. Automated crash analysis with bug ID. So that's handled for us. Minimizing the crashing input using lithium, then that's handled for us. And these steps are not tightly covered, right? You can easily bake them out to distinct worker nodes. They don't need to, I mean, the whole process is slow enough that you can just have centralized file stories where you SCP over files or something, and then workers can come in and pull jobs. It's quite fine. And the way it works is that Dharma produces for bug ID, which produces for lithium. The mining for the actual bugs with Dharma is a lot slower than the bug ID analysis, which is a lot faster than the lithium reducer, right? So it makes sense to have a lot of the producers here in number two. Maybe not so many for the bug ID, because that process is pretty static, and then some more nodes to do the minimizing, right? So you can play around with that a bit and get something where you don't have nodes waiting around for actual work. But that requires some tuning, and I can't come up with a generic recipe for how many you need of each. So that's just a matter of trying it out. Finally, results. I first it for two weeks on a pretty shitty laptop, and I got 339 crashes, giving me 132 distinct reports from bug ID with 39 distinct crash locations, and distinct reports, but identical crash locations means that there's a different cost tag leading to the same crash location, right? And it's pretty much the entire palette of what bug ID supports, so it's access for the collision reading near null, plus offset, blah, blah, blah. Buffer flows out of bounds reads, right? You name it, you can have it all in Adobe Reader. And I definitely took some shortcuts when I wrote the grammar for some of the things, so it was pretty lazy, but it worked out a lot better than I expected anyway. So there you have it. When you make your fuzzing infrastructure, don't use Krabby old Windows XP machines, or whatever you usually use. A virtualized Windows 10 or Windows Server 2019, it boots in like 10, 12 seconds, so the complete reset of state and everything until you're back and the fuzzer is running is like at 10 second job, right? And you can disable the antivirus on the server. If you fuzz on the end user OS and you generate this and you make PDF files, and if they have even just a bit of meat in them, Defender is gonna quarantine your files, right? So get rid of that, because otherwise it's also gonna, every time you make files, it's gonna come in and scan them and whatnot. I keep a shaved down installation with basically nothing but Adobe Reader on some NVMe, and then I just spawn linked clones or copy clones to RAM drives, that's also pretty cheap and I avoid wearing out my NVMe's.  Why didn't it work? Did I break something? For me it was the reader, so destroy that one. Building on this, I think, and something for you to do, you can go ahead and write more grammars and write, well, some grammars for reader or even acrobat, which is like the professional version to make PDF files. It has a much richer feature set than the common reader. I need to fix my grammars for some better coverage because I took a bunch of shortcuts. I was thinking to, so if you look at Dharma and Domato, they're both contradictory grammar fuzzers and they should be behaving more or less identically, but maybe there's some secret sauce behind the scenes. So I was thinking to maybe write the same grammar, the formats are well-closed but not identical and then do a fuzz off between Domato and Dharma, just for fun. Something else you can do is look at historically problematic JavaScript. So regression tests from Chrome or from Firefox, that can also give you a hint as to what kind of malicious JavaScript that is you want to generate. When you write your grammars, like do you want to set values to null or do you want to do some weird re-entrancy or whatever. So it pays to follow what all the browser fuzzers are doing and of course not all of it applies to this limited subset, but still it pays to snoop on their stuff. Something else that I or you could do, I want to do at least, is to make a replay algorithm so I can minimize the minimizing efforts because while Lithium runs unattended and automated, it's still intensive and it feels like, well you're definitely wasting a bunch of cycles, so if you have to pay for your compute time, maybe it pays to well cut down on the minimizing efforts. I was thinking to make some sort of blacklisting too, because if you keep crashing on the same unexplodable bug early in your fuzzing, then again you're wasting cycles, right?  It's not a big problem. It's just something to look at. So if we try to see or make some sort of conclusion, well I think Adobe Reader is still incredibly full of bugs, right? Because I'm one guy with one laptop and I sit down for some weeks and press some buttons and it's just raining crashes. For some reason, it's still widely used in corporate environments and I don't understand this because they have the quarterly patch cycle and there's always code-exclusion bugs in it, right? So I honestly don't understand why it's not blacklisted in all corporations, but hey I don't write the policy. The bugs are easy to find if you look in the right places. Everything is easy.  Python, batch files, imagination. And I don't like it when someone gives a presentation and says, here's a puzzle I wrote. This is how you do it. I found all the bugs and I reported it and made money, right? So I didn't report anything. You can just go to what I described and you'll find the same crisis as me right now. So also it's super complicated or annoying at least to build your fuzzing pipeline if you don't have anything that crashes, right? If you can't find at least one valid crash, it's hard to work on your crash detection logic and all that stuff. So I left all the crashes in there and that was it.  Thank you. Awesome. Thanks so much. So do we have any questions in the room here? If so, could you line up behind the microphone? Any questions from the internet? No questions from the internet. Great. Okay, well, if there are any kind of questions, then people can come and... Which village are you in? Do you have a village you're in? Oh, there's one question. Hi. So have you met any software that you couldn't find any bugs in? Just yes or no? No. No. I mean, finding bugs, I think you should... If you're interested in how to find bugs and all that stuff, if you watch Mark Daout's kino from OffensiveCon, I think that this year, I think that was awesome because it goes into the whole mindset required, right? Because I think also if you go in with the mindset of, everybody's looked at this, I'm not going to find any bugs, then you will most definitely be correct, right? But if you go in with the mindset of, I'm probably going to find some bugs, you're also correct. Because finding the bugs is a matter of understanding how the thing works and then just pushing all the edge cases everywhere. Great. Thanks. Next question. First of all, thanks for your talk, real nice. You said that one of the tips was to disable the update mechanism, which sounds obvious. But what about disabling the internet? Will that actually result in different behavior in your experience? Well, so he's asking if it will help to just disable the internet. Well, I guess it's an easy quick solution, but I built my network, not my network, but my setup with distinct worker nodes that talk over the network and pull jobs and do stuff here and there.  Because maybe you want your pipeline to actually do check for the latest version and pull that one down and do everything automatically. So you skipped the update mechanism altogether, as in you don't test that part? Well, the update mechanism just downloads, assign binary and executes that one, right? So that part is not interesting. So I think it's better to just destroy it and have, then you know what version of Adobe Reader you're fussing. In the case of Adobe Reader, it's not going to say, there's a new version. Do you want to update? It's just going to do it, right? Yeah, I get that. Maybe perhaps there might be different behavior. If you have internet, it might... Speaking to the microphone. I'm walking the microphone now, but yeah, sure. So I was thinking perhaps that if you have internet enabled, yeah, is that better? If you have internet enabled, then perhaps the Adobe Reader would do some other checks as in a load different pieces of code, then well, there's no internet. It might skip that perhaps. Jack, if this is online, then go into this subroutine, but if it's not, then go into that subroutine. So I was wondering if that might be interesting as well. Yeah, you might skip that. Yeah, I see what you mean and possible, but I'd say not relevant for the stuff I'm doing right now, but definitely something to bear in mind, right? Thanks. Thanks to the question and let's give a round of applause for...