查看: 16601|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    # n. @  R) B) C* b2 T4 |
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    : L( ?4 J& e) Z8 S1 P- Z  Q2 a# ?6 t
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
: N; k7 r7 Y7 S- @; Fusage: himr <address> <value>. sample: himr 0x80040000 0x0* V$ _1 e' B6 O: R& c# Y+ l

; u% q% |6 e* i  t8 t* t
! [; w  s# P! a; ~: J不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?: _  ]9 n! y! u
7 F" Z6 p! u0 G0 [: X& h
补充内容 (2012-3-8 09:42):
; ^5 {# F2 a# Fhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
8 E8 f5 ]0 ^0 x$ \这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
* u% f) x! a$ B
( t/ \8 z9 |! R( C% G, qhimr <address> <value>. sample: himr 0x80040000 0x00 \8 [5 X6 k9 c- r9 a
" E) u5 C4 n6 t% b
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
+ V& ], q% t/ W1 h$ dhimr 0x80040000 0x00
0 w0 U( Q8 Q; j7 _& g4 A: Zhimr 0x80040001 0x11
8 o* ?2 P6 O, S5 h$ o( zhimr 0x80040002 0x22
& b1 l" \( {3 v  ]himr 0x80040003 0x33
5 k- V+ w$ j, q$ V  \8 j# R$ ?+ ^. ahimr 0x80040004 0x44
& i& O, l. z! i1 B0 Khimr 0x80040005 0x55- V% E) w" R9 [  R

7 i3 o7 I' R% YSN也是类似。
, A- R9 \* H# s4 i  I6 S; i& k
* j4 v1 W2 P$ K* d! w- s" i, y现在主要是,谁告诉我们MAC和SN的地址?6 m) w& A. R3 m8 ^6 o2 B2 `" J
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
. g4 W7 m* i( ?" D; Z3 q一直想找到运程修改MAC和SN的办法,苦于无解啊

2 b1 T8 S, q* V0 I0 t: v2 k4 L; x源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
9 t) J# b7 M  M! }# d. S3 U% ~! f5 [0 L8 ?  s- b
修改的代码早有了。到今天不会编译。& P8 w. [% F/ J9 w0 A4 d2 y
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    9 m7 Y* t+ n* d: P3 c5 @  t
  2. #include <malloc.h>/ E6 X, J! Y1 L5 r
  3. #include <sys/types.h>
    3 f# T0 Y4 k2 w) P  j* s; W
  4. #include <sys/stat.h>
    9 r* q3 _, U2 {0 S# }
  5. #include <sys/ioctl.h>
      E  i' U3 B( O. \' Q/ |6 T, E
  6. #include <stdio.h>
    ) Z1 |! c  c+ ~, L" N+ x- q2 f# y
  7. #include <string.h>
    ' z# K, H  {' [, n* N6 @
  8. 1 B' K. E% L% Q$ m) {. |+ p
  9. typedef struct {5 y$ x; Z0 q) R+ @
  10.         unsigned int        e2prom_cmd_sub_addr;
    $ B' p- ^% ^' e) r* A0 z# ]
  11.         unsigned int        sub_addr_count;: a# d; L# o% o1 D/ f& h4 m4 A
  12.         unsigned char*        e2prom_cmd_data;
    8 |( \, D8 {( Z
  13.         unsigned int        data_count;
    , \) {0 f$ Y  [3 R- `+ ~
  14. } e2prom_s_cmd;
    ' h! q  d: M, c- n: Y
  15. 2 H2 N) G4 h# s: P* {
  16. #define E2PROM_CMD_READ 17 ?, y/ B2 b( w+ A
  17. #define E2PROM_CMD_WRITE 2: H. l# d4 E: k" W
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16". D2 Q7 C" O9 v" A7 M, }2 u3 N
  19. 3 o- ~+ X9 B' v8 b/ U, q
  20. static int readparam(unsigned char *mac, unsigned char *stbid)# U- N1 c  A- e0 e
  21. {
    5 ^6 m. {. h, Q& r
  22.         int fd, ret;
    0 a; ]$ ]' Q) t2 V4 {( w! H" b  }
  23.         e2prom_s_cmd arg;
    ( u3 j& Y) H. a" J, ~
  24.         unsigned char buf[0x18];" F0 h* `# W, N+ h5 [
  25.   i: u, t) s; @( ?( v2 ]5 u
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    1 b. T* D/ B& E  H7 j/ u' g& w
  27.         if (fd  < 0) {5 ^! T1 d7 T* v) V- T6 A
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);! w/ R. G9 t  `8 [
  29.                 return -1;
    4 P0 C% u4 b+ c# q& c& H; |$ q
  30.         }) h# G+ T0 A+ y8 V) t, `$ F
  31.         arg.sub_addr_count      = 2;- n/ d" G- c& k' [+ M
  32.         arg.data_count          = 0x18;# `% d1 v& U0 J, z; M' U" s$ w9 e
  33.         arg.e2prom_cmd_sub_addr = 0x290;/ u% i  T' S8 \+ d
  34.         arg.e2prom_cmd_data     = buf;
    6 A: v: |% L  m* [
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    $ N4 V, L3 \4 z: V1 r+ ?
  36.         if (ret != 0) {. k, p$ x3 O  I2 U3 k5 c5 [+ ]
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);) g3 X* F0 h$ w5 K9 I% Y5 Z
  38.                 return -1;
    ! r& b0 w! f5 M  J* o% B3 }
  39.         }: Z) k/ z6 d% M# C" J
  40.         memcpy(mac, buf, 6);
    ) T- x# H( w$ V: k
  41.         memcpy(stbid, &buf[6], 18);
    ! C7 d. K# \$ @2 M! P. ~
  42.         stbid[18] = '\0';
    ; x' Z8 y2 y; S5 s* _

  43. 7 T$ Q+ u7 f5 H: D3 @! G
  44.         return 0;
    5 ]$ l  b/ e1 g9 E$ ~  ~  W3 R
  45. }( v+ g' k5 B+ H2 E* V+ r1 o# {

  46. 6 y  N  m( @0 l" g3 X
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)' R8 r8 b" j0 T% ]1 X" C* F/ g
  48. {  R9 O" s6 `1 c$ N/ H6 j
  49.         int fd, ret;
    2 W+ L. b% `- J3 Z- \' a0 [/ [
  50.         e2prom_s_cmd arg;2 V( |( \' R9 t8 C6 M0 ^
  51.         unsigned char buf[0x18];* z& Y) c6 \0 J  K1 u
  52.   M% h( @; c1 d# a6 m
  53.         memcpy(buf, mac, 6);6 o( Q+ |- v: F' s1 G4 K2 p
  54.         memcpy(&buf[6], stbid, 18);9 d7 Q5 J% o7 d
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ! f+ Q' F2 H* {
  56.         if (fd  < 0) {
    / t  j, u/ \6 q& X' ], L( e
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    . Z" h4 p( q0 A$ y5 _3 Y: x4 @& z
  58.                 return -1;
    ) M1 J2 x4 m* `7 a! a* e3 L" {, f0 u9 e
  59.         }
    2 p) Q. E& ?1 Q2 S$ b
  60.         arg.sub_addr_count      = 2;
    / I4 M; O! B; A
  61.         arg.data_count          = 0x18;( K3 K" d: O6 Y4 n+ c; a
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    9 v# W5 F3 x+ c* x8 b& l! w
  63.         arg.e2prom_cmd_data     = buf;
    + {$ d3 I7 E; P5 r5 _& X  P5 n, d2 ?
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    1 M/ V& T+ d+ B* [0 Q9 z# `
  65.         if (ret != 0) {- ^5 w1 k$ k% Y5 _1 r3 F+ Q
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    6 ~8 K) p1 F; C- Y2 b/ H# N" A
  67.                 return -1;
    & |' d& {* ^6 g- n- c, c% d
  68.         }
    5 t& {9 j' x7 T  _
  69. ) w: ~+ G: @. ?& U. O$ A5 k8 K6 E
  70.         return 0;
    3 V2 Y' {5 J. T- I6 ~
  71. }
    # a' c* \. k8 o" M7 d# T) |3 d

  72.   X8 d9 O$ `* l% y5 V5 a- o+ {
  73. int main()8 K- J7 m" \$ g# L. e: O
  74. {
    . W4 b0 A' s7 |/ G- W
  75.         char c;
    4 _3 O3 w5 s! k5 W& e  R/ b: A
  76.         int i, macs[6];
    $ U, i. z$ q" a2 p) N9 {6 o
  77.         unsigned char mac[6];
    ! x0 d% x% w/ n1 c/ N
  78.         unsigned char stbid[256];/ j  B& E% I3 R3 i* q; A
  79. ! J* f5 W& U, f& B
  80.         if (readparam(mac, stbid) < 0)) V1 o, j# T9 `+ D+ W) I% D
  81.                 return 1;; m: S: ~; p0 y5 T8 z) f
  82. 0 _# ~& F. s' ]' p# [  t
  83.         printf("Current parameters: \n");
    / \7 B0 h2 |2 y8 P- N
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    3 G+ t' y- x7 \7 m) r
  85.         printf("  STBID: %s\n", stbid);
    ! b; W8 l" }+ o8 H+ h9 _$ _6 d" v
  86.         1 I5 M7 m. k# _5 M# Q# O3 w3 E
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    8 y) `2 P7 r" N- M, W
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {9 K! P3 d) i8 A2 y. ~  ~
  89.                 printf("Input MAC error\n");
    - J3 @: n  V' \6 |" p' j, L  T
  90.                 return 1;
    " `; ^( D. w& P) o
  91.         }" r1 h3 e- j' y% c3 c% {# e3 k
  92.         for (i=0; i<6; i++)mac[i] = macs[i];6 I6 P, ], K# U, E
  93.         printf("\nPlease input new STBID: ");
    # c+ w6 u& v0 Q2 K
  94.         scanf("%s", stbid);0 y; a; @% [( I. R+ x5 c
  95.         if (strlen(stbid) != 18) {
    $ m+ P4 g# f7 {/ k$ I' K+ b
  96.                 printf("Invalid stbid\n");
    7 q! S. ~- V- F% N+ ]& a; B4 W
  97.                 return 1;! R& u& t. k. d5 t& v# @
  98.         }0 X3 l: m4 |8 J
  99.         printf("\nNew parameters: \n");
    8 G: f% s( H1 h, c
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
      h( E, r  u1 B# y* K
  101.         printf("  STBID: %s\n", stbid);/ E* X! T4 v7 M% Y) |/ P: ]

  102. * c4 I( F! R* H# y! g, |% A6 a7 r
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    2 V3 n' [' h9 o  _/ |
  104.         for (;;) {( i* L% z5 u+ ], e, \9 ^3 ?
  105.                 c = getchar();
    * {$ N" t/ {1 V0 f4 [
  106.                 if (c == 'y' || c == 'Y')
    6 n$ a- I# y" r' T# B  g% E
  107.                         break;
    $ B" q& V( L8 v" h# w
  108.                 if (c == 'n' || c == 'N') {. d$ }: q$ e/ ]0 y  d" }5 U+ p1 y
  109.                         printf("\nAborted.\n");1 l2 g; ^# R) Z, n
  110.                         return 1;" x, t; J+ w- B  h% N
  111.                 }; y5 p; \, p' ?
  112.         }5 [  d: s3 L) P& k2 Z
  113.         if (writeparam(mac, stbid) == 0) 4 x( W3 y0 V2 c  C3 e$ c4 q+ H
  114.                 printf("Parameters changed.\n");
    ! u0 m& |4 s  C/ @2 t& E/ L
  115. $ U; ^9 Y% u, Q0 D
  116.         return 0;
    ; ~, q( K2 U+ H, ^3 k
  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
+ ]8 z! W! a! @- \& Z: A在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

5 ?% l3 z1 [* G- G4 S5 F* o6 p# O: d你用的编译命令行格式是什么?
7 L# ]: z  p7 t* c! ?
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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