Mr Funk Posted August 31, 2008 Share Posted August 31, 2008 Was recently asked to create a sytem that will allow a user to access and play media from another PC, all without using remote assistance. The media sound has to come out of the NAS style device (Will be using an old system for this) that will be attached to the network. The machine has all your general perks of a normal Pc - sound card, HDD, DVD-RW, etc. - but the machine will be hidden away so no interaction is possible. Had a look around google and asked a few tech's that I know - but so far no dice. Any help/input is much appreciated. thanks Quote Link to comment Share on other sites More sharing options...
moonlit Posted August 31, 2008 Share Posted August 31, 2008 A simple Samba share will do the trick, using either Samba on a *nix box or a shared folder/drive on a Windows box. Files can then be accessed remotely. If you need to actually play the audio on that box, try WinAmp Remote. Quote Link to comment Share on other sites More sharing options...
RogueHart Posted August 31, 2008 Share Posted August 31, 2008 i think winamp remote would do well for this since it allows you to access your music from any device that can connect to the internet and play flash files. it basically connects to your winamp and scans all the music in your library. when you connect to the website you will be asked to login. login and it will let you get access to all the music and videos in your winamp library. it streams them via a flash player to the device, computer, game system your using. Quote Link to comment Share on other sites More sharing options...
Steve8x Posted August 31, 2008 Share Posted August 31, 2008 should the user be able to choose any song to listen to? should they be able to not only listen but download the music files as well? if the answer to those is no then I would do streaming audio with winamp. I've done it before with an IceCast server, you make a playlist in winamp and then have it stream through the icecast server... The stream can be played in any thing that plays .m3u files (your live stream) windows media player can play them! I also have a flash player that can connect to the stream as well! ;) this way the user cannot download the files, only hear them in the stream, also they can't change the song. It's like a radio broadcast in a way... There is a way to convert the stream into mp3 files though ex. (streamripper) otherwise if you wanted the user's to be able to download the songs, and choose what they want to listen to, then as moonlit suggested a shared folder will do the trick. What I like to do though is put the music files on a webserver and have a flash based web player play them in like a playlist. Then they can choose any song and it plays right off the web browser... They can also download them (actually if they're listening to it they've already downloaded it its in there browser cache) If you'd want users to be able to listen to any song but NOT download them, then you'd have to make a more complicated flash player, like myspace.com's player for example, you can't download the mp3's unless the artist allows it. Only listen to them, They achieve that by sending a stream instead of the actual mp3 file! but like all streams they can be converted back to mp3 :) but its more secure... Quote Link to comment Share on other sites More sharing options...
plokey Posted September 1, 2008 Share Posted September 1, 2008 I have used MPD on linux on a remote computer to playback audio remotely. There are web based clients as well as native clients for multiple operating systems (mostly *nix systems though) for controlling MPD. I used PulseAudio as the sound server because it was the easiest to set up and was already installed on the linux distro i had. Tutorial for using MPD with PulseAudio - http://mpd.wikia.com/wiki/PulseAudio MPD clients - http://www.musicpd.org/clients.shtml Quote Link to comment Share on other sites More sharing options...
Mr Funk Posted September 1, 2008 Author Share Posted September 1, 2008 hmmmm, I must not have explained my problem properly. The sound has got to come out of the box in the cupboard as this will be hooked up to the sound system in the house. So Winamp Remote wont do the trick as that will make the sound come out of,in this case, the laptop. Ill make a crappy paint drawing in the morning but for now - i need to sleep. Quote Link to comment Share on other sites More sharing options...
digip Posted September 1, 2008 Share Posted September 1, 2008 this way the user cannot download the files, only hear them in the stream, also they can't change the song. It's like a radio broadcast in a way... Off topic a bit, but if you are converting them to flash, then yeah, they can't get it as an mp3 directly from the URL of the flash player, but if the flash player streams it and hides the location of the mp3, all you need to do is load wireshark before playing the mp3 file, and then you will be able to see where the mp3 is stored and you can download it. I do this all the time on most band websites that use flash mp3 players to hide their files. It also works on sites like Pandora and MySpace Music. I can also demux an mp3 (or wav) out of Flash video and audio files using either Media Player Classic or SoTHink's Flash Decompiler if a site has embeded it in the flash file itself. :) Quote Link to comment Share on other sites More sharing options...
digip Posted September 1, 2008 Share Posted September 1, 2008 hmmmm, I must not have explained my problem properly. The sound has got to come out of the box in the cupboard as this will be hooked up to the sound system in the house. So Winamp Remote wont do the trick as that will make the sound come out of,in this case, the laptop. Ill make a crappy paint drawing in the morning but for now - i need to sleep. Is this sound for multiple rooms, or just a panel in one room that uses the machine behind the cupboard? What is controlling the NAS on the network, the laptop? And how is the speaker system wired/pluged in? To the Nas sound card? Is the speaker system wired throug the home and in the walls? Do you have to install speakers? I know, I ask a lot of questions, but I just wanted to get an idea of the layout of the house you are putting this in and what kid of hookup your are doing for the sound. RCA cables, wireless, already existing speaker system in the walls, etc. Personally, I would just have the NAS setup with an HTTP server, plus wireless audio throughout the house using the NAS soundcard as the source and use any other pc in the house to talk to the NAS via a webpage. Start up whatever songs you want played through the NAS sound card to the speaker system (wired or wireless). Then write a little web app you can access via the webpage on the local network to start and stop the playlist, create playlists, add files, delete files, etc, etc. Steve8x has worked out a nice front end to a php script that gives you complete control of a machine via a webpage, so it can be modded to do pretty much anything I would think, like start a media player to play the mp3's, create the playlists, and so on. Quote Link to comment Share on other sites More sharing options...
Mr Funk Posted September 1, 2008 Author Share Posted September 1, 2008 that PHP script sounds like it would do the trick. Any link/tutorials for it? Quote Link to comment Share on other sites More sharing options...
digip Posted September 1, 2008 Share Posted September 1, 2008 that PHP script sounds like it would do the trick. Any link/tutorials for it? http://hak5.org/forums/index.php?showtopic=9662 Also, PM Steve8x so maybe you guys can collab on it more to get it working to your liking, then you can post the setup for others to see and maybe try themselves. Quote Link to comment Share on other sites More sharing options...
Mr Funk Posted September 1, 2008 Author Share Posted September 1, 2008 Thanks for the link, Only problem now is I cant code at all - was hoping the script would be all pre-built - never to late to learn though :) Quote Link to comment Share on other sites More sharing options...
Deveant Posted September 1, 2008 Share Posted September 1, 2008 there is a Remote built for VLC and Winamp, i have the copy of the winamp one on my PSP, and works great over the WiFi, ill have a look for the PC version for you. - Edit - Im back, here is what I've got, and theirs a few options just for winamp: http://www.winamp.com/plugins/details/6182 http://sourceforge.net/projects/mlwww/ http://www.winamp.com/plugins/details/139139 If you want more, http://www.winamp.com/plugins/search/?q=remote Simple plugin search on Winamp comes up with lots. Quote Link to comment Share on other sites More sharing options...
Mr Funk Posted September 1, 2008 Author Share Posted September 1, 2008 Since I only need it for sound that looks perfect You are officially amazing ;) Quote Link to comment Share on other sites More sharing options...
Deathdefyer2002 Posted September 2, 2008 Share Posted September 2, 2008 You might want to give SlimServer a try! Quote Link to comment Share on other sites More sharing options...
Steve8x Posted September 2, 2008 Share Posted September 2, 2008 @Mr Funk great to see you solved your problem! @digip Does that still work? getting the URL to the song on myspace and downloading it? I thought you USED to be able to do that but they changed it so you can't anymore... By randomly changing the name of the mp3 file stored on the server. I used to do it to but you only had like a 10 second window to be downloading the file, if you were too slow then the file would already have its name changed and you'd get a file not found error... I'm guessing you haven't tried this recently? To prove you wrong I created a sample program! it sends a packet to mediaservices.myspace.com with a friendID to get the xml file which holds the song playlist info, which has fields specifying the url of the song to download... it seems as if the url always gives a 404 error, not even allowing that 10 second window anymore! :( its a DevCPP project. Specify a friend ID and click "Get Songs" it will display the songs the music myspace page has in the list box. Then select a song and click download and it will find which url is for the selected song and load the url into your default web browser for download... sad thing is, you get a 404: file not found error no matter how fast you click download !!! So if I'm doing it wrong please let me know how I can fix my program to be able to get it to work, try it with your wireshark again and let me know your results... else I'll have to figure out how to convert an RMTP stream into a mp3 file... project files: http://popeax.com/myspacejuke.zip source: //Myspace Juke v1.0 - downloads songs from myspace //even when the download link is not available //by Steve8x #include <winsock2.h> #include <windows.h> #include <stdio.h> #include "EasyControls.h" #include "EasySockets.h" // Simple Winsock Classes char* HOST = "mediaservices.myspace.com"; char* HEADER = "GET /services/media/musicplayerxml.ashx?b=%s"; //friendID will be in place of '%s' void WorkerThread(void); void DownloadThread(void); int ListSongs(void); int cmp(char*, char*, int); char* head = 0; char* postdata = 0; char* recvdata = 0; char* songs = 0; char dbg[200]; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmd, int nCmdShow) {     MSG Msg;     WNDCLASSEX wc;     hInst = hInstance;           wc.cbSize = sizeof(WNDCLASSEX);     wc.hInstance = hInstance;     wc.lpszClassName = "MyspaceJuke_Class";     wc.lpfnWndProc = WndProc;     wc.style = CS_DBLCLKS;     wc.hIcon = LoadIcon(hInst, MAKEINTRESOURCE(101));     wc.hIconSm = LoadIcon(hInst, MAKEINTRESOURCE(101));     wc.hCursor = LoadCursor(0, IDC_ARROW);     wc.lpszMenuName = NULL;     wc.cbClsExtra = 0;     wc.cbWndExtra = 0;              wc.hbrBackground = (HBRUSH)GetStockObject(0);         RegisterClassEx(&wc);         // Initialize common controls library!     InitCommonCtrls(); // to make sure you can see the controls!         //Create the window     hwnd = CreateWindowEx(0, "MyspaceJuke_Class", "MyspaceJuke", WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX|WS_CLIPSIBLINGS,             CW_USEDEFAULT, CW_USEDEFAULT, 290, 150, HWND_DESKTOP, 0, hInstance, 0);         CreateTextEx(hwnd, "FriendID:", 1, 1, 60, 22, 200);     fID = CreateEditEx(hwnd, 0, 0, 0, 65, 1, 135, 22, 400);     CreateButtonEx(hwnd, "Get Songs", 202, 1, 80, 22, 420);         CreateTextEx(hwnd, "Select Song:", 1, 30, 100, 20, 201);     song = CreateDropDownEx(hwnd, 0, 1, 50, 200, 100, 300);     CreateButtonEx(hwnd, "Download", 202, 50, 80, 22, 421);         CreateTextEx(hwnd, "© 2008 Steve8x", 85, 90, 150, 22, 202);         songs = (char*)malloc(5000);     recvdata = (char*)malloc(100000);     //Show our window     ShowWindow(hwnd, nCmdShow);     UpdateWindow(hwnd);     //Init winsock 2.2     WSADATA wsaData = {0};     WSAStartup(MAKEWORD(2, 2), &wsaData);         while(GetMessage(&Msg, 0, 0, 0))     {         TranslateMessage(&Msg);         DispatchMessage(&Msg);     }     return Msg.wParam; }     LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {     switch (message)     {          case WM_COMMAND:             if(wParam == 420) //Get Songs button pressed             {                 CreateThread(0, 0, (LPTHREAD_START_ROUTINE)&WorkerThread, 0, 0, 0);             }             if(wParam == 421) //Download button pressed             {                 CreateThread(0, 0, (LPTHREAD_START_ROUTINE)&DownloadThread, 0, 0, 0);             }             break;                     case WM_LBUTTONDOWN: //I do this for all my app's I like dragging the window from anywhere             SendMessage(hWnd, WM_NCLBUTTONDOWN, HTCAPTION, lParam);             break;                                     case WM_CTLCOLORSTATIC:             SetBkMode((HDC)wParam, TRANSPARENT);             return (LRESULT)GetStockObject(WHITE_BRUSH);             break;                     case WM_CLOSE:             free(recvdata);             free(songs);             WSACleanup();             PostQuitMessage(0);             break;                     default:              return DefWindowProc (hWnd, message, wParam, lParam);     }     return 0; }         void WorkerThread() {     xClient* cli = new xClient;     head = (char*)malloc(1000);     postdata = (char*)malloc(10000);         //malloc does not init memory to zero     ZeroMemory(head, 1000);     ZeroMemory(postdata, 10000);     ZeroMemory(recvdata, 100000);         GetWindowTextA(fID, dbg, 101);     sprintf(head, HEADER, dbg);     sprintf(postdata, "%s HTTP/1.1\r\nAccept: */*\r\nConnection: close\r\nHost: %s\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)\r\n\r\n", head, HOST);         cli->ConnectToServer(HOST, 80);     sendx(cli->serversock, postdata, strlen(postdata));     recvx(cli->serversock, recvdata, 100000);     cli->Close();         OutputDebugString(recvdata);     int numsongs = ListSongs();         sprintf(dbg, "number of songs = %i", numsongs);     OutputDebugString(dbg);         SendMessage(song, CB_SETCURSEL, 0, 0);         //Clean up     delete cli;     free(head);     free(postdata);     ExitThread(0); } int ListSongs() // i changed to using the cmp function i created so i could compare more than 32 bits at a time {     int numsongs = 0;     DWORD i = 0;     char* songname = (char*)malloc(200);     char* title = recvdata;         ZeroMemory(songname, 200);     ZeroMemory(songs, 5000);         SendMessage(song, CB_RESETCONTENT, 0, 0); // clears the list box         nextsong:     //while(*(DWORD*)title != 0x6C746974) // 'titl'     while(cmp(title, "title=\"", 7) == 0) // locate song title     {         //if(*(DWORD*)titl == 0x72702F3C) // '</pr'         if(cmp(title, "</playlist>", 11) == 1)         {             //end of songs in xml file reached             SendMessage(song, CB_SHOWDROPDOWN, 1, 0);             free(songname);             return numsongs;         }                     title++;     }     title += 7; // get past 'title="'         int stringsize = 0;     char* endofstring = title;         //get string size by counting the characters until the next double quote     while(*(BYTE*)endofstring != 0x22) // '"'     {         endofstring++;         stringsize++;     }         //copy song name into string array     memcpy(songname, title, stringsize);     strcpy(&songs[i], songname);     //zero 'songname' temporary buffer in prep for next song     ZeroMemory(songname, 200);         SendMessage(song, CB_ADDSTRING, 0, (LPARAM)&songs[i]);         i += (stringsize + 1); //calculate next string offset     numsongs++;         goto nextsong; } void DownloadThread() {     char* downloadurl = (char*)malloc(1000);     char* songurl = recvdata;     LRESULT selectedsong;         ZeroMemory(downloadurl, 1000);         selectedsong = SendMessage(song, CB_GETCURSEL, 0, 0);     selectedsong += 1;         while(selectedsong != 0) // locate url of song selected     {         //while(*(DWORD*)songurl != 0x6C727564) // 'durl'         while(cmp(songurl, "durl=\"", 6) == 0)         {             songurl++;         }         songurl++;         selectedsong--;     }         songurl += 5; // get past 'url="'         int urlsize = 0;     char* endofstring = songurl;         while(*(BYTE*)endofstring != 0x22) // '"'     {         endofstring++;         urlsize++;     }         memcpy(downloadurl, songurl, urlsize);         //download the file in your default web browser     ShellExecute(0, "open", downloadurl, 0, 0, SW_SHOWNORMAL);         free(downloadurl); }     int cmp(char* str1, char* str2, int strsize) // compare non null terminated strings by specifying size {     for(int i = 0; i < strsize; i++)     {         //if(*(BYTE*)&str1[i] != *(BYTE*)&str2[i]) // == same as line below         if(str1[i] != str2[i])         {             //strings not equal             return 0;         }     }     //strings are equal     return 1; } Quote Link to comment Share on other sites More sharing options...
Mr Funk Posted September 2, 2008 Author Share Posted September 2, 2008 Tried this this morning at 7 AM (Bloody alarm - should turn it off :P) and it works perfectly. thanks alot guys Mr_funk Quote Link to comment Share on other sites More sharing options...
digip Posted September 2, 2008 Share Posted September 2, 2008 I'm guessing you haven't tried this recently? Um, just ripped some new metallica the other day, so it still works. Few things, you have to set your browser to allow referrer for *.myspace.com as well as give the url with the hash to the browser WHILE listening to the song from he same page. Here are the steps I use. (And even if a site doesn't end in .mp3, there are ways around this, but more on that later) 1. Open wiershark and start logging packets. 2. Navigate to the MySpace page with the song you want. 3. Click play on the song you want and then search wireshark for .mp3 (CTRL + F, then STRING .mp3) 4. It should move to the packet containing the file. Right click and select "Follow TCP Stream" and you will see something like this GET /34/std_530a63994c8fd840e6131ed4e6f9e847.mp3?bandid=154414319&songid=45424398&token=1220361122_b5d37d847d0c542b3c43738 495bd87a1&p=aHR0cDovL2NhY2hlMDUtbXVzaWMwMS5teXNwYWNlY2RuLmNvbS8zNC9zd GRfNTMwYTYzOTk0YzhmZDg0MGU2MTMxZWQ0ZTZmOWU4NDcubXAz&a=0 HTTP/1.1 User-Agent: Opera/9.52 (Windows NT 5.1; U; en) Host: cache05-music01.myspacecdn.com Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1 Accept-Language: en-US,en;q=0.9 Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1 Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0 Referer: http://profile.myspace.com/index.cfm?fuseaction=user.viewprofile&friendid=154414319&MyToken=88c0a94c-3969-44a6-bf0a-6740786a2110 Connection: Keep-Alive 5. Get the url from the above packet: http://cache05-music01.myspacecdn.com/34/s...DcubXAz&a=0 6. Paste it in your browser while the song is still playing, and you are on the same webpage. It will prompt you to download the file. If it doesn't redo the steps, but make sure yoru browser does not block the referrer or any cookies it tries to set or you will get a 404 not found!! 7. Save, and enjoy! Quote Link to comment Share on other sites More sharing options...
Steve8x Posted September 3, 2008 Share Posted September 3, 2008 7. Save, and enjoy! thanks alot! you helped me figure out how to make it actually work! It does basically the same thing you do with wireshark, except its automated! :) http://hak5.org/forums/index.php?showtopic=9693 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.