查看: 17641|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    1 o. C( m: F, u) \
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    4 o2 R; ~. w0 P
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
$ L: ^! S3 P7 L5 m8 v" ~2 i4 Jusage: himr <address> <value>. sample: himr 0x80040000 0x04 b9 C8 p1 w& R3 W0 S

5 }- A# p1 z, V# r& i
' O2 o; @- Y, F! e6 I( s+ r# M' {4 A不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?6 K: f; V9 S  d4 }1 ]$ ?

# p  M3 L4 ^  U# i补充内容 (2012-3-8 09:42):1 i" V2 T  ~+ ]6 u$ S! ~
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
0 `' w0 y( J# p/ U这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。4 Q, ~# n% T2 |; E

5 N2 Y9 W7 H& J8 u4 Y6 I$ M4 phimr <address> <value>. sample: himr 0x80040000 0x06 g! O7 Y* d0 w
+ H  h) _; K. K9 s  e" n
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
6 t" `) l$ b2 F" d5 phimr 0x80040000 0x002 z/ l8 t1 V5 |8 `+ m
himr 0x80040001 0x11' o& V/ b% w! m/ A5 V# j* b
himr 0x80040002 0x22
7 d. X+ _( e4 {! p! Rhimr 0x80040003 0x335 @3 F: j6 E% Q5 Q
himr 0x80040004 0x44
0 d0 ~. `0 r7 F) y% v2 Ohimr 0x80040005 0x55( q7 G+ m( n9 V9 \2 [2 W

1 n( c0 \, m  c* y% W4 o5 x- JSN也是类似。- A* q2 O) y$ f$ K( g7 o
7 f" A# I- j" {4 P3 e& u
现在主要是,谁告诉我们MAC和SN的地址?
2 @5 w) G; d, }4 |- v$ Z
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 % a6 X0 P: |5 D! O
一直想找到运程修改MAC和SN的办法,苦于无解啊
) c  `: ?/ \1 Y. \! x- ^0 n0 @; I* m
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
$ y/ W, [. ^& L! U
4 [' j5 d2 O* o3 Y8 ^7 G修改的代码早有了。到今天不会编译。0 ]8 v) P$ O0 {6 ]
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    1 f2 L. a% |9 q7 O+ K) b# [
  2. #include <malloc.h>8 a0 S% d5 [, d, c( ?
  3. #include <sys/types.h>* {7 ^3 c) f: a! t6 x5 N
  4. #include <sys/stat.h>9 \6 r8 }. _; t: w8 W) d! E! R/ b
  5. #include <sys/ioctl.h>& X. w7 W& Z$ Q) O+ `
  6. #include <stdio.h>
    3 x9 o+ c+ ]2 S( A
  7. #include <string.h>
    1 G& }2 H3 w, B/ @, A( D+ f
  8. " n2 b- P+ C4 f/ a8 B
  9. typedef struct {. y3 T9 C3 u- u0 n  T4 A' U# r" o
  10.         unsigned int        e2prom_cmd_sub_addr;2 l" ~4 }& d# R, q1 q/ d0 B9 w$ k
  11.         unsigned int        sub_addr_count;
    7 K% N/ q2 R$ n5 g+ a% y
  12.         unsigned char*        e2prom_cmd_data;
    3 E+ J) m) f1 Y8 ^
  13.         unsigned int        data_count;
    2 w# ]' I  ~9 [/ }3 @5 I
  14. } e2prom_s_cmd;. N# t# B7 Y. w; {
  15. ( I0 U' @5 |- @& u
  16. #define E2PROM_CMD_READ 1, X+ U- u$ v0 O$ i8 a
  17. #define E2PROM_CMD_WRITE 2
    $ o  b' N+ o, O% l) h+ j: J2 c7 z
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"# N: M3 ~- N" @0 ~$ H9 |

  19.   h: q. k9 j  H, h' t* _7 K% X
  20. static int readparam(unsigned char *mac, unsigned char *stbid)6 a/ G- `+ J. Q8 J9 b' g
  21. {" L- |  R0 P  I: Y) U; s' Y
  22.         int fd, ret;
    0 E$ e4 P: M: R6 E, C4 o" a: Q# Y6 F
  23.         e2prom_s_cmd arg;
    8 T- }2 L" T% \/ ]7 C7 h
  24.         unsigned char buf[0x18];
    / X/ o$ S( v, w, z. j7 o

  25. % s* N6 q0 |6 \) n$ |/ K
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    8 u* J2 S2 G1 q- D2 j/ F
  27.         if (fd  < 0) {
    % [6 G8 j+ `7 n& D  B
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ) x" O/ J0 p& ^6 H7 ~1 h
  29.                 return -1;
    , C* Z; g) R. v& R: j. P
  30.         }
    : m; V4 d  w. E
  31.         arg.sub_addr_count      = 2;
    * j4 X. X! K4 t( f
  32.         arg.data_count          = 0x18;
    $ J8 C) p# @/ J5 ^* V) \
  33.         arg.e2prom_cmd_sub_addr = 0x290;7 f% U" N, f9 A) d4 u$ t
  34.         arg.e2prom_cmd_data     = buf;1 |0 J$ T+ y; L: i. Q7 s* e
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);# Q0 {% z/ i7 f* S' \; m
  36.         if (ret != 0) {
    8 ~+ Z* p4 z. r
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    : b' K; L( b  p" b; v
  38.                 return -1;
    9 w( b4 M2 g6 u$ H+ m/ }: ^  I2 L
  39.         }1 I4 m# ~8 f9 x. b/ _% r+ r& Y
  40.         memcpy(mac, buf, 6);
    4 k- m: f9 N7 y
  41.         memcpy(stbid, &buf[6], 18);
    0 B# [3 x2 _) Z4 d
  42.         stbid[18] = '\0';
    " O- {- T0 Z5 v  R
  43. . f, x' W% q9 W, }; d
  44.         return 0;
    5 q) T/ e4 t- h  O1 D' @8 o% K
  45. }
    0 K9 t1 q# m, `3 g; W

  46. , ^* |: ^, h3 G! g* e
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)0 z+ }7 Z" b( z4 ~% J, s* z# q6 y* T
  48. {7 H9 x# F6 ^) U' t3 n. |3 u* Z+ s9 k
  49.         int fd, ret;& B9 `) K' q" G, E
  50.         e2prom_s_cmd arg;5 @( h( G  d2 A! E
  51.         unsigned char buf[0x18];$ ~& x: z8 _3 h0 ]4 {

  52. ( [& M+ K; f( ~; P, M
  53.         memcpy(buf, mac, 6);
    . D1 R& T2 e% ]( Z  @) F6 j
  54.         memcpy(&buf[6], stbid, 18);0 Q; K$ f/ M% K+ Y1 I7 P
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    % Q) h8 c" D. a+ |0 X6 E# S' V7 Y
  56.         if (fd  < 0) {1 I( }5 B) V/ ~6 I) l6 j
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);, T! J" {: U2 k4 U. o
  58.                 return -1;/ M% Q/ K) h- ]7 E  M$ ]0 B9 a  H
  59.         }
    ! A+ E. s# W$ W4 o8 q. q/ m
  60.         arg.sub_addr_count      = 2;
    ( [, v( [7 @3 W; e/ e
  61.         arg.data_count          = 0x18;. F& Q6 R' ~7 N! G
  62.         arg.e2prom_cmd_sub_addr = 0x290;+ H- K: c. m% f7 z0 F, \
  63.         arg.e2prom_cmd_data     = buf;" P$ r  S1 q8 Y) Q$ D
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    / o5 |6 r* o0 k* b
  65.         if (ret != 0) {. a, j, `6 M! \" {! v+ I3 `
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);6 b+ e) w$ t) A7 D6 K  [' d
  67.                 return -1;  F) G, ?0 z2 z; _: w& ?* @
  68.         }
    & o1 ]/ L: C* k1 N  ~+ _. W0 ]) Z( {
  69. + G  b7 ~4 \+ f5 @' }- M$ r
  70.         return 0;' F3 \0 T& J. g
  71. }, G+ {# g! s- s9 T; G- G

  72. . i  _) R4 a2 I4 J7 Z
  73. int main()
    , U0 f0 M1 I+ E' N! D" k
  74. {7 U3 L! l" n* R7 u* M, n
  75.         char c;, u* B( E" `4 I! a/ f' a
  76.         int i, macs[6];
    ( }% {& S( {3 i8 j2 y/ x% T/ R
  77.         unsigned char mac[6];
    ( H8 P, @8 f  \2 d5 {5 ?$ p
  78.         unsigned char stbid[256];9 b4 K; R& O; V" A# a: Z5 @3 V
  79. , W2 }* y: b9 n9 v8 `' Y& h8 G
  80.         if (readparam(mac, stbid) < 0)
    : i- ?8 v# M4 {, |: c1 H) I
  81.                 return 1;# Y5 Y" A& o/ S! L
  82. - ?; R$ e& F, J
  83.         printf("Current parameters: \n");
    / i; i6 W3 t" \- P  l
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);; b' Z. ~6 M1 s
  85.         printf("  STBID: %s\n", stbid);
    " M7 G  [. L. U5 O, }% f
  86.        
    ( q* s8 g5 F" f; m6 v/ g* K* H0 R
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");- ^( [# C3 o, r! M: q) P
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    $ u7 p& j1 c$ M6 x7 `% k
  89.                 printf("Input MAC error\n");
    . R( {% c5 ~& w; O; Q' h0 s7 Z2 L
  90.                 return 1;# M% L; U) }2 U, J9 i& i# ?
  91.         }
    6 d+ U6 h# Z2 `2 g* U
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    " P- ~# D2 H3 w7 H
  93.         printf("\nPlease input new STBID: ");9 Q. Z1 X- l. l: `5 ?" L4 M4 g
  94.         scanf("%s", stbid);
    # r, E- g$ Q1 ?# D4 J' n
  95.         if (strlen(stbid) != 18) {  [1 X- m+ |# H5 U2 u) Q
  96.                 printf("Invalid stbid\n");
    ) i3 Q6 z( ?) n! E& d
  97.                 return 1;
    , n: e: T2 z) |" ~0 A
  98.         }" ]0 M+ j& g0 n9 B7 a- ^( _$ d
  99.         printf("\nNew parameters: \n");6 P* I5 `- I- L) y& X
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    / n; f* N* @0 K$ k) R" u
  101.         printf("  STBID: %s\n", stbid);
    : F* _7 q! m5 D, J" b
  102. . L7 L9 m- [. V( [* \  `' j
  103.         printf("\nDo you want to change paramemters? (y/N) ");% f' t, S, L* ?3 s+ _4 ~) a
  104.         for (;;) {% V5 I4 f& J8 U" v8 a) |! A! x
  105.                 c = getchar();9 N: k; h/ E" L! `  s
  106.                 if (c == 'y' || c == 'Y')
    " q) A5 u% C2 ^7 c# z5 E, G3 D
  107.                         break;8 l! I/ \# j: {! J
  108.                 if (c == 'n' || c == 'N') {- H5 P1 P0 S7 r5 ^# `. C
  109.                         printf("\nAborted.\n");
    7 n6 i6 e/ C  a4 O
  110.                         return 1;
    - r) {( N% p6 Y( {# p, k
  111.                 }! ]' y/ _. d7 W9 P
  112.         }
    " P6 ]  q3 p1 d" L7 u0 q* }
  113.         if (writeparam(mac, stbid) == 0)
    0 |: E- P: H$ ?& h  h
  114.                 printf("Parameters changed.\n");
    4 ^/ d, L8 h% N4 M+ e. ?* j4 q
  115. . K% h6 |9 n( X, U) `8 [
  116.         return 0;
    6 D- m$ R6 m, J" Z1 W
  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 # ^9 J0 F3 ?& v6 @
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
+ e# J/ i; y  j6 ?: k! d
你用的编译命令行格式是什么?
. @. K. {) W+ O
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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