You can use FullProf program and it is free. The FullProf program has been mainly developed for Rietveld analysis (structure profile refinement) of neutron (constant wavelength, time of flight, nuclear and magnetic scattering) or X-ray powder diffraction data collected at constant or variable step in scattering angle 2theta.
Well, this is not entirely true. To me the question sounds a bit more general. If you have a pattern and no idea about the phase you can first only derive interplanar spacings, i.e. you transform the theta scale into a distance scale using Bragg's law. Up to this moment you do not have any chance to index the visible peaks by hkl, in other words, you know that there are planes interfering, but you don't know which one.
A specific indexing software (not Fullprof !) tries to find solutions for a crystal lattice which would generate peaks visible in your diffraction pattern, i.e. the peak positions need to be detected and then a correlation with possible reciprocal lattices happens. The solution is commonly a reduced cell which enables an indexing, but perhaps one which does not match the description you find for this phase in databases.
However, if you have an idea which phase(s) could produce your diffractogram, you can read this phase (commonly as CIF file) into Fullprof, and Fullprof derives from the imported phase all hkl, i.e. it does not consider your diffractogram at all. This is only shown in the background as nice graph. You need to decide manually whether the match with your experimental signal is sufficient. Small variations the software is able to compensate automatically druing refinement since it only use the mismatch of each theta (diffracted or not) into account and tries to reduce the mismatch by variation of the lattice parameters and the scaling of the signal (and some other influencing parameters like texture). In other words, it totally "forgets" the hkl and uses the resulting signal as full pattern approach. I also wouldn't call it "structure profile refinement" as P. Barik did above. It definitely also optimizes the profile function used but whether the applied mathematical profile function is representative or not, you have to decide.
"Smoothing" can be done, but be careful. It mainly only looks better since you lose angular resolution. Then it is better to increase the local time for each theta than a subsequent smoothing. The difference is easy to understand: If you assume, you would measure extremely fast but in a very high angular resolution the impact of electronic noise (in the same scale) is dramatic and your smoothing will never transform this signal into a pattern which has been measured with clearly slower speed. Therefore, apply a sample specific measuring strategy. High signal to noise ratio (measured for low-intense but necessary peaks), and then better use bigger distance is 2theta than shorter time and always the same 2theta steps ("because you do this always...").