[GH-ISSUE #572] Remote Desktop performance improvements #332

Open
opened 2026-02-27 15:49:54 +03:00 by kerem · 43 comments
Owner

Originally created by @ValonK on GitHub (Dec 25, 2016).
Original GitHub issue: https://github.com/quasar/Quasar/issues/572

Hej,
i'm currently working a lot with ffmpeg at Work writing basically a Desktop Stream Software something like Teamviewer without control.
It's really amazing what you can do with ffmpeg (30-60fps x1080p). So I was thinking and want to know from @MaxXor would this be something you might want? :)

Originally created by @ValonK on GitHub (Dec 25, 2016). Original GitHub issue: https://github.com/quasar/Quasar/issues/572 Hej, i'm currently working a lot with ffmpeg at Work writing basically a Desktop Stream Software something like Teamviewer without control. It's really amazing what you can do with ffmpeg (30-60fps x1080p). So I was thinking and want to know from @MaxXor would this be something you might want? :)
Author
Owner

@chico-depressive commented on GitHub (Dec 26, 2016):

@ValonK possible to get 4bit and 1bit streams with ffmpeg?

<!-- gh-comment-id:269193703 --> @chico-depressive commented on GitHub (Dec 26, 2016): @ValonK possible to get 4bit and 1bit streams with ffmpeg?
Author
Owner

@ValonK commented on GitHub (Dec 26, 2016):

Yeah its possible ! ffmpeg is very powerful its been developed by so many people. https://ffmpeg.org/

<!-- gh-comment-id:269214869 --> @ValonK commented on GitHub (Dec 26, 2016): Yeah its possible ! ffmpeg is very powerful its been developed by so many people. https://ffmpeg.org/
Author
Owner

@ghost commented on GitHub (Dec 31, 2016):

@ValonK Out of curiosity, would this be applicable to webcam streaming as well? I'm not sure why the current implementation of that seems so slow/bandwidth intensive when programs like skype seem to be able to handle it fine (and even meterpreter's method seems to give higher fps video with better quality)

Either way, improving the desktop streaming would be a really nice improvement! Especially if you could set some parameters on it.

<!-- gh-comment-id:269859511 --> @ghost commented on GitHub (Dec 31, 2016): @ValonK Out of curiosity, would this be applicable to webcam streaming as well? I'm not sure why the current implementation of that seems so slow/bandwidth intensive when programs like skype seem to be able to handle it fine (and even meterpreter's method seems to give higher fps video with better quality) Either way, improving the desktop streaming would be a really nice improvement! Especially if you could set some parameters on it.
Author
Owner

@abdullah2993 commented on GitHub (Dec 31, 2016):

Among other things the current implementation of remote desktop is passed on PULL model instead of traditional PUSH based model which actually results in low performance because the server requests the next frame. See https://github.com/quasar/QuasarRAT/issues/502

<!-- gh-comment-id:269874729 --> @abdullah2993 commented on GitHub (Dec 31, 2016): Among other things the current implementation of remote desktop is passed on PULL model instead of traditional PUSH based model which actually results in low performance because the server requests the next frame. See https://github.com/quasar/QuasarRAT/issues/502
Author
Owner

@ValonK commented on GitHub (Jan 1, 2017):

@Cowboy-Curtis with FFmpeg you can stream everything that is streamable ;) I will start with a prototype and show some of the capabilities of FFmpeg. The only problem is that the ffmpeg.exe needs to be on the victims Pc. So basically if the stream gets started we first need to upload ffmpeg.exe ~40.mb, but believe me its worth it!!! As an example I streamed a whole movie from my work PC to my Home PC without an issue!!

<!-- gh-comment-id:269888584 --> @ValonK commented on GitHub (Jan 1, 2017): @Cowboy-Curtis with FFmpeg you can stream everything that is streamable ;) I will start with a prototype and show some of the capabilities of FFmpeg. The only problem is that the ffmpeg.exe needs to be on the victims Pc. So basically if the stream gets started we first need to upload ffmpeg.exe ~40.mb, but believe me its worth it!!! As an example I streamed a whole movie from my work PC to my Home PC without an issue!!
Author
Owner

@ValonK commented on GitHub (Jan 1, 2017):

Question for you guys who are interested before I Start to implement. Do you guys prefer to receive the stream inside Quasar or start just Vlc only player window? Vlc does work much better than the .NET Control.

<!-- gh-comment-id:269889086 --> @ValonK commented on GitHub (Jan 1, 2017): Question for you guys who are interested before I Start to implement. Do you guys prefer to receive the stream inside Quasar or start just Vlc only player window? Vlc does work much better than the .NET Control.
Author
Owner

@DragonzMaster commented on GitHub (Jan 1, 2017):

We can keep the current implementation and add the FFmpeg method along side with it but we need to try to find a lite version of FFmpeg to decrease the size

<!-- gh-comment-id:269895377 --> @DragonzMaster commented on GitHub (Jan 1, 2017): We can keep the current implementation and add the FFmpeg method along side with it but we need to try to find a lite version of FFmpeg to decrease the size
Author
Owner

@ValonK commented on GitHub (Jan 1, 2017):

I will see if I can find some lite version.

<!-- gh-comment-id:269902029 --> @ValonK commented on GitHub (Jan 1, 2017): I will see if I can find some lite version.
Author
Owner

@chico-depressive commented on GitHub (Jan 4, 2017):

@ValonK can you give us a proof of concept? I am very interested in this idea, I need faster remote desktop sessions

<!-- gh-comment-id:270495474 --> @chico-depressive commented on GitHub (Jan 4, 2017): @ValonK can you give us a proof of concept? I am very interested in this idea, I need faster remote desktop sessions
Author
Owner

@ValonK commented on GitHub (Jan 5, 2017):

Hej,

I'm working on it. it takes time and it is a lot of work. I did find a video with Linux but it's the same with windows. When I have a working build I will post it here. https://www.youtube.com/watch?v=SDU0vb5KVqo
if anybody wants to help me would be appreciated (i hate windows forms :) ) I'm a wpf/MVVM guy.

<!-- gh-comment-id:270688504 --> @ValonK commented on GitHub (Jan 5, 2017): Hej, I'm working on it. it takes time and it is a lot of work. I did find a video with Linux but it's the same with windows. When I have a working build I will post it here. https://www.youtube.com/watch?v=SDU0vb5KVqo if anybody wants to help me would be appreciated (i hate windows forms :) ) I'm a wpf/MVVM guy.
Author
Owner

@ValonK commented on GitHub (Jan 12, 2017):

Work is in progress guys http://imgur.com/a/5sPzl :)

<!-- gh-comment-id:272287793 --> @ValonK commented on GitHub (Jan 12, 2017): Work is in progress guys http://imgur.com/a/5sPzl :)
Author
Owner

@itapi commented on GitHub (Jan 16, 2017):

@ValonK i would be very happy to see this!
I also started working on a small codec....involving few techniques...stuck somewhere...haha

<!-- gh-comment-id:272916860 --> @itapi commented on GitHub (Jan 16, 2017): @ValonK i would be very happy to see this! I also started working on a small codec....involving few techniques...stuck somewhere...haha
Author
Owner

@chico-depressive commented on GitHub (Jan 19, 2017):

@ValonK thank you sir! can you provide us with 4bit and 1bit lossless/lossy compression?

<!-- gh-comment-id:273754114 --> @chico-depressive commented on GitHub (Jan 19, 2017): @ValonK thank you sir! can you provide us with 4bit and 1bit lossless/lossy compression?
Author
Owner

@chico-depressive commented on GitHub (Jan 23, 2017):

@ValonK sir, I can help you with something? Got some free time and want to learn

<!-- gh-comment-id:274516467 --> @chico-depressive commented on GitHub (Jan 23, 2017): @ValonK sir, I can help you with something? Got some free time and want to learn
Author
Owner

@chico-depressive commented on GitHub (Jan 30, 2017):

@ValonK any progress this days?

<!-- gh-comment-id:276073184 --> @chico-depressive commented on GitHub (Jan 30, 2017): @ValonK any progress this days?
Author
Owner

@ValonK commented on GitHub (Jan 30, 2017):

@chico-depressive there isn't much left , we have a deadline currently at Work. I will try to complete it this Weekend.

<!-- gh-comment-id:276148011 --> @ValonK commented on GitHub (Jan 30, 2017): @chico-depressive there isn't much left , we have a deadline currently at Work. I will try to complete it this Weekend.
Author
Owner

@chico-depressive commented on GitHub (Jan 31, 2017):

@ValonK sir, if you need any help please tell me

how did you get this knowledge? you read a lot of books?

<!-- gh-comment-id:276341133 --> @chico-depressive commented on GitHub (Jan 31, 2017): @ValonK sir, if you need any help please tell me how did you get this knowledge? you read a lot of books?
Author
Owner

@ValonK commented on GitHub (Jan 31, 2017):

Thanks @chico-depressive
Yeah I went to university and now I'm working as a dev :)
You can help me with Testing because I'm not using Quasar and I don't have any Machines that i "control", so testing this is not possible for me when I complete the Feature you could Test and Report any bugs or improvements to me.

<!-- gh-comment-id:276389026 --> @ValonK commented on GitHub (Jan 31, 2017): Thanks @chico-depressive Yeah I went to university and now I'm working as a dev :) You can help me with Testing because I'm not using Quasar and I don't have any Machines that i "control", so testing this is not possible for me when I complete the Feature you could Test and Report any bugs or improvements to me.
Author
Owner

@chico-depressive commented on GitHub (Feb 1, 2017):

@ValonK consider it tested :)

It will suport for 1bit/4bit compression lossless/lossy?

Do you know if we can speed it up by using the gpu to render the video stream?

<!-- gh-comment-id:276637720 --> @chico-depressive commented on GitHub (Feb 1, 2017): @ValonK consider it tested :) It will suport for 1bit/4bit compression lossless/lossy? Do you know if we can speed it up by using the gpu to render the video stream?
Author
Owner

@itapi commented on GitHub (Feb 2, 2017):

@ValonK @chico-depressive the main boost will come from devleoping a smart scanning algorithm which can easily detect changed regions...fast and accurate..i'm working on somthing like that..
we can work on it together if you want guys...

<!-- gh-comment-id:277051593 --> @itapi commented on GitHub (Feb 2, 2017): @ValonK @chico-depressive the main boost will come from devleoping a smart scanning algorithm which can easily detect changed regions...fast and accurate..i'm working on somthing like that.. we can work on it together if you want guys...
Author
Owner

@ValonK commented on GitHub (Feb 2, 2017):

@chico-depressive it all depends on internet connection on both sides , the Connection is the most important thing!

@itapi Sure sound very interesting, we can when this feature is finished

<!-- gh-comment-id:277064967 --> @ValonK commented on GitHub (Feb 2, 2017): @chico-depressive it all depends on internet connection on both sides , the Connection is the most important thing! @itapi Sure sound very interesting, we can when this feature is finished
Author
Owner

@ghost commented on GitHub (Feb 19, 2017):

Im glad to know youre still around and working on this, and I don't mean to sound like a beggar, but do you have any ETA on when this might be finished? It's something I'm really looking forward to!

<!-- gh-comment-id:280888548 --> @ghost commented on GitHub (Feb 19, 2017): Im glad to know youre still around and working on this, and I don't mean to sound like a beggar, but do you have any ETA on when this might be finished? It's something I'm really looking forward to!
Author
Owner

@chico-depressive commented on GitHub (Feb 20, 2017):

@Cowboy-Curtis @ValonK me too, any help you need to speed it up, just tell me

<!-- gh-comment-id:280994895 --> @chico-depressive commented on GitHub (Feb 20, 2017): @Cowboy-Curtis @ValonK me too, any help you need to speed it up, just tell me
Author
Owner

@ValonK commented on GitHub (Feb 21, 2017):

Ok guys yeah, here's my discord so we can talk tomorrow and you can help me..
https://discord.gg/8Nt45 :)

<!-- gh-comment-id:281448687 --> @ValonK commented on GitHub (Feb 21, 2017): Ok guys yeah, here's my discord so we can talk tomorrow and you can help me.. https://discord.gg/8Nt45 :)
Author
Owner

@chico-depressive commented on GitHub (Feb 23, 2017):

@ValonK great! but invite expired for this link

<!-- gh-comment-id:281871082 --> @chico-depressive commented on GitHub (Feb 23, 2017): @ValonK great! but invite expired for this link
Author
Owner

@ValonK commented on GitHub (Feb 23, 2017):

Sorry I'm new in discord I will give you new one when I'm home or you give us yours

<!-- gh-comment-id:281920769 --> @ValonK commented on GitHub (Feb 23, 2017): Sorry I'm new in discord I will give you new one when I'm home or you give us yours
Author
Owner

@chico-depressive commented on GitHub (Mar 12, 2017):

@ValonK hi, do you have skype or some kind of contact? thinking about donating to speed up the project, do you accept bitcoin?

<!-- gh-comment-id:285982875 --> @chico-depressive commented on GitHub (Mar 12, 2017): @ValonK hi, do you have skype or some kind of contact? thinking about donating to speed up the project, do you accept bitcoin?
Author
Owner

@knackrack615 commented on GitHub (Mar 30, 2017):

@ValonK Are you still working on this? i have some free time and some knowledge regarding ffmpeg

Send us a discord link when you have some time :)

<!-- gh-comment-id:290445285 --> @knackrack615 commented on GitHub (Mar 30, 2017): @ValonK Are you still working on this? i have some free time and some knowledge regarding ffmpeg Send us a discord link when you have some time :)
Author
Owner

@itapi commented on GitHub (Mar 30, 2017):

@knackrack615 @chico-depressive i'm working on self implemented codec ,using libjpgTurbo library,and many other improvments.
your welcome help.
my skype name is Itamar.Yehezkel2

<!-- gh-comment-id:290450998 --> @itapi commented on GitHub (Mar 30, 2017): @knackrack615 @chico-depressive i'm working on self implemented codec ,using `libjpgTurbo` library,and many other improvments. your welcome help. my skype name is Itamar.Yehezkel2
Author
Owner

@chico-depressive commented on GitHub (Mar 30, 2017):

great guyz, let's make remote desktop as fast as possible, challenge accepted, lol

<!-- gh-comment-id:290486657 --> @chico-depressive commented on GitHub (Mar 30, 2017): great guyz, let's make remote desktop as fast as possible, challenge accepted, lol
Author
Owner

@chico-depressive commented on GitHub (Mar 30, 2017):

@itapi I do not know if you know, but google released recently a new libjpg with better compresion rates just forgot the name

<!-- gh-comment-id:290487127 --> @chico-depressive commented on GitHub (Mar 30, 2017): @itapi I do not know if you know, but google released recently a new libjpg with better compresion rates just forgot the name
Author
Owner

@chico-depressive commented on GitHub (Mar 30, 2017):

we can all talk on IRC, maybe create a channel for quasar 💃💃💃💃💃💃💃💃 💯 🥇🥇🥇🥇🥇🥇🥇

<!-- gh-comment-id:290489498 --> @chico-depressive commented on GitHub (Mar 30, 2017): we can all talk on IRC, maybe create a channel for quasar 💃💃💃💃💃💃💃💃 💯 🥇🥇🥇🥇🥇🥇🥇
Author
Owner

@chico-depressive commented on GitHub (Mar 30, 2017):

anyone using jabber?

<!-- gh-comment-id:290491212 --> @chico-depressive commented on GitHub (Mar 30, 2017): anyone using jabber?
Author
Owner

@maddnias commented on GitHub (Mar 30, 2017):

An IRC channel would be cool.

<!-- gh-comment-id:290501542 --> @maddnias commented on GitHub (Mar 30, 2017): An IRC channel would be cool.
Author
Owner

@itapi commented on GitHub (Mar 30, 2017):

@chico-depressive this is the guetzli extremly slow.. not for use right now

<!-- gh-comment-id:290528762 --> @itapi commented on GitHub (Mar 30, 2017): @chico-depressive this is the [guetzli](https://github.com/google/guetzli) extremly slow.. not for use right now
Author
Owner

@chico-depressive commented on GitHub (Mar 30, 2017):

Note: Guetzli uses a large amount of memory. You should provide 300MB of memory per 1MPix of the input image.

Note: Guetzli uses a significant amount of CPU time. You should count on using about 1 minute of CPU per 1 MPix of input image.

O.O

<!-- gh-comment-id:290530086 --> @chico-depressive commented on GitHub (Mar 30, 2017): Note: Guetzli uses a large amount of memory. You should provide 300MB of memory per 1MPix of the input image. Note: Guetzli uses a significant amount of CPU time. You should count on using about 1 minute of CPU per 1 MPix of input image. O.O
Author
Owner

@chico-depressive commented on GitHub (Mar 30, 2017):

@itapi "libjpeg-turbo is a JPEG image codec that uses SIMD instructions (MMX, SSE2, AVX2, NEON, AltiVec) to accelerate baseline JPEG compression and decompression on x86, x86-64, ARM, and PowerPC systems."

cool!

<!-- gh-comment-id:290531443 --> @chico-depressive commented on GitHub (Mar 30, 2017): @itapi "libjpeg-turbo is a JPEG image codec that uses SIMD instructions (MMX, SSE2, AVX2, NEON, AltiVec) to accelerate baseline JPEG compression and decompression on x86, x86-64, ARM, and PowerPC systems." cool!
Author
Owner

@knackrack615 commented on GitHub (Mar 31, 2017):

Alright everyone, i've made a Discord server for Quasar where we can all talk

https://discord.gg/4vSJ372

(You don't need a discord account to join but it would be a good idea to make one)

<!-- gh-comment-id:290598769 --> @knackrack615 commented on GitHub (Mar 31, 2017): Alright everyone, i've made a Discord server for Quasar where we can all talk https://discord.gg/4vSJ372 (You don't need a discord account to join but it would be a good idea to make one)
Author
Owner

@ghost commented on GitHub (Jun 10, 2017):

Kinda curious what happened with this, it seemed like so many people were interested in it but checking up on things it looks like nothing solid has gotten done yet :( Quasar rat with @ValonK 's audio recording is pretty much perfect except for it's current remote desktop/webcam streaming. I've tried a lot of other software out there right now and they all have problems that make them nonviable.
I know everyone is busy with their own lives though, and I will continue to look forward to whatever the people the people working on this come up with! I will help with whatever I can but lack coding knowledge/experience but always like learning.

<!-- gh-comment-id:307539255 --> @ghost commented on GitHub (Jun 10, 2017): Kinda curious what happened with this, it seemed like so many people were interested in it but checking up on things it looks like nothing solid has gotten done yet :( Quasar rat with @ValonK 's audio recording is pretty much perfect except for it's current remote desktop/webcam streaming. I've tried a lot of other software out there right now and they all have problems that make them nonviable. I know everyone is busy with their own lives though, and I will continue to look forward to whatever the people the people working on this come up with! I will help with whatever I can but lack coding knowledge/experience but always like learning.
Author
Owner

@yankejustin commented on GitHub (Jul 19, 2017):

@Cowboy-Curtis From observation it seems that this project is at an indefinite standstill until MaxXor is out of college and has time to devote or this becomes a commercial (paid) project.
Unfortunate, but most big projects eventually run into this wall. 😢

<!-- gh-comment-id:316248173 --> @yankejustin commented on GitHub (Jul 19, 2017): @Cowboy-Curtis From observation it seems that this project is at an indefinite standstill until MaxXor is out of college and has time to devote or this becomes a commercial (paid) project. Unfortunate, but most big projects eventually run into this wall. 😢
Author
Owner

@ValonK commented on GitHub (Jul 19, 2017):

I have much work going on private but... this remote desktop stream is not dead. This should be experimental since it requires lot of bandwith on both sides. I will continue this.

The north never forgets. ;)

<!-- gh-comment-id:316287603 --> @ValonK commented on GitHub (Jul 19, 2017): I have much work going on private but... this remote desktop stream is not dead. This should be experimental since it requires lot of bandwith on both sides. I will continue this. The north never forgets. ;)
Author
Owner

@ghost commented on GitHub (Jul 21, 2017):

Glad to hear people out there still care! I actually spent some time learning about ffmpeg which was interesting and it's fairly easy to just dump it on a remote machine with a batch file that streams desktop/webcam back to you. Much better than what's currently in quasarrat since I don't care about bandwidth and an option people might want to learn who aren't tech savvy enough to help code something into this rat.

<!-- gh-comment-id:316878161 --> @ghost commented on GitHub (Jul 21, 2017): Glad to hear people out there still care! I actually spent some time learning about ffmpeg which was interesting and it's fairly easy to just dump it on a remote machine with a batch file that streams desktop/webcam back to you. Much better than what's currently in quasarrat since I don't care about bandwidth and an option people might want to learn who aren't tech savvy enough to help code something into this rat.
Author
Owner

@ValonK commented on GitHub (Jul 21, 2017):

Fffmpeg is powerful. This is how I'm trying to build this into Quasar:

  1. Check if User has Vlc or FFmpeg.
  2. If so Choose Options in Quasar GUI.
  3. The FFmpeg Command should look something like https://pastebin.com/jxkpaYFM
  4. Send Command to User and Start Hidden FFmpeg or VLC Process.
  5. Start Admin Window in Quasar or VLC to watch the Stream.

Potential Problems:

High Bandwith on both Sides
High Ram or CPU on User Machine, potential detection

<!-- gh-comment-id:316927030 --> @ValonK commented on GitHub (Jul 21, 2017): Fffmpeg is powerful. This is how I'm trying to build this into Quasar: 1. Check if User has Vlc or FFmpeg. 2. If so Choose Options in Quasar GUI. 3. The FFmpeg Command should look something like https://pastebin.com/jxkpaYFM 4. Send Command to User and Start Hidden FFmpeg or VLC Process. 5. Start Admin Window in Quasar or VLC to watch the Stream. Potential Problems: High Bandwith on both Sides High Ram or CPU on User Machine, potential detection
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/Quasar#332
No description provided.