查看: 16091|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr: Q9 Q) d  Z+ f6 g7 Z# W
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    - V4 ~3 w; f9 w, c; L; b: R
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
, f3 ~2 L- X2 Yusage: himr <address> <value>. sample: himr 0x80040000 0x03 E  a8 |. d! U5 _2 g
' t+ X9 ?  U4 D7 \+ c1 |' {. R

: f: u8 R$ J7 S" X! Z! S不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?" L: I( C$ Z, j. [7 G$ N! b* u
5 }6 k( c( x- W: W. u
补充内容 (2012-3-8 09:42):* ?0 R# K0 d$ S
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
; _/ O% ]9 C5 o" Z3 Y1 L这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。# y$ d' U! d  E4 M& o; S: t
9 D2 j- i9 L( Q3 o
himr <address> <value>. sample: himr 0x80040000 0x0+ h9 d# Q+ Q- b& A
, X9 u4 c, N- I+ U7 N0 K' M
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
5 T; |8 z. _) Y0 ]4 R, ?2 {" V0 O5 dhimr 0x80040000 0x00' k0 L: G% f) ~1 A4 Y1 {
himr 0x80040001 0x11
8 U# m0 p# D: `* ]# chimr 0x80040002 0x22; b4 |+ e0 i) s+ L) [
himr 0x80040003 0x33
6 R2 _4 \; [7 H  h4 F6 {, }himr 0x80040004 0x445 G; \# z" x* n2 _. _9 [3 T4 `
himr 0x80040005 0x55$ u+ ]% v0 t0 W5 p2 {
' k8 Q6 ^" S) v& \* Q4 f' E9 j- c* `
SN也是类似。
7 q9 J; o% U+ y. h/ H* I( ^$ ^1 K4 T/ Y/ e1 h; F! q  |: h
现在主要是,谁告诉我们MAC和SN的地址?
# u8 B3 w, T- ~% F" I, N1 n
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ( ]# v6 Z, l  ?- c0 H; l
一直想找到运程修改MAC和SN的办法,苦于无解啊

# U* [7 @9 @, y* m源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 2 [+ h7 a3 n( h) \' d
! s2 t- r7 @' D' R$ J$ O" a
修改的代码早有了。到今天不会编译。
4 J4 a. c1 l& ?需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ; t- j6 B" a1 g& k9 `
  2. #include <malloc.h>
    $ W& y1 f& S4 }4 _6 g
  3. #include <sys/types.h>  z7 n# ~; \. I" \% t- h
  4. #include <sys/stat.h>& ?* ]1 Y5 N1 f
  5. #include <sys/ioctl.h>+ @# l0 {$ g8 A6 C
  6. #include <stdio.h>& ~; u0 q' m9 Z+ h; z5 x3 ]& N
  7. #include <string.h>% N0 N7 K" m/ ?3 h$ B

  8. " S" ~5 n  U# B; v' l9 x5 j
  9. typedef struct {
    $ s3 t% y. D) X
  10.         unsigned int        e2prom_cmd_sub_addr;
    / h; F; O2 p! B9 h# o( k
  11.         unsigned int        sub_addr_count;: u" n9 @& e4 a: Y6 x1 f6 L
  12.         unsigned char*        e2prom_cmd_data;
    % u& N3 r7 A1 X! i5 o
  13.         unsigned int        data_count;% K# A+ {9 {9 g
  14. } e2prom_s_cmd;) d6 ~4 o/ o& E$ F& _
  15. ! }+ c8 n2 \0 J; X
  16. #define E2PROM_CMD_READ 1  j: M7 V4 x* x- k! g
  17. #define E2PROM_CMD_WRITE 2
    5 x/ ?: }1 i3 I) f
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"& Z  [8 ~% R6 x/ }6 R" L: A& u

  19. 8 s' w2 j, z$ I& W' n9 [
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
      z0 o! D! A- ]& ^$ ~2 H
  21. {
    & q; }- n' }( Z! [& ^3 B
  22.         int fd, ret;
    4 o% B9 H2 s% C
  23.         e2prom_s_cmd arg;  v5 \% o7 _; X& @9 T
  24.         unsigned char buf[0x18];) ?5 b' D+ F. M% Y! ]

  25. ' `1 w& |" E( }7 ^" b% \/ a
  26.         fd = open(E2PROM_DEVICE, O_RDWR);9 O: w( ~, a6 S0 i+ b- B2 H0 R6 N
  27.         if (fd  < 0) {
    # j  {9 [3 w/ ]8 Q
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    + K% \8 v  h4 Y1 r
  29.                 return -1;
    " q8 }/ g  y/ ]" W8 z3 t
  30.         }. ?' x/ @+ }2 z5 x7 q
  31.         arg.sub_addr_count      = 2;
      L6 D) W/ a1 E5 q6 n6 f* a
  32.         arg.data_count          = 0x18;8 R8 ^- B  s1 u$ }
  33.         arg.e2prom_cmd_sub_addr = 0x290;, A0 v1 g" J5 O$ \( Q+ o: j/ f. J
  34.         arg.e2prom_cmd_data     = buf;' P& e) c3 U0 U  _9 O( l2 {
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    / z4 J7 L* ~& p6 S0 V4 W
  36.         if (ret != 0) {
    6 j. K3 p2 Y! w
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ! }+ I0 l' P6 T1 ], h
  38.                 return -1;* Z- `& k+ f) I9 j
  39.         }7 f' g# O; q5 T+ z# K( A# n
  40.         memcpy(mac, buf, 6);
    $ h. P! z0 ]! {- b' R( q+ N  K
  41.         memcpy(stbid, &buf[6], 18);
    6 [) y# l' S0 x, E& g
  42.         stbid[18] = '\0';, Z) f4 j# O1 D" P5 H# q9 H$ A& Y
  43. $ \6 X3 r# d' q5 b/ N, X
  44.         return 0;+ ?$ F% t0 E1 l; Q
  45. }
    4 ^# W7 P$ ^6 f6 A& T+ g
  46. 4 f/ Y4 j" r/ p. S  J8 L! r5 D
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)* R$ \, l' \2 x2 M' d: I2 W# V  D
  48. {% T1 N* F, h, D, _
  49.         int fd, ret;/ [6 }' O) u: v2 C
  50.         e2prom_s_cmd arg;3 h4 k2 L" ?! g; H" O8 |$ o! ?; w
  51.         unsigned char buf[0x18];
    $ S9 N& n  ]0 M" |1 s
  52. 8 B# Z1 L  I& P
  53.         memcpy(buf, mac, 6);
    : U# k) r4 q( c2 f& L% m' N  _' @
  54.         memcpy(&buf[6], stbid, 18);
    ( b1 ^( K% i; D4 C1 U' \3 V4 H
  55.         fd = open(E2PROM_DEVICE, O_RDWR);2 Z; E9 f" }/ W
  56.         if (fd  < 0) {
    - K" R3 [8 ]% b. g3 W% ?7 u
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    0 P. `! c) E% P! A& T& c% l$ ~
  58.                 return -1;5 R% D, Z: o3 p0 T: a3 d2 Z0 a' J# i
  59.         }
    / \4 z) K+ s: d2 x. q5 {
  60.         arg.sub_addr_count      = 2;2 k* b  y- B) s* `
  61.         arg.data_count          = 0x18;1 T, v/ B5 z3 |  f% H) Q
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    " }: [1 ^( T% d
  63.         arg.e2prom_cmd_data     = buf;
    / J" m$ i1 Q  E% a  _# P  R9 C1 E
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    2 ?8 d( `( Z( v) [6 w7 j+ w: }5 ~
  65.         if (ret != 0) {( @: K. R5 S8 @; S
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);, q7 D" T; F7 z- h
  67.                 return -1;
    , \4 z6 ]1 b# U) C
  68.         }' o) T8 v# C- o) j& q& m

  69.   l, n. g3 C6 @4 S4 c
  70.         return 0;: Y; i6 E5 Y; x' Q
  71. }+ d* O' |6 \+ b/ W9 h& `
  72. & t) x5 s) E; p& y( ?5 L+ a; j
  73. int main()9 Y' ~' m! V+ Z5 h
  74. {) u3 l  \; t- u, J
  75.         char c;
    & l0 W  U  [$ ]% k/ W& W& |8 F
  76.         int i, macs[6];/ Q# a, W8 W, k
  77.         unsigned char mac[6];
    * }9 \5 J3 O* T
  78.         unsigned char stbid[256];
    ' o$ U9 S1 [/ O# `% ?3 ^2 m6 N- K* ^

  79. 1 D1 X' D' r8 W1 S! N
  80.         if (readparam(mac, stbid) < 0)& _4 M& ^/ ~7 c" P# }: o0 n
  81.                 return 1;
    ! d2 i9 q3 Z+ ]1 U. m$ w8 K% N
  82. 3 T# N* Q5 C' j; B
  83.         printf("Current parameters: \n");& K# X/ T" b+ T: Z7 x
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);; g: c* l! W9 j9 y1 {, `0 X
  85.         printf("  STBID: %s\n", stbid);
    1 E( K" C* x; p4 q
  86.        
    + Y; S& e  V, S4 V3 F2 I- J
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");9 a! _5 r, ]1 x" n+ X
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    # x2 M, _' S# \6 \. X6 d+ ^$ c# e$ B
  89.                 printf("Input MAC error\n");
    ; O! f0 M4 J2 a) a6 x. R
  90.                 return 1;' o# o8 n8 P3 U- w/ @# p  e) l- [8 n) ~
  91.         }
    ' n8 ~9 w& d" {& D
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    / Q4 K% L0 a9 {/ N( E' w7 M5 K
  93.         printf("\nPlease input new STBID: ");* r3 W# O. d' _
  94.         scanf("%s", stbid);- G  G2 _# q. o/ H5 f$ d; _$ I
  95.         if (strlen(stbid) != 18) {, c. X1 S, \" _; g. y* C
  96.                 printf("Invalid stbid\n");& L6 i9 A- q/ o) [
  97.                 return 1;
    ( q4 l& _+ C8 A/ X% a+ ^, s
  98.         }
    2 J; U8 X- ^. F# |5 I9 H
  99.         printf("\nNew parameters: \n");2 s9 x4 x# n1 W9 \! w2 ~- h
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    : ]- j- O# p: i/ y1 a' a; x. U* S
  101.         printf("  STBID: %s\n", stbid);( h7 |$ T8 I( c' F- }- n3 b
  102. , d( w( J% ?$ A% f
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    2 ^$ a. j- `: h, x) I% k# o
  104.         for (;;) {$ E, p4 i% J# B2 g5 W
  105.                 c = getchar();
    7 E! w- `, _2 a8 v
  106.                 if (c == 'y' || c == 'Y')5 w: C8 m$ N. O" h
  107.                         break;
    ' g/ [9 d5 ]5 T) x  P( I
  108.                 if (c == 'n' || c == 'N') {
    ! P  m/ G  t: j4 V" `- }4 X- v
  109.                         printf("\nAborted.\n");
    " Y, t4 l$ b7 C( G% K0 i% n3 j; }. v
  110.                         return 1;. m4 y% Y: \! h, j3 e; g
  111.                 }
      u" U4 Q$ t3 C0 b' n8 q# `
  112.         }5 z% u! e4 A+ H  `6 [/ Z
  113.         if (writeparam(mac, stbid) == 0) / y) g" T) M7 i# U& K
  114.                 printf("Parameters changed.\n");
    , s' \( h# n( M/ N: R/ l

  115. ! [. Z( D, S$ J: _; Q* R
  116.         return 0;
    ; [! B. O( G/ o5 m- [
  117. }
复制代码
 楼主| 发表于 2012-3-23 18:24:12 | 显示全部楼层
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
发表于 2012-5-11 11:20:03 | 显示全部楼层
0522 发表于 2012-3-23 18:24 6 G) k2 A5 F! s$ D
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

3 ]$ }; `& P: h" \9 B, }你用的编译命令行格式是什么?& X- w' m% A8 S  v
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com

Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001

在本版发帖QQ客服返回顶部