So, hi, I'm Jeff and I have a problem. I like to do bad things to worse programming languages and for the purpose of this talk, that means Java. Thank you. So I'm going to, right before I get into this, I do want to say that this is really like a 40‑minute talk distilled into 20 minutes. So I have a lot more material in the slides than I'm specifically covering. I go through it really fast and I recommend going through the slides on their own at some other point since they have a lot of gems hidden in them. But so, getting back to it, what does this talk about and why does it matter? This talk is about injecting JRuby and Android applications to do function hooking and this might be useful to you if you reverse Android apps or if you develop them, it's just another debugging tool, honestly. Or if you have some strange fascination with Ruby and or repels. So, going back in time a little bit, I was reversing this chat app called line that's really screwy. And aside from the pro guarding and stuff, which doesn't really matter, the main annoying part of it was that everything was like an interface of something else and it was really annoying to find out what objects actually were at run time and I was just writing a bunch of one‑off hooks to like see what the object was and then go off and do it again. And this was getting real boring real fast. So, I decided, you know, what if we took all the interesting functions and wrap them in repels, you know, so you drop down like a shell and you just kind of poke around at run time and see what things are and see what they have inside them all ad hoc style so you don't have to like write some code and then run it and write some code and run it all over and over and again. So, to take a step back a little bit, let's talk about kind of what the things you can do on Android right now are. So, you can use LD preload, it's pretty old school, native hooking with native code for native functions, you know, things like libc calls and stuff. I'm kind of skipping code as I go. I recommend going through my slides, as I said. Then, of course, there's actually using the debugger which is basically the JDWP that you have in the normal JVM, ADB exposes it and there are various ways of getting into it, either being an API debuggable or, you know, you have written stuff. The useful things from it are that it can list all active instances of objects, of all Java objects and when you set break points, you can actually execute code in them from the context of the frame where the break point got hit. So you can hit, like, you can touch, like, protected stuff and private variables that can be hit by the code normally. It slows down the app massively, though, like, almost the point of being unusable. But it is useful for things. There's a lot of GUI stuff, a lot of GUI stuff, it's all terrible and even the command line stuff for it is basically toxic. You hit up and you get this horrible, like, A character thing because it doesn't handle, like, arrow keys. But it works. Moving on, we have Frida, which is sort of the new hotness for a while. It works on Android. It actually stomps over the actual instructions in memory to, you know, jump to its own hooks. It also recently has the capability to inspect and list all the active Java objects so you can just tap one specific object. The function hooks are generally speaking implemented in JavaScript which is not something I like, but it works for many people and if you don't want to do that, you can use the native C slash G-lib code, Frida gum to do hooking with anything that compiles down, like, you know, native code. There are many ways to get it working. But the hooks are fairly simple. Then, of course, we have Xygote, which is the, sorry, exposed, which is the kind of big main framework for doing function hooking on Android, which actually modifies Xygote's sort of in it process that forks into the actual apps. And the really nice thing about it is that aside from being like Java first or Dalvik first, which means you just write stuff that actually kind of has native reflection access into the code you're hooking, the other cool thing is that it hooks like always at the start of app start reliably, even early in boot. And so you can get very reliable hooks running without missing them by accident. It has a lot, a lot, a lot of scaffolding. But eventually you get to something like this where it's more or less the same thing as the JavaScript code. So now I have a question for you. Who's that Pokemon? Yeah, that's right. No, that's wrong. Sorry. Parasect. Parasect was right. So why am I talking about Pokemon in my talk? So Parasect is a mushroom Pokemon. And if you didn't know, the mushroom part on top of it is actually the Pokemon. The bug is a dead husk kind of marry netted by the mushroom at this point.  So again, why am I talking about this? So I wrote a tool called Paraspector. And it carries basically all of the same roots as Parasect does for the puns and things, plus what I got from introspection. And we get this cute little guy. So what is it actually, though? Paraspector is a function method hooking tool for Android focused on Java. It injects a full J Ruby interpreter into a target process so that the hooks that you run are J Ruby. They're easily reloaded every time you restart the app as opposed to exposed where every time you change the code, you have to reboot the phone itself. It's implemented using exposed, but of course the Java part doesn't change when you change your hook. And it has a bunch of selectors that you can configure based on classes and methods. Such as super classes or interfaces that are actually implemented by a class. It will just figure it out at run time. And if you don't want to pay the searching cost, you can just hard code the name of the class in. So if you just want to figure out what you want to hook, you can use these and then you can hard code it later so that subsequent runs are much faster. Not that they're much slower in general. Method matching uses the method name, the argument type signature, the return type, and the exception signature. And then whatever the total set of those combined, it'll find it or you can be as vague as you want. If you want to just hook two string on object, anything that subclasses object, you're going to get a lot of stuff. Ruby, or J Ruby really specifically is pretty useful in this case, much better than Ruby was when I attempted it the first time. It has very good interop with the Java parts. There are only a few cases where you have to do a little bit of reflection to get around some of the annoying pro guard stuff, but in general it doesn't really matter. The really useful thing with the way that I loaded in is that I loaded under the class loader that is actually for the app itself. So it has native access to load classes from the app without reflection. Whereas with exposed, you would have to use a lot of reflection to manipulate things. The other cool thing is that because of this, you can actually define your own subclasses and interface implementers for the Java code of the actual app itself and then plug them in any functions that like take a callback function basically. But I kind of started this conversation with Rapples and now I'm getting back to it now eventually. I use this thing called pry, which is a much better Rapple than IRB, the default one that comes with Ruby which also didn't really want to speak well over the network. And it's got a whole bunch of Ruby stuff that allows you to introspect the sort of Ruby still runtime, but also the Java one because of JRuby, much better than IRB, whatever. I use this thing called pry remote, which is a gem that kind of wraps pry with this crazy, crazy thing called DRuby, which is basically Corba for Ruby. And if you know what Corba is, you're shaking or throwing up, please, please do it in an empty seat next to you. It has no authentication by its own, which is scary because basically, without even like using this to send strings to eval, it basically is a dual eval between the client and the server in any direction, apparently. So it's super scary and doesn't have authentication. So I modified it, at least the one I install on the phone to add authentication. And then for the one you run locally, I have an authenticating proxy I wrote to sort of speak to that so that at least other apps can't compromise the one that you're actually hooking when you're hooking it. Then you drop down into basically with some connect back, a Tmux window that just pops up with your shell and things work. For apps that don't actually have the internet permission, this needs networking and so I have a bunch of hooks in using exposed that will basically force the internet permission in apps that don't request it. They really don't like that, but I get it to work anyway. For configuring all this monstrosity, I actually have a Jetty Servlet web app. I actually run from the device itself, which was an exercise in frustration. But it works. And all the edits that you make are actually tracked in a Git repo on device. So if you really screw something up bad, you can always like ADB pull that off the device and revert back to what you need to. It's also worth mentioning that that has authentication as well that works decently enough. But overall the flow is pretty simple. You edit config files, they're world readable so that the hooks that run within the context of the app you're hooking can read them. Then I set up the JRuby environment and then I iterate through the classes to do the searching and selecting and stuff. And then exposed actually I used to set up the actual hook. And then that hook runs your Ruby code. This is kind of what a hook looks like. It's kind of quick and dirty. We hook this method in this class and then we just kind of print out what the argument is and move on. But for anything more involved, you'll use something like this where you actually have a file that you can also edit through the web interface which looks like this. And this guy disables cert validation, cert pinning and also hard codes my HDP proxy so all the requests made using OKHDP go through my proxy even though normally speaking ignore the system proxy setting and like the Wi-Fi setting. You'd think this would be slow but I cheat really, really hard wherever I can. So I try to load as much of the JRuby in at Zygote in it. And because of that I do it I have to play some reflection dark magic so I can force in the class loader of the app to be the parent of the JRuby class loader so that the classes resolve correctly through the app instead of just up to the default set of classes in Android that Zygote can see. Due to some bugs in Android I can't actually set up a whole container instance that runs the scripts in Zygote because if Zygote takes too long to start up the whole thing deadlocks. I'd like to see it get fixed. So I have to start up the containers actually in the app itself and this takes like 6-7 seconds generally but I try to paralyze it out so it's not observable until a hook actually runs and then it'll have to actually finish before the hook will run. For the class searching and stuff because the normal like class loader searching stuff actually searches the parent class loader first before it searches the child I yank out the internal the dex classes stuff on Android using reflection and then I run that and that saves a ton of time. There's still this problem with basically the threading so there's this the class loader lock you can't actually load a class between it'll lock when you try to load a class and so the more threads you have the slower it goes. So I eventually I might start parsing the dex files manually but I'm not at that point yet because I haven't hit that as a performance roadblock yet. So I've been searching 30 seconds of overhead to being quote-unquote instantaneous which means if you hit that 6 to 7 seconds you have to pay for it. Searching is fast enough unless you hit something like the Facebook app which literally has 100,000 classes in it as of the last time I checked and because of the threading thing that takes a while to go through about 30 seconds. But this is still a lot faster than exposed stuff which you write your Java code you compile it install it and then you have to reboot the phone and wait like two minutes for the whole thing to finish if the phone is encrypted. So let's do some demos shall we? Let's hope the demo gods are with us. So I have this phone you can see on the screen. Let's do some math shall we? What's a good number? Answer your life, the universe and everything. So let's get there shall we? Oh what's that? That's not supposed to happen I think that apparently we have a new answer. So moving on to what that was I have this hook and hopefully it's seeable from the screen without too much of the flashing giving people epileptic seizures but basically I have this weird method in the pro guarded code it has this horrible function signature but it returns a string. The string it returns is actually the result of the calculation within the code and then when the value is something I like I do something entirely different. Moving on I have this UI demo where basically I have a bunch of buttons and you click the buttons and they do stuff and this is bad if you've ever seen Yu-Gi-Oh abridged you know that that last button is wrong let's do that one more time. That's what I'm talking about. So the hook on this is basically just on the text view stuff in the UI and I actually when I see this hello duelist string I completely replace the on click listener associated with the button so the event handler for the button I replace with my own implementation that subclass is the on click listener class that is what it actually needs as an interface to pass it to. So this one is now when I hit the button the first and then the second time actually jumps straight into my code no hooks anymore. So moving on now this is fine and good and all let's tweet. What's this? This is a shell. Who are you? Main activity. Let's just do some math for me. 10. I'm in the shell right now this is all sorts of things. This is the pry. But let's tweet. Does anyone have any requests? I know I'm asking a weird question to a weird crowd. Anyone want me to tweet something? Anything. Okay. And now we're back in the app and I actually I need internet. That's super important actually. Let's see if that worked. I'll do it again. Nope. So we'll do one more time. I have the on resume method hooked and so every time it goes back to main activity it'll jump back in my hook. There we go. Okay back here. Let's see if it did something. Yeah okay that one worked. Okay cool networking. How does it work? So this hook is a little interesting. Let me skip past. These are the proxy ones before from the slides. This one is a little interesting because the code for this I actually just made my own method that does a whole bunch of horrible reflection and stuff into the insides of the Twitter app and I figured out what the functions to call for their rest APIs are internally that actually do the tweeting. But whatever it works. One interesting thing is that I do the load class with reflection if only because there's this a field here which is a static when you have a static internal class that matches a static field with the pro guarding you sort of have to do this because the resolution order takes the field first and not the class. But where can you get this magical tool? The installation stuff I want to clean up just a little bit. There's no way I'm getting around having to reinstall it twice because of the thing with the internet permission. It actually sets up a hook for itself so that it can grant permissions itself but that requires you to reinstall it so that the second install the hook runs on the package manager that then allows it to take the permission. So only it can take the permission that it needs to grant permissions and only it can be used when you're in lockdown. Limitations, the DRuby stuff is super scary that's probably going to be its own talk since it's super dangerous. Adding gems not quite supported yet requires some shenanigans I'll probably get around to that soon. So the stuff with the gems I might make a UI to do it fancier it might just make it easier to do in the build process. The UI could use just a little bit of work maybe. Android 7 compatibility isn't there yet because exposed doesn't support it yet. If and when it does that's what I have to fix. If it doesn't, I have some plans on how I can stop using exposed but I'd prefer to use it because it's useful for a whole bunch of stuff. I'd like to thank a whole bunch of people specifically Arcos, the Scorpion writer aka Josie, our former intern who I basically sacrificed to this thing is a lot for QA work. She wasn't able to make it out here today but thank you Josie. Are there any questions? Oh, you want to know? Yeah, of course. So, Ruby has this wonderful thing it's a stringer place. So if we go search for maybe not our favorite president but A president I mean someone's favorite he apparently is a fan. Any other questions? Was that a no? That wasn't a question? Okay, anyone else? No? Okay, thank you everyone.


Right, so hey guys and welcome back to another Python tutorial So as you may know in the last tutorial I showed you guys how to use dictionaries for beginners and how they can pretty much be used to carry out a basic task So I didn't go much in depth about how they can actually be used to implement as a solution where it can prevent a lot of logic So in this tutorial, we're going to be using dictionaries to create a rock-paper-scissors game But we're not going to have any GUI. It's just going to be a console-based game So without further ado, let's begin So today I'm going to try and improve the quality of my videos by starting to use visual studio code Which was a recommendation by someone that has either subscribed to me or is on discord on my channel So here it is Let's start by opening visual studio code Which I started using recently and it's really a lot better than the default idle that I use So first of all, I'm going to go ahead and create a new file and then save that as I said that on my desktop and call it rps.py rps stands for rock-paper-scissors if you didn't know So first off what we're going to need for this is To actually be able for the computer to make a guess between rock paper and scissors For this we're going to be using numbers instead. So in python, we have something called a random module Which helps which helps us produce random numbers So this is what we're going to be doing So we're going to be importing random because we need Random guesses about either rock paper or scissor from the computer So we're going to be using random numbers and converting them into a user into the computer's choice of whether the The computer selects rock paper or scissor So once we're done with import random, let's hop on to creating the actual main loop of our game So main loop And in here, I'm going to start by saying while one which means while true It's going to start a continuous loop. So never ending loop Now we need to create a new variable which will store our random number. So random number equals random dot ran int Um, and then we need to give it a number range. So I want a random number between one and three So once i'm done with that, I have a variable now that's called random number. That's assigned to a Random um integer between one and three So each time I run this program the program should return a number randomly between one and three I'm going to quickly go ahead and zoom into the screen a bit so that it's easy for you guys to see Cool, sorry about that. I just realized it was quite small Now the next line i'm going to actually print out this random number just to show you how it works So now if I go ahead and open cmd And then go on to cd desktop Python rps.py If you see right here, there's a there's a whole lot of numbers being spammed But if I highlight them, there's different numbers being spammed each time Now it's being spammed really quickly because it's in a Unstoppable while loop and so it will keep giving me random numbers until I actually stop it So that's a random number solved Now this random number will later have to be converted into a choice of rock paper or scissor Which is how we're going to determine what the computer has chosen Now let's leave that for a bit later What we're going to do next is we're going to gather the user input So i'm going to leave a line here because we need to do something else there. So user choice equals input String and then we need to ask the user what they want to actually select so select rock Or paper or Scissors so this needs to be accurate so the user is going to have to enter either rock paper or scissor And they need to spell it correct correctly, which is why we're going to be adding error handling for it as well Just in case they spell it wrong cool So now we've got our user input and we've got our random number Now this random number right here. We're going to need to change that into the computer's choice So we're going to do that by actually creating a new function that's going to be converting the number into a choice First of all, I'm going to go up here and then create a new function call it def converted Outcome and then in this function, we're going to pass in the number that is produced over here So whatever random number is produced over here will be passed into this converted outcome Function into this numbers parameter right here So what I do next is I'm going to say f number. So whatever number is being passed, which is a random number equals one then return Rock so I'm saying that if the number that's randomly produced is one Um, the number one would be assigned to rock We do an ellip number equals two I'm going to return paper. So if the number that's randomly produced is two then we're going to return paper and then lastly If I do a left number equals three return scissors So now we've got all the three numbers into actual valid rock paper or scissors outcomes Now we're going to have to run this function right here on line 15. So I'm going to do computer choice. So that's my new variable computer choice equals converted outcome and in the brackets I'm going to pass in the random number because that number is going to change each time So the computer choice will changed to two. So now down here after the user and computer choice once we're done with that I'm going to quickly print computer choice And then I'm going to print User choice, let me just scroll down a bit here Uh, I'm going to print user choice. So user choice and now if I quickly open up my command prompt Okay, I guess I closed it by accident. I have to do that again option it to leave CD desktop and python rps.py Cool. So it's asking me to select rock paper or scissors. I'm going to go with rock And now as you see up here The computer's choice is shown first. So the computer selected paper in this instance and since we typed in rock We have rock. Let's do it again. Computer should either change should pretty much change The um choice this time. Sometimes we get stuck on the same one But hey as you see right here this time the computer chose scissors and we chose paper. Let's try again. Let's try rock Now it was a tie because the computer selected rock and we selected rock two. How about we try scissors Computer selected scissors too. How about we try that again? Okay Keep selecting. Okay, finally So the random number may sometimes get stuck on the same number in this instance For example, we typed in scissors three times or actually four times here And out of four times only one time the computer actually changed to paper So that's completely normal in this scenario where the computer and we choose the same Um avatar. Let's call it for now. It's going to be a draw So now I'm going to quit this loop by pressing ctrl c or ctrl z All right, cool. So that's the error that we got which is fine. Now I'm back on my Command prompt again minimize that now we've got as far as having the two outcomes ready Now what we're going to do next is do our error handling here So before that we need to actually set the logic for this game. So this is the interesting bit We're not actually going to be using if statements. So instead of doing the typical tutorials that show you to do if computer choice I don't know equals Rock And Or is it I'm not sure what and is in python, but I'm assuming it's and user choice equals paper print Computer wins Actually, I mean user wins This is jarring because we're going to have to write a load of if and help statements But instead we're going to be using the clever way and using a dictionary which we learned how to use in the last tutorial So I'm going to have a Dictionary up here. I'm going to call it game outcomes So this dictionary is going to store pretty much all the outcomes that can actually happen in this game and the results to those outcomes May sound confusing for now, but as we code you want to send We'll call this outcomes Equals and then we're going to open a dictionary Now this is going to be a nested dictionary. So inside this nest inside the first outcomes dictionary The first key value is going to be rock Now assigned to rock is going to be the different outcomes that could actually occur with rock And um, so what could be played against rock and what the outcome of that would be So the key of the I mean the value of the key rock is going to be the different outcomes So if rock is played against rock The outcome would be draw Then we use a comma If rock was played against um paper Then we'd have a loss Because we lose and if rock was played against scissors Then you'd have a win Oh, so that's all the um events that could happen in the place of a rock So that's all the outcomes and an event that can happen when rock has been selected by either computer or the user Let's move on to paper Same way we have another key value pair where we're going to be assigning the value to another dictionary So paper against rock Is obviously a win. So paper against rock is going to be a win comma Paper against paper is going to be a draw comma paper against scissors is going to be a loss Because obviously scissors would win now last but not the least we are going to do scissors So what are the different events that could occur in the in the case of scissors being um selected? So if scissors are selected and they use against rock We would have loss comma if the scissors are selected against paper We would have win And lastly if the scissors are selected against scissors make sure you're spelling it correctly Then we would have a draw Cool. So that's literally all the possible outcomes that we could have in this game And as you see we we are not choosing a lot of ifs if and else statements here Which makes it a lot cleaner than if we had done it that approach So now we've got this ready. This dictionary is all ready to go So what i'm going to do next is actually show you guys how to implement the logic So we have now the computer's choice and we have the user's choice and we've got to find out who wins So in our loop, I'm going to go next and actually type in a try and accept statement because Just in case the user enters anything apart from rock paper scissors. We need to handle that error. So try print I'm going to print use selected um And then the user input. So whatever the user has selected user choice Then I'm going to print The computer selected and then whatever the Oops, I forgot to come out there come up And then whatever the computer has selected computer choice, and then I'm going to do print um asterisk game outcome, which is where the actual outcome of the game will be shown And then last but not the least this is the main bit where the logic gets in place. So we're going to print Outcomes Which is the name of our dictionary Then we're going to print user input, which is the user's choice And then we're going to also oops Okay, come on And then we're also going to use that against the computer choice So this might not make sense right now, but let me explain So I'm going to do that and I'm going to print a blank line as well Let me just uh complete the accept statement So exception statement and then I'll explain what we've just done there print So if anything apart from rock papers is entered or any error happens we type in invalid inputs Cool. So now what we've done over here is I'm going to quickly zoom out of my screen so I can have the Dictionary in the same view as well Cool. So all we've done over here is we've said Actually, I'm just going to control c Do not do this. I'm just doing it for explanation purposes Okay, there we go. We're back to square one. So we have print outcomes user choice and then computer choice So when we use square brackets, we're pretty much accessing a value of a key So using a key. I mean so when we go outcomes We go in this dictionary right here Next we are using the user choice now. Let's say the user has typed in rock If the user types in rock, we will be right here So that's going to be the key we're on and the value is going to be this entire dictionary If the user selects paper The key is going to be paper and then this is going to be the value the entire Dictionary of available events for paper and then if the user selects scissors The key is going to be scissors and then the value is going to be this entire dictionary for the values of scissors, cool Now let's assume the user has selected rock and then the computer choice Somehow comes down to being paper So rock is going to be the user's choice. So we're right here And then based on that against that we're accessing The paper paper key inside the rock Value dictionary. So what is the value for the paper key loss? So rock against paper comes down to a loss Now let's assume the user's choice was paper So if the user choice has been paper and the computer's choice was I don't know Let's say scissors then our value is going to come down to loss So no matter what the user and computer enters This is a full proof program that will run based on any event and give you the right outcome Cool. So now that we've finished with all of it enough of the blabbering and let's actually run this to see if it works So i'm going to go to my command prompt once again and Run this. Okay. User choice is not defined User choice. Okay. I see. I forgot to take out this dummy line I had right here. Sorry Oh, let's go back Uh, select rock paper or scissors. Let's just give it a fresh one Uh, I'm gonna screen rock paper scissors rock You selected rock computer selected rock game outcome was a draw. Let's go rock again I selected rock computer selected paper And I got a loss because paper against rock is obviously a loss for me. Now. Let's go with rock again I selected rock computer selected rock again, and it was a draw. Let's go with paper I selected paper computer selected paper. It was a draw paper again I selected paper and the computer this time on the contrary selected rock So that was a win on me and lastly we're gonna try scissors And then the computer selected paper So we got a win and now let's try and check our error handling. I'm going to type in some gibberish It says game outcome invalid input. So whatever happens, it is not going to crash You guys can also implement scores if you like by Simply replacing these values instead of draw loss or win You can enter something like a number in here and like I don't know Like if it's a draw you can enter a score of one and if it's a loss you can enter a score of zero And for a win you can enter a score of two totally up to you And then you can extract that number and then update the user score as you go So if you guys would like a tutorial on how to do that Please request that in the comment section if you want to have like a score section in this game as well And then the game ends when a specific user reaches a certain amount of score And then it announces the score that user to be the winner So, hope you guys have enjoyed this tutorial. It's been Finally a short tutorial after a while of posting long tutorials So I hope you enjoy this light tutorial Hope you like the use of visual studio code now because it's not going to be too intensive on your eyes I just realized how much that helps and it also helps me code a lot more better because of suggestions and all that Like always guys, if you have any suggestions for other videos Do make sure to drop them in the communities have under my post If you guys would like to support the channel directly you can purchase one of the Um emojis custom emojis in the super chat or you can purchase a highlighted message I'm not pressuring anyone to do so. But if you'd like to do that out of gratitude go ahead um What was it? I'm going to also release another tutorial based on how to produce a gooey version of this game using tiginta So hope you're excited for that It might not be the next video after this because it may take me a bit while To try and figure out how I'm going to do that. But as soon as I'm done with that, I'm going to post it So guys, that's it for today's tutorial and I will see your beautiful faces in the next tutorial. Peace out


Hello everyone. I am Mr. Praveen Ellapa Kumbar. Today we want to see earth station. The learning outcome of this topic is at the end of the session student will be able to explain the concept of earth station. The contents of this topics are introduction. We want to see the what is the means of the earth station. Then after we want to see the earth station architecture and after that one in detail we see the RF section and the baseband section and after that one we want to see the earth station desired consideration. So first one introduction. So here we want to see what is the means of the earth station. So earth station is a collection of equipment that installed on the earth surface that enables the communication over one or more satellites. So earth stations are typically owned by the company that receiving the data from the satellites network. So earth station must operate within the certain specified parameters to maintain the networks stability. So earth stations are a part of a satellites network ground segment. It consists of all earth stations operating in a satellite system. This can be concerned to the end users equipment directly or via terrestrial network. Though the actual architecture of an earth station depends on the application. So we see we want to see earth station architecture. So this is a general purpose earth station architecture. But this earth station will be different for depending upon the applications. So this is a generalized diagram of the earth station. So basically earth station consists of baseband section, RF section and the third one is support facilities. And the user is always connected to the baseband section with the help of the terrestrial interface. So in the baseband section, the baseband section consists of baseband processing circuits, modulator and the demodulator. This modulator for the transmitting side and demodulator for the receiving side. In the RF section, there are two parts. One is uplink and second one is downlink. For the uplink it consists of upconverter, high power amplifier and antenna consists of transmitter as well as the receiver. For the uplink it consists of transmitter. In the downlink it consists of receiver part of the antenna, low noise amplifier and the downconverter. So these are the support facilities. In the support facilities, environment conditioning, monitoring and control of the satellite, the power supply for the earth station. So the major components of an earth station include RF section, baseband equipment and the terrestrial interface. So the earth station has a certain support facilities such as power supply unit with adequate backup, monitoring and control equipment and the thermal and environment conditioning unit. So we want to see the in details RF section. So this diagram shows the RF section. In this RF section, this is called as a uplink channel and this one is called as a downlink channel. Uplink channel consists of upconverter and from that upconverter it provides to the high power amplifier and from that it will give to the antenna of the transmitter part. So antenna consists of the transmitter as well as the receiver part. So in the downlink channel, the receiver part that will give one to the low noise amplifier and that given to the downconverter. So this is a downlink channel. So this is the overall generalized diagram of the RF section. Now the RF section interface with the modem subsystem of the baseband section. The job of the upconverter, the present in the RF section is the uplink channel is to upconvert the baseband signal to the desired frequency. The upconverter signal is then amplified to the desired level before it is fed to the feed system for subsequent transmission to the intended satellite. Similarly, a no noise amplifier amplifies the weak signal received by the antenna. So the amplified signal is then down converted to the IF frequency that is called as intermediate frequency level before it is fed to the modem in the baseband section. The antenna feed system provides the necessary aperture illumination. So antenna introduce the desired polarization and also provides the isolation between the transmitted and the received signals. So now we want to see the baseband section. So in that baseband section the baseband processing circuit the baseband processing circuit connected to the modulator and the demodulator. Now we want to see the detail information about the baseband section. The baseband section performs the modulation and the demodulation functions. So the modulation and the demodulation function with the specific equipment required. Equipment required depending upon the modulation techniques and the multiple access method employed. So for that one we want to see one example. In that example two-way digital communication link we want to consider and for that two-way digital communication link the baseband section would comprise of a digital modem and here we use the time division multiplex techniques. So the baseband section input output is connected to the terrestrial network through a suitable interface known as a terrestrial interface. The terrestrial network could be a fiber optic cable link or microlink or a combination of these two. So the complexity of an earth station architecture depends upon the application. So for example a tvro earth station would be the less complex than the fss earth station interconnecting last traffic nodes. So now we want to see earth station design consideration. So for the design of an earth station it is generally a two-step process. The first step is identification of a earth station requirement specification and the second step is identifying the most cost-effective architecture that achieves the desired specification. So the requirement specification affecting the design of an earth station include types of a service offered that is fixed satellite service broadcast satellite service and the mobile satellite service. So communication requirements that is communication means telephony that data we want to transmit that television that we want to see that etc this related to the communication requirement are required baseband quality at the destination and system capacity and reliability. The major system parameters relevant to the earth station design includes transmitter ERP ERP means effective isotropic radiated power and the receiver figure of merit that is G by T ratio. Now my transmitter ERP is required at the transmitter side receiver figure of merit is considered at the receiver side. So system noise and interface will allowable tracking error. So first we want to see effective isotropic radiated power that is ERP. So ERP gives the combined performance of the HPA that is high power amplifier and the transmitting antenna. So the ERP that is effective isotropic radiated power is the product of the HPA that is high power amplifier at the antenna and the gain of the transmitting antenna. The ERP is expressed in the decibels. ERP now when we measure in terms of a dB then it is the sum of power output of HPA and the gain of the transmitting antenna in dB. So ERP is defined for both the earth station transmitting antenna as well as satellite transmitting antenna. It is important to note that ERP is always measured at the antenna. So some satellite operates have the practice of taking space loss in account while publishing the satellite footprint maps of their users. Footprint means the satellite's range. Now we want to see receiver figure of merit that is G by T ratio. So receiver figure of merit is indicative of how the receiving antenna performs together with the receiving electronics to produce useful signal. The figure of merit is defined as the parameter called G by T ratio which is the ratio of receiving antenna gain to the system noise temperature. So G by T is expressed in decibel per Kelvin. So G by T ratio of the earth station may be enhanced by increasing the receiving antenna gain and lowering the noise temperature. So the references for this topic is thank you.


Hello, welcome to CMC Markets on Tuesday the 20th of October and the weekly market update And it's been a pretty quiet start to trading this week Markets are predominantly preoccupied with events in China or the economic data coming out of China headline GDP came in at 6.9% much better than expected and I think there's a widespread Acknowledgement that that number has been massaged higher the internals have come in an awful lot weaker and certainly in that context what I'm going to be looking at is the current declining commodity prices where the key resistance levels are there because Certainly think what we've seen over the course of the past week is a rather schizophrenic market Certainly that's no better borne out in the FTSE 100 the UK 100 which I'm going to look at and To which the key resistance level remains at the level that I talked about last week around about six and a half thousand Going to be looking at the mining sector specifically BHP and Rio Tinto because I think if we're going to be looking for a recovery in the commodity sector Then I think those two stocks in particular are probably going to be what I would call leading indicators To whether or not we get a significant rebound also going to be looking at commodity copper copper prices rather and also look at the interrelationship between gasoline prices and US crude oil prices Now last week I looked at the UK 100 I looked at the DAX and I looked at the S&P 500 and I looked at the variants. I looked at the varying strengths of the rebounds of those particular Benchmarks this week. I'm particularly interested in the UK 100 simply because of its high correlation to commodity prices and Last week's resistance level which identified at six thousand four hundred and fifty is no less relevant than it was a week ago Certainly in the context of the price action over the past few days It's still a significant resistance level since we peaked there earlier this month. We struggled to get through it We've had one really strong update in the last eight and that suggests to me that markets that are investors in particular are very concerned about being aggressively longer stocks and I think that's largely as a result of the weakness in commodity prices and I think in that context We really need to have a look at copper as a leading indicator for what could happen to not only the FTSE 100 But also mining stocks in general So when we look at copper and this is a daily chart daily candle chart We can get a we get a we can get a sense I think of the overall sentiment and the key resistance levels that I'm looking at If we're going to get a significant rebound in the red metal and we're looking at around about two dollars fifty And that's signified by the horizontal line through the September highs We can see that in the past couple of days we started to roll over Along with the oscillator as well. And I think it's quite I think it's quite interesting that the UK 100 chart that we saw earlier as a simp as a similar Mechanism in terms of the oscillator is starting to roll over and that suggests to me that it's going to be very very difficult for both the UK 100 and copper prices to actually Gain any significant momentum to the upside while below those key resistance levels So we've looked at copper and we've looked at the FTSE 100 now Let's look at Rio Tinto because I think this chart is very interesting indeed We've got a very very big resistance level around about twenty six pound fifty two thousand six hundred and fifty It's also where the two hundred day moving average It's also the July August and the October highs So again, you know, what is going what is going to cause this particular stock to break out to the top side? We do appear to be finding a little bit of support around about twenty three pound sixty But again here the oscillator is starting to roll over Momentum does appear to be waning in light of the recent rebound that we saw at the beginning of October And I think overall, you know, unless we can get some sort of foothold back above this key resistance level and the 200 day Moving average then once again I think the potential is to start to or to continue to trade sideways below this very very key resistance level With BHP, it's a similar sort of story Once again, this is a daily chart and a slightly longer time frame I'm taking a resistance level from the December lows that we saw at the end of last year Comes in around about one thousand two hundred and fifty as we can see currently We've been unable to get back above that key level and once again I think it's very Indicative that an awful lot of these charts are a mirror image of the resistance in copper prices Again, these these two key stocks I think are going to be a very a very significant leading indicator for any potential turnaround in commodity prices Kind of finish up with a quick overlaid chart of US crude prices Overlaid against gasoline prices now We've heard an awful lot of narrative over the past few days about gasoline prices being at six year lows and yet US inflation does appear to be holding up fairly well that being said I think given the lagging effect that we're seeing on this particular chart if we look at the correlation between WTI prices, which is the purple line and Gasoline prices where we got a very strong rebound at the beginning of 2015 and we got a massive divergence Away from crude prices relative to gasoline prices and that held inflation up fairly well In the US economy. We're seeing that divergence start to turn around now We're getting a convergence and as we can see from the most recent chart The gap between gasoline prices and crude oil prices has started to close and actually is now moving away From crude prices that suggests to me that further deflation We affects could start to ripple through the US economy and I think that's why you got I think that's why you're now starting to see the signs of dissent in the FOMC voting committee With respect to those comments made by Lail Brainard and Daniel Tururo last week And it's certainly going to make next week's Fed meeting all the more interesting when you look at charts like this And you see gasoline prices start to fall much faster than crude prices So that's pretty much it for this week. Thanks again for listening It just remains for me to remind you that next Wednesday Colin and myself will be doing an FOMC Preview it's unlikely that we'll see a change in monetary policy next week If you want to listen into that particular webinar, you can sign in right there and All that leaves me to say is thanks very much for listening and I will see you all next week


Unlike many people today, I am an optimist. This strange condition began when I was 15 years old. That was 1996. I discovered that the future of human knowledge is on the World Wide Web. And all my textbooks were out of date. So I told my teachers, I want to quit school and begin my education on the World Wide Web. Surprisingly, all my teachers agreed with me. A year later, I founded a web startup of many. And I get to join this fabulous internet community that runs with this crazy idea. An anarchistic, open, multi-stakeholder political system that still defines the internet today. I'm Audrey Tang, and today, as Taiwan's first digital minister, I'm putting into practice the ideals that I learned when I was 15 years old. And that's rough consensus, that civic participation and radical transparency. Surprisingly, it's working and it's transforming our society. Two and a half years ago, our president, Dr. Tsai Ing-wen, said an inspiring statement in her inauguration speech. She said, before, democracy was a clash between two opposing values. But now, democracy must become a conversation between many diverse values. You may think that a minister is an arbiter to judge between different sides, to judge a set of conflicting values. But as a facilitating minister, I'm asking a different question. I'm asking, given our different positions, can we find some common values? And given the common values, can we find solutions that works for everyone? And indeed, in the past couple of years, what you have seen here, a double robot has been my main way to combat climate change. Now seriously, the jet travel, the jet lags, and airborne travels to the day, lets us only participate in our local domestic or at most regional events. But pretty much daily, I participate in the likes of the UN Internet Governance Forum in all the different continents, and indeed now in Taiwan, it is 11 p.m. it's midnight. And so using this double robotic form, I was able to mentor to coach a team of civic hackers in Madrid for a week, and then flying in finally in the carbon-based interflash life form to continue for another week. And they see me as the same person, just reincarnated in a different way. And so I think this way of telepresence, when I talked with Shuli and Paul Prisciato in the Taiwan Museum of Contemporary Art, I said that the work that I'm doing is really a poetician's work. That is to say, my main work working in politics is just to read and write and perform poems. And so I would like to read you my job description. It's a very short job description, and it's also a poem and also a prayer. And it shows the relationship of the traditional way of a more zero-sum way of looking at technologies versus the new way, the more democratic way of looking at technologies. And the poem goes like this. When we see the Internet of Things, let's make it a Internet of Beings. When we see virtual reality, let's make it a shared reality. When we see machine learning, let's make it collaborative learning. When we see user experience, let's make it about human experience. And whenever anyone tells us that a singularity is near, let us always remember the plurality is here. And so have a really good local time, as we say around here, and enjoy the rest of the program. And thank you for allowing me to appear before you in this digital incarnation. And I look forward to meet you in some time in a carbon incarnation. Thank you.


The apex Islamic body in northern Nigeria, Jamatu Nasir Islam, under the leadership of the Sultan of Sokoto-Mohammed Sa'ad Abu Bakr III, has asked the federal government to address calls for break-up of Nigeria by improving security, tackling the economic hardship and addressing the massive unemployment in the country. The Islamic body, in its end of Ramadan fasting message, said addressing those challenges would reinvent the spirit of patriotism among the citizens for an indivisible Nigeria. The statement signed by Secretary-General Sheikh Dr Khalid Abu Bakr Aliou also urged Muslims to give out despite the economic and security challenges bedeviling the country.


Hey, this is Brett and this 2017 Ram 2500 Megacab Short Box Laramie Sport Appearance Package is stock number 14140Z. I am here at Summit Automotive in Fond du Lac, Wisconsin. You're new and used heavy-duty truck and Ram headquarters. This 2017 Ram 2500 has the 6.4-liter V8 Hemi engine. It's paired up with the 6-speed automatic transmission. This truck has been fully-safetyed and inspected by our service shop. It has a fresh oil and filter change so the fluids have been checked and topped off. This truck is 100% ready to go. I'm going to go all the way around in this video inside underneath, start it up and take a look under the hood to give you the most accurate representation that I can of the truck. Granite Crystal Metallic is the color. I shoot all my videos in 4K. If you like the video, you can subscribe to the YouTube channel, which is youtube.com slash Summit Auto. Click the bell notifications to get updates on the videos I do each and every day. This one has the 20-inch painted black alloy wheels, part of the Sport Appearance Group. It has Michelin LT 8560R20 tires. These tires are like new. I would say 90% of the tread left or more. Frame and underbody is exceptionally clean on this truck as well. This is a clean title history out of Indiana, two owner out of Indiana, a really nice truck. Projector lamp, headlamps, LED running lights, factory fog lights. The Sport Appearance Package gives you the front and rear painted bumpers. This one also has the front bumper parking sensors. You get the gloss black grille and ram logo with that Sport Appearance Package as well. And the hood is in really nice condition. I didn't see any major dents or dings on there. Passengers side front fender is in excellent shape too. And the passengers side front wheel, no major scuffs or scrapes on there. Granite crystal, one of my favorite colors on the Ram. It's got a lot of metal flake to it, really a good looking color. As you go down this side of this 2017 Ram 2500 take note of how clean that body is, how reflective and mirror like that paint is. Take these HD videos so if you're far away or even if you're close by and you just cannot make the trip down, but you're still interested in purchasing the truck, you can see the truck here, the truck, and of confidence in the vehicle that you're looking at. Before you can get here, so when you do get here, there's absolutely no surprises and you can make a smart and informed buying decision from wherever you're at. Now if this video helps you make that buying decision or just make the decision to come and take a look at the truck, let your salesman know that you saw the video, that it was helpful, and that Brett sent you. Back wheels in excellent shape as well and the back tires are in really nice condition too. That frame and underbody back here looks really good and it's like that all the way underneath has all the remaining factory exhaust. Lower rockers and cab corners look great and it does come with the nice painted black step bars. You also get the fender flares part of the Laramie package. Coming around to the back, rear bumper is in great shape, no dents or dings back here. It does have the back up parking sensors. Little towing package which includes the receiver hitch, four pin and seven pin wiring and the tailgate is in really nice condition as well. Has a locking tailgate, shock down assist tailgate, and it does come with a nice bed mat. This one also has LED bed lighting in the bed. The bed's got a little bit of light duty usage but nothing too bad. That shuts nice and solidly and as we go down the driver's side just as clean as I passenger side. No major dents or dings on the box. And for full disclosure this back wheel is just as nice as the rest. Down the rest of the side of the truck, cab and doors all look really good. Has the heated fold up tow mirrors built in directional signals. They do fold up like so and they fold in like that. Take a quick look at the back seats because it's the most impressive part of the mega cab is the back seats. Just a ton of room back here. No rips or tears on any of those seats. Power sliding rear window. All look really good. So these back seats go down two different ways. The first way is you pull this piece right here and the whole backrest goes down and the seat actually drops down flat with the floor too. And what happens there is you get a nice flat floor. So if you got pets you can put both sides down, they got a nice flat place to lay. Or if you want to even take a nap back here yourself there's plenty of room. There's a storage box under here. Latched tether anchors back there. And then the other way that this seat goes down is just the backrest goes down and then you have a higher load floor and you also get a contained storage area so stuff's not going to roll around. So that's pretty neat. These back seats are heated on the outboard side. You get a 12 volt power point back here. You also get a husky all-weather format. Child safety locks on the back doors and the inside and bottoms of the doors. I didn't see any corrosion on them. They look good. Take a look at the VIN sticker here. No Canadian trucks here. And then the tire and loading information sticker.  No rips, no tears on those seats. Laramie embossed into the backrest there. Seats look really good for a 17 memory driver's seat, husky all-weather formats in the front, auto headlamps, power windows locks, mirrors, leather bolster, wood grain trim. And these mirrors do power fold in. I always like showing both sides. So you know that both sides are working properly and they are. We'll hop inside, check out the miles, the radio and everything that this truck has to offer on the interior. Get the Laramie animation on that 7-inch LCD display. Instrument cluster is very nice and clean. You get a digital spinometer, compass and outside temperature display. You can change all those corners to read pretty much whatever you want. Comes with a leather-wrapped heated steering wheel, cruise controls on the right, Bluetooth and information center controls on the left. It does have audio controls on the back of the steering wheel. This one also comes with the six-speed automatic transmission with the optional tap shift. And then you get the UConnect 3C radio. Has the factory navigation system. There's Highway 41. So that is working nicely. You always want to make sure that it's in the right spot and that it's working. AM, FM and Sirius XM radio capabilities. Heated seats, cooled seats and heated steering wheel controls on there. And then you have your backup camera and your cargo cam, both of which are working nicely. You can see what's going on in the bed of the truck.  And then your UConnect apps right there. So a lot of really great things you can do with that radio. Push button start. Turned out four-wheel drive.  Factory brake controller. More tactile, heated and cooled seat buttons as well as heated steering wheel buttons. Ability control, tow haul in the front and rear parking sensors. 115 volt, 150 watt plug-in, keyless entry with remote start. Cell phone holder in the passenger side. Glove boxes, floor mat and seat are in excellent condition. Smells very clean inside this truck. I don't think it's been smoked in. And you get a power sunroof. Map lights, power sign, rear window button and your homelink buttons for your garage door security systems and lighting systems. 911 and assist buttons in the mirror. We'll start it up and take a look under the hood. Starts right up. No check engine lights or anything like that. Take a look at those lights in the front too. I would personally like to thank you for checking out the video today. And hopefully from this HD video, you've been able to verify the quality condition, the options and of course, cleanliness of this truck all the way around inside. Now, under the hood, we have the 6.4 liter V8 Hemi engine. Engine bay is very clean, runs very smooth. Once again, this truck has been fully safe and inspected by our service shop, has a fresh oil and filter change. All the fluids have been checked and topped off. This truck is 100% ready to go. There is the emission sticker.  And I would highly recommend this truck from a quality and condition standpoint. Very clean inside, outside, like new tires. It's got the right look. It's the right color, optioned out nicely and very nice truck. I'd ship this one anywhere and to see more pictures of this truck or one of our other 550 new and used cars, trucks, SUVs, minivans, wranglers, halftones, three cotertones, one tons, you name it. We got to go to the website right there, summitauto.com. Full pictures and descriptions of every single vehicle all at summitauto.com. If you'd like to check out more HD videos, you can go to youtube.com slash summitauto. Click the bell notifications, get updates on the videos I do each and every day, as well as having access to one of the largest catalogs of vehicle and heavy duty truck walk-arounds on YouTube. Almost 9,000 videos and counting. In fact, in a second you will see a link to subscribe to my YouTube channel on the upper left. A link to all the Ram 2500 truck videos I've ever done in the upper right. A link to this vehicle on our website on the lower left. And a link to one of our latest YouTube videos on the lower right. Click the check us out. We're super excited to help you with this ultra clean 2017 Ram 2500 Mega Cab Short Box Laramie Sport Appearance Package in Granite Crystal Metallic. Thanks again for checking out the video. Remember to like, subscribe, and share on the YouTube channel. I really appreciate it. Thanks again.